From 3da7d7c76dea23c2bc3463952b36b854cb99066c Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Wed, 24 Apr 2024 20:28:12 +1000 Subject: [PATCH 01/23] Remove old bundled data (#2513) * Remove old bundled data * Also drop 1.18 --- .../sk89q/worldedit/world/registry/BundledRegistries.java | 5 ----- .../com/sk89q/worldedit/world/registry/blocks.114.json | 1 - .../com/sk89q/worldedit/world/registry/blocks.115.json | 1 - .../com/sk89q/worldedit/world/registry/blocks.116.json | 1 - .../com/sk89q/worldedit/world/registry/blocks.117.json | 1 - .../com/sk89q/worldedit/world/registry/items.114.json | 1 - .../com/sk89q/worldedit/world/registry/items.115.json | 1 - .../com/sk89q/worldedit/world/registry/items.116.json | 1 - .../com/sk89q/worldedit/world/registry/items.117.json | 1 - 9 files changed, 13 deletions(-) delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.114.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.115.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.116.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.117.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.114.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.115.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.116.json delete mode 100644 worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.117.json diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java index c37f3d3914..f856161888 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/registry/BundledRegistries.java @@ -43,11 +43,6 @@ public class BundledRegistries implements Registries { static { TreeRangeMap versionMap = TreeRangeMap.create(); - versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_14), "114"); - versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_15), "115"); - versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_16), "116"); - versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_17), "117"); - // 1.18 did have one item change, but we didn't get it. It's fine. versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_19), "119"); versionMap.put(Range.atLeast(Constants.DATA_VERSION_MC_1_20), "120"); VERSION_MAP = ImmutableRangeMap.copyOf(versionMap); diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.114.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.114.json deleted file mode 100644 index f89dcb967f..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.114.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_wall_sign","localizedName":"Acacia Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:air","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bamboo","localizedName":"Bamboo","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bamboo_sapling","localizedName":"Bamboo Sapling","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":false,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:barrel","localizedName":"Barrel","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bell","localizedName":"Bell","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_wall_sign","localizedName":"Birch Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_wall_banner","localizedName":"Black Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"powerSource":false,"lightValue":0,"hardness":2.8,"resistance":2.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.989,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":1.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"powerSource":false,"lightValue":1,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"powerSource":false,"lightValue":1,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Brown Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:campfire","localizedName":"Campfire","material":{"powerSource":false,"lightValue":15,"hardness":2,"resistance":2,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chest","localizedName":"Chest","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"powerSource":false,"lightValue":0,"hardness":4,"resistance":4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":3,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:composter","localizedName":"Composter","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cornflower","localizedName":"Cornflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:creeper_wall_head","localizedName":"Creeper Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Cyan Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_wall_sign","localizedName":"Dark Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"powerSource":true,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"powerSource":true,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"powerSource":false,"lightValue":1,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dragon_wall_head","localizedName":"Dragon Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"powerSource":false,"lightValue":1,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"powerSource":false,"lightValue":7,"hardness":22.5,"resistance":600,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"powerSource":false,"lightValue":15,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:glass","localizedName":"Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_path","localizedName":"Grass Path","material":{"powerSource":false,"lightValue":0,"hardness":0.65,"resistance":0.65,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_wall_banner","localizedName":"Green Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grindstone","localizedName":"Grindstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":4.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o'Lantern","material":{"powerSource":false,"lightValue":15,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_wall_sign","localizedName":"Jungle Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lantern","localizedName":"Lantern","material":{"powerSource":false,"lightValue":15,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_block","localizedName":"Lapis Lazuli Block","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"powerSource":false,"lightValue":15,"hardness":100,"resistance":100,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lectern","localizedName":"Lectern","material":{"powerSource":true,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:lever","localizedName":"Lever","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Light Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Light Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Lime Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:loom","localizedName":"Loom","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Magenta Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"powerSource":false,"lightValue":3,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":true,"hasContainer":false}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"powerSource":false,"lightValue":11,"hardness":-1,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_wall_sign","localizedName":"Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"powerSource":true,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"powerSource":false,"lightValue":0,"hardness":50,"resistance":1200,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Orange Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Pink Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:player_wall_head","localizedName":"Player Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_bamboo","localizedName":"Potted Bamboo","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_cornflower","localizedName":"Potted Cornflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_lily_of_the_valley","localizedName":"Potted Lily of the Valley","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_wither_rose","localizedName":"Potted Wither Rose","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Purple Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_wall_banner","localizedName":"Red Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"powerSource":true,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Redstone Torch","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Wire","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":true,"hasContainer":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"powerSource":false,"lightValue":6,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.8,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smoker","localizedName":"Smoker","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_wall_sign","localizedName":"Spruce Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone","localizedName":"Stone","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sweet_berry_bush","localizedName":"Sweet Berry Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"powerSource":true,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wall_torch","localizedName":"Torch","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:water","localizedName":"Water","material":{"powerSource":false,"lightValue":0,"hardness":100,"resistance":100,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_wall_banner","localizedName":"White Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Wither Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Yellow Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:zombie_wall_head","localizedName":"Zombie Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.115.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.115.json deleted file mode 100644 index 5da0affad4..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.115.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_wall_sign","localizedName":"Acacia Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:air","localizedName":"Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bamboo","localizedName":"Bamboo","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bamboo_sapling","localizedName":"Bamboo Sapling","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":false,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:barrel","localizedName":"Barrel","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beehive","localizedName":"Beehive","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bell","localizedName":"Bell","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_wall_sign","localizedName":"Birch Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_wall_banner","localizedName":"Black Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"powerSource":false,"lightValue":0,"hardness":2.8,"resistance":2.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.989,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":1.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"powerSource":false,"lightValue":1,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"powerSource":false,"lightValue":1,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Brown Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:campfire","localizedName":"Campfire","material":{"powerSource":false,"lightValue":15,"hardness":2,"resistance":2,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chest","localizedName":"Chest","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"powerSource":false,"lightValue":0,"hardness":4,"resistance":4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":3,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:composter","localizedName":"Composter","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"powerSource":false,"lightValue":15,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cornflower","localizedName":"Cornflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:creeper_wall_head","localizedName":"Creeper Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Cyan Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_wall_sign","localizedName":"Dark Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"powerSource":true,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"powerSource":true,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"powerSource":false,"lightValue":1,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dragon_wall_head","localizedName":"Dragon Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":1200,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"powerSource":false,"lightValue":15,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"powerSource":false,"lightValue":1,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":9,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"powerSource":false,"lightValue":7,"hardness":22.5,"resistance":600,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"powerSource":false,"lightValue":15,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:glass","localizedName":"Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grass_path","localizedName":"Grass Path","material":{"powerSource":false,"lightValue":0,"hardness":0.65,"resistance":0.65,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_wall_banner","localizedName":"Green Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:grindstone","localizedName":"Grindstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:honey_block","localizedName":"Honey Block","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":4.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0.75,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o'Lantern","material":{"powerSource":false,"lightValue":15,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_wall_sign","localizedName":"Jungle Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lantern","localizedName":"Lantern","material":{"powerSource":false,"lightValue":15,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_block","localizedName":"Lapis Lazuli Block","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"powerSource":false,"lightValue":15,"hardness":100,"resistance":100,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lectern","localizedName":"Lectern","material":{"powerSource":true,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:lever","localizedName":"Lever","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Light Blue Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Light Gray Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Lime Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:loom","localizedName":"Loom","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Magenta Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"powerSource":false,"lightValue":3,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":true,"hasContainer":false}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"powerSource":false,"lightValue":11,"hardness":-1,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7fb238","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"powerSource":false,"lightValue":0,"hardness":0.4,"resistance":0.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_wall_sign","localizedName":"Oak Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"powerSource":true,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"powerSource":false,"lightValue":0,"hardness":50,"resistance":1200,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Orange Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.98,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a0a0ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Pink Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:player_wall_head","localizedName":"Player Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#976d4d","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_bamboo","localizedName":"Potted Bamboo","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_cornflower","localizedName":"Potted Cornflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_lily_of_the_valley","localizedName":"Potted Lily of the Valley","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:potted_wither_rose","localizedName":"Potted Wither Rose","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Purple Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"powerSource":false,"lightValue":0,"hardness":0.7,"resistance":0.7,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_wall_banner","localizedName":"Red Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"powerSource":true,"lightValue":0,"hardness":5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Redstone Torch","material":{"powerSource":true,"lightValue":7,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Wire","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":true,"hasContainer":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"powerSource":false,"lightValue":15,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"powerSource":false,"lightValue":6,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.8,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a4a8b8","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","material":{"powerSource":false,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smoker","localizedName":"Smoker","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":true,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ffffff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"powerSource":false,"lightValue":0,"hardness":5,"resistance":5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"powerSource":false,"lightValue":0,"hardness":3,"resistance":3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_wall_sign","localizedName":"Spruce Sign","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":true,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone","localizedName":"Stone","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"powerSource":true,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":6,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","material":{"powerSource":false,"lightValue":0,"hardness":3.5,"resistance":3.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"powerSource":false,"lightValue":0,"hardness":-1,"resistance":3600000,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#a7a7a7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:sweet_berry_bush","localizedName":"Sweet Berry Bush","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#ff0000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"powerSource":true,"lightValue":0,"hardness":2.5,"resistance":2.5,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":true}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"powerSource":true,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"powerSource":false,"lightValue":0,"hardness":1.5,"resistance":6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wall_torch","localizedName":"Torch","material":{"powerSource":false,"lightValue":14,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:water","localizedName":"Water","material":{"powerSource":false,"lightValue":0,"hardness":100,"resistance":100,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":true,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":true,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#4040ff","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"powerSource":false,"lightValue":0,"hardness":0.6,"resistance":0.6,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#e5e533","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":true,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_wall_banner","localizedName":"White Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","material":{"powerSource":false,"lightValue":0,"hardness":0,"resistance":0,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#007c00","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Wither Skeleton Skull","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"powerSource":false,"lightValue":0,"hardness":0.2,"resistance":0.2,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"powerSource":false,"lightValue":0,"hardness":0.1,"resistance":0.1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":true,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"powerSource":false,"lightValue":0,"hardness":1.8,"resistance":1.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"powerSource":false,"lightValue":0,"hardness":0.5,"resistance":0.5,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#f7e9a3","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.4,"resistance":1.4,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"powerSource":false,"lightValue":0,"hardness":2,"resistance":2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#7f3fb2","isTranslucent":true,"hasContainer":true}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"powerSource":false,"lightValue":0,"hardness":0.3,"resistance":0.3,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"powerSource":false,"lightValue":0,"hardness":1.25,"resistance":4.2,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":false,"opaque":true,"replacedDuringPlacement":false,"toolRequired":true,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#707070","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Yellow Banner","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#8f7748","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"powerSource":false,"lightValue":0,"hardness":0.8,"resistance":0.8,"ticksRandomly":false,"fullCube":true,"slipperiness":0.6,"liquid":false,"solid":true,"movementBlocker":true,"burnable":true,"opaque":true,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":false,"unpushable":false,"mapColor":"#c7c7c7","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}},{"id":"minecraft:zombie_wall_head","localizedName":"Zombie Head","material":{"powerSource":false,"lightValue":0,"hardness":1,"resistance":1,"ticksRandomly":false,"fullCube":false,"slipperiness":0.6,"liquid":false,"solid":false,"movementBlocker":false,"burnable":false,"opaque":false,"replacedDuringPlacement":false,"toolRequired":false,"fragileWhenPushed":true,"unpushable":false,"mapColor":"#000000","isTranslucent":false,"hasContainer":false}}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.116.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.116.json deleted file mode 100644 index b15d6c3407..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.116.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_wall_sign","localizedName":"Acacia Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:air","localizedName":"Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ancient_debris","localizedName":"Ancient Debris","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":30,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bamboo","localizedName":"Bamboo","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bamboo_sapling","localizedName":"Bamboo Shoot","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":false,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:barrel","localizedName":"Barrel","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:basalt","localizedName":"Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:beehive","localizedName":"Beehive","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bell","localizedName":"Bell","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_wall_sign","localizedName":"Birch Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_wall_banner","localizedName":"Black Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blackstone","localizedName":"Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_slab","localizedName":"Blackstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_stairs","localizedName":"Blackstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_wall","localizedName":"Blackstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.8,"slipperiness":0.989,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":true,"lightValue":1,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Brown Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":true,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:campfire","localizedName":"Campfire","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":true,"lightValue":15,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chain","localizedName":"Chain","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chest","localizedName":"Chest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:chiseled_nether_bricks","localizedName":"Chiseled Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_polished_blackstone","localizedName":"Chiseled Polished Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:composter","localizedName":"Composter","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cornflower","localizedName":"Cornflower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cracked_nether_bricks","localizedName":"Cracked Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_polished_blackstone_bricks","localizedName":"Cracked Polished Blackstone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:creeper_wall_head","localizedName":"Creeper Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_button","localizedName":"Crimson Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_door","localizedName":"Crimson Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fence","localizedName":"Crimson Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fence_gate","localizedName":"Crimson Fence Gate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fungus","localizedName":"Crimson Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_hyphae","localizedName":"Crimson Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_nylium","localizedName":"Crimson Nylium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:crimson_planks","localizedName":"Crimson Planks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_pressure_plate","localizedName":"Crimson Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_roots","localizedName":"Crimson Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_sign","localizedName":"Crimson Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_slab","localizedName":"Crimson Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_stairs","localizedName":"Crimson Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_stem","localizedName":"Crimson Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_trapdoor","localizedName":"Crimson Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_wall_sign","localizedName":"Crimson Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crying_obsidian","localizedName":"Crying Obsidian","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Cyan Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_wall_sign","localizedName":"Dark Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dragon_wall_head","localizedName":"Dragon Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":22.5,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":600,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gilded_blackstone","localizedName":"Gilded Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:glass","localizedName":"Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grass_path","localizedName":"Grass Path","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.65,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.65,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_wall_banner","localizedName":"Green Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grindstone","localizedName":"Grindstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:honey_block","localizedName":"Honey Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o'Lantern","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_wall_sign","localizedName":"Jungle Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lantern","localizedName":"Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lapis_block","localizedName":"Lapis Lazuli Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":100,"hasContainer":false,"lightValue":15,"liquid":true,"mapColor":"#ff0000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":100,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lectern","localizedName":"Lectern","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lever","localizedName":"Lever","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Light Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Light Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Lime Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lodestone","localizedName":"Lodestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:loom","localizedName":"Loom","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Magenta Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":3,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_gold_ore","localizedName":"Nether Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1,"hasContainer":false,"lightValue":11,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":true}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_sprouts","localizedName":"Nether Sprouts","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:netherite_block","localizedName":"Block of Netherite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_wall_sign","localizedName":"Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Orange Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Pink Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:player_wall_head","localizedName":"Player Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_basalt","localizedName":"Polished Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone","localizedName":"Polished Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_slab","localizedName":"Polished Blackstone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_stairs","localizedName":"Polished Blackstone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_wall","localizedName":"Polished Blackstone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_bricks","localizedName":"Polished Blackstone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_button","localizedName":"Polished Blackstone Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:polished_blackstone_pressure_plate","localizedName":"Polished Blackstone Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_slab","localizedName":"Polished Blackstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_stairs","localizedName":"Polished Blackstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_wall","localizedName":"Polished Blackstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_bamboo","localizedName":"Potted Bamboo","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_cornflower","localizedName":"Potted Cornflower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_crimson_fungus","localizedName":"Potted Crimson Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_crimson_roots","localizedName":"Potted Crimson Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_lily_of_the_valley","localizedName":"Potted Lily of the Valley","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_warped_fungus","localizedName":"Potted Warped Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_warped_roots","localizedName":"Potted Warped Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_wither_rose","localizedName":"Potted Wither Rose","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Purple Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_bricks","localizedName":"Quartz Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_wall_banner","localizedName":"Red Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Redstone Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Wire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:respawn_anchor","localizedName":"Respawn Anchor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":6,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:shroomlight","localizedName":"Shroomlight","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.8,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:smoker","localizedName":"Smoker","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:soul_campfire","localizedName":"Soul Campfire","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":true,"lightValue":10,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_fire","localizedName":"Soul Fire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_lantern","localizedName":"Soul Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_soil","localizedName":"Soul Soil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_torch","localizedName":"Soul Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_wall_torch","localizedName":"Soul Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#e5e533","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_wall_sign","localizedName":"Spruce Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:stone","localizedName":"Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_crimson_hyphae","localizedName":"Stripped Crimson Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_crimson_stem","localizedName":"Stripped Crimson Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_warped_hyphae","localizedName":"Stripped Warped Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_warped_stem","localizedName":"Stripped Warped Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sweet_berry_bush","localizedName":"Sweet Berry Bush","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:target","localizedName":"Target","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ff0000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:twisting_vines","localizedName":"Twisting Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:twisting_vines_plant","localizedName":"Twisting Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.2,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wall_torch","localizedName":"Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_button","localizedName":"Warped Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_door","localizedName":"Warped Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fence","localizedName":"Warped Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fence_gate","localizedName":"Warped Fence Gate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fungus","localizedName":"Warped Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_hyphae","localizedName":"Warped Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_nylium","localizedName":"Warped Nylium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:warped_planks","localizedName":"Warped Planks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_pressure_plate","localizedName":"Warped Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_roots","localizedName":"Warped Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_sign","localizedName":"Warped Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_slab","localizedName":"Warped Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_stairs","localizedName":"Warped Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_stem","localizedName":"Warped Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_trapdoor","localizedName":"Warped Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_wall_sign","localizedName":"Warped Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_wart_block","localizedName":"Warped Wart Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:water","localizedName":"Water","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":100,"hasContainer":false,"lightValue":0,"liquid":true,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":100,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:weeping_vines","localizedName":"Weeping Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:weeping_vines_plant","localizedName":"Weeping Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#e5e533","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_wall_banner","localizedName":"White Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Wither Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Yellow Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:zombie_wall_head","localizedName":"Zombie Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.117.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.117.json deleted file mode 100644 index 3378b745ed..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/blocks.117.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_button","localizedName":"Acacia Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_wall_sign","localizedName":"Acacia Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:air","localizedName":"Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:allium","localizedName":"Allium","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:amethyst_block","localizedName":"Block of Amethyst","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:amethyst_cluster","localizedName":"Amethyst Cluster","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":5,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ancient_debris","localizedName":"Ancient Debris","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":30.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite","localizedName":"Andesite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:anvil","localizedName":"Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:attached_melon_stem","localizedName":"Attached Melon Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:attached_pumpkin_stem","localizedName":"Attached Pumpkin Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azalea","localizedName":"Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azalea_leaves","localizedName":"Azalea Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bamboo","localizedName":"Bamboo","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bamboo_sapling","localizedName":"Bamboo Shoot","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":false,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:barrel","localizedName":"Barrel","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:barrier","localizedName":"Barrier","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:basalt","localizedName":"Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:beacon","localizedName":"Beacon","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bedrock","localizedName":"Bedrock","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:beehive","localizedName":"Beehive","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:beetroots","localizedName":"Beetroots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bell","localizedName":"Bell","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:big_dripleaf","localizedName":"Big Dripleaf","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:big_dripleaf_stem","localizedName":"Big Dripleaf Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_button","localizedName":"Birch Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_door","localizedName":"Birch Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_log","localizedName":"Birch Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_wall_sign","localizedName":"Birch Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_banner","localizedName":"Black Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_bed","localizedName":"Black Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_candle","localizedName":"Black Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_candle_cake","localizedName":"Cake with Black Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:black_wall_banner","localizedName":"Black Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:black_wool","localizedName":"Black Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blackstone","localizedName":"Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_slab","localizedName":"Blackstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_stairs","localizedName":"Blackstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blackstone_wall","localizedName":"Blackstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_candle","localizedName":"Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_candle_cake","localizedName":"Cake with Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.8,"slipperiness":0.989,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:blue_wall_banner","localizedName":"Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bone_block","localizedName":"Bone Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brain_coral_wall_fan","localizedName":"Brain Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":true,"lightValue":1,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bricks","localizedName":"Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_candle","localizedName":"Brown Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_candle_cake","localizedName":"Cake with Brown Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:brown_wall_banner","localizedName":"Brown Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_column","localizedName":"Bubble Column","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":true,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:bubble_coral_wall_fan","localizedName":"Bubble Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:budding_amethyst","localizedName":"Budding Amethyst","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cactus","localizedName":"Cactus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cake","localizedName":"Cake","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:calcite","localizedName":"Calcite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:campfire","localizedName":"Campfire","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":true,"lightValue":15,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:candle","localizedName":"Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:candle_cake","localizedName":"Cake with Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:carrots","localizedName":"Carrots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cauldron","localizedName":"Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cave_air","localizedName":"Cave Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cave_vines","localizedName":"Cave Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cave_vines_plant","localizedName":"Cave Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chain","localizedName":"Chain","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chest","localizedName":"Chest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:chiseled_deepslate","localizedName":"Chiseled Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_nether_bricks","localizedName":"Chiseled Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_polished_blackstone","localizedName":"Chiseled Polished Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:clay","localizedName":"Clay","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:coal_block","localizedName":"Block of Coal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cobbled_deepslate","localizedName":"Cobbled Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobbled_deepslate_slab","localizedName":"Cobbled Deepslate Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobbled_deepslate_stairs","localizedName":"Cobbled Deepslate Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobbled_deepslate_wall","localizedName":"Cobbled Deepslate Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cobweb","localizedName":"Cobweb","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":4.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cocoa","localizedName":"Cocoa","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:command_block","localizedName":"Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:composter","localizedName":"Composter","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:conduit","localizedName":"Conduit","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:copper_block","localizedName":"Block of Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:copper_ore","localizedName":"Copper Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cornflower","localizedName":"Cornflower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cracked_deepslate_bricks","localizedName":"Cracked Deepslate Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_deepslate_tiles","localizedName":"Cracked Deepslate Tiles","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_nether_bricks","localizedName":"Cracked Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_polished_blackstone_bricks","localizedName":"Cracked Polished Blackstone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:creeper_wall_head","localizedName":"Creeper Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_button","localizedName":"Crimson Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_door","localizedName":"Crimson Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fence","localizedName":"Crimson Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fence_gate","localizedName":"Crimson Fence Gate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_fungus","localizedName":"Crimson Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_hyphae","localizedName":"Crimson Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_nylium","localizedName":"Crimson Nylium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:crimson_planks","localizedName":"Crimson Planks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_pressure_plate","localizedName":"Crimson Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_roots","localizedName":"Crimson Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_sign","localizedName":"Crimson Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_slab","localizedName":"Crimson Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_stairs","localizedName":"Crimson Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_stem","localizedName":"Crimson Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_trapdoor","localizedName":"Crimson Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crimson_wall_sign","localizedName":"Crimson Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:crying_obsidian","localizedName":"Crying Obsidian","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_copper","localizedName":"Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_copper_slab","localizedName":"Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_copper_stairs","localizedName":"Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_candle","localizedName":"Cyan Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_candle_cake","localizedName":"Cake with Cyan Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:cyan_wall_banner","localizedName":"Cyan Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:dandelion","localizedName":"Dandelion","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_wall_sign","localizedName":"Dark Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_brain_coral_wall_fan","localizedName":"Dead Brain Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bubble_coral_wall_fan","localizedName":"Dead Bubble Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_fire_coral_wall_fan","localizedName":"Dead Fire Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_horn_coral_wall_fan","localizedName":"Dead Horn Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dead_tube_coral_wall_fan","localizedName":"Dead Tube Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate","localizedName":"Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_brick_slab","localizedName":"Deepslate Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_brick_stairs","localizedName":"Deepslate Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_brick_wall","localizedName":"Deepslate Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_bricks","localizedName":"Deepslate Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_coal_ore","localizedName":"Deepslate Coal Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_copper_ore","localizedName":"Deepslate Copper Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_diamond_ore","localizedName":"Deepslate Diamond Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_emerald_ore","localizedName":"Deepslate Emerald Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_gold_ore","localizedName":"Deepslate Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_iron_ore","localizedName":"Deepslate Iron Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_lapis_ore","localizedName":"Deepslate Lapis Lazuli Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_redstone_ore","localizedName":"Deepslate Redstone Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":4.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tile_slab","localizedName":"Deepslate Tile Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tile_stairs","localizedName":"Deepslate Tile Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tile_wall","localizedName":"Deepslate Tile Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:deepslate_tiles","localizedName":"Deepslate Tiles","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite","localizedName":"Diorite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dirt","localizedName":"Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dirt_path","localizedName":"Dirt Path","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.65,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.65,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dispenser","localizedName":"Dispenser","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dragon_wall_head","localizedName":"Dragon Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:dripstone_block","localizedName":"Dripstone Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:dropper","localizedName":"Dropper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_gateway","localizedName":"End Gateway","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:end_portal","localizedName":"End Portal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:end_rod","localizedName":"End Rod","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:end_stone","localizedName":"End Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":9.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":22.5,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":600.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_copper","localizedName":"Exposed Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_cut_copper","localizedName":"Exposed Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_cut_copper_slab","localizedName":"Exposed Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:exposed_cut_copper_stairs","localizedName":"Exposed Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:farmland","localizedName":"Farmland","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fern","localizedName":"Fern","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire","localizedName":"Fire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fire_coral_wall_fan","localizedName":"Fire Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flowering_azalea","localizedName":"Flowering Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:flowering_azalea_leaves","localizedName":"Flowering Azalea Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:frosted_ice","localizedName":"Frosted Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:furnace","localizedName":"Furnace","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gilded_blackstone","localizedName":"Gilded Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:glass","localizedName":"Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glow_lichen","localizedName":"Glow Lichen","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.2,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:glowstone","localizedName":"Glowstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gold_block","localizedName":"Block of Gold","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite","localizedName":"Granite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:grass","localizedName":"Grass","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grass_block","localizedName":"Grass Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gravel","localizedName":"Gravel","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_candle","localizedName":"Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_candle_cake","localizedName":"Cake with Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:gray_wall_banner","localizedName":"Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_banner","localizedName":"Green Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_bed","localizedName":"Green Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_candle","localizedName":"Green Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_candle_cake","localizedName":"Cake with Green Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:green_wall_banner","localizedName":"Green Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:green_wool","localizedName":"Green Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:grindstone","localizedName":"Grindstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:hanging_roots","localizedName":"Hanging Roots","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:hay_block","localizedName":"Hay Bale","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:honey_block","localizedName":"Honey Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:hopper","localizedName":"Hopper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:horn_coral_wall_fan","localizedName":"Horn Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ice","localizedName":"Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_deepslate","localizedName":"Infested Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.75,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.75,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_block","localizedName":"Block of Iron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_door","localizedName":"Iron Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o\u0027Lantern","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:jukebox","localizedName":"Jukebox","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_wall_sign","localizedName":"Jungle Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:kelp","localizedName":"Kelp","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:kelp_plant","localizedName":"Kelp Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:ladder","localizedName":"Ladder","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lantern","localizedName":"Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lapis_block","localizedName":"Block of Lapis Lazuli","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:large_amethyst_bud","localizedName":"Large Amethyst Bud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":4,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:large_fern","localizedName":"Large Fern","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lava","localizedName":"Lava","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":100.0,"hasContainer":false,"lightValue":15,"liquid":true,"mapColor":"#ff0000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":100.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lava_cauldron","localizedName":"Lava Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lectern","localizedName":"Lectern","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lever","localizedName":"Lever","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light","localizedName":"Light","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":3600000.8,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_candle","localizedName":"Light Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_candle_cake","localizedName":"Cake with Light Blue Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_blue_wall_banner","localizedName":"Light Blue Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_candle","localizedName":"Light Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_candle_cake","localizedName":"Cake with Light Gray Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:light_gray_wall_banner","localizedName":"Light Gray Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lightning_rod","localizedName":"Lightning Rod","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lilac","localizedName":"Lilac","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_candle","localizedName":"Lime Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_candle_cake","localizedName":"Cake with Lime Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:lime_wall_banner","localizedName":"Lime Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:lodestone","localizedName":"Lodestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":true}},{"id":"minecraft:loom","localizedName":"Loom","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_candle","localizedName":"Magenta Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_candle_cake","localizedName":"Cake with Magenta Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:magenta_wall_banner","localizedName":"Magenta Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:magma_block","localizedName":"Magma Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":3,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:medium_amethyst_bud","localizedName":"Medium Amethyst Bud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":2,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:melon","localizedName":"Melon","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:melon_stem","localizedName":"Melon Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:moss_block","localizedName":"Moss Block","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:moss_carpet","localizedName":"Moss Carpet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:moving_piston","localizedName":"Moving Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:mycelium","localizedName":"Mycelium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_gold_ore","localizedName":"Nether Gold Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_portal","localizedName":"Nether Portal","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":-1.0,"hasContainer":false,"lightValue":11,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":true}},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:nether_sprouts","localizedName":"Nether Sprouts","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:netherite_block","localizedName":"Block of Netherite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:netherrack","localizedName":"Netherrack","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:note_block","localizedName":"Note Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_button","localizedName":"Oak Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_door","localizedName":"Oak Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_log","localizedName":"Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_wall_sign","localizedName":"Oak Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:observer","localizedName":"Observer","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:obsidian","localizedName":"Obsidian","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_candle","localizedName":"Orange Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_candle_cake","localizedName":"Cake with Orange Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_wall_banner","localizedName":"Orange Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:oxidized_copper","localizedName":"Oxidized Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:oxidized_cut_copper","localizedName":"Oxidized Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:oxidized_cut_copper_slab","localizedName":"Oxidized Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:oxidized_cut_copper_stairs","localizedName":"Oxidized Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a0a0ff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.98,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:peony","localizedName":"Peony","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_candle","localizedName":"Pink Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_candle_cake","localizedName":"Cake with Pink Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_wall_banner","localizedName":"Pink Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:piston","localizedName":"Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:piston_head","localizedName":"Piston Head","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:player_head","localizedName":"Player Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:player_wall_head","localizedName":"Player Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:podzol","localizedName":"Podzol","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pointed_dripstone","localizedName":"Pointed Dripstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_basalt","localizedName":"Polished Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone","localizedName":"Polished Blackstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_slab","localizedName":"Polished Blackstone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_stairs","localizedName":"Polished Blackstone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_brick_wall","localizedName":"Polished Blackstone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_bricks","localizedName":"Polished Blackstone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_button","localizedName":"Polished Blackstone Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:polished_blackstone_pressure_plate","localizedName":"Polished Blackstone Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_slab","localizedName":"Polished Blackstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_stairs","localizedName":"Polished Blackstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_blackstone_wall","localizedName":"Polished Blackstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate","localizedName":"Polished Deepslate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate_slab","localizedName":"Polished Deepslate Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate_stairs","localizedName":"Polished Deepslate Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_deepslate_wall","localizedName":"Polished Deepslate Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:poppy","localizedName":"Poppy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potatoes","localizedName":"Potatoes","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_acacia_sapling","localizedName":"Potted Acacia Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_allium","localizedName":"Potted Allium","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_azalea_bush","localizedName":"Potted Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_azure_bluet","localizedName":"Potted Azure Bluet","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_bamboo","localizedName":"Potted Bamboo","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_birch_sapling","localizedName":"Potted Birch Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_blue_orchid","localizedName":"Potted Blue Orchid","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_brown_mushroom","localizedName":"Potted Brown Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_cactus","localizedName":"Potted Cactus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_cornflower","localizedName":"Potted Cornflower","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_crimson_fungus","localizedName":"Potted Crimson Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_crimson_roots","localizedName":"Potted Crimson Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dandelion","localizedName":"Potted Dandelion","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dark_oak_sapling","localizedName":"Potted Dark Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_dead_bush","localizedName":"Potted Dead Bush","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_fern","localizedName":"Potted Fern","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_flowering_azalea_bush","localizedName":"Potted Flowering Azalea","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_jungle_sapling","localizedName":"Potted Jungle Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_lily_of_the_valley","localizedName":"Potted Lily of the Valley","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_oak_sapling","localizedName":"Potted Oak Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_orange_tulip","localizedName":"Potted Orange Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_oxeye_daisy","localizedName":"Potted Oxeye Daisy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_pink_tulip","localizedName":"Potted Pink Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_poppy","localizedName":"Potted Poppy","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_red_mushroom","localizedName":"Potted Red Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_red_tulip","localizedName":"Potted Red Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_spruce_sapling","localizedName":"Potted Spruce Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_warped_fungus","localizedName":"Potted Warped Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_warped_roots","localizedName":"Potted Warped Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_white_tulip","localizedName":"Potted White Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:potted_wither_rose","localizedName":"Potted Wither Rose","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:powder_snow","localizedName":"Powder Snow","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":false,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.25,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:powder_snow_cauldron","localizedName":"Powder Snow Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:prismarine","localizedName":"Prismarine","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:pumpkin_stem","localizedName":"Pumpkin Stem","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_candle","localizedName":"Purple Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_candle_cake","localizedName":"Cake with Purple Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purple_wall_banner","localizedName":"Purple Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_bricks","localizedName":"Quartz Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:rail","localizedName":"Rail","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.7,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.7,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:raw_copper_block","localizedName":"Block of Raw Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:raw_gold_block","localizedName":"Block of Raw Gold","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:raw_iron_block","localizedName":"Block of Raw Iron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_banner","localizedName":"Red Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_bed","localizedName":"Red Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_candle","localizedName":"Red Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_candle_cake","localizedName":"Cake with Red Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sand","localizedName":"Red Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_wall_banner","localizedName":"Red Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:red_wool","localizedName":"Red Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_wall_torch","localizedName":"Redstone Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":7,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:redstone_wire","localizedName":"Redstone Wire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:respawn_anchor","localizedName":"Respawn Anchor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":50.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1200.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:rooted_dirt","localizedName":"Rooted Dirt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sand","localizedName":"Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sandstone","localizedName":"Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sculk_sensor","localizedName":"Sculk Sensor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#191919","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":6,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:seagrass","localizedName":"Seagrass","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:shroomlight","localizedName":"Shroomlight","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":15,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:skeleton_wall_skull","localizedName":"Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:slime_block","localizedName":"Slime Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a4a8b8","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.8,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:small_amethyst_bud","localizedName":"Small Amethyst Bud","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":1,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:small_dripleaf","localizedName":"Small Dripleaf","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:smoker","localizedName":"Smoker","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_basalt","localizedName":"Smooth Basalt","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:snow","localizedName":"Snow","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:snow_block","localizedName":"Snow Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ffffff","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:soul_campfire","localizedName":"Soul Campfire","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":true,"lightValue":10,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_fire","localizedName":"Soul Fire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_lantern","localizedName":"Soul Lantern","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_soil","localizedName":"Soul Soil","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#976d4d","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_torch","localizedName":"Soul Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:soul_wall_torch","localizedName":"Soul Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":10,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spawner","localizedName":"Spawner","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":5.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":5.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:sponge","localizedName":"Sponge","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#e5e533","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spore_blossom","localizedName":"Spore Blossom","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":true,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_wall_sign","localizedName":"Spruce Sign","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":true}},{"id":"minecraft:stone","localizedName":"Stone","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_button","localizedName":"Stone Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_crimson_hyphae","localizedName":"Stripped Crimson Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_crimson_stem","localizedName":"Stripped Crimson Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_warped_hyphae","localizedName":"Stripped Warped Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:stripped_warped_stem","localizedName":"Stripped Warped Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:structure_block","localizedName":"Structure Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":-1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3600000.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:structure_void","localizedName":"Structure Void","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sunflower","localizedName":"Sunflower","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:sweet_berry_bush","localizedName":"Sweet Berry Bush","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tall_seagrass","localizedName":"Tall Seagrass","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:target","localizedName":"Target","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:terracotta","localizedName":"Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:tinted_glass","localizedName":"Tinted Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tnt","localizedName":"TNT","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#ff0000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:torch","localizedName":"Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":2.5,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":2.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tripwire","localizedName":"Tripwire","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tube_coral_wall_fan","localizedName":"Tube Coral Wall Fan","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:tuff","localizedName":"Tuff","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:twisting_vines","localizedName":"Twisting Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:twisting_vines_plant","localizedName":"Twisting Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:vine","localizedName":"Vines","material":{"burnable":true,"fragileWhenPushed":true,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.2,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:void_air","localizedName":"Void Air","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wall_torch","localizedName":"Torch","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":14,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_button","localizedName":"Warped Button","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_door","localizedName":"Warped Door","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fence","localizedName":"Warped Fence","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fence_gate","localizedName":"Warped Fence Gate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_fungus","localizedName":"Warped Fungus","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_hyphae","localizedName":"Warped Hyphae","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_nylium","localizedName":"Warped Nylium","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.4,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:warped_planks","localizedName":"Warped Planks","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_pressure_plate","localizedName":"Warped Pressure Plate","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":true,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_roots","localizedName":"Warped Roots","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_sign","localizedName":"Warped Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_slab","localizedName":"Warped Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_stairs","localizedName":"Warped Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_stem","localizedName":"Warped Stem","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_trapdoor","localizedName":"Warped Trapdoor","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":3.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_wall_sign","localizedName":"Warped Sign","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:warped_wart_block","localizedName":"Warped Wart Block","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#7fb238","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:water","localizedName":"Water","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":100.0,"hasContainer":false,"lightValue":0,"liquid":true,"mapColor":"#4040ff","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":true,"resistance":100.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:water_cauldron","localizedName":"Water Cauldron","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_copper_block","localizedName":"Waxed Block of Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_cut_copper","localizedName":"Waxed Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_cut_copper_slab","localizedName":"Waxed Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_cut_copper_stairs","localizedName":"Waxed Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_copper","localizedName":"Waxed Exposed Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_cut_copper","localizedName":"Waxed Exposed Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_cut_copper_slab","localizedName":"Waxed Exposed Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_exposed_cut_copper_stairs","localizedName":"Waxed Exposed Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_copper","localizedName":"Waxed Oxidized Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_cut_copper","localizedName":"Waxed Oxidized Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_cut_copper_slab","localizedName":"Waxed Oxidized Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_oxidized_cut_copper_stairs","localizedName":"Waxed Oxidized Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_copper","localizedName":"Waxed Weathered Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_cut_copper","localizedName":"Waxed Weathered Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_cut_copper_slab","localizedName":"Waxed Weathered Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:waxed_weathered_cut_copper_stairs","localizedName":"Waxed Weathered Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_copper","localizedName":"Weathered Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_cut_copper","localizedName":"Weathered Cut Copper","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_cut_copper_slab","localizedName":"Weathered Cut Copper Slab","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weathered_cut_copper_stairs","localizedName":"Weathered Cut Copper Stairs","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":3.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#a7a7a7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":6.0,"slipperiness":0.6,"solid":true,"ticksRandomly":true,"toolRequired":true,"unpushable":false}},{"id":"minecraft:weeping_vines","localizedName":"Weeping Vines","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:weeping_vines_plant","localizedName":"Weeping Vines Plant","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.6,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#e5e533","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.6,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wheat","localizedName":"Wheat Crops","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":true,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_banner","localizedName":"White Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_bed","localizedName":"White Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_candle","localizedName":"White Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_candle_cake","localizedName":"Cake with White Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_carpet","localizedName":"White Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_concrete","localizedName":"White Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:white_tulip","localizedName":"White Tulip","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_wall_banner","localizedName":"White Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:white_wool","localizedName":"White Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#007c00","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:wither_skeleton_wall_skull","localizedName":"Wither Skeleton Skull","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.2,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_candle","localizedName":"Yellow Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_candle_cake","localizedName":"Cake with Yellow Candle","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":0.1,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.1,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.5,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#f7e9a3","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.5,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.4,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.4,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":2.0,"hasContainer":true,"lightValue":0,"liquid":false,"mapColor":"#7f3fb2","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":2.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":false,"hardness":0.3,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":true,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.3,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","material":{"burnable":false,"fragileWhenPushed":false,"fullCube":true,"hardness":1.25,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#707070","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":4.2,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":true,"unpushable":false}},{"id":"minecraft:yellow_wall_banner","localizedName":"Yellow Banner","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#8f7748","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","material":{"burnable":true,"fragileWhenPushed":false,"fullCube":true,"hardness":0.8,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#c7c7c7","movementBlocker":true,"opaque":true,"powerSource":false,"replacedDuringPlacement":false,"resistance":0.8,"slipperiness":0.6,"solid":true,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}},{"id":"minecraft:zombie_wall_head","localizedName":"Zombie Head","material":{"burnable":false,"fragileWhenPushed":true,"fullCube":false,"hardness":1.0,"hasContainer":false,"lightValue":0,"liquid":false,"mapColor":"#000000","movementBlocker":false,"opaque":false,"powerSource":false,"replacedDuringPlacement":false,"resistance":1.0,"slipperiness":0.6,"solid":false,"ticksRandomly":false,"toolRequired":false,"unpushable":false}}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.114.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.114.json deleted file mode 100644 index 690f9fe0ae..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.114.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_boat","unlocalizedName":"item.minecraft.acacia_boat","localizedName":"Acacia Boat","maxStackSize":1,"maxDamage":0},{"id":"minecraft:acacia_button","unlocalizedName":"block.minecraft.acacia_button","localizedName":"Acacia Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_door","unlocalizedName":"block.minecraft.acacia_door","localizedName":"Acacia Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_fence","unlocalizedName":"block.minecraft.acacia_fence","localizedName":"Acacia Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_fence_gate","unlocalizedName":"block.minecraft.acacia_fence_gate","localizedName":"Acacia Fence Gate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_leaves","unlocalizedName":"block.minecraft.acacia_leaves","localizedName":"Acacia Leaves","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_log","unlocalizedName":"block.minecraft.acacia_log","localizedName":"Acacia Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_planks","unlocalizedName":"block.minecraft.acacia_planks","localizedName":"Acacia Planks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_pressure_plate","unlocalizedName":"block.minecraft.acacia_pressure_plate","localizedName":"Acacia Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_sapling","unlocalizedName":"block.minecraft.acacia_sapling","localizedName":"Acacia Sapling","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_sign","unlocalizedName":"block.minecraft.acacia_sign","localizedName":"Acacia Sign","maxStackSize":16,"maxDamage":0},{"id":"minecraft:acacia_slab","unlocalizedName":"block.minecraft.acacia_slab","localizedName":"Acacia Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_stairs","unlocalizedName":"block.minecraft.acacia_stairs","localizedName":"Acacia Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_trapdoor","unlocalizedName":"block.minecraft.acacia_trapdoor","localizedName":"Acacia Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:acacia_wood","unlocalizedName":"block.minecraft.acacia_wood","localizedName":"Acacia Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:activator_rail","unlocalizedName":"block.minecraft.activator_rail","localizedName":"Activator Rail","maxStackSize":64,"maxDamage":0},{"id":"minecraft:air","unlocalizedName":"block.minecraft.air","localizedName":"Air","maxStackSize":64,"maxDamage":0},{"id":"minecraft:allium","unlocalizedName":"block.minecraft.allium","localizedName":"Allium","maxStackSize":64,"maxDamage":0},{"id":"minecraft:andesite","unlocalizedName":"block.minecraft.andesite","localizedName":"Andesite","maxStackSize":64,"maxDamage":0},{"id":"minecraft:andesite_slab","unlocalizedName":"block.minecraft.andesite_slab","localizedName":"Andesite Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:andesite_stairs","unlocalizedName":"block.minecraft.andesite_stairs","localizedName":"Andesite Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:andesite_wall","unlocalizedName":"block.minecraft.andesite_wall","localizedName":"Andesite Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:anvil","unlocalizedName":"block.minecraft.anvil","localizedName":"Anvil","maxStackSize":64,"maxDamage":0},{"id":"minecraft:apple","unlocalizedName":"item.minecraft.apple","localizedName":"Apple","maxStackSize":64,"maxDamage":0},{"id":"minecraft:armor_stand","unlocalizedName":"item.minecraft.armor_stand","localizedName":"Armor Stand","maxStackSize":16,"maxDamage":0},{"id":"minecraft:arrow","unlocalizedName":"item.minecraft.arrow","localizedName":"Arrow","maxStackSize":64,"maxDamage":0},{"id":"minecraft:azure_bluet","unlocalizedName":"block.minecraft.azure_bluet","localizedName":"Azure Bluet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:baked_potato","unlocalizedName":"item.minecraft.baked_potato","localizedName":"Baked Potato","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bamboo","unlocalizedName":"block.minecraft.bamboo","localizedName":"Bamboo","maxStackSize":64,"maxDamage":0},{"id":"minecraft:barrel","unlocalizedName":"block.minecraft.barrel","localizedName":"Barrel","maxStackSize":64,"maxDamage":0},{"id":"minecraft:barrier","unlocalizedName":"block.minecraft.barrier","localizedName":"Barrier","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bat_spawn_egg","unlocalizedName":"item.minecraft.bat_spawn_egg","localizedName":"Bat Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:beacon","unlocalizedName":"block.minecraft.beacon","localizedName":"Beacon","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bedrock","unlocalizedName":"block.minecraft.bedrock","localizedName":"Bedrock","maxStackSize":64,"maxDamage":0},{"id":"minecraft:beef","unlocalizedName":"item.minecraft.beef","localizedName":"Raw Beef","maxStackSize":64,"maxDamage":0},{"id":"minecraft:beetroot","unlocalizedName":"item.minecraft.beetroot","localizedName":"Beetroot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:beetroot_seeds","unlocalizedName":"item.minecraft.beetroot_seeds","localizedName":"Beetroot Seeds","maxStackSize":64,"maxDamage":0},{"id":"minecraft:beetroot_soup","unlocalizedName":"item.minecraft.beetroot_soup","localizedName":"Beetroot Soup","maxStackSize":1,"maxDamage":0},{"id":"minecraft:bell","unlocalizedName":"block.minecraft.bell","localizedName":"Bell","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_boat","unlocalizedName":"item.minecraft.birch_boat","localizedName":"Birch Boat","maxStackSize":1,"maxDamage":0},{"id":"minecraft:birch_button","unlocalizedName":"block.minecraft.birch_button","localizedName":"Birch Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_door","unlocalizedName":"block.minecraft.birch_door","localizedName":"Birch Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_fence","unlocalizedName":"block.minecraft.birch_fence","localizedName":"Birch Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_fence_gate","unlocalizedName":"block.minecraft.birch_fence_gate","localizedName":"Birch Fence Gate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_leaves","unlocalizedName":"block.minecraft.birch_leaves","localizedName":"Birch Leaves","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_log","unlocalizedName":"block.minecraft.birch_log","localizedName":"Birch Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_planks","unlocalizedName":"block.minecraft.birch_planks","localizedName":"Birch Planks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_pressure_plate","unlocalizedName":"block.minecraft.birch_pressure_plate","localizedName":"Birch Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_sapling","unlocalizedName":"block.minecraft.birch_sapling","localizedName":"Birch Sapling","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_sign","unlocalizedName":"block.minecraft.birch_sign","localizedName":"Birch Sign","maxStackSize":16,"maxDamage":0},{"id":"minecraft:birch_slab","unlocalizedName":"block.minecraft.birch_slab","localizedName":"Birch Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_stairs","unlocalizedName":"block.minecraft.birch_stairs","localizedName":"Birch Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_trapdoor","unlocalizedName":"block.minecraft.birch_trapdoor","localizedName":"Birch Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:birch_wood","unlocalizedName":"block.minecraft.birch_wood","localizedName":"Birch Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_banner","unlocalizedName":"block.minecraft.black_banner","localizedName":"Black Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:black_bed","unlocalizedName":"block.minecraft.black_bed","localizedName":"Black Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:black_carpet","unlocalizedName":"block.minecraft.black_carpet","localizedName":"Black Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_concrete","unlocalizedName":"block.minecraft.black_concrete","localizedName":"Black Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_concrete_powder","unlocalizedName":"block.minecraft.black_concrete_powder","localizedName":"Black Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_dye","unlocalizedName":"item.minecraft.black_dye","localizedName":"Black Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_glazed_terracotta","unlocalizedName":"block.minecraft.black_glazed_terracotta","localizedName":"Black Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_shulker_box","unlocalizedName":"block.minecraft.black_shulker_box","localizedName":"Black Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:black_stained_glass","unlocalizedName":"block.minecraft.black_stained_glass","localizedName":"Black Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_stained_glass_pane","unlocalizedName":"block.minecraft.black_stained_glass_pane","localizedName":"Black Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_terracotta","unlocalizedName":"block.minecraft.black_terracotta","localizedName":"Black Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:black_wool","unlocalizedName":"block.minecraft.black_wool","localizedName":"Black Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blast_furnace","unlocalizedName":"block.minecraft.blast_furnace","localizedName":"Blast Furnace","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blaze_powder","unlocalizedName":"item.minecraft.blaze_powder","localizedName":"Blaze Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blaze_rod","unlocalizedName":"item.minecraft.blaze_rod","localizedName":"Blaze Rod","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blaze_spawn_egg","unlocalizedName":"item.minecraft.blaze_spawn_egg","localizedName":"Blaze Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_banner","unlocalizedName":"block.minecraft.blue_banner","localizedName":"Blue Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:blue_bed","unlocalizedName":"block.minecraft.blue_bed","localizedName":"Blue Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:blue_carpet","unlocalizedName":"block.minecraft.blue_carpet","localizedName":"Blue Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_concrete","unlocalizedName":"block.minecraft.blue_concrete","localizedName":"Blue Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_concrete_powder","unlocalizedName":"block.minecraft.blue_concrete_powder","localizedName":"Blue Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_dye","unlocalizedName":"item.minecraft.blue_dye","localizedName":"Blue Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_glazed_terracotta","unlocalizedName":"block.minecraft.blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_ice","unlocalizedName":"block.minecraft.blue_ice","localizedName":"Blue Ice","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_orchid","unlocalizedName":"block.minecraft.blue_orchid","localizedName":"Blue Orchid","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_shulker_box","unlocalizedName":"block.minecraft.blue_shulker_box","localizedName":"Blue Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:blue_stained_glass","unlocalizedName":"block.minecraft.blue_stained_glass","localizedName":"Blue Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_stained_glass_pane","unlocalizedName":"block.minecraft.blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_terracotta","unlocalizedName":"block.minecraft.blue_terracotta","localizedName":"Blue Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:blue_wool","unlocalizedName":"block.minecraft.blue_wool","localizedName":"Blue Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bone","unlocalizedName":"item.minecraft.bone","localizedName":"Bone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bone_block","unlocalizedName":"block.minecraft.bone_block","localizedName":"Bone Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bone_meal","unlocalizedName":"item.minecraft.bone_meal","localizedName":"Bone Meal","maxStackSize":64,"maxDamage":0},{"id":"minecraft:book","unlocalizedName":"item.minecraft.book","localizedName":"Book","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bookshelf","unlocalizedName":"block.minecraft.bookshelf","localizedName":"Bookshelf","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bow","unlocalizedName":"item.minecraft.bow","localizedName":"Bow","maxStackSize":1,"maxDamage":384},{"id":"minecraft:bowl","unlocalizedName":"item.minecraft.bowl","localizedName":"Bowl","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brain_coral","unlocalizedName":"block.minecraft.brain_coral","localizedName":"Brain Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brain_coral_block","unlocalizedName":"block.minecraft.brain_coral_block","localizedName":"Brain Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brain_coral_fan","unlocalizedName":"block.minecraft.brain_coral_fan","localizedName":"Brain Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bread","unlocalizedName":"item.minecraft.bread","localizedName":"Bread","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brewing_stand","unlocalizedName":"block.minecraft.brewing_stand","localizedName":"Brewing Stand","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brick","unlocalizedName":"item.minecraft.brick","localizedName":"Brick","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brick_slab","unlocalizedName":"block.minecraft.brick_slab","localizedName":"Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brick_stairs","unlocalizedName":"block.minecraft.brick_stairs","localizedName":"Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brick_wall","unlocalizedName":"block.minecraft.brick_wall","localizedName":"Brick Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bricks","unlocalizedName":"block.minecraft.bricks","localizedName":"Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_banner","unlocalizedName":"block.minecraft.brown_banner","localizedName":"Brown Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:brown_bed","unlocalizedName":"block.minecraft.brown_bed","localizedName":"Brown Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:brown_carpet","unlocalizedName":"block.minecraft.brown_carpet","localizedName":"Brown Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_concrete","unlocalizedName":"block.minecraft.brown_concrete","localizedName":"Brown Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_concrete_powder","unlocalizedName":"block.minecraft.brown_concrete_powder","localizedName":"Brown Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_dye","unlocalizedName":"item.minecraft.brown_dye","localizedName":"Brown Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_glazed_terracotta","unlocalizedName":"block.minecraft.brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_mushroom","unlocalizedName":"block.minecraft.brown_mushroom","localizedName":"Brown Mushroom","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_mushroom_block","unlocalizedName":"block.minecraft.brown_mushroom_block","localizedName":"Brown Mushroom Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_shulker_box","unlocalizedName":"block.minecraft.brown_shulker_box","localizedName":"Brown Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:brown_stained_glass","unlocalizedName":"block.minecraft.brown_stained_glass","localizedName":"Brown Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_stained_glass_pane","unlocalizedName":"block.minecraft.brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_terracotta","unlocalizedName":"block.minecraft.brown_terracotta","localizedName":"Brown Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:brown_wool","unlocalizedName":"block.minecraft.brown_wool","localizedName":"Brown Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bubble_coral","unlocalizedName":"block.minecraft.bubble_coral","localizedName":"Bubble Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bubble_coral_block","unlocalizedName":"block.minecraft.bubble_coral_block","localizedName":"Bubble Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bubble_coral_fan","unlocalizedName":"block.minecraft.bubble_coral_fan","localizedName":"Bubble Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:bucket","unlocalizedName":"item.minecraft.bucket","localizedName":"Bucket","maxStackSize":16,"maxDamage":0},{"id":"minecraft:cactus","unlocalizedName":"block.minecraft.cactus","localizedName":"Cactus","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cake","unlocalizedName":"block.minecraft.cake","localizedName":"Cake","maxStackSize":1,"maxDamage":0},{"id":"minecraft:campfire","unlocalizedName":"block.minecraft.campfire","localizedName":"Campfire","maxStackSize":64,"maxDamage":0},{"id":"minecraft:carrot","unlocalizedName":"item.minecraft.carrot","localizedName":"Carrot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:carrot_on_a_stick","unlocalizedName":"item.minecraft.carrot_on_a_stick","localizedName":"Carrot on a Stick","maxStackSize":1,"maxDamage":25},{"id":"minecraft:cartography_table","unlocalizedName":"block.minecraft.cartography_table","localizedName":"Cartography Table","maxStackSize":64,"maxDamage":0},{"id":"minecraft:carved_pumpkin","unlocalizedName":"block.minecraft.carved_pumpkin","localizedName":"Carved Pumpkin","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cat_spawn_egg","unlocalizedName":"item.minecraft.cat_spawn_egg","localizedName":"Cat Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cauldron","unlocalizedName":"block.minecraft.cauldron","localizedName":"Cauldron","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cave_spider_spawn_egg","unlocalizedName":"item.minecraft.cave_spider_spawn_egg","localizedName":"Cave Spider Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chain_command_block","unlocalizedName":"block.minecraft.chain_command_block","localizedName":"Chain Command Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chainmail_boots","unlocalizedName":"item.minecraft.chainmail_boots","localizedName":"Chainmail Boots","maxStackSize":1,"maxDamage":195},{"id":"minecraft:chainmail_chestplate","unlocalizedName":"item.minecraft.chainmail_chestplate","localizedName":"Chainmail Chestplate","maxStackSize":1,"maxDamage":240},{"id":"minecraft:chainmail_helmet","unlocalizedName":"item.minecraft.chainmail_helmet","localizedName":"Chainmail Helmet","maxStackSize":1,"maxDamage":165},{"id":"minecraft:chainmail_leggings","unlocalizedName":"item.minecraft.chainmail_leggings","localizedName":"Chainmail Leggings","maxStackSize":1,"maxDamage":225},{"id":"minecraft:charcoal","unlocalizedName":"item.minecraft.charcoal","localizedName":"Charcoal","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chest","unlocalizedName":"block.minecraft.chest","localizedName":"Chest","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chest_minecart","unlocalizedName":"item.minecraft.chest_minecart","localizedName":"Minecart with Chest","maxStackSize":1,"maxDamage":0},{"id":"minecraft:chicken","unlocalizedName":"item.minecraft.chicken","localizedName":"Raw Chicken","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chicken_spawn_egg","unlocalizedName":"item.minecraft.chicken_spawn_egg","localizedName":"Chicken Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chipped_anvil","unlocalizedName":"block.minecraft.chipped_anvil","localizedName":"Chipped Anvil","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chiseled_quartz_block","unlocalizedName":"block.minecraft.chiseled_quartz_block","localizedName":"Chiseled Quartz Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chiseled_red_sandstone","unlocalizedName":"block.minecraft.chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chiseled_sandstone","unlocalizedName":"block.minecraft.chiseled_sandstone","localizedName":"Chiseled Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chiseled_stone_bricks","unlocalizedName":"block.minecraft.chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chorus_flower","unlocalizedName":"block.minecraft.chorus_flower","localizedName":"Chorus Flower","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chorus_fruit","unlocalizedName":"item.minecraft.chorus_fruit","localizedName":"Chorus Fruit","maxStackSize":64,"maxDamage":0},{"id":"minecraft:chorus_plant","unlocalizedName":"block.minecraft.chorus_plant","localizedName":"Chorus Plant","maxStackSize":64,"maxDamage":0},{"id":"minecraft:clay","unlocalizedName":"block.minecraft.clay","localizedName":"Clay","maxStackSize":64,"maxDamage":0},{"id":"minecraft:clay_ball","unlocalizedName":"item.minecraft.clay_ball","localizedName":"Clay","maxStackSize":64,"maxDamage":0},{"id":"minecraft:clock","unlocalizedName":"item.minecraft.clock","localizedName":"Clock","maxStackSize":64,"maxDamage":0},{"id":"minecraft:coal","unlocalizedName":"item.minecraft.coal","localizedName":"Coal","maxStackSize":64,"maxDamage":0},{"id":"minecraft:coal_block","unlocalizedName":"block.minecraft.coal_block","localizedName":"Block of Coal","maxStackSize":64,"maxDamage":0},{"id":"minecraft:coal_ore","unlocalizedName":"block.minecraft.coal_ore","localizedName":"Coal Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:coarse_dirt","unlocalizedName":"block.minecraft.coarse_dirt","localizedName":"Coarse Dirt","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cobblestone","unlocalizedName":"block.minecraft.cobblestone","localizedName":"Cobblestone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cobblestone_slab","unlocalizedName":"block.minecraft.cobblestone_slab","localizedName":"Cobblestone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cobblestone_stairs","unlocalizedName":"block.minecraft.cobblestone_stairs","localizedName":"Cobblestone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cobblestone_wall","unlocalizedName":"block.minecraft.cobblestone_wall","localizedName":"Cobblestone Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cobweb","unlocalizedName":"block.minecraft.cobweb","localizedName":"Cobweb","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cocoa_beans","unlocalizedName":"item.minecraft.cocoa_beans","localizedName":"Cocoa Beans","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cod","unlocalizedName":"item.minecraft.cod","localizedName":"Raw Cod","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cod_bucket","unlocalizedName":"item.minecraft.cod_bucket","localizedName":"Bucket of Cod","maxStackSize":1,"maxDamage":0},{"id":"minecraft:cod_spawn_egg","unlocalizedName":"item.minecraft.cod_spawn_egg","localizedName":"Cod Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:command_block","unlocalizedName":"block.minecraft.command_block","localizedName":"Command Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:command_block_minecart","unlocalizedName":"item.minecraft.command_block_minecart","localizedName":"Minecart with Command Block","maxStackSize":1,"maxDamage":0},{"id":"minecraft:comparator","unlocalizedName":"block.minecraft.comparator","localizedName":"Redstone Comparator","maxStackSize":64,"maxDamage":0},{"id":"minecraft:compass","unlocalizedName":"item.minecraft.compass","localizedName":"Compass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:composter","unlocalizedName":"block.minecraft.composter","localizedName":"Composter","maxStackSize":64,"maxDamage":0},{"id":"minecraft:conduit","unlocalizedName":"block.minecraft.conduit","localizedName":"Conduit","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_beef","unlocalizedName":"item.minecraft.cooked_beef","localizedName":"Steak","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_chicken","unlocalizedName":"item.minecraft.cooked_chicken","localizedName":"Cooked Chicken","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_cod","unlocalizedName":"item.minecraft.cooked_cod","localizedName":"Cooked Cod","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_mutton","unlocalizedName":"item.minecraft.cooked_mutton","localizedName":"Cooked Mutton","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_porkchop","unlocalizedName":"item.minecraft.cooked_porkchop","localizedName":"Cooked Porkchop","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_rabbit","unlocalizedName":"item.minecraft.cooked_rabbit","localizedName":"Cooked Rabbit","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cooked_salmon","unlocalizedName":"item.minecraft.cooked_salmon","localizedName":"Cooked Salmon","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cookie","unlocalizedName":"item.minecraft.cookie","localizedName":"Cookie","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cornflower","unlocalizedName":"block.minecraft.cornflower","localizedName":"Cornflower","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cow_spawn_egg","unlocalizedName":"item.minecraft.cow_spawn_egg","localizedName":"Cow Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cracked_stone_bricks","unlocalizedName":"block.minecraft.cracked_stone_bricks","localizedName":"Cracked Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:crafting_table","unlocalizedName":"block.minecraft.crafting_table","localizedName":"Crafting Table","maxStackSize":64,"maxDamage":0},{"id":"minecraft:creeper_banner_pattern","unlocalizedName":"item.minecraft.creeper_banner_pattern","localizedName":"Banner Pattern","maxStackSize":1,"maxDamage":0},{"id":"minecraft:creeper_head","unlocalizedName":"block.minecraft.creeper_head","localizedName":"Creeper Head","maxStackSize":64,"maxDamage":0},{"id":"minecraft:creeper_spawn_egg","unlocalizedName":"item.minecraft.creeper_spawn_egg","localizedName":"Creeper Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:crossbow","unlocalizedName":"item.minecraft.crossbow","localizedName":"Crossbow","maxStackSize":1,"maxDamage":326},{"id":"minecraft:cut_red_sandstone","unlocalizedName":"block.minecraft.cut_red_sandstone","localizedName":"Cut Red Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cut_red_sandstone_slab","unlocalizedName":"block.minecraft.cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cut_sandstone","unlocalizedName":"block.minecraft.cut_sandstone","localizedName":"Cut Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cut_sandstone_slab","unlocalizedName":"block.minecraft.cut_sandstone_slab","localizedName":"Cut Sandstone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_banner","unlocalizedName":"block.minecraft.cyan_banner","localizedName":"Cyan Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:cyan_bed","unlocalizedName":"block.minecraft.cyan_bed","localizedName":"Cyan Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:cyan_carpet","unlocalizedName":"block.minecraft.cyan_carpet","localizedName":"Cyan Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_concrete","unlocalizedName":"block.minecraft.cyan_concrete","localizedName":"Cyan Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_concrete_powder","unlocalizedName":"block.minecraft.cyan_concrete_powder","localizedName":"Cyan Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_dye","unlocalizedName":"item.minecraft.cyan_dye","localizedName":"Cyan Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_glazed_terracotta","unlocalizedName":"block.minecraft.cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_shulker_box","unlocalizedName":"block.minecraft.cyan_shulker_box","localizedName":"Cyan Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:cyan_stained_glass","unlocalizedName":"block.minecraft.cyan_stained_glass","localizedName":"Cyan Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_stained_glass_pane","unlocalizedName":"block.minecraft.cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_terracotta","unlocalizedName":"block.minecraft.cyan_terracotta","localizedName":"Cyan Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:cyan_wool","unlocalizedName":"block.minecraft.cyan_wool","localizedName":"Cyan Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:damaged_anvil","unlocalizedName":"block.minecraft.damaged_anvil","localizedName":"Damaged Anvil","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dandelion","unlocalizedName":"block.minecraft.dandelion","localizedName":"Dandelion","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_boat","unlocalizedName":"item.minecraft.dark_oak_boat","localizedName":"Dark Oak Boat","maxStackSize":1,"maxDamage":0},{"id":"minecraft:dark_oak_button","unlocalizedName":"block.minecraft.dark_oak_button","localizedName":"Dark Oak Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_door","unlocalizedName":"block.minecraft.dark_oak_door","localizedName":"Dark Oak Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_fence","unlocalizedName":"block.minecraft.dark_oak_fence","localizedName":"Dark Oak Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_fence_gate","unlocalizedName":"block.minecraft.dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_leaves","unlocalizedName":"block.minecraft.dark_oak_leaves","localizedName":"Dark Oak Leaves","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_log","unlocalizedName":"block.minecraft.dark_oak_log","localizedName":"Dark Oak Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_planks","unlocalizedName":"block.minecraft.dark_oak_planks","localizedName":"Dark Oak Planks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_pressure_plate","unlocalizedName":"block.minecraft.dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_sapling","unlocalizedName":"block.minecraft.dark_oak_sapling","localizedName":"Dark Oak Sapling","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_sign","unlocalizedName":"block.minecraft.dark_oak_sign","localizedName":"Dark Oak Sign","maxStackSize":16,"maxDamage":0},{"id":"minecraft:dark_oak_slab","unlocalizedName":"block.minecraft.dark_oak_slab","localizedName":"Dark Oak Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_stairs","unlocalizedName":"block.minecraft.dark_oak_stairs","localizedName":"Dark Oak Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_trapdoor","unlocalizedName":"block.minecraft.dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_oak_wood","unlocalizedName":"block.minecraft.dark_oak_wood","localizedName":"Dark Oak Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_prismarine","unlocalizedName":"block.minecraft.dark_prismarine","localizedName":"Dark Prismarine","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_prismarine_slab","unlocalizedName":"block.minecraft.dark_prismarine_slab","localizedName":"Dark Prismarine Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dark_prismarine_stairs","unlocalizedName":"block.minecraft.dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:daylight_detector","unlocalizedName":"block.minecraft.daylight_detector","localizedName":"Daylight Detector","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_brain_coral","unlocalizedName":"block.minecraft.dead_brain_coral","localizedName":"Dead Brain Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_brain_coral_block","unlocalizedName":"block.minecraft.dead_brain_coral_block","localizedName":"Dead Brain Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_brain_coral_fan","unlocalizedName":"block.minecraft.dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_bubble_coral","unlocalizedName":"block.minecraft.dead_bubble_coral","localizedName":"Dead Bubble Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_bubble_coral_block","unlocalizedName":"block.minecraft.dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_bubble_coral_fan","unlocalizedName":"block.minecraft.dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_bush","unlocalizedName":"block.minecraft.dead_bush","localizedName":"Dead Bush","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_fire_coral","unlocalizedName":"block.minecraft.dead_fire_coral","localizedName":"Dead Fire Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_fire_coral_block","unlocalizedName":"block.minecraft.dead_fire_coral_block","localizedName":"Dead Fire Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_fire_coral_fan","unlocalizedName":"block.minecraft.dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_horn_coral","unlocalizedName":"block.minecraft.dead_horn_coral","localizedName":"Dead Horn Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_horn_coral_block","unlocalizedName":"block.minecraft.dead_horn_coral_block","localizedName":"Dead Horn Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_horn_coral_fan","unlocalizedName":"block.minecraft.dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_tube_coral","unlocalizedName":"block.minecraft.dead_tube_coral","localizedName":"Dead Tube Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_tube_coral_block","unlocalizedName":"block.minecraft.dead_tube_coral_block","localizedName":"Dead Tube Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dead_tube_coral_fan","unlocalizedName":"block.minecraft.dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:debug_stick","unlocalizedName":"item.minecraft.debug_stick","localizedName":"Debug Stick","maxStackSize":1,"maxDamage":0},{"id":"minecraft:detector_rail","unlocalizedName":"block.minecraft.detector_rail","localizedName":"Detector Rail","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diamond","unlocalizedName":"item.minecraft.diamond","localizedName":"Diamond","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diamond_axe","unlocalizedName":"item.minecraft.diamond_axe","localizedName":"Diamond Axe","maxStackSize":1,"maxDamage":1561},{"id":"minecraft:diamond_block","unlocalizedName":"block.minecraft.diamond_block","localizedName":"Block of Diamond","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diamond_boots","unlocalizedName":"item.minecraft.diamond_boots","localizedName":"Diamond Boots","maxStackSize":1,"maxDamage":429},{"id":"minecraft:diamond_chestplate","unlocalizedName":"item.minecraft.diamond_chestplate","localizedName":"Diamond Chestplate","maxStackSize":1,"maxDamage":528},{"id":"minecraft:diamond_helmet","unlocalizedName":"item.minecraft.diamond_helmet","localizedName":"Diamond Helmet","maxStackSize":1,"maxDamage":363},{"id":"minecraft:diamond_hoe","unlocalizedName":"item.minecraft.diamond_hoe","localizedName":"Diamond Hoe","maxStackSize":1,"maxDamage":1561},{"id":"minecraft:diamond_horse_armor","unlocalizedName":"item.minecraft.diamond_horse_armor","localizedName":"Diamond Horse Armor","maxStackSize":1,"maxDamage":0},{"id":"minecraft:diamond_leggings","unlocalizedName":"item.minecraft.diamond_leggings","localizedName":"Diamond Leggings","maxStackSize":1,"maxDamage":495},{"id":"minecraft:diamond_ore","unlocalizedName":"block.minecraft.diamond_ore","localizedName":"Diamond Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diamond_pickaxe","unlocalizedName":"item.minecraft.diamond_pickaxe","localizedName":"Diamond Pickaxe","maxStackSize":1,"maxDamage":1561},{"id":"minecraft:diamond_shovel","unlocalizedName":"item.minecraft.diamond_shovel","localizedName":"Diamond Shovel","maxStackSize":1,"maxDamage":1561},{"id":"minecraft:diamond_sword","unlocalizedName":"item.minecraft.diamond_sword","localizedName":"Diamond Sword","maxStackSize":1,"maxDamage":1561},{"id":"minecraft:diorite","unlocalizedName":"block.minecraft.diorite","localizedName":"Diorite","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diorite_slab","unlocalizedName":"block.minecraft.diorite_slab","localizedName":"Diorite Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diorite_stairs","unlocalizedName":"block.minecraft.diorite_stairs","localizedName":"Diorite Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:diorite_wall","unlocalizedName":"block.minecraft.diorite_wall","localizedName":"Diorite Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dirt","unlocalizedName":"block.minecraft.dirt","localizedName":"Dirt","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dispenser","unlocalizedName":"block.minecraft.dispenser","localizedName":"Dispenser","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dolphin_spawn_egg","unlocalizedName":"item.minecraft.dolphin_spawn_egg","localizedName":"Dolphin Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:donkey_spawn_egg","unlocalizedName":"item.minecraft.donkey_spawn_egg","localizedName":"Donkey Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dragon_breath","unlocalizedName":"item.minecraft.dragon_breath","localizedName":"Dragon's Breath","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dragon_egg","unlocalizedName":"block.minecraft.dragon_egg","localizedName":"Dragon Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dragon_head","unlocalizedName":"block.minecraft.dragon_head","localizedName":"Dragon Head","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dried_kelp","unlocalizedName":"item.minecraft.dried_kelp","localizedName":"Dried Kelp","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dried_kelp_block","unlocalizedName":"block.minecraft.dried_kelp_block","localizedName":"Dried Kelp Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:dropper","unlocalizedName":"block.minecraft.dropper","localizedName":"Dropper","maxStackSize":64,"maxDamage":0},{"id":"minecraft:drowned_spawn_egg","unlocalizedName":"item.minecraft.drowned_spawn_egg","localizedName":"Drowned Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:egg","unlocalizedName":"item.minecraft.egg","localizedName":"Egg","maxStackSize":16,"maxDamage":0},{"id":"minecraft:elder_guardian_spawn_egg","unlocalizedName":"item.minecraft.elder_guardian_spawn_egg","localizedName":"Elder Guardian Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:elytra","unlocalizedName":"item.minecraft.elytra","localizedName":"Elytra","maxStackSize":1,"maxDamage":432},{"id":"minecraft:emerald","unlocalizedName":"item.minecraft.emerald","localizedName":"Emerald","maxStackSize":64,"maxDamage":0},{"id":"minecraft:emerald_block","unlocalizedName":"block.minecraft.emerald_block","localizedName":"Block of Emerald","maxStackSize":64,"maxDamage":0},{"id":"minecraft:emerald_ore","unlocalizedName":"block.minecraft.emerald_ore","localizedName":"Emerald Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:enchanted_book","unlocalizedName":"item.minecraft.enchanted_book","localizedName":"Enchanted Book","maxStackSize":1,"maxDamage":0},{"id":"minecraft:enchanted_golden_apple","unlocalizedName":"item.minecraft.enchanted_golden_apple","localizedName":"Enchanted Golden Apple","maxStackSize":64,"maxDamage":0},{"id":"minecraft:enchanting_table","unlocalizedName":"block.minecraft.enchanting_table","localizedName":"Enchanting Table","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_crystal","unlocalizedName":"item.minecraft.end_crystal","localizedName":"End Crystal","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_portal_frame","unlocalizedName":"block.minecraft.end_portal_frame","localizedName":"End Portal Frame","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_rod","unlocalizedName":"block.minecraft.end_rod","localizedName":"End Rod","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_stone","unlocalizedName":"block.minecraft.end_stone","localizedName":"End Stone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_stone_brick_slab","unlocalizedName":"block.minecraft.end_stone_brick_slab","localizedName":"End Stone Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_stone_brick_stairs","unlocalizedName":"block.minecraft.end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_stone_brick_wall","unlocalizedName":"block.minecraft.end_stone_brick_wall","localizedName":"End Stone Brick Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:end_stone_bricks","unlocalizedName":"block.minecraft.end_stone_bricks","localizedName":"End Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ender_chest","unlocalizedName":"block.minecraft.ender_chest","localizedName":"Ender Chest","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ender_eye","unlocalizedName":"item.minecraft.ender_eye","localizedName":"Eye of Ender","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ender_pearl","unlocalizedName":"item.minecraft.ender_pearl","localizedName":"Ender Pearl","maxStackSize":16,"maxDamage":0},{"id":"minecraft:enderman_spawn_egg","unlocalizedName":"item.minecraft.enderman_spawn_egg","localizedName":"Enderman Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:endermite_spawn_egg","unlocalizedName":"item.minecraft.endermite_spawn_egg","localizedName":"Endermite Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:evoker_spawn_egg","unlocalizedName":"item.minecraft.evoker_spawn_egg","localizedName":"Evoker Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:experience_bottle","unlocalizedName":"item.minecraft.experience_bottle","localizedName":"Bottle o' Enchanting","maxStackSize":64,"maxDamage":0},{"id":"minecraft:farmland","unlocalizedName":"block.minecraft.farmland","localizedName":"Farmland","maxStackSize":64,"maxDamage":0},{"id":"minecraft:feather","unlocalizedName":"item.minecraft.feather","localizedName":"Feather","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fermented_spider_eye","unlocalizedName":"item.minecraft.fermented_spider_eye","localizedName":"Fermented Spider Eye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fern","unlocalizedName":"block.minecraft.fern","localizedName":"Fern","maxStackSize":64,"maxDamage":0},{"id":"minecraft:filled_map","unlocalizedName":"item.minecraft.filled_map","localizedName":"Map","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fire_charge","unlocalizedName":"item.minecraft.fire_charge","localizedName":"Fire Charge","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fire_coral","unlocalizedName":"block.minecraft.fire_coral","localizedName":"Fire Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fire_coral_block","unlocalizedName":"block.minecraft.fire_coral_block","localizedName":"Fire Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fire_coral_fan","unlocalizedName":"block.minecraft.fire_coral_fan","localizedName":"Fire Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:firework_rocket","unlocalizedName":"item.minecraft.firework_rocket","localizedName":"Firework Rocket","maxStackSize":64,"maxDamage":0},{"id":"minecraft:firework_star","unlocalizedName":"item.minecraft.firework_star","localizedName":"Firework Star","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fishing_rod","unlocalizedName":"item.minecraft.fishing_rod","localizedName":"Fishing Rod","maxStackSize":1,"maxDamage":64},{"id":"minecraft:fletching_table","unlocalizedName":"block.minecraft.fletching_table","localizedName":"Fletching Table","maxStackSize":64,"maxDamage":0},{"id":"minecraft:flint","unlocalizedName":"item.minecraft.flint","localizedName":"Flint","maxStackSize":64,"maxDamage":0},{"id":"minecraft:flint_and_steel","unlocalizedName":"item.minecraft.flint_and_steel","localizedName":"Flint and Steel","maxStackSize":1,"maxDamage":64},{"id":"minecraft:flower_banner_pattern","unlocalizedName":"item.minecraft.flower_banner_pattern","localizedName":"Banner Pattern","maxStackSize":1,"maxDamage":0},{"id":"minecraft:flower_pot","unlocalizedName":"block.minecraft.flower_pot","localizedName":"Flower Pot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:fox_spawn_egg","unlocalizedName":"item.minecraft.fox_spawn_egg","localizedName":"Fox Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:furnace","unlocalizedName":"block.minecraft.furnace","localizedName":"Furnace","maxStackSize":64,"maxDamage":0},{"id":"minecraft:furnace_minecart","unlocalizedName":"item.minecraft.furnace_minecart","localizedName":"Minecart with Furnace","maxStackSize":1,"maxDamage":0},{"id":"minecraft:ghast_spawn_egg","unlocalizedName":"item.minecraft.ghast_spawn_egg","localizedName":"Ghast Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ghast_tear","unlocalizedName":"item.minecraft.ghast_tear","localizedName":"Ghast Tear","maxStackSize":64,"maxDamage":0},{"id":"minecraft:glass","unlocalizedName":"block.minecraft.glass","localizedName":"Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:glass_bottle","unlocalizedName":"item.minecraft.glass_bottle","localizedName":"Glass Bottle","maxStackSize":64,"maxDamage":0},{"id":"minecraft:glass_pane","unlocalizedName":"block.minecraft.glass_pane","localizedName":"Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:glistering_melon_slice","unlocalizedName":"item.minecraft.glistering_melon_slice","localizedName":"Glistering Melon Slice","maxStackSize":64,"maxDamage":0},{"id":"minecraft:globe_banner_pattern","unlocalizedName":"item.minecraft.globe_banner_pattern","localizedName":"Banner Pattern","maxStackSize":1,"maxDamage":0},{"id":"minecraft:glowstone","unlocalizedName":"block.minecraft.glowstone","localizedName":"Glowstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:glowstone_dust","unlocalizedName":"item.minecraft.glowstone_dust","localizedName":"Glowstone Dust","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gold_block","unlocalizedName":"block.minecraft.gold_block","localizedName":"Block of Gold","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gold_ingot","unlocalizedName":"item.minecraft.gold_ingot","localizedName":"Gold Ingot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gold_nugget","unlocalizedName":"item.minecraft.gold_nugget","localizedName":"Gold Nugget","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gold_ore","unlocalizedName":"block.minecraft.gold_ore","localizedName":"Gold Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:golden_apple","unlocalizedName":"item.minecraft.golden_apple","localizedName":"Golden Apple","maxStackSize":64,"maxDamage":0},{"id":"minecraft:golden_axe","unlocalizedName":"item.minecraft.golden_axe","localizedName":"Golden Axe","maxStackSize":1,"maxDamage":32},{"id":"minecraft:golden_boots","unlocalizedName":"item.minecraft.golden_boots","localizedName":"Golden Boots","maxStackSize":1,"maxDamage":91},{"id":"minecraft:golden_carrot","unlocalizedName":"item.minecraft.golden_carrot","localizedName":"Golden Carrot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:golden_chestplate","unlocalizedName":"item.minecraft.golden_chestplate","localizedName":"Golden Chestplate","maxStackSize":1,"maxDamage":112},{"id":"minecraft:golden_helmet","unlocalizedName":"item.minecraft.golden_helmet","localizedName":"Golden Helmet","maxStackSize":1,"maxDamage":77},{"id":"minecraft:golden_hoe","unlocalizedName":"item.minecraft.golden_hoe","localizedName":"Golden Hoe","maxStackSize":1,"maxDamage":32},{"id":"minecraft:golden_horse_armor","unlocalizedName":"item.minecraft.golden_horse_armor","localizedName":"Golden Horse Armor","maxStackSize":1,"maxDamage":0},{"id":"minecraft:golden_leggings","unlocalizedName":"item.minecraft.golden_leggings","localizedName":"Golden Leggings","maxStackSize":1,"maxDamage":105},{"id":"minecraft:golden_pickaxe","unlocalizedName":"item.minecraft.golden_pickaxe","localizedName":"Golden Pickaxe","maxStackSize":1,"maxDamage":32},{"id":"minecraft:golden_shovel","unlocalizedName":"item.minecraft.golden_shovel","localizedName":"Golden Shovel","maxStackSize":1,"maxDamage":32},{"id":"minecraft:golden_sword","unlocalizedName":"item.minecraft.golden_sword","localizedName":"Golden Sword","maxStackSize":1,"maxDamage":32},{"id":"minecraft:granite","unlocalizedName":"block.minecraft.granite","localizedName":"Granite","maxStackSize":64,"maxDamage":0},{"id":"minecraft:granite_slab","unlocalizedName":"block.minecraft.granite_slab","localizedName":"Granite Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:granite_stairs","unlocalizedName":"block.minecraft.granite_stairs","localizedName":"Granite Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:granite_wall","unlocalizedName":"block.minecraft.granite_wall","localizedName":"Granite Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:grass","unlocalizedName":"block.minecraft.grass","localizedName":"Grass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:grass_block","unlocalizedName":"block.minecraft.grass_block","localizedName":"Grass Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:grass_path","unlocalizedName":"block.minecraft.grass_path","localizedName":"Grass Path","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gravel","unlocalizedName":"block.minecraft.gravel","localizedName":"Gravel","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_banner","unlocalizedName":"block.minecraft.gray_banner","localizedName":"Gray Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:gray_bed","unlocalizedName":"block.minecraft.gray_bed","localizedName":"Gray Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:gray_carpet","unlocalizedName":"block.minecraft.gray_carpet","localizedName":"Gray Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_concrete","unlocalizedName":"block.minecraft.gray_concrete","localizedName":"Gray Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_concrete_powder","unlocalizedName":"block.minecraft.gray_concrete_powder","localizedName":"Gray Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_dye","unlocalizedName":"item.minecraft.gray_dye","localizedName":"Gray Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_glazed_terracotta","unlocalizedName":"block.minecraft.gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_shulker_box","unlocalizedName":"block.minecraft.gray_shulker_box","localizedName":"Gray Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:gray_stained_glass","unlocalizedName":"block.minecraft.gray_stained_glass","localizedName":"Gray Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_stained_glass_pane","unlocalizedName":"block.minecraft.gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_terracotta","unlocalizedName":"block.minecraft.gray_terracotta","localizedName":"Gray Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gray_wool","unlocalizedName":"block.minecraft.gray_wool","localizedName":"Gray Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_banner","unlocalizedName":"block.minecraft.green_banner","localizedName":"Green Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:green_bed","unlocalizedName":"block.minecraft.green_bed","localizedName":"Green Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:green_carpet","unlocalizedName":"block.minecraft.green_carpet","localizedName":"Green Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_concrete","unlocalizedName":"block.minecraft.green_concrete","localizedName":"Green Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_concrete_powder","unlocalizedName":"block.minecraft.green_concrete_powder","localizedName":"Green Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_dye","unlocalizedName":"item.minecraft.green_dye","localizedName":"Green Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_glazed_terracotta","unlocalizedName":"block.minecraft.green_glazed_terracotta","localizedName":"Green Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_shulker_box","unlocalizedName":"block.minecraft.green_shulker_box","localizedName":"Green Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:green_stained_glass","unlocalizedName":"block.minecraft.green_stained_glass","localizedName":"Green Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_stained_glass_pane","unlocalizedName":"block.minecraft.green_stained_glass_pane","localizedName":"Green Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_terracotta","unlocalizedName":"block.minecraft.green_terracotta","localizedName":"Green Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:green_wool","unlocalizedName":"block.minecraft.green_wool","localizedName":"Green Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:grindstone","unlocalizedName":"block.minecraft.grindstone","localizedName":"Grindstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:guardian_spawn_egg","unlocalizedName":"item.minecraft.guardian_spawn_egg","localizedName":"Guardian Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:gunpowder","unlocalizedName":"item.minecraft.gunpowder","localizedName":"Gunpowder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:hay_block","unlocalizedName":"block.minecraft.hay_block","localizedName":"Hay Bale","maxStackSize":64,"maxDamage":0},{"id":"minecraft:heart_of_the_sea","unlocalizedName":"item.minecraft.heart_of_the_sea","localizedName":"Heart of the Sea","maxStackSize":64,"maxDamage":0},{"id":"minecraft:heavy_weighted_pressure_plate","unlocalizedName":"block.minecraft.heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:hopper","unlocalizedName":"block.minecraft.hopper","localizedName":"Hopper","maxStackSize":64,"maxDamage":0},{"id":"minecraft:hopper_minecart","unlocalizedName":"item.minecraft.hopper_minecart","localizedName":"Minecart with Hopper","maxStackSize":1,"maxDamage":0},{"id":"minecraft:horn_coral","unlocalizedName":"block.minecraft.horn_coral","localizedName":"Horn Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:horn_coral_block","unlocalizedName":"block.minecraft.horn_coral_block","localizedName":"Horn Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:horn_coral_fan","unlocalizedName":"block.minecraft.horn_coral_fan","localizedName":"Horn Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:horse_spawn_egg","unlocalizedName":"item.minecraft.horse_spawn_egg","localizedName":"Horse Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:husk_spawn_egg","unlocalizedName":"item.minecraft.husk_spawn_egg","localizedName":"Husk Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ice","unlocalizedName":"block.minecraft.ice","localizedName":"Ice","maxStackSize":64,"maxDamage":0},{"id":"minecraft:infested_chiseled_stone_bricks","unlocalizedName":"block.minecraft.infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:infested_cobblestone","unlocalizedName":"block.minecraft.infested_cobblestone","localizedName":"Infested Cobblestone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:infested_cracked_stone_bricks","unlocalizedName":"block.minecraft.infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:infested_mossy_stone_bricks","unlocalizedName":"block.minecraft.infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:infested_stone","unlocalizedName":"block.minecraft.infested_stone","localizedName":"Infested Stone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:infested_stone_bricks","unlocalizedName":"block.minecraft.infested_stone_bricks","localizedName":"Infested Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ink_sac","unlocalizedName":"item.minecraft.ink_sac","localizedName":"Ink Sac","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_axe","unlocalizedName":"item.minecraft.iron_axe","localizedName":"Iron Axe","maxStackSize":1,"maxDamage":250},{"id":"minecraft:iron_bars","unlocalizedName":"block.minecraft.iron_bars","localizedName":"Iron Bars","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_block","unlocalizedName":"block.minecraft.iron_block","localizedName":"Block of Iron","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_boots","unlocalizedName":"item.minecraft.iron_boots","localizedName":"Iron Boots","maxStackSize":1,"maxDamage":195},{"id":"minecraft:iron_chestplate","unlocalizedName":"item.minecraft.iron_chestplate","localizedName":"Iron Chestplate","maxStackSize":1,"maxDamage":240},{"id":"minecraft:iron_door","unlocalizedName":"block.minecraft.iron_door","localizedName":"Iron Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_helmet","unlocalizedName":"item.minecraft.iron_helmet","localizedName":"Iron Helmet","maxStackSize":1,"maxDamage":165},{"id":"minecraft:iron_hoe","unlocalizedName":"item.minecraft.iron_hoe","localizedName":"Iron Hoe","maxStackSize":1,"maxDamage":250},{"id":"minecraft:iron_horse_armor","unlocalizedName":"item.minecraft.iron_horse_armor","localizedName":"Iron Horse Armor","maxStackSize":1,"maxDamage":0},{"id":"minecraft:iron_ingot","unlocalizedName":"item.minecraft.iron_ingot","localizedName":"Iron Ingot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_leggings","unlocalizedName":"item.minecraft.iron_leggings","localizedName":"Iron Leggings","maxStackSize":1,"maxDamage":225},{"id":"minecraft:iron_nugget","unlocalizedName":"item.minecraft.iron_nugget","localizedName":"Iron Nugget","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_ore","unlocalizedName":"block.minecraft.iron_ore","localizedName":"Iron Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:iron_pickaxe","unlocalizedName":"item.minecraft.iron_pickaxe","localizedName":"Iron Pickaxe","maxStackSize":1,"maxDamage":250},{"id":"minecraft:iron_shovel","unlocalizedName":"item.minecraft.iron_shovel","localizedName":"Iron Shovel","maxStackSize":1,"maxDamage":250},{"id":"minecraft:iron_sword","unlocalizedName":"item.minecraft.iron_sword","localizedName":"Iron Sword","maxStackSize":1,"maxDamage":250},{"id":"minecraft:iron_trapdoor","unlocalizedName":"block.minecraft.iron_trapdoor","localizedName":"Iron Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:item_frame","unlocalizedName":"item.minecraft.item_frame","localizedName":"Item Frame","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jack_o_lantern","unlocalizedName":"block.minecraft.jack_o_lantern","localizedName":"Jack o'Lantern","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jigsaw","unlocalizedName":"block.minecraft.jigsaw","localizedName":"Jigsaw Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jukebox","unlocalizedName":"block.minecraft.jukebox","localizedName":"Jukebox","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_boat","unlocalizedName":"item.minecraft.jungle_boat","localizedName":"Jungle Boat","maxStackSize":1,"maxDamage":0},{"id":"minecraft:jungle_button","unlocalizedName":"block.minecraft.jungle_button","localizedName":"Jungle Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_door","unlocalizedName":"block.minecraft.jungle_door","localizedName":"Jungle Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_fence","unlocalizedName":"block.minecraft.jungle_fence","localizedName":"Jungle Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_fence_gate","unlocalizedName":"block.minecraft.jungle_fence_gate","localizedName":"Jungle Fence Gate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_leaves","unlocalizedName":"block.minecraft.jungle_leaves","localizedName":"Jungle Leaves","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_log","unlocalizedName":"block.minecraft.jungle_log","localizedName":"Jungle Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_planks","unlocalizedName":"block.minecraft.jungle_planks","localizedName":"Jungle Planks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_pressure_plate","unlocalizedName":"block.minecraft.jungle_pressure_plate","localizedName":"Jungle Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_sapling","unlocalizedName":"block.minecraft.jungle_sapling","localizedName":"Jungle Sapling","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_sign","unlocalizedName":"block.minecraft.jungle_sign","localizedName":"Jungle Sign","maxStackSize":16,"maxDamage":0},{"id":"minecraft:jungle_slab","unlocalizedName":"block.minecraft.jungle_slab","localizedName":"Jungle Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_stairs","unlocalizedName":"block.minecraft.jungle_stairs","localizedName":"Jungle Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_trapdoor","unlocalizedName":"block.minecraft.jungle_trapdoor","localizedName":"Jungle Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:jungle_wood","unlocalizedName":"block.minecraft.jungle_wood","localizedName":"Jungle Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:kelp","unlocalizedName":"block.minecraft.kelp","localizedName":"Kelp","maxStackSize":64,"maxDamage":0},{"id":"minecraft:knowledge_book","unlocalizedName":"item.minecraft.knowledge_book","localizedName":"Knowledge Book","maxStackSize":1,"maxDamage":0},{"id":"minecraft:ladder","unlocalizedName":"block.minecraft.ladder","localizedName":"Ladder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lantern","unlocalizedName":"block.minecraft.lantern","localizedName":"Lantern","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lapis_block","unlocalizedName":"block.minecraft.lapis_block","localizedName":"Lapis Lazuli Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lapis_lazuli","unlocalizedName":"item.minecraft.lapis_lazuli","localizedName":"Lapis Lazuli","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lapis_ore","unlocalizedName":"block.minecraft.lapis_ore","localizedName":"Lapis Lazuli Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:large_fern","unlocalizedName":"block.minecraft.large_fern","localizedName":"Large Fern","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lava_bucket","unlocalizedName":"item.minecraft.lava_bucket","localizedName":"Lava Bucket","maxStackSize":1,"maxDamage":0},{"id":"minecraft:lead","unlocalizedName":"item.minecraft.lead","localizedName":"Lead","maxStackSize":64,"maxDamage":0},{"id":"minecraft:leather","unlocalizedName":"item.minecraft.leather","localizedName":"Leather","maxStackSize":64,"maxDamage":0},{"id":"minecraft:leather_boots","unlocalizedName":"item.minecraft.leather_boots","localizedName":"Leather Boots","maxStackSize":1,"maxDamage":65},{"id":"minecraft:leather_chestplate","unlocalizedName":"item.minecraft.leather_chestplate","localizedName":"Leather Tunic","maxStackSize":1,"maxDamage":80},{"id":"minecraft:leather_helmet","unlocalizedName":"item.minecraft.leather_helmet","localizedName":"Leather Cap","maxStackSize":1,"maxDamage":55},{"id":"minecraft:leather_horse_armor","unlocalizedName":"item.minecraft.leather_horse_armor","localizedName":"Leather Horse Armor","maxStackSize":1,"maxDamage":0},{"id":"minecraft:leather_leggings","unlocalizedName":"item.minecraft.leather_leggings","localizedName":"Leather Pants","maxStackSize":1,"maxDamage":75},{"id":"minecraft:lectern","unlocalizedName":"block.minecraft.lectern","localizedName":"Lectern","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lever","unlocalizedName":"block.minecraft.lever","localizedName":"Lever","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_banner","unlocalizedName":"block.minecraft.light_blue_banner","localizedName":"Light Blue Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:light_blue_bed","unlocalizedName":"block.minecraft.light_blue_bed","localizedName":"Light Blue Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:light_blue_carpet","unlocalizedName":"block.minecraft.light_blue_carpet","localizedName":"Light Blue Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_concrete","unlocalizedName":"block.minecraft.light_blue_concrete","localizedName":"Light Blue Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_concrete_powder","unlocalizedName":"block.minecraft.light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_dye","unlocalizedName":"item.minecraft.light_blue_dye","localizedName":"Light Blue Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_glazed_terracotta","unlocalizedName":"block.minecraft.light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_shulker_box","unlocalizedName":"block.minecraft.light_blue_shulker_box","localizedName":"Light Blue Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:light_blue_stained_glass","unlocalizedName":"block.minecraft.light_blue_stained_glass","localizedName":"Light Blue Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_stained_glass_pane","unlocalizedName":"block.minecraft.light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_terracotta","unlocalizedName":"block.minecraft.light_blue_terracotta","localizedName":"Light Blue Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_blue_wool","unlocalizedName":"block.minecraft.light_blue_wool","localizedName":"Light Blue Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_banner","unlocalizedName":"block.minecraft.light_gray_banner","localizedName":"Light Gray Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:light_gray_bed","unlocalizedName":"block.minecraft.light_gray_bed","localizedName":"Light Gray Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:light_gray_carpet","unlocalizedName":"block.minecraft.light_gray_carpet","localizedName":"Light Gray Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_concrete","unlocalizedName":"block.minecraft.light_gray_concrete","localizedName":"Light Gray Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_concrete_powder","unlocalizedName":"block.minecraft.light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_dye","unlocalizedName":"item.minecraft.light_gray_dye","localizedName":"Light Gray Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_glazed_terracotta","unlocalizedName":"block.minecraft.light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_shulker_box","unlocalizedName":"block.minecraft.light_gray_shulker_box","localizedName":"Light Gray Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:light_gray_stained_glass","unlocalizedName":"block.minecraft.light_gray_stained_glass","localizedName":"Light Gray Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_stained_glass_pane","unlocalizedName":"block.minecraft.light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_terracotta","unlocalizedName":"block.minecraft.light_gray_terracotta","localizedName":"Light Gray Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_gray_wool","unlocalizedName":"block.minecraft.light_gray_wool","localizedName":"Light Gray Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:light_weighted_pressure_plate","unlocalizedName":"block.minecraft.light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lilac","unlocalizedName":"block.minecraft.lilac","localizedName":"Lilac","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lily_of_the_valley","unlocalizedName":"block.minecraft.lily_of_the_valley","localizedName":"Lily of the Valley","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lily_pad","unlocalizedName":"block.minecraft.lily_pad","localizedName":"Lily Pad","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_banner","unlocalizedName":"block.minecraft.lime_banner","localizedName":"Lime Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:lime_bed","unlocalizedName":"block.minecraft.lime_bed","localizedName":"Lime Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:lime_carpet","unlocalizedName":"block.minecraft.lime_carpet","localizedName":"Lime Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_concrete","unlocalizedName":"block.minecraft.lime_concrete","localizedName":"Lime Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_concrete_powder","unlocalizedName":"block.minecraft.lime_concrete_powder","localizedName":"Lime Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_dye","unlocalizedName":"item.minecraft.lime_dye","localizedName":"Lime Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_glazed_terracotta","unlocalizedName":"block.minecraft.lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_shulker_box","unlocalizedName":"block.minecraft.lime_shulker_box","localizedName":"Lime Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:lime_stained_glass","unlocalizedName":"block.minecraft.lime_stained_glass","localizedName":"Lime Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_stained_glass_pane","unlocalizedName":"block.minecraft.lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_terracotta","unlocalizedName":"block.minecraft.lime_terracotta","localizedName":"Lime Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lime_wool","unlocalizedName":"block.minecraft.lime_wool","localizedName":"Lime Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:lingering_potion","unlocalizedName":"item.minecraft.lingering_potion.effect.water","localizedName":"Lingering Water Bottle","maxStackSize":1,"maxDamage":0},{"id":"minecraft:llama_spawn_egg","unlocalizedName":"item.minecraft.llama_spawn_egg","localizedName":"Llama Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:loom","unlocalizedName":"block.minecraft.loom","localizedName":"Loom","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_banner","unlocalizedName":"block.minecraft.magenta_banner","localizedName":"Magenta Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:magenta_bed","unlocalizedName":"block.minecraft.magenta_bed","localizedName":"Magenta Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:magenta_carpet","unlocalizedName":"block.minecraft.magenta_carpet","localizedName":"Magenta Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_concrete","unlocalizedName":"block.minecraft.magenta_concrete","localizedName":"Magenta Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_concrete_powder","unlocalizedName":"block.minecraft.magenta_concrete_powder","localizedName":"Magenta Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_dye","unlocalizedName":"item.minecraft.magenta_dye","localizedName":"Magenta Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_glazed_terracotta","unlocalizedName":"block.minecraft.magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_shulker_box","unlocalizedName":"block.minecraft.magenta_shulker_box","localizedName":"Magenta Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:magenta_stained_glass","unlocalizedName":"block.minecraft.magenta_stained_glass","localizedName":"Magenta Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_stained_glass_pane","unlocalizedName":"block.minecraft.magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_terracotta","unlocalizedName":"block.minecraft.magenta_terracotta","localizedName":"Magenta Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magenta_wool","unlocalizedName":"block.minecraft.magenta_wool","localizedName":"Magenta Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magma_block","unlocalizedName":"block.minecraft.magma_block","localizedName":"Magma Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magma_cream","unlocalizedName":"item.minecraft.magma_cream","localizedName":"Magma Cream","maxStackSize":64,"maxDamage":0},{"id":"minecraft:magma_cube_spawn_egg","unlocalizedName":"item.minecraft.magma_cube_spawn_egg","localizedName":"Magma Cube Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:map","unlocalizedName":"item.minecraft.map","localizedName":"Empty Map","maxStackSize":64,"maxDamage":0},{"id":"minecraft:melon","unlocalizedName":"block.minecraft.melon","localizedName":"Melon","maxStackSize":64,"maxDamage":0},{"id":"minecraft:melon_seeds","unlocalizedName":"item.minecraft.melon_seeds","localizedName":"Melon Seeds","maxStackSize":64,"maxDamage":0},{"id":"minecraft:melon_slice","unlocalizedName":"item.minecraft.melon_slice","localizedName":"Melon Slice","maxStackSize":64,"maxDamage":0},{"id":"minecraft:milk_bucket","unlocalizedName":"item.minecraft.milk_bucket","localizedName":"Milk Bucket","maxStackSize":1,"maxDamage":0},{"id":"minecraft:minecart","unlocalizedName":"item.minecraft.minecart","localizedName":"Minecart","maxStackSize":1,"maxDamage":0},{"id":"minecraft:mojang_banner_pattern","unlocalizedName":"item.minecraft.mojang_banner_pattern","localizedName":"Banner Pattern","maxStackSize":1,"maxDamage":0},{"id":"minecraft:mooshroom_spawn_egg","unlocalizedName":"item.minecraft.mooshroom_spawn_egg","localizedName":"Mooshroom Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_cobblestone","unlocalizedName":"block.minecraft.mossy_cobblestone","localizedName":"Mossy Cobblestone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_cobblestone_slab","unlocalizedName":"block.minecraft.mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_cobblestone_stairs","unlocalizedName":"block.minecraft.mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_cobblestone_wall","unlocalizedName":"block.minecraft.mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_stone_brick_slab","unlocalizedName":"block.minecraft.mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_stone_brick_stairs","unlocalizedName":"block.minecraft.mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_stone_brick_wall","unlocalizedName":"block.minecraft.mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mossy_stone_bricks","unlocalizedName":"block.minecraft.mossy_stone_bricks","localizedName":"Mossy Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mule_spawn_egg","unlocalizedName":"item.minecraft.mule_spawn_egg","localizedName":"Mule Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mushroom_stem","unlocalizedName":"block.minecraft.mushroom_stem","localizedName":"Mushroom Stem","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mushroom_stew","unlocalizedName":"item.minecraft.mushroom_stew","localizedName":"Mushroom Stew","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_11","unlocalizedName":"item.minecraft.music_disc_11","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_13","unlocalizedName":"item.minecraft.music_disc_13","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_blocks","unlocalizedName":"item.minecraft.music_disc_blocks","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_cat","unlocalizedName":"item.minecraft.music_disc_cat","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_chirp","unlocalizedName":"item.minecraft.music_disc_chirp","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_far","unlocalizedName":"item.minecraft.music_disc_far","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_mall","unlocalizedName":"item.minecraft.music_disc_mall","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_mellohi","unlocalizedName":"item.minecraft.music_disc_mellohi","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_stal","unlocalizedName":"item.minecraft.music_disc_stal","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_strad","unlocalizedName":"item.minecraft.music_disc_strad","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_wait","unlocalizedName":"item.minecraft.music_disc_wait","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:music_disc_ward","unlocalizedName":"item.minecraft.music_disc_ward","localizedName":"Music Disc","maxStackSize":1,"maxDamage":0},{"id":"minecraft:mutton","unlocalizedName":"item.minecraft.mutton","localizedName":"Raw Mutton","maxStackSize":64,"maxDamage":0},{"id":"minecraft:mycelium","unlocalizedName":"block.minecraft.mycelium","localizedName":"Mycelium","maxStackSize":64,"maxDamage":0},{"id":"minecraft:name_tag","unlocalizedName":"item.minecraft.name_tag","localizedName":"Name Tag","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nautilus_shell","unlocalizedName":"item.minecraft.nautilus_shell","localizedName":"Nautilus Shell","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_brick","unlocalizedName":"item.minecraft.nether_brick","localizedName":"Nether Brick","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_brick_fence","unlocalizedName":"block.minecraft.nether_brick_fence","localizedName":"Nether Brick Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_brick_slab","unlocalizedName":"block.minecraft.nether_brick_slab","localizedName":"Nether Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_brick_stairs","unlocalizedName":"block.minecraft.nether_brick_stairs","localizedName":"Nether Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_brick_wall","unlocalizedName":"block.minecraft.nether_brick_wall","localizedName":"Nether Brick Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_bricks","unlocalizedName":"block.minecraft.nether_bricks","localizedName":"Nether Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_quartz_ore","unlocalizedName":"block.minecraft.nether_quartz_ore","localizedName":"Nether Quartz Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_star","unlocalizedName":"item.minecraft.nether_star","localizedName":"Nether Star","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_wart","unlocalizedName":"item.minecraft.nether_wart","localizedName":"Nether Wart","maxStackSize":64,"maxDamage":0},{"id":"minecraft:nether_wart_block","unlocalizedName":"block.minecraft.nether_wart_block","localizedName":"Nether Wart Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:netherrack","unlocalizedName":"block.minecraft.netherrack","localizedName":"Netherrack","maxStackSize":64,"maxDamage":0},{"id":"minecraft:note_block","unlocalizedName":"block.minecraft.note_block","localizedName":"Note Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_boat","unlocalizedName":"item.minecraft.oak_boat","localizedName":"Oak Boat","maxStackSize":1,"maxDamage":0},{"id":"minecraft:oak_button","unlocalizedName":"block.minecraft.oak_button","localizedName":"Oak Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_door","unlocalizedName":"block.minecraft.oak_door","localizedName":"Oak Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_fence","unlocalizedName":"block.minecraft.oak_fence","localizedName":"Oak Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_fence_gate","unlocalizedName":"block.minecraft.oak_fence_gate","localizedName":"Oak Fence Gate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_leaves","unlocalizedName":"block.minecraft.oak_leaves","localizedName":"Oak Leaves","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_log","unlocalizedName":"block.minecraft.oak_log","localizedName":"Oak Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_planks","unlocalizedName":"block.minecraft.oak_planks","localizedName":"Oak Planks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_pressure_plate","unlocalizedName":"block.minecraft.oak_pressure_plate","localizedName":"Oak Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_sapling","unlocalizedName":"block.minecraft.oak_sapling","localizedName":"Oak Sapling","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_sign","unlocalizedName":"block.minecraft.oak_sign","localizedName":"Oak Sign","maxStackSize":16,"maxDamage":0},{"id":"minecraft:oak_slab","unlocalizedName":"block.minecraft.oak_slab","localizedName":"Oak Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_stairs","unlocalizedName":"block.minecraft.oak_stairs","localizedName":"Oak Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_trapdoor","unlocalizedName":"block.minecraft.oak_trapdoor","localizedName":"Oak Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oak_wood","unlocalizedName":"block.minecraft.oak_wood","localizedName":"Oak Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:observer","unlocalizedName":"block.minecraft.observer","localizedName":"Observer","maxStackSize":64,"maxDamage":0},{"id":"minecraft:obsidian","unlocalizedName":"block.minecraft.obsidian","localizedName":"Obsidian","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ocelot_spawn_egg","unlocalizedName":"item.minecraft.ocelot_spawn_egg","localizedName":"Ocelot Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_banner","unlocalizedName":"block.minecraft.orange_banner","localizedName":"Orange Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:orange_bed","unlocalizedName":"block.minecraft.orange_bed","localizedName":"Orange Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:orange_carpet","unlocalizedName":"block.minecraft.orange_carpet","localizedName":"Orange Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_concrete","unlocalizedName":"block.minecraft.orange_concrete","localizedName":"Orange Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_concrete_powder","unlocalizedName":"block.minecraft.orange_concrete_powder","localizedName":"Orange Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_dye","unlocalizedName":"item.minecraft.orange_dye","localizedName":"Orange Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_glazed_terracotta","unlocalizedName":"block.minecraft.orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_shulker_box","unlocalizedName":"block.minecraft.orange_shulker_box","localizedName":"Orange Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:orange_stained_glass","unlocalizedName":"block.minecraft.orange_stained_glass","localizedName":"Orange Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_stained_glass_pane","unlocalizedName":"block.minecraft.orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_terracotta","unlocalizedName":"block.minecraft.orange_terracotta","localizedName":"Orange Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_tulip","unlocalizedName":"block.minecraft.orange_tulip","localizedName":"Orange Tulip","maxStackSize":64,"maxDamage":0},{"id":"minecraft:orange_wool","unlocalizedName":"block.minecraft.orange_wool","localizedName":"Orange Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:oxeye_daisy","unlocalizedName":"block.minecraft.oxeye_daisy","localizedName":"Oxeye Daisy","maxStackSize":64,"maxDamage":0},{"id":"minecraft:packed_ice","unlocalizedName":"block.minecraft.packed_ice","localizedName":"Packed Ice","maxStackSize":64,"maxDamage":0},{"id":"minecraft:painting","unlocalizedName":"item.minecraft.painting","localizedName":"Painting","maxStackSize":64,"maxDamage":0},{"id":"minecraft:panda_spawn_egg","unlocalizedName":"item.minecraft.panda_spawn_egg","localizedName":"Panda Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:paper","unlocalizedName":"item.minecraft.paper","localizedName":"Paper","maxStackSize":64,"maxDamage":0},{"id":"minecraft:parrot_spawn_egg","unlocalizedName":"item.minecraft.parrot_spawn_egg","localizedName":"Parrot Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:peony","unlocalizedName":"block.minecraft.peony","localizedName":"Peony","maxStackSize":64,"maxDamage":0},{"id":"minecraft:petrified_oak_slab","unlocalizedName":"block.minecraft.petrified_oak_slab","localizedName":"Petrified Oak Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:phantom_membrane","unlocalizedName":"item.minecraft.phantom_membrane","localizedName":"Phantom Membrane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:phantom_spawn_egg","unlocalizedName":"item.minecraft.phantom_spawn_egg","localizedName":"Phantom Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pig_spawn_egg","unlocalizedName":"item.minecraft.pig_spawn_egg","localizedName":"Pig Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pillager_spawn_egg","unlocalizedName":"item.minecraft.pillager_spawn_egg","localizedName":"Pillager Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_banner","unlocalizedName":"block.minecraft.pink_banner","localizedName":"Pink Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:pink_bed","unlocalizedName":"block.minecraft.pink_bed","localizedName":"Pink Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:pink_carpet","unlocalizedName":"block.minecraft.pink_carpet","localizedName":"Pink Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_concrete","unlocalizedName":"block.minecraft.pink_concrete","localizedName":"Pink Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_concrete_powder","unlocalizedName":"block.minecraft.pink_concrete_powder","localizedName":"Pink Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_dye","unlocalizedName":"item.minecraft.pink_dye","localizedName":"Pink Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_glazed_terracotta","unlocalizedName":"block.minecraft.pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_shulker_box","unlocalizedName":"block.minecraft.pink_shulker_box","localizedName":"Pink Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:pink_stained_glass","unlocalizedName":"block.minecraft.pink_stained_glass","localizedName":"Pink Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_stained_glass_pane","unlocalizedName":"block.minecraft.pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_terracotta","unlocalizedName":"block.minecraft.pink_terracotta","localizedName":"Pink Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_tulip","unlocalizedName":"block.minecraft.pink_tulip","localizedName":"Pink Tulip","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pink_wool","unlocalizedName":"block.minecraft.pink_wool","localizedName":"Pink Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:piston","unlocalizedName":"block.minecraft.piston","localizedName":"Piston","maxStackSize":64,"maxDamage":0},{"id":"minecraft:player_head","unlocalizedName":"block.minecraft.player_head","localizedName":"Player Head","maxStackSize":64,"maxDamage":0},{"id":"minecraft:podzol","unlocalizedName":"block.minecraft.podzol","localizedName":"Podzol","maxStackSize":64,"maxDamage":0},{"id":"minecraft:poisonous_potato","unlocalizedName":"item.minecraft.poisonous_potato","localizedName":"Poisonous Potato","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polar_bear_spawn_egg","unlocalizedName":"item.minecraft.polar_bear_spawn_egg","localizedName":"Polar Bear Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_andesite","unlocalizedName":"block.minecraft.polished_andesite","localizedName":"Polished Andesite","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_andesite_slab","unlocalizedName":"block.minecraft.polished_andesite_slab","localizedName":"Polished Andesite Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_andesite_stairs","unlocalizedName":"block.minecraft.polished_andesite_stairs","localizedName":"Polished Andesite Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_diorite","unlocalizedName":"block.minecraft.polished_diorite","localizedName":"Polished Diorite","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_diorite_slab","unlocalizedName":"block.minecraft.polished_diorite_slab","localizedName":"Polished Diorite Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_diorite_stairs","unlocalizedName":"block.minecraft.polished_diorite_stairs","localizedName":"Polished Diorite Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_granite","unlocalizedName":"block.minecraft.polished_granite","localizedName":"Polished Granite","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_granite_slab","unlocalizedName":"block.minecraft.polished_granite_slab","localizedName":"Polished Granite Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:polished_granite_stairs","unlocalizedName":"block.minecraft.polished_granite_stairs","localizedName":"Polished Granite Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:popped_chorus_fruit","unlocalizedName":"item.minecraft.popped_chorus_fruit","localizedName":"Popped Chorus Fruit","maxStackSize":64,"maxDamage":0},{"id":"minecraft:poppy","unlocalizedName":"block.minecraft.poppy","localizedName":"Poppy","maxStackSize":64,"maxDamage":0},{"id":"minecraft:porkchop","unlocalizedName":"item.minecraft.porkchop","localizedName":"Raw Porkchop","maxStackSize":64,"maxDamage":0},{"id":"minecraft:potato","unlocalizedName":"item.minecraft.potato","localizedName":"Potato","maxStackSize":64,"maxDamage":0},{"id":"minecraft:potion","unlocalizedName":"item.minecraft.potion.effect.water","localizedName":"Water Bottle","maxStackSize":1,"maxDamage":0},{"id":"minecraft:powered_rail","unlocalizedName":"block.minecraft.powered_rail","localizedName":"Powered Rail","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine","unlocalizedName":"block.minecraft.prismarine","localizedName":"Prismarine","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_brick_slab","unlocalizedName":"block.minecraft.prismarine_brick_slab","localizedName":"Prismarine Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_brick_stairs","unlocalizedName":"block.minecraft.prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_bricks","unlocalizedName":"block.minecraft.prismarine_bricks","localizedName":"Prismarine Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_crystals","unlocalizedName":"item.minecraft.prismarine_crystals","localizedName":"Prismarine Crystals","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_shard","unlocalizedName":"item.minecraft.prismarine_shard","localizedName":"Prismarine Shard","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_slab","unlocalizedName":"block.minecraft.prismarine_slab","localizedName":"Prismarine Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_stairs","unlocalizedName":"block.minecraft.prismarine_stairs","localizedName":"Prismarine Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:prismarine_wall","unlocalizedName":"block.minecraft.prismarine_wall","localizedName":"Prismarine Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pufferfish","unlocalizedName":"item.minecraft.pufferfish","localizedName":"Pufferfish","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pufferfish_bucket","unlocalizedName":"item.minecraft.pufferfish_bucket","localizedName":"Bucket of Pufferfish","maxStackSize":1,"maxDamage":0},{"id":"minecraft:pufferfish_spawn_egg","unlocalizedName":"item.minecraft.pufferfish_spawn_egg","localizedName":"Pufferfish Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pumpkin","unlocalizedName":"block.minecraft.pumpkin","localizedName":"Pumpkin","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pumpkin_pie","unlocalizedName":"item.minecraft.pumpkin_pie","localizedName":"Pumpkin Pie","maxStackSize":64,"maxDamage":0},{"id":"minecraft:pumpkin_seeds","unlocalizedName":"item.minecraft.pumpkin_seeds","localizedName":"Pumpkin Seeds","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_banner","unlocalizedName":"block.minecraft.purple_banner","localizedName":"Purple Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:purple_bed","unlocalizedName":"block.minecraft.purple_bed","localizedName":"Purple Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:purple_carpet","unlocalizedName":"block.minecraft.purple_carpet","localizedName":"Purple Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_concrete","unlocalizedName":"block.minecraft.purple_concrete","localizedName":"Purple Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_concrete_powder","unlocalizedName":"block.minecraft.purple_concrete_powder","localizedName":"Purple Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_dye","unlocalizedName":"item.minecraft.purple_dye","localizedName":"Purple Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_glazed_terracotta","unlocalizedName":"block.minecraft.purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_shulker_box","unlocalizedName":"block.minecraft.purple_shulker_box","localizedName":"Purple Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:purple_stained_glass","unlocalizedName":"block.minecraft.purple_stained_glass","localizedName":"Purple Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_stained_glass_pane","unlocalizedName":"block.minecraft.purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_terracotta","unlocalizedName":"block.minecraft.purple_terracotta","localizedName":"Purple Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purple_wool","unlocalizedName":"block.minecraft.purple_wool","localizedName":"Purple Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purpur_block","unlocalizedName":"block.minecraft.purpur_block","localizedName":"Purpur Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purpur_pillar","unlocalizedName":"block.minecraft.purpur_pillar","localizedName":"Purpur Pillar","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purpur_slab","unlocalizedName":"block.minecraft.purpur_slab","localizedName":"Purpur Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:purpur_stairs","unlocalizedName":"block.minecraft.purpur_stairs","localizedName":"Purpur Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:quartz","unlocalizedName":"item.minecraft.quartz","localizedName":"Nether Quartz","maxStackSize":64,"maxDamage":0},{"id":"minecraft:quartz_block","unlocalizedName":"block.minecraft.quartz_block","localizedName":"Block of Quartz","maxStackSize":64,"maxDamage":0},{"id":"minecraft:quartz_pillar","unlocalizedName":"block.minecraft.quartz_pillar","localizedName":"Quartz Pillar","maxStackSize":64,"maxDamage":0},{"id":"minecraft:quartz_slab","unlocalizedName":"block.minecraft.quartz_slab","localizedName":"Quartz Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:quartz_stairs","unlocalizedName":"block.minecraft.quartz_stairs","localizedName":"Quartz Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rabbit","unlocalizedName":"item.minecraft.rabbit","localizedName":"Raw Rabbit","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rabbit_foot","unlocalizedName":"item.minecraft.rabbit_foot","localizedName":"Rabbit's Foot","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rabbit_hide","unlocalizedName":"item.minecraft.rabbit_hide","localizedName":"Rabbit Hide","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rabbit_spawn_egg","unlocalizedName":"item.minecraft.rabbit_spawn_egg","localizedName":"Rabbit Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rabbit_stew","unlocalizedName":"item.minecraft.rabbit_stew","localizedName":"Rabbit Stew","maxStackSize":1,"maxDamage":0},{"id":"minecraft:rail","unlocalizedName":"block.minecraft.rail","localizedName":"Rail","maxStackSize":64,"maxDamage":0},{"id":"minecraft:ravager_spawn_egg","unlocalizedName":"item.minecraft.ravager_spawn_egg","localizedName":"Ravager Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_banner","unlocalizedName":"block.minecraft.red_banner","localizedName":"Red Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:red_bed","unlocalizedName":"block.minecraft.red_bed","localizedName":"Red Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:red_carpet","unlocalizedName":"block.minecraft.red_carpet","localizedName":"Red Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_concrete","unlocalizedName":"block.minecraft.red_concrete","localizedName":"Red Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_concrete_powder","unlocalizedName":"block.minecraft.red_concrete_powder","localizedName":"Red Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_dye","unlocalizedName":"item.minecraft.red_dye","localizedName":"Red Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_glazed_terracotta","unlocalizedName":"block.minecraft.red_glazed_terracotta","localizedName":"Red Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_mushroom","unlocalizedName":"block.minecraft.red_mushroom","localizedName":"Red Mushroom","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_mushroom_block","unlocalizedName":"block.minecraft.red_mushroom_block","localizedName":"Red Mushroom Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_nether_brick_slab","unlocalizedName":"block.minecraft.red_nether_brick_slab","localizedName":"Red Nether Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_nether_brick_stairs","unlocalizedName":"block.minecraft.red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_nether_brick_wall","unlocalizedName":"block.minecraft.red_nether_brick_wall","localizedName":"Red Nether Brick Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_nether_bricks","unlocalizedName":"block.minecraft.red_nether_bricks","localizedName":"Red Nether Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_sand","unlocalizedName":"block.minecraft.red_sand","localizedName":"Red Sand","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_sandstone","unlocalizedName":"block.minecraft.red_sandstone","localizedName":"Red Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_sandstone_slab","unlocalizedName":"block.minecraft.red_sandstone_slab","localizedName":"Red Sandstone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_sandstone_stairs","unlocalizedName":"block.minecraft.red_sandstone_stairs","localizedName":"Red Sandstone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_sandstone_wall","unlocalizedName":"block.minecraft.red_sandstone_wall","localizedName":"Red Sandstone Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_shulker_box","unlocalizedName":"block.minecraft.red_shulker_box","localizedName":"Red Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:red_stained_glass","unlocalizedName":"block.minecraft.red_stained_glass","localizedName":"Red Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_stained_glass_pane","unlocalizedName":"block.minecraft.red_stained_glass_pane","localizedName":"Red Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_terracotta","unlocalizedName":"block.minecraft.red_terracotta","localizedName":"Red Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_tulip","unlocalizedName":"block.minecraft.red_tulip","localizedName":"Red Tulip","maxStackSize":64,"maxDamage":0},{"id":"minecraft:red_wool","unlocalizedName":"block.minecraft.red_wool","localizedName":"Red Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:redstone","unlocalizedName":"item.minecraft.redstone","localizedName":"Redstone Dust","maxStackSize":64,"maxDamage":0},{"id":"minecraft:redstone_block","unlocalizedName":"block.minecraft.redstone_block","localizedName":"Block of Redstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:redstone_lamp","unlocalizedName":"block.minecraft.redstone_lamp","localizedName":"Redstone Lamp","maxStackSize":64,"maxDamage":0},{"id":"minecraft:redstone_ore","unlocalizedName":"block.minecraft.redstone_ore","localizedName":"Redstone Ore","maxStackSize":64,"maxDamage":0},{"id":"minecraft:redstone_torch","unlocalizedName":"block.minecraft.redstone_torch","localizedName":"Redstone Torch","maxStackSize":64,"maxDamage":0},{"id":"minecraft:repeater","unlocalizedName":"block.minecraft.repeater","localizedName":"Redstone Repeater","maxStackSize":64,"maxDamage":0},{"id":"minecraft:repeating_command_block","unlocalizedName":"block.minecraft.repeating_command_block","localizedName":"Repeating Command Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rose_bush","unlocalizedName":"block.minecraft.rose_bush","localizedName":"Rose Bush","maxStackSize":64,"maxDamage":0},{"id":"minecraft:rotten_flesh","unlocalizedName":"item.minecraft.rotten_flesh","localizedName":"Rotten Flesh","maxStackSize":64,"maxDamage":0},{"id":"minecraft:saddle","unlocalizedName":"item.minecraft.saddle","localizedName":"Saddle","maxStackSize":1,"maxDamage":0},{"id":"minecraft:salmon","unlocalizedName":"item.minecraft.salmon","localizedName":"Raw Salmon","maxStackSize":64,"maxDamage":0},{"id":"minecraft:salmon_bucket","unlocalizedName":"item.minecraft.salmon_bucket","localizedName":"Bucket of Salmon","maxStackSize":1,"maxDamage":0},{"id":"minecraft:salmon_spawn_egg","unlocalizedName":"item.minecraft.salmon_spawn_egg","localizedName":"Salmon Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sand","unlocalizedName":"block.minecraft.sand","localizedName":"Sand","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sandstone","unlocalizedName":"block.minecraft.sandstone","localizedName":"Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sandstone_slab","unlocalizedName":"block.minecraft.sandstone_slab","localizedName":"Sandstone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sandstone_stairs","unlocalizedName":"block.minecraft.sandstone_stairs","localizedName":"Sandstone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sandstone_wall","unlocalizedName":"block.minecraft.sandstone_wall","localizedName":"Sandstone Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:scaffolding","unlocalizedName":"block.minecraft.scaffolding","localizedName":"Scaffolding","maxStackSize":64,"maxDamage":0},{"id":"minecraft:scute","unlocalizedName":"item.minecraft.scute","localizedName":"Scute","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sea_lantern","unlocalizedName":"block.minecraft.sea_lantern","localizedName":"Sea Lantern","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sea_pickle","unlocalizedName":"block.minecraft.sea_pickle","localizedName":"Sea Pickle","maxStackSize":64,"maxDamage":0},{"id":"minecraft:seagrass","unlocalizedName":"block.minecraft.seagrass","localizedName":"Seagrass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:shears","unlocalizedName":"item.minecraft.shears","localizedName":"Shears","maxStackSize":1,"maxDamage":238},{"id":"minecraft:sheep_spawn_egg","unlocalizedName":"item.minecraft.sheep_spawn_egg","localizedName":"Sheep Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:shield","unlocalizedName":"item.minecraft.shield","localizedName":"Shield","maxStackSize":1,"maxDamage":336},{"id":"minecraft:shulker_box","unlocalizedName":"block.minecraft.shulker_box","localizedName":"Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:shulker_shell","unlocalizedName":"item.minecraft.shulker_shell","localizedName":"Shulker Shell","maxStackSize":64,"maxDamage":0},{"id":"minecraft:shulker_spawn_egg","unlocalizedName":"item.minecraft.shulker_spawn_egg","localizedName":"Shulker Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:silverfish_spawn_egg","unlocalizedName":"item.minecraft.silverfish_spawn_egg","localizedName":"Silverfish Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:skeleton_horse_spawn_egg","unlocalizedName":"item.minecraft.skeleton_horse_spawn_egg","localizedName":"Skeleton Horse Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:skeleton_skull","unlocalizedName":"block.minecraft.skeleton_skull","localizedName":"Skeleton Skull","maxStackSize":64,"maxDamage":0},{"id":"minecraft:skeleton_spawn_egg","unlocalizedName":"item.minecraft.skeleton_spawn_egg","localizedName":"Skeleton Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:skull_banner_pattern","unlocalizedName":"item.minecraft.skull_banner_pattern","localizedName":"Banner Pattern","maxStackSize":1,"maxDamage":0},{"id":"minecraft:slime_ball","unlocalizedName":"item.minecraft.slime_ball","localizedName":"Slimeball","maxStackSize":64,"maxDamage":0},{"id":"minecraft:slime_block","unlocalizedName":"block.minecraft.slime_block","localizedName":"Slime Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:slime_spawn_egg","unlocalizedName":"item.minecraft.slime_spawn_egg","localizedName":"Slime Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smithing_table","unlocalizedName":"block.minecraft.smithing_table","localizedName":"Smithing Table","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smoker","unlocalizedName":"block.minecraft.smoker","localizedName":"Smoker","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_quartz","unlocalizedName":"block.minecraft.smooth_quartz","localizedName":"Smooth Quartz","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_quartz_slab","unlocalizedName":"block.minecraft.smooth_quartz_slab","localizedName":"Smooth Quartz Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_quartz_stairs","unlocalizedName":"block.minecraft.smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_red_sandstone","unlocalizedName":"block.minecraft.smooth_red_sandstone","localizedName":"Smooth Red Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_red_sandstone_slab","unlocalizedName":"block.minecraft.smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_red_sandstone_stairs","unlocalizedName":"block.minecraft.smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_sandstone","unlocalizedName":"block.minecraft.smooth_sandstone","localizedName":"Smooth Sandstone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_sandstone_slab","unlocalizedName":"block.minecraft.smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_sandstone_stairs","unlocalizedName":"block.minecraft.smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_stone","unlocalizedName":"block.minecraft.smooth_stone","localizedName":"Smooth Stone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:smooth_stone_slab","unlocalizedName":"block.minecraft.smooth_stone_slab","localizedName":"Smooth Stone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:snow","unlocalizedName":"block.minecraft.snow","localizedName":"Snow","maxStackSize":64,"maxDamage":0},{"id":"minecraft:snow_block","unlocalizedName":"block.minecraft.snow_block","localizedName":"Snow Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:snowball","unlocalizedName":"item.minecraft.snowball","localizedName":"Snowball","maxStackSize":16,"maxDamage":0},{"id":"minecraft:soul_sand","unlocalizedName":"block.minecraft.soul_sand","localizedName":"Soul Sand","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spawner","unlocalizedName":"block.minecraft.spawner","localizedName":"Spawner","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spectral_arrow","unlocalizedName":"item.minecraft.spectral_arrow","localizedName":"Spectral Arrow","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spider_eye","unlocalizedName":"item.minecraft.spider_eye","localizedName":"Spider Eye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spider_spawn_egg","unlocalizedName":"item.minecraft.spider_spawn_egg","localizedName":"Spider Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:splash_potion","unlocalizedName":"item.minecraft.splash_potion.effect.water","localizedName":"Splash Water Bottle","maxStackSize":1,"maxDamage":0},{"id":"minecraft:sponge","unlocalizedName":"block.minecraft.sponge","localizedName":"Sponge","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_boat","unlocalizedName":"item.minecraft.spruce_boat","localizedName":"Spruce Boat","maxStackSize":1,"maxDamage":0},{"id":"minecraft:spruce_button","unlocalizedName":"block.minecraft.spruce_button","localizedName":"Spruce Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_door","unlocalizedName":"block.minecraft.spruce_door","localizedName":"Spruce Door","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_fence","unlocalizedName":"block.minecraft.spruce_fence","localizedName":"Spruce Fence","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_fence_gate","unlocalizedName":"block.minecraft.spruce_fence_gate","localizedName":"Spruce Fence Gate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_leaves","unlocalizedName":"block.minecraft.spruce_leaves","localizedName":"Spruce Leaves","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_log","unlocalizedName":"block.minecraft.spruce_log","localizedName":"Spruce Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_planks","unlocalizedName":"block.minecraft.spruce_planks","localizedName":"Spruce Planks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_pressure_plate","unlocalizedName":"block.minecraft.spruce_pressure_plate","localizedName":"Spruce Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_sapling","unlocalizedName":"block.minecraft.spruce_sapling","localizedName":"Spruce Sapling","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_sign","unlocalizedName":"block.minecraft.spruce_sign","localizedName":"Spruce Sign","maxStackSize":16,"maxDamage":0},{"id":"minecraft:spruce_slab","unlocalizedName":"block.minecraft.spruce_slab","localizedName":"Spruce Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_stairs","unlocalizedName":"block.minecraft.spruce_stairs","localizedName":"Spruce Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_trapdoor","unlocalizedName":"block.minecraft.spruce_trapdoor","localizedName":"Spruce Trapdoor","maxStackSize":64,"maxDamage":0},{"id":"minecraft:spruce_wood","unlocalizedName":"block.minecraft.spruce_wood","localizedName":"Spruce Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:squid_spawn_egg","unlocalizedName":"item.minecraft.squid_spawn_egg","localizedName":"Squid Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stick","unlocalizedName":"item.minecraft.stick","localizedName":"Stick","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sticky_piston","unlocalizedName":"block.minecraft.sticky_piston","localizedName":"Sticky Piston","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone","unlocalizedName":"block.minecraft.stone","localizedName":"Stone","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_axe","unlocalizedName":"item.minecraft.stone_axe","localizedName":"Stone Axe","maxStackSize":1,"maxDamage":131},{"id":"minecraft:stone_brick_slab","unlocalizedName":"block.minecraft.stone_brick_slab","localizedName":"Stone Brick Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_brick_stairs","unlocalizedName":"block.minecraft.stone_brick_stairs","localizedName":"Stone Brick Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_brick_wall","unlocalizedName":"block.minecraft.stone_brick_wall","localizedName":"Stone Brick Wall","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_bricks","unlocalizedName":"block.minecraft.stone_bricks","localizedName":"Stone Bricks","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_button","unlocalizedName":"block.minecraft.stone_button","localizedName":"Stone Button","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_hoe","unlocalizedName":"item.minecraft.stone_hoe","localizedName":"Stone Hoe","maxStackSize":1,"maxDamage":131},{"id":"minecraft:stone_pickaxe","unlocalizedName":"item.minecraft.stone_pickaxe","localizedName":"Stone Pickaxe","maxStackSize":1,"maxDamage":131},{"id":"minecraft:stone_pressure_plate","unlocalizedName":"block.minecraft.stone_pressure_plate","localizedName":"Stone Pressure Plate","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_shovel","unlocalizedName":"item.minecraft.stone_shovel","localizedName":"Stone Shovel","maxStackSize":1,"maxDamage":131},{"id":"minecraft:stone_slab","unlocalizedName":"block.minecraft.stone_slab","localizedName":"Stone Slab","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_stairs","unlocalizedName":"block.minecraft.stone_stairs","localizedName":"Stone Stairs","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stone_sword","unlocalizedName":"item.minecraft.stone_sword","localizedName":"Stone Sword","maxStackSize":1,"maxDamage":131},{"id":"minecraft:stonecutter","unlocalizedName":"block.minecraft.stonecutter","localizedName":"Stonecutter","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stray_spawn_egg","unlocalizedName":"item.minecraft.stray_spawn_egg","localizedName":"Stray Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:string","unlocalizedName":"item.minecraft.string","localizedName":"String","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_acacia_log","unlocalizedName":"block.minecraft.stripped_acacia_log","localizedName":"Stripped Acacia Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_acacia_wood","unlocalizedName":"block.minecraft.stripped_acacia_wood","localizedName":"Stripped Acacia Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_birch_log","unlocalizedName":"block.minecraft.stripped_birch_log","localizedName":"Stripped Birch Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_birch_wood","unlocalizedName":"block.minecraft.stripped_birch_wood","localizedName":"Stripped Birch Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_dark_oak_log","unlocalizedName":"block.minecraft.stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_dark_oak_wood","unlocalizedName":"block.minecraft.stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_jungle_log","unlocalizedName":"block.minecraft.stripped_jungle_log","localizedName":"Stripped Jungle Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_jungle_wood","unlocalizedName":"block.minecraft.stripped_jungle_wood","localizedName":"Stripped Jungle Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_oak_log","unlocalizedName":"block.minecraft.stripped_oak_log","localizedName":"Stripped Oak Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_oak_wood","unlocalizedName":"block.minecraft.stripped_oak_wood","localizedName":"Stripped Oak Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_spruce_log","unlocalizedName":"block.minecraft.stripped_spruce_log","localizedName":"Stripped Spruce Log","maxStackSize":64,"maxDamage":0},{"id":"minecraft:stripped_spruce_wood","unlocalizedName":"block.minecraft.stripped_spruce_wood","localizedName":"Stripped Spruce Wood","maxStackSize":64,"maxDamage":0},{"id":"minecraft:structure_block","unlocalizedName":"block.minecraft.structure_block","localizedName":"Structure Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:structure_void","unlocalizedName":"block.minecraft.structure_void","localizedName":"Structure Void","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sugar","unlocalizedName":"item.minecraft.sugar","localizedName":"Sugar","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sugar_cane","unlocalizedName":"block.minecraft.sugar_cane","localizedName":"Sugar Cane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:sunflower","unlocalizedName":"block.minecraft.sunflower","localizedName":"Sunflower","maxStackSize":64,"maxDamage":0},{"id":"minecraft:suspicious_stew","unlocalizedName":"item.minecraft.suspicious_stew","localizedName":"Suspicious Stew","maxStackSize":1,"maxDamage":0},{"id":"minecraft:sweet_berries","unlocalizedName":"item.minecraft.sweet_berries","localizedName":"Sweet Berries","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tall_grass","unlocalizedName":"block.minecraft.tall_grass","localizedName":"Tall Grass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:terracotta","unlocalizedName":"block.minecraft.terracotta","localizedName":"Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tipped_arrow","unlocalizedName":"item.minecraft.tipped_arrow.effect.poison","localizedName":"Arrow of Poison","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tnt","unlocalizedName":"block.minecraft.tnt","localizedName":"TNT","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tnt_minecart","unlocalizedName":"item.minecraft.tnt_minecart","localizedName":"Minecart with TNT","maxStackSize":1,"maxDamage":0},{"id":"minecraft:torch","unlocalizedName":"block.minecraft.torch","localizedName":"Torch","maxStackSize":64,"maxDamage":0},{"id":"minecraft:totem_of_undying","unlocalizedName":"item.minecraft.totem_of_undying","localizedName":"Totem of Undying","maxStackSize":1,"maxDamage":0},{"id":"minecraft:trader_llama_spawn_egg","unlocalizedName":"item.minecraft.trader_llama_spawn_egg","localizedName":"Trader Llama Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:trapped_chest","unlocalizedName":"block.minecraft.trapped_chest","localizedName":"Trapped Chest","maxStackSize":64,"maxDamage":0},{"id":"minecraft:trident","unlocalizedName":"item.minecraft.trident","localizedName":"Trident","maxStackSize":1,"maxDamage":250},{"id":"minecraft:tripwire_hook","unlocalizedName":"block.minecraft.tripwire_hook","localizedName":"Tripwire Hook","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tropical_fish","unlocalizedName":"item.minecraft.tropical_fish","localizedName":"Tropical Fish","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tropical_fish_bucket","unlocalizedName":"item.minecraft.tropical_fish_bucket","localizedName":"Bucket of Tropical Fish","maxStackSize":1,"maxDamage":0},{"id":"minecraft:tropical_fish_spawn_egg","unlocalizedName":"item.minecraft.tropical_fish_spawn_egg","localizedName":"Tropical Fish Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tube_coral","unlocalizedName":"block.minecraft.tube_coral","localizedName":"Tube Coral","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tube_coral_block","unlocalizedName":"block.minecraft.tube_coral_block","localizedName":"Tube Coral Block","maxStackSize":64,"maxDamage":0},{"id":"minecraft:tube_coral_fan","unlocalizedName":"block.minecraft.tube_coral_fan","localizedName":"Tube Coral Fan","maxStackSize":64,"maxDamage":0},{"id":"minecraft:turtle_egg","unlocalizedName":"block.minecraft.turtle_egg","localizedName":"Turtle Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:turtle_helmet","unlocalizedName":"item.minecraft.turtle_helmet","localizedName":"Turtle Shell","maxStackSize":1,"maxDamage":275},{"id":"minecraft:turtle_spawn_egg","unlocalizedName":"item.minecraft.turtle_spawn_egg","localizedName":"Turtle Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:vex_spawn_egg","unlocalizedName":"item.minecraft.vex_spawn_egg","localizedName":"Vex Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:villager_spawn_egg","unlocalizedName":"item.minecraft.villager_spawn_egg","localizedName":"Villager Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:vindicator_spawn_egg","unlocalizedName":"item.minecraft.vindicator_spawn_egg","localizedName":"Vindicator Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:vine","unlocalizedName":"block.minecraft.vine","localizedName":"Vines","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wandering_trader_spawn_egg","unlocalizedName":"item.minecraft.wandering_trader_spawn_egg","localizedName":"Wandering Trader Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:water_bucket","unlocalizedName":"item.minecraft.water_bucket","localizedName":"Water Bucket","maxStackSize":1,"maxDamage":0},{"id":"minecraft:wet_sponge","unlocalizedName":"block.minecraft.wet_sponge","localizedName":"Wet Sponge","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wheat","unlocalizedName":"item.minecraft.wheat","localizedName":"Wheat","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wheat_seeds","unlocalizedName":"item.minecraft.wheat_seeds","localizedName":"Wheat Seeds","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_banner","unlocalizedName":"block.minecraft.white_banner","localizedName":"White Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:white_bed","unlocalizedName":"block.minecraft.white_bed","localizedName":"White Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:white_carpet","unlocalizedName":"block.minecraft.white_carpet","localizedName":"White Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_concrete","unlocalizedName":"block.minecraft.white_concrete","localizedName":"White Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_concrete_powder","unlocalizedName":"block.minecraft.white_concrete_powder","localizedName":"White Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_dye","unlocalizedName":"item.minecraft.white_dye","localizedName":"White Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_glazed_terracotta","unlocalizedName":"block.minecraft.white_glazed_terracotta","localizedName":"White Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_shulker_box","unlocalizedName":"block.minecraft.white_shulker_box","localizedName":"White Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:white_stained_glass","unlocalizedName":"block.minecraft.white_stained_glass","localizedName":"White Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_stained_glass_pane","unlocalizedName":"block.minecraft.white_stained_glass_pane","localizedName":"White Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_terracotta","unlocalizedName":"block.minecraft.white_terracotta","localizedName":"White Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_tulip","unlocalizedName":"block.minecraft.white_tulip","localizedName":"White Tulip","maxStackSize":64,"maxDamage":0},{"id":"minecraft:white_wool","unlocalizedName":"block.minecraft.white_wool","localizedName":"White Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:witch_spawn_egg","unlocalizedName":"item.minecraft.witch_spawn_egg","localizedName":"Witch Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wither_rose","unlocalizedName":"block.minecraft.wither_rose","localizedName":"Wither Rose","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wither_skeleton_skull","unlocalizedName":"block.minecraft.wither_skeleton_skull","localizedName":"Wither Skeleton Skull","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wither_skeleton_spawn_egg","unlocalizedName":"item.minecraft.wither_skeleton_spawn_egg","localizedName":"Wither Skeleton Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wolf_spawn_egg","unlocalizedName":"item.minecraft.wolf_spawn_egg","localizedName":"Wolf Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:wooden_axe","unlocalizedName":"item.minecraft.wooden_axe","localizedName":"Wooden Axe","maxStackSize":1,"maxDamage":59},{"id":"minecraft:wooden_hoe","unlocalizedName":"item.minecraft.wooden_hoe","localizedName":"Wooden Hoe","maxStackSize":1,"maxDamage":59},{"id":"minecraft:wooden_pickaxe","unlocalizedName":"item.minecraft.wooden_pickaxe","localizedName":"Wooden Pickaxe","maxStackSize":1,"maxDamage":59},{"id":"minecraft:wooden_shovel","unlocalizedName":"item.minecraft.wooden_shovel","localizedName":"Wooden Shovel","maxStackSize":1,"maxDamage":59},{"id":"minecraft:wooden_sword","unlocalizedName":"item.minecraft.wooden_sword","localizedName":"Wooden Sword","maxStackSize":1,"maxDamage":59},{"id":"minecraft:writable_book","unlocalizedName":"item.minecraft.writable_book","localizedName":"Book and Quill","maxStackSize":1,"maxDamage":0},{"id":"minecraft:written_book","unlocalizedName":"item.minecraft.written_book","localizedName":"Written Book","maxStackSize":16,"maxDamage":0},{"id":"minecraft:yellow_banner","unlocalizedName":"block.minecraft.yellow_banner","localizedName":"Yellow Banner","maxStackSize":16,"maxDamage":0},{"id":"minecraft:yellow_bed","unlocalizedName":"block.minecraft.yellow_bed","localizedName":"Yellow Bed","maxStackSize":1,"maxDamage":0},{"id":"minecraft:yellow_carpet","unlocalizedName":"block.minecraft.yellow_carpet","localizedName":"Yellow Carpet","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_concrete","unlocalizedName":"block.minecraft.yellow_concrete","localizedName":"Yellow Concrete","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_concrete_powder","unlocalizedName":"block.minecraft.yellow_concrete_powder","localizedName":"Yellow Concrete Powder","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_dye","unlocalizedName":"item.minecraft.yellow_dye","localizedName":"Yellow Dye","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_glazed_terracotta","unlocalizedName":"block.minecraft.yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_shulker_box","unlocalizedName":"block.minecraft.yellow_shulker_box","localizedName":"Yellow Shulker Box","maxStackSize":1,"maxDamage":0},{"id":"minecraft:yellow_stained_glass","unlocalizedName":"block.minecraft.yellow_stained_glass","localizedName":"Yellow Stained Glass","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_stained_glass_pane","unlocalizedName":"block.minecraft.yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_terracotta","unlocalizedName":"block.minecraft.yellow_terracotta","localizedName":"Yellow Terracotta","maxStackSize":64,"maxDamage":0},{"id":"minecraft:yellow_wool","unlocalizedName":"block.minecraft.yellow_wool","localizedName":"Yellow Wool","maxStackSize":64,"maxDamage":0},{"id":"minecraft:zombie_head","unlocalizedName":"block.minecraft.zombie_head","localizedName":"Zombie Head","maxStackSize":64,"maxDamage":0},{"id":"minecraft:zombie_horse_spawn_egg","unlocalizedName":"item.minecraft.zombie_horse_spawn_egg","localizedName":"Zombie Horse Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:zombie_pigman_spawn_egg","unlocalizedName":"item.minecraft.zombie_pigman_spawn_egg","localizedName":"Zombie Pigman Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:zombie_spawn_egg","unlocalizedName":"item.minecraft.zombie_spawn_egg","localizedName":"Zombie Spawn Egg","maxStackSize":64,"maxDamage":0},{"id":"minecraft:zombie_villager_spawn_egg","unlocalizedName":"item.minecraft.zombie_villager_spawn_egg","localizedName":"Zombie Villager Spawn Egg","maxStackSize":64,"maxDamage":0}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.115.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.115.json deleted file mode 100644 index 1e7f6a351d..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.115.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_boat","unlocalizedName":"item.minecraft.acacia_boat","localizedName":"Acacia Boat","maxDamage":0,"maxStackSize":1},{"id":"minecraft:acacia_button","unlocalizedName":"block.minecraft.acacia_button","localizedName":"Acacia Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_door","unlocalizedName":"block.minecraft.acacia_door","localizedName":"Acacia Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_fence","unlocalizedName":"block.minecraft.acacia_fence","localizedName":"Acacia Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_fence_gate","unlocalizedName":"block.minecraft.acacia_fence_gate","localizedName":"Acacia Fence Gate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_leaves","unlocalizedName":"block.minecraft.acacia_leaves","localizedName":"Acacia Leaves","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_log","unlocalizedName":"block.minecraft.acacia_log","localizedName":"Acacia Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_planks","unlocalizedName":"block.minecraft.acacia_planks","localizedName":"Acacia Planks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_pressure_plate","unlocalizedName":"block.minecraft.acacia_pressure_plate","localizedName":"Acacia Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_sapling","unlocalizedName":"block.minecraft.acacia_sapling","localizedName":"Acacia Sapling","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_sign","unlocalizedName":"block.minecraft.acacia_sign","localizedName":"Acacia Sign","maxDamage":0,"maxStackSize":16},{"id":"minecraft:acacia_slab","unlocalizedName":"block.minecraft.acacia_slab","localizedName":"Acacia Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_stairs","unlocalizedName":"block.minecraft.acacia_stairs","localizedName":"Acacia Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_trapdoor","unlocalizedName":"block.minecraft.acacia_trapdoor","localizedName":"Acacia Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:acacia_wood","unlocalizedName":"block.minecraft.acacia_wood","localizedName":"Acacia Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:activator_rail","unlocalizedName":"block.minecraft.activator_rail","localizedName":"Activator Rail","maxDamage":0,"maxStackSize":64},{"id":"minecraft:air","unlocalizedName":"block.minecraft.air","localizedName":"Air","maxDamage":0,"maxStackSize":64},{"id":"minecraft:allium","unlocalizedName":"block.minecraft.allium","localizedName":"Allium","maxDamage":0,"maxStackSize":64},{"id":"minecraft:andesite","unlocalizedName":"block.minecraft.andesite","localizedName":"Andesite","maxDamage":0,"maxStackSize":64},{"id":"minecraft:andesite_slab","unlocalizedName":"block.minecraft.andesite_slab","localizedName":"Andesite Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:andesite_stairs","unlocalizedName":"block.minecraft.andesite_stairs","localizedName":"Andesite Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:andesite_wall","unlocalizedName":"block.minecraft.andesite_wall","localizedName":"Andesite Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:anvil","unlocalizedName":"block.minecraft.anvil","localizedName":"Anvil","maxDamage":0,"maxStackSize":64},{"id":"minecraft:apple","unlocalizedName":"item.minecraft.apple","localizedName":"Apple","maxDamage":0,"maxStackSize":64},{"id":"minecraft:armor_stand","unlocalizedName":"item.minecraft.armor_stand","localizedName":"Armor Stand","maxDamage":0,"maxStackSize":16},{"id":"minecraft:arrow","unlocalizedName":"item.minecraft.arrow","localizedName":"Arrow","maxDamage":0,"maxStackSize":64},{"id":"minecraft:azure_bluet","unlocalizedName":"block.minecraft.azure_bluet","localizedName":"Azure Bluet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:baked_potato","unlocalizedName":"item.minecraft.baked_potato","localizedName":"Baked Potato","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bamboo","unlocalizedName":"block.minecraft.bamboo","localizedName":"Bamboo","maxDamage":0,"maxStackSize":64},{"id":"minecraft:barrel","unlocalizedName":"block.minecraft.barrel","localizedName":"Barrel","maxDamage":0,"maxStackSize":64},{"id":"minecraft:barrier","unlocalizedName":"block.minecraft.barrier","localizedName":"Barrier","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bat_spawn_egg","unlocalizedName":"item.minecraft.bat_spawn_egg","localizedName":"Bat Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:beacon","unlocalizedName":"block.minecraft.beacon","localizedName":"Beacon","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bedrock","unlocalizedName":"block.minecraft.bedrock","localizedName":"Bedrock","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bee_nest","unlocalizedName":"block.minecraft.bee_nest","localizedName":"Bee Nest","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bee_spawn_egg","unlocalizedName":"item.minecraft.bee_spawn_egg","localizedName":"Bee Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:beef","unlocalizedName":"item.minecraft.beef","localizedName":"Raw Beef","maxDamage":0,"maxStackSize":64},{"id":"minecraft:beehive","unlocalizedName":"block.minecraft.beehive","localizedName":"Beehive","maxDamage":0,"maxStackSize":64},{"id":"minecraft:beetroot","unlocalizedName":"item.minecraft.beetroot","localizedName":"Beetroot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:beetroot_seeds","unlocalizedName":"item.minecraft.beetroot_seeds","localizedName":"Beetroot Seeds","maxDamage":0,"maxStackSize":64},{"id":"minecraft:beetroot_soup","unlocalizedName":"item.minecraft.beetroot_soup","localizedName":"Beetroot Soup","maxDamage":0,"maxStackSize":1},{"id":"minecraft:bell","unlocalizedName":"block.minecraft.bell","localizedName":"Bell","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_boat","unlocalizedName":"item.minecraft.birch_boat","localizedName":"Birch Boat","maxDamage":0,"maxStackSize":1},{"id":"minecraft:birch_button","unlocalizedName":"block.minecraft.birch_button","localizedName":"Birch Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_door","unlocalizedName":"block.minecraft.birch_door","localizedName":"Birch Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_fence","unlocalizedName":"block.minecraft.birch_fence","localizedName":"Birch Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_fence_gate","unlocalizedName":"block.minecraft.birch_fence_gate","localizedName":"Birch Fence Gate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_leaves","unlocalizedName":"block.minecraft.birch_leaves","localizedName":"Birch Leaves","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_log","unlocalizedName":"block.minecraft.birch_log","localizedName":"Birch Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_planks","unlocalizedName":"block.minecraft.birch_planks","localizedName":"Birch Planks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_pressure_plate","unlocalizedName":"block.minecraft.birch_pressure_plate","localizedName":"Birch Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_sapling","unlocalizedName":"block.minecraft.birch_sapling","localizedName":"Birch Sapling","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_sign","unlocalizedName":"block.minecraft.birch_sign","localizedName":"Birch Sign","maxDamage":0,"maxStackSize":16},{"id":"minecraft:birch_slab","unlocalizedName":"block.minecraft.birch_slab","localizedName":"Birch Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_stairs","unlocalizedName":"block.minecraft.birch_stairs","localizedName":"Birch Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_trapdoor","unlocalizedName":"block.minecraft.birch_trapdoor","localizedName":"Birch Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:birch_wood","unlocalizedName":"block.minecraft.birch_wood","localizedName":"Birch Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_banner","unlocalizedName":"block.minecraft.black_banner","localizedName":"Black Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:black_bed","unlocalizedName":"block.minecraft.black_bed","localizedName":"Black Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:black_carpet","unlocalizedName":"block.minecraft.black_carpet","localizedName":"Black Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_concrete","unlocalizedName":"block.minecraft.black_concrete","localizedName":"Black Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_concrete_powder","unlocalizedName":"block.minecraft.black_concrete_powder","localizedName":"Black Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_dye","unlocalizedName":"item.minecraft.black_dye","localizedName":"Black Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_glazed_terracotta","unlocalizedName":"block.minecraft.black_glazed_terracotta","localizedName":"Black Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_shulker_box","unlocalizedName":"block.minecraft.black_shulker_box","localizedName":"Black Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:black_stained_glass","unlocalizedName":"block.minecraft.black_stained_glass","localizedName":"Black Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_stained_glass_pane","unlocalizedName":"block.minecraft.black_stained_glass_pane","localizedName":"Black Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_terracotta","unlocalizedName":"block.minecraft.black_terracotta","localizedName":"Black Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:black_wool","unlocalizedName":"block.minecraft.black_wool","localizedName":"Black Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blast_furnace","unlocalizedName":"block.minecraft.blast_furnace","localizedName":"Blast Furnace","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blaze_powder","unlocalizedName":"item.minecraft.blaze_powder","localizedName":"Blaze Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blaze_rod","unlocalizedName":"item.minecraft.blaze_rod","localizedName":"Blaze Rod","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blaze_spawn_egg","unlocalizedName":"item.minecraft.blaze_spawn_egg","localizedName":"Blaze Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_banner","unlocalizedName":"block.minecraft.blue_banner","localizedName":"Blue Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:blue_bed","unlocalizedName":"block.minecraft.blue_bed","localizedName":"Blue Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:blue_carpet","unlocalizedName":"block.minecraft.blue_carpet","localizedName":"Blue Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_concrete","unlocalizedName":"block.minecraft.blue_concrete","localizedName":"Blue Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_concrete_powder","unlocalizedName":"block.minecraft.blue_concrete_powder","localizedName":"Blue Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_dye","unlocalizedName":"item.minecraft.blue_dye","localizedName":"Blue Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_glazed_terracotta","unlocalizedName":"block.minecraft.blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_ice","unlocalizedName":"block.minecraft.blue_ice","localizedName":"Blue Ice","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_orchid","unlocalizedName":"block.minecraft.blue_orchid","localizedName":"Blue Orchid","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_shulker_box","unlocalizedName":"block.minecraft.blue_shulker_box","localizedName":"Blue Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:blue_stained_glass","unlocalizedName":"block.minecraft.blue_stained_glass","localizedName":"Blue Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_stained_glass_pane","unlocalizedName":"block.minecraft.blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_terracotta","unlocalizedName":"block.minecraft.blue_terracotta","localizedName":"Blue Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:blue_wool","unlocalizedName":"block.minecraft.blue_wool","localizedName":"Blue Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bone","unlocalizedName":"item.minecraft.bone","localizedName":"Bone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bone_block","unlocalizedName":"block.minecraft.bone_block","localizedName":"Bone Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bone_meal","unlocalizedName":"item.minecraft.bone_meal","localizedName":"Bone Meal","maxDamage":0,"maxStackSize":64},{"id":"minecraft:book","unlocalizedName":"item.minecraft.book","localizedName":"Book","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bookshelf","unlocalizedName":"block.minecraft.bookshelf","localizedName":"Bookshelf","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bow","unlocalizedName":"item.minecraft.bow","localizedName":"Bow","maxDamage":384,"maxStackSize":1},{"id":"minecraft:bowl","unlocalizedName":"item.minecraft.bowl","localizedName":"Bowl","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brain_coral","unlocalizedName":"block.minecraft.brain_coral","localizedName":"Brain Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brain_coral_block","unlocalizedName":"block.minecraft.brain_coral_block","localizedName":"Brain Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brain_coral_fan","unlocalizedName":"block.minecraft.brain_coral_fan","localizedName":"Brain Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bread","unlocalizedName":"item.minecraft.bread","localizedName":"Bread","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brewing_stand","unlocalizedName":"block.minecraft.brewing_stand","localizedName":"Brewing Stand","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brick","unlocalizedName":"item.minecraft.brick","localizedName":"Brick","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brick_slab","unlocalizedName":"block.minecraft.brick_slab","localizedName":"Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brick_stairs","unlocalizedName":"block.minecraft.brick_stairs","localizedName":"Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brick_wall","unlocalizedName":"block.minecraft.brick_wall","localizedName":"Brick Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bricks","unlocalizedName":"block.minecraft.bricks","localizedName":"Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_banner","unlocalizedName":"block.minecraft.brown_banner","localizedName":"Brown Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:brown_bed","unlocalizedName":"block.minecraft.brown_bed","localizedName":"Brown Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:brown_carpet","unlocalizedName":"block.minecraft.brown_carpet","localizedName":"Brown Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_concrete","unlocalizedName":"block.minecraft.brown_concrete","localizedName":"Brown Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_concrete_powder","unlocalizedName":"block.minecraft.brown_concrete_powder","localizedName":"Brown Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_dye","unlocalizedName":"item.minecraft.brown_dye","localizedName":"Brown Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_glazed_terracotta","unlocalizedName":"block.minecraft.brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_mushroom","unlocalizedName":"block.minecraft.brown_mushroom","localizedName":"Brown Mushroom","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_mushroom_block","unlocalizedName":"block.minecraft.brown_mushroom_block","localizedName":"Brown Mushroom Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_shulker_box","unlocalizedName":"block.minecraft.brown_shulker_box","localizedName":"Brown Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:brown_stained_glass","unlocalizedName":"block.minecraft.brown_stained_glass","localizedName":"Brown Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_stained_glass_pane","unlocalizedName":"block.minecraft.brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_terracotta","unlocalizedName":"block.minecraft.brown_terracotta","localizedName":"Brown Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:brown_wool","unlocalizedName":"block.minecraft.brown_wool","localizedName":"Brown Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bubble_coral","unlocalizedName":"block.minecraft.bubble_coral","localizedName":"Bubble Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bubble_coral_block","unlocalizedName":"block.minecraft.bubble_coral_block","localizedName":"Bubble Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bubble_coral_fan","unlocalizedName":"block.minecraft.bubble_coral_fan","localizedName":"Bubble Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:bucket","unlocalizedName":"item.minecraft.bucket","localizedName":"Bucket","maxDamage":0,"maxStackSize":16},{"id":"minecraft:cactus","unlocalizedName":"block.minecraft.cactus","localizedName":"Cactus","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cake","unlocalizedName":"block.minecraft.cake","localizedName":"Cake","maxDamage":0,"maxStackSize":1},{"id":"minecraft:campfire","unlocalizedName":"block.minecraft.campfire","localizedName":"Campfire","maxDamage":0,"maxStackSize":64},{"id":"minecraft:carrot","unlocalizedName":"item.minecraft.carrot","localizedName":"Carrot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:carrot_on_a_stick","unlocalizedName":"item.minecraft.carrot_on_a_stick","localizedName":"Carrot on a Stick","maxDamage":25,"maxStackSize":1},{"id":"minecraft:cartography_table","unlocalizedName":"block.minecraft.cartography_table","localizedName":"Cartography Table","maxDamage":0,"maxStackSize":64},{"id":"minecraft:carved_pumpkin","unlocalizedName":"block.minecraft.carved_pumpkin","localizedName":"Carved Pumpkin","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cat_spawn_egg","unlocalizedName":"item.minecraft.cat_spawn_egg","localizedName":"Cat Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cauldron","unlocalizedName":"block.minecraft.cauldron","localizedName":"Cauldron","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cave_spider_spawn_egg","unlocalizedName":"item.minecraft.cave_spider_spawn_egg","localizedName":"Cave Spider Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chain_command_block","unlocalizedName":"block.minecraft.chain_command_block","localizedName":"Chain Command Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chainmail_boots","unlocalizedName":"item.minecraft.chainmail_boots","localizedName":"Chainmail Boots","maxDamage":195,"maxStackSize":1},{"id":"minecraft:chainmail_chestplate","unlocalizedName":"item.minecraft.chainmail_chestplate","localizedName":"Chainmail Chestplate","maxDamage":240,"maxStackSize":1},{"id":"minecraft:chainmail_helmet","unlocalizedName":"item.minecraft.chainmail_helmet","localizedName":"Chainmail Helmet","maxDamage":165,"maxStackSize":1},{"id":"minecraft:chainmail_leggings","unlocalizedName":"item.minecraft.chainmail_leggings","localizedName":"Chainmail Leggings","maxDamage":225,"maxStackSize":1},{"id":"minecraft:charcoal","unlocalizedName":"item.minecraft.charcoal","localizedName":"Charcoal","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chest","unlocalizedName":"block.minecraft.chest","localizedName":"Chest","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chest_minecart","unlocalizedName":"item.minecraft.chest_minecart","localizedName":"Minecart with Chest","maxDamage":0,"maxStackSize":1},{"id":"minecraft:chicken","unlocalizedName":"item.minecraft.chicken","localizedName":"Raw Chicken","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chicken_spawn_egg","unlocalizedName":"item.minecraft.chicken_spawn_egg","localizedName":"Chicken Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chipped_anvil","unlocalizedName":"block.minecraft.chipped_anvil","localizedName":"Chipped Anvil","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chiseled_quartz_block","unlocalizedName":"block.minecraft.chiseled_quartz_block","localizedName":"Chiseled Quartz Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chiseled_red_sandstone","unlocalizedName":"block.minecraft.chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chiseled_sandstone","unlocalizedName":"block.minecraft.chiseled_sandstone","localizedName":"Chiseled Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chiseled_stone_bricks","unlocalizedName":"block.minecraft.chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chorus_flower","unlocalizedName":"block.minecraft.chorus_flower","localizedName":"Chorus Flower","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chorus_fruit","unlocalizedName":"item.minecraft.chorus_fruit","localizedName":"Chorus Fruit","maxDamage":0,"maxStackSize":64},{"id":"minecraft:chorus_plant","unlocalizedName":"block.minecraft.chorus_plant","localizedName":"Chorus Plant","maxDamage":0,"maxStackSize":64},{"id":"minecraft:clay","unlocalizedName":"block.minecraft.clay","localizedName":"Clay","maxDamage":0,"maxStackSize":64},{"id":"minecraft:clay_ball","unlocalizedName":"item.minecraft.clay_ball","localizedName":"Clay","maxDamage":0,"maxStackSize":64},{"id":"minecraft:clock","unlocalizedName":"item.minecraft.clock","localizedName":"Clock","maxDamage":0,"maxStackSize":64},{"id":"minecraft:coal","unlocalizedName":"item.minecraft.coal","localizedName":"Coal","maxDamage":0,"maxStackSize":64},{"id":"minecraft:coal_block","unlocalizedName":"block.minecraft.coal_block","localizedName":"Block of Coal","maxDamage":0,"maxStackSize":64},{"id":"minecraft:coal_ore","unlocalizedName":"block.minecraft.coal_ore","localizedName":"Coal Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:coarse_dirt","unlocalizedName":"block.minecraft.coarse_dirt","localizedName":"Coarse Dirt","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cobblestone","unlocalizedName":"block.minecraft.cobblestone","localizedName":"Cobblestone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cobblestone_slab","unlocalizedName":"block.minecraft.cobblestone_slab","localizedName":"Cobblestone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cobblestone_stairs","unlocalizedName":"block.minecraft.cobblestone_stairs","localizedName":"Cobblestone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cobblestone_wall","unlocalizedName":"block.minecraft.cobblestone_wall","localizedName":"Cobblestone Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cobweb","unlocalizedName":"block.minecraft.cobweb","localizedName":"Cobweb","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cocoa_beans","unlocalizedName":"item.minecraft.cocoa_beans","localizedName":"Cocoa Beans","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cod","unlocalizedName":"item.minecraft.cod","localizedName":"Raw Cod","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cod_bucket","unlocalizedName":"item.minecraft.cod_bucket","localizedName":"Bucket of Cod","maxDamage":0,"maxStackSize":1},{"id":"minecraft:cod_spawn_egg","unlocalizedName":"item.minecraft.cod_spawn_egg","localizedName":"Cod Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:command_block","unlocalizedName":"block.minecraft.command_block","localizedName":"Command Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:command_block_minecart","unlocalizedName":"item.minecraft.command_block_minecart","localizedName":"Minecart with Command Block","maxDamage":0,"maxStackSize":1},{"id":"minecraft:comparator","unlocalizedName":"block.minecraft.comparator","localizedName":"Redstone Comparator","maxDamage":0,"maxStackSize":64},{"id":"minecraft:compass","unlocalizedName":"item.minecraft.compass","localizedName":"Compass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:composter","unlocalizedName":"block.minecraft.composter","localizedName":"Composter","maxDamage":0,"maxStackSize":64},{"id":"minecraft:conduit","unlocalizedName":"block.minecraft.conduit","localizedName":"Conduit","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_beef","unlocalizedName":"item.minecraft.cooked_beef","localizedName":"Steak","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_chicken","unlocalizedName":"item.minecraft.cooked_chicken","localizedName":"Cooked Chicken","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_cod","unlocalizedName":"item.minecraft.cooked_cod","localizedName":"Cooked Cod","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_mutton","unlocalizedName":"item.minecraft.cooked_mutton","localizedName":"Cooked Mutton","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_porkchop","unlocalizedName":"item.minecraft.cooked_porkchop","localizedName":"Cooked Porkchop","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_rabbit","unlocalizedName":"item.minecraft.cooked_rabbit","localizedName":"Cooked Rabbit","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cooked_salmon","unlocalizedName":"item.minecraft.cooked_salmon","localizedName":"Cooked Salmon","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cookie","unlocalizedName":"item.minecraft.cookie","localizedName":"Cookie","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cornflower","unlocalizedName":"block.minecraft.cornflower","localizedName":"Cornflower","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cow_spawn_egg","unlocalizedName":"item.minecraft.cow_spawn_egg","localizedName":"Cow Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cracked_stone_bricks","unlocalizedName":"block.minecraft.cracked_stone_bricks","localizedName":"Cracked Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:crafting_table","unlocalizedName":"block.minecraft.crafting_table","localizedName":"Crafting Table","maxDamage":0,"maxStackSize":64},{"id":"minecraft:creeper_banner_pattern","unlocalizedName":"item.minecraft.creeper_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1},{"id":"minecraft:creeper_head","unlocalizedName":"block.minecraft.creeper_head","localizedName":"Creeper Head","maxDamage":0,"maxStackSize":64},{"id":"minecraft:creeper_spawn_egg","unlocalizedName":"item.minecraft.creeper_spawn_egg","localizedName":"Creeper Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:crossbow","unlocalizedName":"item.minecraft.crossbow","localizedName":"Crossbow","maxDamage":326,"maxStackSize":1},{"id":"minecraft:cut_red_sandstone","unlocalizedName":"block.minecraft.cut_red_sandstone","localizedName":"Cut Red Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cut_red_sandstone_slab","unlocalizedName":"block.minecraft.cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cut_sandstone","unlocalizedName":"block.minecraft.cut_sandstone","localizedName":"Cut Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cut_sandstone_slab","unlocalizedName":"block.minecraft.cut_sandstone_slab","localizedName":"Cut Sandstone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_banner","unlocalizedName":"block.minecraft.cyan_banner","localizedName":"Cyan Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:cyan_bed","unlocalizedName":"block.minecraft.cyan_bed","localizedName":"Cyan Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:cyan_carpet","unlocalizedName":"block.minecraft.cyan_carpet","localizedName":"Cyan Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_concrete","unlocalizedName":"block.minecraft.cyan_concrete","localizedName":"Cyan Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_concrete_powder","unlocalizedName":"block.minecraft.cyan_concrete_powder","localizedName":"Cyan Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_dye","unlocalizedName":"item.minecraft.cyan_dye","localizedName":"Cyan Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_glazed_terracotta","unlocalizedName":"block.minecraft.cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_shulker_box","unlocalizedName":"block.minecraft.cyan_shulker_box","localizedName":"Cyan Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:cyan_stained_glass","unlocalizedName":"block.minecraft.cyan_stained_glass","localizedName":"Cyan Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_stained_glass_pane","unlocalizedName":"block.minecraft.cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_terracotta","unlocalizedName":"block.minecraft.cyan_terracotta","localizedName":"Cyan Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:cyan_wool","unlocalizedName":"block.minecraft.cyan_wool","localizedName":"Cyan Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:damaged_anvil","unlocalizedName":"block.minecraft.damaged_anvil","localizedName":"Damaged Anvil","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dandelion","unlocalizedName":"block.minecraft.dandelion","localizedName":"Dandelion","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_boat","unlocalizedName":"item.minecraft.dark_oak_boat","localizedName":"Dark Oak Boat","maxDamage":0,"maxStackSize":1},{"id":"minecraft:dark_oak_button","unlocalizedName":"block.minecraft.dark_oak_button","localizedName":"Dark Oak Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_door","unlocalizedName":"block.minecraft.dark_oak_door","localizedName":"Dark Oak Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_fence","unlocalizedName":"block.minecraft.dark_oak_fence","localizedName":"Dark Oak Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_fence_gate","unlocalizedName":"block.minecraft.dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_leaves","unlocalizedName":"block.minecraft.dark_oak_leaves","localizedName":"Dark Oak Leaves","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_log","unlocalizedName":"block.minecraft.dark_oak_log","localizedName":"Dark Oak Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_planks","unlocalizedName":"block.minecraft.dark_oak_planks","localizedName":"Dark Oak Planks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_pressure_plate","unlocalizedName":"block.minecraft.dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_sapling","unlocalizedName":"block.minecraft.dark_oak_sapling","localizedName":"Dark Oak Sapling","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_sign","unlocalizedName":"block.minecraft.dark_oak_sign","localizedName":"Dark Oak Sign","maxDamage":0,"maxStackSize":16},{"id":"minecraft:dark_oak_slab","unlocalizedName":"block.minecraft.dark_oak_slab","localizedName":"Dark Oak Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_stairs","unlocalizedName":"block.minecraft.dark_oak_stairs","localizedName":"Dark Oak Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_trapdoor","unlocalizedName":"block.minecraft.dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_oak_wood","unlocalizedName":"block.minecraft.dark_oak_wood","localizedName":"Dark Oak Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_prismarine","unlocalizedName":"block.minecraft.dark_prismarine","localizedName":"Dark Prismarine","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_prismarine_slab","unlocalizedName":"block.minecraft.dark_prismarine_slab","localizedName":"Dark Prismarine Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dark_prismarine_stairs","unlocalizedName":"block.minecraft.dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:daylight_detector","unlocalizedName":"block.minecraft.daylight_detector","localizedName":"Daylight Detector","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_brain_coral","unlocalizedName":"block.minecraft.dead_brain_coral","localizedName":"Dead Brain Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_brain_coral_block","unlocalizedName":"block.minecraft.dead_brain_coral_block","localizedName":"Dead Brain Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_brain_coral_fan","unlocalizedName":"block.minecraft.dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_bubble_coral","unlocalizedName":"block.minecraft.dead_bubble_coral","localizedName":"Dead Bubble Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_bubble_coral_block","unlocalizedName":"block.minecraft.dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_bubble_coral_fan","unlocalizedName":"block.minecraft.dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_bush","unlocalizedName":"block.minecraft.dead_bush","localizedName":"Dead Bush","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_fire_coral","unlocalizedName":"block.minecraft.dead_fire_coral","localizedName":"Dead Fire Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_fire_coral_block","unlocalizedName":"block.minecraft.dead_fire_coral_block","localizedName":"Dead Fire Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_fire_coral_fan","unlocalizedName":"block.minecraft.dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_horn_coral","unlocalizedName":"block.minecraft.dead_horn_coral","localizedName":"Dead Horn Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_horn_coral_block","unlocalizedName":"block.minecraft.dead_horn_coral_block","localizedName":"Dead Horn Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_horn_coral_fan","unlocalizedName":"block.minecraft.dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_tube_coral","unlocalizedName":"block.minecraft.dead_tube_coral","localizedName":"Dead Tube Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_tube_coral_block","unlocalizedName":"block.minecraft.dead_tube_coral_block","localizedName":"Dead Tube Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dead_tube_coral_fan","unlocalizedName":"block.minecraft.dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:debug_stick","unlocalizedName":"item.minecraft.debug_stick","localizedName":"Debug Stick","maxDamage":0,"maxStackSize":1},{"id":"minecraft:detector_rail","unlocalizedName":"block.minecraft.detector_rail","localizedName":"Detector Rail","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diamond","unlocalizedName":"item.minecraft.diamond","localizedName":"Diamond","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diamond_axe","unlocalizedName":"item.minecraft.diamond_axe","localizedName":"Diamond Axe","maxDamage":1561,"maxStackSize":1},{"id":"minecraft:diamond_block","unlocalizedName":"block.minecraft.diamond_block","localizedName":"Block of Diamond","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diamond_boots","unlocalizedName":"item.minecraft.diamond_boots","localizedName":"Diamond Boots","maxDamage":429,"maxStackSize":1},{"id":"minecraft:diamond_chestplate","unlocalizedName":"item.minecraft.diamond_chestplate","localizedName":"Diamond Chestplate","maxDamage":528,"maxStackSize":1},{"id":"minecraft:diamond_helmet","unlocalizedName":"item.minecraft.diamond_helmet","localizedName":"Diamond Helmet","maxDamage":363,"maxStackSize":1},{"id":"minecraft:diamond_hoe","unlocalizedName":"item.minecraft.diamond_hoe","localizedName":"Diamond Hoe","maxDamage":1561,"maxStackSize":1},{"id":"minecraft:diamond_horse_armor","unlocalizedName":"item.minecraft.diamond_horse_armor","localizedName":"Diamond Horse Armor","maxDamage":0,"maxStackSize":1},{"id":"minecraft:diamond_leggings","unlocalizedName":"item.minecraft.diamond_leggings","localizedName":"Diamond Leggings","maxDamage":495,"maxStackSize":1},{"id":"minecraft:diamond_ore","unlocalizedName":"block.minecraft.diamond_ore","localizedName":"Diamond Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diamond_pickaxe","unlocalizedName":"item.minecraft.diamond_pickaxe","localizedName":"Diamond Pickaxe","maxDamage":1561,"maxStackSize":1},{"id":"minecraft:diamond_shovel","unlocalizedName":"item.minecraft.diamond_shovel","localizedName":"Diamond Shovel","maxDamage":1561,"maxStackSize":1},{"id":"minecraft:diamond_sword","unlocalizedName":"item.minecraft.diamond_sword","localizedName":"Diamond Sword","maxDamage":1561,"maxStackSize":1},{"id":"minecraft:diorite","unlocalizedName":"block.minecraft.diorite","localizedName":"Diorite","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diorite_slab","unlocalizedName":"block.minecraft.diorite_slab","localizedName":"Diorite Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diorite_stairs","unlocalizedName":"block.minecraft.diorite_stairs","localizedName":"Diorite Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:diorite_wall","unlocalizedName":"block.minecraft.diorite_wall","localizedName":"Diorite Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dirt","unlocalizedName":"block.minecraft.dirt","localizedName":"Dirt","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dispenser","unlocalizedName":"block.minecraft.dispenser","localizedName":"Dispenser","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dolphin_spawn_egg","unlocalizedName":"item.minecraft.dolphin_spawn_egg","localizedName":"Dolphin Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:donkey_spawn_egg","unlocalizedName":"item.minecraft.donkey_spawn_egg","localizedName":"Donkey Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dragon_breath","unlocalizedName":"item.minecraft.dragon_breath","localizedName":"Dragon's Breath","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dragon_egg","unlocalizedName":"block.minecraft.dragon_egg","localizedName":"Dragon Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dragon_head","unlocalizedName":"block.minecraft.dragon_head","localizedName":"Dragon Head","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dried_kelp","unlocalizedName":"item.minecraft.dried_kelp","localizedName":"Dried Kelp","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dried_kelp_block","unlocalizedName":"block.minecraft.dried_kelp_block","localizedName":"Dried Kelp Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:dropper","unlocalizedName":"block.minecraft.dropper","localizedName":"Dropper","maxDamage":0,"maxStackSize":64},{"id":"minecraft:drowned_spawn_egg","unlocalizedName":"item.minecraft.drowned_spawn_egg","localizedName":"Drowned Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:egg","unlocalizedName":"item.minecraft.egg","localizedName":"Egg","maxDamage":0,"maxStackSize":16},{"id":"minecraft:elder_guardian_spawn_egg","unlocalizedName":"item.minecraft.elder_guardian_spawn_egg","localizedName":"Elder Guardian Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:elytra","unlocalizedName":"item.minecraft.elytra","localizedName":"Elytra","maxDamage":432,"maxStackSize":1},{"id":"minecraft:emerald","unlocalizedName":"item.minecraft.emerald","localizedName":"Emerald","maxDamage":0,"maxStackSize":64},{"id":"minecraft:emerald_block","unlocalizedName":"block.minecraft.emerald_block","localizedName":"Block of Emerald","maxDamage":0,"maxStackSize":64},{"id":"minecraft:emerald_ore","unlocalizedName":"block.minecraft.emerald_ore","localizedName":"Emerald Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:enchanted_book","unlocalizedName":"item.minecraft.enchanted_book","localizedName":"Enchanted Book","maxDamage":0,"maxStackSize":1},{"id":"minecraft:enchanted_golden_apple","unlocalizedName":"item.minecraft.enchanted_golden_apple","localizedName":"Enchanted Golden Apple","maxDamage":0,"maxStackSize":64},{"id":"minecraft:enchanting_table","unlocalizedName":"block.minecraft.enchanting_table","localizedName":"Enchanting Table","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_crystal","unlocalizedName":"item.minecraft.end_crystal","localizedName":"End Crystal","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_portal_frame","unlocalizedName":"block.minecraft.end_portal_frame","localizedName":"End Portal Frame","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_rod","unlocalizedName":"block.minecraft.end_rod","localizedName":"End Rod","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_stone","unlocalizedName":"block.minecraft.end_stone","localizedName":"End Stone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_stone_brick_slab","unlocalizedName":"block.minecraft.end_stone_brick_slab","localizedName":"End Stone Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_stone_brick_stairs","unlocalizedName":"block.minecraft.end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_stone_brick_wall","unlocalizedName":"block.minecraft.end_stone_brick_wall","localizedName":"End Stone Brick Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:end_stone_bricks","unlocalizedName":"block.minecraft.end_stone_bricks","localizedName":"End Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ender_chest","unlocalizedName":"block.minecraft.ender_chest","localizedName":"Ender Chest","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ender_eye","unlocalizedName":"item.minecraft.ender_eye","localizedName":"Eye of Ender","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ender_pearl","unlocalizedName":"item.minecraft.ender_pearl","localizedName":"Ender Pearl","maxDamage":0,"maxStackSize":16},{"id":"minecraft:enderman_spawn_egg","unlocalizedName":"item.minecraft.enderman_spawn_egg","localizedName":"Enderman Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:endermite_spawn_egg","unlocalizedName":"item.minecraft.endermite_spawn_egg","localizedName":"Endermite Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:evoker_spawn_egg","unlocalizedName":"item.minecraft.evoker_spawn_egg","localizedName":"Evoker Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:experience_bottle","unlocalizedName":"item.minecraft.experience_bottle","localizedName":"Bottle o' Enchanting","maxDamage":0,"maxStackSize":64},{"id":"minecraft:farmland","unlocalizedName":"block.minecraft.farmland","localizedName":"Farmland","maxDamage":0,"maxStackSize":64},{"id":"minecraft:feather","unlocalizedName":"item.minecraft.feather","localizedName":"Feather","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fermented_spider_eye","unlocalizedName":"item.minecraft.fermented_spider_eye","localizedName":"Fermented Spider Eye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fern","unlocalizedName":"block.minecraft.fern","localizedName":"Fern","maxDamage":0,"maxStackSize":64},{"id":"minecraft:filled_map","unlocalizedName":"item.minecraft.filled_map","localizedName":"Map","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fire_charge","unlocalizedName":"item.minecraft.fire_charge","localizedName":"Fire Charge","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fire_coral","unlocalizedName":"block.minecraft.fire_coral","localizedName":"Fire Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fire_coral_block","unlocalizedName":"block.minecraft.fire_coral_block","localizedName":"Fire Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fire_coral_fan","unlocalizedName":"block.minecraft.fire_coral_fan","localizedName":"Fire Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:firework_rocket","unlocalizedName":"item.minecraft.firework_rocket","localizedName":"Firework Rocket","maxDamage":0,"maxStackSize":64},{"id":"minecraft:firework_star","unlocalizedName":"item.minecraft.firework_star","localizedName":"Firework Star","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fishing_rod","unlocalizedName":"item.minecraft.fishing_rod","localizedName":"Fishing Rod","maxDamage":64,"maxStackSize":1},{"id":"minecraft:fletching_table","unlocalizedName":"block.minecraft.fletching_table","localizedName":"Fletching Table","maxDamage":0,"maxStackSize":64},{"id":"minecraft:flint","unlocalizedName":"item.minecraft.flint","localizedName":"Flint","maxDamage":0,"maxStackSize":64},{"id":"minecraft:flint_and_steel","unlocalizedName":"item.minecraft.flint_and_steel","localizedName":"Flint and Steel","maxDamage":64,"maxStackSize":1},{"id":"minecraft:flower_banner_pattern","unlocalizedName":"item.minecraft.flower_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1},{"id":"minecraft:flower_pot","unlocalizedName":"block.minecraft.flower_pot","localizedName":"Flower Pot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:fox_spawn_egg","unlocalizedName":"item.minecraft.fox_spawn_egg","localizedName":"Fox Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:furnace","unlocalizedName":"block.minecraft.furnace","localizedName":"Furnace","maxDamage":0,"maxStackSize":64},{"id":"minecraft:furnace_minecart","unlocalizedName":"item.minecraft.furnace_minecart","localizedName":"Minecart with Furnace","maxDamage":0,"maxStackSize":1},{"id":"minecraft:ghast_spawn_egg","unlocalizedName":"item.minecraft.ghast_spawn_egg","localizedName":"Ghast Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ghast_tear","unlocalizedName":"item.minecraft.ghast_tear","localizedName":"Ghast Tear","maxDamage":0,"maxStackSize":64},{"id":"minecraft:glass","unlocalizedName":"block.minecraft.glass","localizedName":"Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:glass_bottle","unlocalizedName":"item.minecraft.glass_bottle","localizedName":"Glass Bottle","maxDamage":0,"maxStackSize":64},{"id":"minecraft:glass_pane","unlocalizedName":"block.minecraft.glass_pane","localizedName":"Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:glistering_melon_slice","unlocalizedName":"item.minecraft.glistering_melon_slice","localizedName":"Glistering Melon Slice","maxDamage":0,"maxStackSize":64},{"id":"minecraft:globe_banner_pattern","unlocalizedName":"item.minecraft.globe_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1},{"id":"minecraft:glowstone","unlocalizedName":"block.minecraft.glowstone","localizedName":"Glowstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:glowstone_dust","unlocalizedName":"item.minecraft.glowstone_dust","localizedName":"Glowstone Dust","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gold_block","unlocalizedName":"block.minecraft.gold_block","localizedName":"Block of Gold","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gold_ingot","unlocalizedName":"item.minecraft.gold_ingot","localizedName":"Gold Ingot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gold_nugget","unlocalizedName":"item.minecraft.gold_nugget","localizedName":"Gold Nugget","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gold_ore","unlocalizedName":"block.minecraft.gold_ore","localizedName":"Gold Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:golden_apple","unlocalizedName":"item.minecraft.golden_apple","localizedName":"Golden Apple","maxDamage":0,"maxStackSize":64},{"id":"minecraft:golden_axe","unlocalizedName":"item.minecraft.golden_axe","localizedName":"Golden Axe","maxDamage":32,"maxStackSize":1},{"id":"minecraft:golden_boots","unlocalizedName":"item.minecraft.golden_boots","localizedName":"Golden Boots","maxDamage":91,"maxStackSize":1},{"id":"minecraft:golden_carrot","unlocalizedName":"item.minecraft.golden_carrot","localizedName":"Golden Carrot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:golden_chestplate","unlocalizedName":"item.minecraft.golden_chestplate","localizedName":"Golden Chestplate","maxDamage":112,"maxStackSize":1},{"id":"minecraft:golden_helmet","unlocalizedName":"item.minecraft.golden_helmet","localizedName":"Golden Helmet","maxDamage":77,"maxStackSize":1},{"id":"minecraft:golden_hoe","unlocalizedName":"item.minecraft.golden_hoe","localizedName":"Golden Hoe","maxDamage":32,"maxStackSize":1},{"id":"minecraft:golden_horse_armor","unlocalizedName":"item.minecraft.golden_horse_armor","localizedName":"Golden Horse Armor","maxDamage":0,"maxStackSize":1},{"id":"minecraft:golden_leggings","unlocalizedName":"item.minecraft.golden_leggings","localizedName":"Golden Leggings","maxDamage":105,"maxStackSize":1},{"id":"minecraft:golden_pickaxe","unlocalizedName":"item.minecraft.golden_pickaxe","localizedName":"Golden Pickaxe","maxDamage":32,"maxStackSize":1},{"id":"minecraft:golden_shovel","unlocalizedName":"item.minecraft.golden_shovel","localizedName":"Golden Shovel","maxDamage":32,"maxStackSize":1},{"id":"minecraft:golden_sword","unlocalizedName":"item.minecraft.golden_sword","localizedName":"Golden Sword","maxDamage":32,"maxStackSize":1},{"id":"minecraft:granite","unlocalizedName":"block.minecraft.granite","localizedName":"Granite","maxDamage":0,"maxStackSize":64},{"id":"minecraft:granite_slab","unlocalizedName":"block.minecraft.granite_slab","localizedName":"Granite Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:granite_stairs","unlocalizedName":"block.minecraft.granite_stairs","localizedName":"Granite Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:granite_wall","unlocalizedName":"block.minecraft.granite_wall","localizedName":"Granite Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:grass","unlocalizedName":"block.minecraft.grass","localizedName":"Grass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:grass_block","unlocalizedName":"block.minecraft.grass_block","localizedName":"Grass Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:grass_path","unlocalizedName":"block.minecraft.grass_path","localizedName":"Grass Path","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gravel","unlocalizedName":"block.minecraft.gravel","localizedName":"Gravel","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_banner","unlocalizedName":"block.minecraft.gray_banner","localizedName":"Gray Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:gray_bed","unlocalizedName":"block.minecraft.gray_bed","localizedName":"Gray Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:gray_carpet","unlocalizedName":"block.minecraft.gray_carpet","localizedName":"Gray Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_concrete","unlocalizedName":"block.minecraft.gray_concrete","localizedName":"Gray Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_concrete_powder","unlocalizedName":"block.minecraft.gray_concrete_powder","localizedName":"Gray Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_dye","unlocalizedName":"item.minecraft.gray_dye","localizedName":"Gray Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_glazed_terracotta","unlocalizedName":"block.minecraft.gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_shulker_box","unlocalizedName":"block.minecraft.gray_shulker_box","localizedName":"Gray Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:gray_stained_glass","unlocalizedName":"block.minecraft.gray_stained_glass","localizedName":"Gray Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_stained_glass_pane","unlocalizedName":"block.minecraft.gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_terracotta","unlocalizedName":"block.minecraft.gray_terracotta","localizedName":"Gray Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gray_wool","unlocalizedName":"block.minecraft.gray_wool","localizedName":"Gray Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_banner","unlocalizedName":"block.minecraft.green_banner","localizedName":"Green Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:green_bed","unlocalizedName":"block.minecraft.green_bed","localizedName":"Green Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:green_carpet","unlocalizedName":"block.minecraft.green_carpet","localizedName":"Green Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_concrete","unlocalizedName":"block.minecraft.green_concrete","localizedName":"Green Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_concrete_powder","unlocalizedName":"block.minecraft.green_concrete_powder","localizedName":"Green Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_dye","unlocalizedName":"item.minecraft.green_dye","localizedName":"Green Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_glazed_terracotta","unlocalizedName":"block.minecraft.green_glazed_terracotta","localizedName":"Green Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_shulker_box","unlocalizedName":"block.minecraft.green_shulker_box","localizedName":"Green Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:green_stained_glass","unlocalizedName":"block.minecraft.green_stained_glass","localizedName":"Green Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_stained_glass_pane","unlocalizedName":"block.minecraft.green_stained_glass_pane","localizedName":"Green Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_terracotta","unlocalizedName":"block.minecraft.green_terracotta","localizedName":"Green Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:green_wool","unlocalizedName":"block.minecraft.green_wool","localizedName":"Green Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:grindstone","unlocalizedName":"block.minecraft.grindstone","localizedName":"Grindstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:guardian_spawn_egg","unlocalizedName":"item.minecraft.guardian_spawn_egg","localizedName":"Guardian Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:gunpowder","unlocalizedName":"item.minecraft.gunpowder","localizedName":"Gunpowder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:hay_block","unlocalizedName":"block.minecraft.hay_block","localizedName":"Hay Bale","maxDamage":0,"maxStackSize":64},{"id":"minecraft:heart_of_the_sea","unlocalizedName":"item.minecraft.heart_of_the_sea","localizedName":"Heart of the Sea","maxDamage":0,"maxStackSize":64},{"id":"minecraft:heavy_weighted_pressure_plate","unlocalizedName":"block.minecraft.heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:honey_block","unlocalizedName":"block.minecraft.honey_block","localizedName":"Honey Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:honey_bottle","unlocalizedName":"item.minecraft.honey_bottle","localizedName":"Honey Bottle","maxDamage":0,"maxStackSize":16},{"id":"minecraft:honeycomb","unlocalizedName":"item.minecraft.honeycomb","localizedName":"Honeycomb","maxDamage":0,"maxStackSize":64},{"id":"minecraft:honeycomb_block","unlocalizedName":"block.minecraft.honeycomb_block","localizedName":"Honeycomb Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:hopper","unlocalizedName":"block.minecraft.hopper","localizedName":"Hopper","maxDamage":0,"maxStackSize":64},{"id":"minecraft:hopper_minecart","unlocalizedName":"item.minecraft.hopper_minecart","localizedName":"Minecart with Hopper","maxDamage":0,"maxStackSize":1},{"id":"minecraft:horn_coral","unlocalizedName":"block.minecraft.horn_coral","localizedName":"Horn Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:horn_coral_block","unlocalizedName":"block.minecraft.horn_coral_block","localizedName":"Horn Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:horn_coral_fan","unlocalizedName":"block.minecraft.horn_coral_fan","localizedName":"Horn Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:horse_spawn_egg","unlocalizedName":"item.minecraft.horse_spawn_egg","localizedName":"Horse Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:husk_spawn_egg","unlocalizedName":"item.minecraft.husk_spawn_egg","localizedName":"Husk Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ice","unlocalizedName":"block.minecraft.ice","localizedName":"Ice","maxDamage":0,"maxStackSize":64},{"id":"minecraft:infested_chiseled_stone_bricks","unlocalizedName":"block.minecraft.infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:infested_cobblestone","unlocalizedName":"block.minecraft.infested_cobblestone","localizedName":"Infested Cobblestone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:infested_cracked_stone_bricks","unlocalizedName":"block.minecraft.infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:infested_mossy_stone_bricks","unlocalizedName":"block.minecraft.infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:infested_stone","unlocalizedName":"block.minecraft.infested_stone","localizedName":"Infested Stone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:infested_stone_bricks","unlocalizedName":"block.minecraft.infested_stone_bricks","localizedName":"Infested Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ink_sac","unlocalizedName":"item.minecraft.ink_sac","localizedName":"Ink Sac","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_axe","unlocalizedName":"item.minecraft.iron_axe","localizedName":"Iron Axe","maxDamage":250,"maxStackSize":1},{"id":"minecraft:iron_bars","unlocalizedName":"block.minecraft.iron_bars","localizedName":"Iron Bars","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_block","unlocalizedName":"block.minecraft.iron_block","localizedName":"Block of Iron","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_boots","unlocalizedName":"item.minecraft.iron_boots","localizedName":"Iron Boots","maxDamage":195,"maxStackSize":1},{"id":"minecraft:iron_chestplate","unlocalizedName":"item.minecraft.iron_chestplate","localizedName":"Iron Chestplate","maxDamage":240,"maxStackSize":1},{"id":"minecraft:iron_door","unlocalizedName":"block.minecraft.iron_door","localizedName":"Iron Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_helmet","unlocalizedName":"item.minecraft.iron_helmet","localizedName":"Iron Helmet","maxDamage":165,"maxStackSize":1},{"id":"minecraft:iron_hoe","unlocalizedName":"item.minecraft.iron_hoe","localizedName":"Iron Hoe","maxDamage":250,"maxStackSize":1},{"id":"minecraft:iron_horse_armor","unlocalizedName":"item.minecraft.iron_horse_armor","localizedName":"Iron Horse Armor","maxDamage":0,"maxStackSize":1},{"id":"minecraft:iron_ingot","unlocalizedName":"item.minecraft.iron_ingot","localizedName":"Iron Ingot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_leggings","unlocalizedName":"item.minecraft.iron_leggings","localizedName":"Iron Leggings","maxDamage":225,"maxStackSize":1},{"id":"minecraft:iron_nugget","unlocalizedName":"item.minecraft.iron_nugget","localizedName":"Iron Nugget","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_ore","unlocalizedName":"block.minecraft.iron_ore","localizedName":"Iron Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:iron_pickaxe","unlocalizedName":"item.minecraft.iron_pickaxe","localizedName":"Iron Pickaxe","maxDamage":250,"maxStackSize":1},{"id":"minecraft:iron_shovel","unlocalizedName":"item.minecraft.iron_shovel","localizedName":"Iron Shovel","maxDamage":250,"maxStackSize":1},{"id":"minecraft:iron_sword","unlocalizedName":"item.minecraft.iron_sword","localizedName":"Iron Sword","maxDamage":250,"maxStackSize":1},{"id":"minecraft:iron_trapdoor","unlocalizedName":"block.minecraft.iron_trapdoor","localizedName":"Iron Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:item_frame","unlocalizedName":"item.minecraft.item_frame","localizedName":"Item Frame","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jack_o_lantern","unlocalizedName":"block.minecraft.jack_o_lantern","localizedName":"Jack o'Lantern","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jigsaw","unlocalizedName":"block.minecraft.jigsaw","localizedName":"Jigsaw Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jukebox","unlocalizedName":"block.minecraft.jukebox","localizedName":"Jukebox","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_boat","unlocalizedName":"item.minecraft.jungle_boat","localizedName":"Jungle Boat","maxDamage":0,"maxStackSize":1},{"id":"minecraft:jungle_button","unlocalizedName":"block.minecraft.jungle_button","localizedName":"Jungle Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_door","unlocalizedName":"block.minecraft.jungle_door","localizedName":"Jungle Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_fence","unlocalizedName":"block.minecraft.jungle_fence","localizedName":"Jungle Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_fence_gate","unlocalizedName":"block.minecraft.jungle_fence_gate","localizedName":"Jungle Fence Gate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_leaves","unlocalizedName":"block.minecraft.jungle_leaves","localizedName":"Jungle Leaves","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_log","unlocalizedName":"block.minecraft.jungle_log","localizedName":"Jungle Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_planks","unlocalizedName":"block.minecraft.jungle_planks","localizedName":"Jungle Planks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_pressure_plate","unlocalizedName":"block.minecraft.jungle_pressure_plate","localizedName":"Jungle Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_sapling","unlocalizedName":"block.minecraft.jungle_sapling","localizedName":"Jungle Sapling","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_sign","unlocalizedName":"block.minecraft.jungle_sign","localizedName":"Jungle Sign","maxDamage":0,"maxStackSize":16},{"id":"minecraft:jungle_slab","unlocalizedName":"block.minecraft.jungle_slab","localizedName":"Jungle Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_stairs","unlocalizedName":"block.minecraft.jungle_stairs","localizedName":"Jungle Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_trapdoor","unlocalizedName":"block.minecraft.jungle_trapdoor","localizedName":"Jungle Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:jungle_wood","unlocalizedName":"block.minecraft.jungle_wood","localizedName":"Jungle Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:kelp","unlocalizedName":"block.minecraft.kelp","localizedName":"Kelp","maxDamage":0,"maxStackSize":64},{"id":"minecraft:knowledge_book","unlocalizedName":"item.minecraft.knowledge_book","localizedName":"Knowledge Book","maxDamage":0,"maxStackSize":1},{"id":"minecraft:ladder","unlocalizedName":"block.minecraft.ladder","localizedName":"Ladder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lantern","unlocalizedName":"block.minecraft.lantern","localizedName":"Lantern","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lapis_block","unlocalizedName":"block.minecraft.lapis_block","localizedName":"Lapis Lazuli Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lapis_lazuli","unlocalizedName":"item.minecraft.lapis_lazuli","localizedName":"Lapis Lazuli","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lapis_ore","unlocalizedName":"block.minecraft.lapis_ore","localizedName":"Lapis Lazuli Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:large_fern","unlocalizedName":"block.minecraft.large_fern","localizedName":"Large Fern","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lava_bucket","unlocalizedName":"item.minecraft.lava_bucket","localizedName":"Lava Bucket","maxDamage":0,"maxStackSize":1},{"id":"minecraft:lead","unlocalizedName":"item.minecraft.lead","localizedName":"Lead","maxDamage":0,"maxStackSize":64},{"id":"minecraft:leather","unlocalizedName":"item.minecraft.leather","localizedName":"Leather","maxDamage":0,"maxStackSize":64},{"id":"minecraft:leather_boots","unlocalizedName":"item.minecraft.leather_boots","localizedName":"Leather Boots","maxDamage":65,"maxStackSize":1},{"id":"minecraft:leather_chestplate","unlocalizedName":"item.minecraft.leather_chestplate","localizedName":"Leather Tunic","maxDamage":80,"maxStackSize":1},{"id":"minecraft:leather_helmet","unlocalizedName":"item.minecraft.leather_helmet","localizedName":"Leather Cap","maxDamage":55,"maxStackSize":1},{"id":"minecraft:leather_horse_armor","unlocalizedName":"item.minecraft.leather_horse_armor","localizedName":"Leather Horse Armor","maxDamage":0,"maxStackSize":1},{"id":"minecraft:leather_leggings","unlocalizedName":"item.minecraft.leather_leggings","localizedName":"Leather Pants","maxDamage":75,"maxStackSize":1},{"id":"minecraft:lectern","unlocalizedName":"block.minecraft.lectern","localizedName":"Lectern","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lever","unlocalizedName":"block.minecraft.lever","localizedName":"Lever","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_banner","unlocalizedName":"block.minecraft.light_blue_banner","localizedName":"Light Blue Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:light_blue_bed","unlocalizedName":"block.minecraft.light_blue_bed","localizedName":"Light Blue Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:light_blue_carpet","unlocalizedName":"block.minecraft.light_blue_carpet","localizedName":"Light Blue Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_concrete","unlocalizedName":"block.minecraft.light_blue_concrete","localizedName":"Light Blue Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_concrete_powder","unlocalizedName":"block.minecraft.light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_dye","unlocalizedName":"item.minecraft.light_blue_dye","localizedName":"Light Blue Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_glazed_terracotta","unlocalizedName":"block.minecraft.light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_shulker_box","unlocalizedName":"block.minecraft.light_blue_shulker_box","localizedName":"Light Blue Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:light_blue_stained_glass","unlocalizedName":"block.minecraft.light_blue_stained_glass","localizedName":"Light Blue Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_stained_glass_pane","unlocalizedName":"block.minecraft.light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_terracotta","unlocalizedName":"block.minecraft.light_blue_terracotta","localizedName":"Light Blue Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_blue_wool","unlocalizedName":"block.minecraft.light_blue_wool","localizedName":"Light Blue Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_banner","unlocalizedName":"block.minecraft.light_gray_banner","localizedName":"Light Gray Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:light_gray_bed","unlocalizedName":"block.minecraft.light_gray_bed","localizedName":"Light Gray Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:light_gray_carpet","unlocalizedName":"block.minecraft.light_gray_carpet","localizedName":"Light Gray Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_concrete","unlocalizedName":"block.minecraft.light_gray_concrete","localizedName":"Light Gray Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_concrete_powder","unlocalizedName":"block.minecraft.light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_dye","unlocalizedName":"item.minecraft.light_gray_dye","localizedName":"Light Gray Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_glazed_terracotta","unlocalizedName":"block.minecraft.light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_shulker_box","unlocalizedName":"block.minecraft.light_gray_shulker_box","localizedName":"Light Gray Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:light_gray_stained_glass","unlocalizedName":"block.minecraft.light_gray_stained_glass","localizedName":"Light Gray Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_stained_glass_pane","unlocalizedName":"block.minecraft.light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_terracotta","unlocalizedName":"block.minecraft.light_gray_terracotta","localizedName":"Light Gray Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_gray_wool","unlocalizedName":"block.minecraft.light_gray_wool","localizedName":"Light Gray Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:light_weighted_pressure_plate","unlocalizedName":"block.minecraft.light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lilac","unlocalizedName":"block.minecraft.lilac","localizedName":"Lilac","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lily_of_the_valley","unlocalizedName":"block.minecraft.lily_of_the_valley","localizedName":"Lily of the Valley","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lily_pad","unlocalizedName":"block.minecraft.lily_pad","localizedName":"Lily Pad","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_banner","unlocalizedName":"block.minecraft.lime_banner","localizedName":"Lime Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:lime_bed","unlocalizedName":"block.minecraft.lime_bed","localizedName":"Lime Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:lime_carpet","unlocalizedName":"block.minecraft.lime_carpet","localizedName":"Lime Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_concrete","unlocalizedName":"block.minecraft.lime_concrete","localizedName":"Lime Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_concrete_powder","unlocalizedName":"block.minecraft.lime_concrete_powder","localizedName":"Lime Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_dye","unlocalizedName":"item.minecraft.lime_dye","localizedName":"Lime Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_glazed_terracotta","unlocalizedName":"block.minecraft.lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_shulker_box","unlocalizedName":"block.minecraft.lime_shulker_box","localizedName":"Lime Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:lime_stained_glass","unlocalizedName":"block.minecraft.lime_stained_glass","localizedName":"Lime Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_stained_glass_pane","unlocalizedName":"block.minecraft.lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_terracotta","unlocalizedName":"block.minecraft.lime_terracotta","localizedName":"Lime Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lime_wool","unlocalizedName":"block.minecraft.lime_wool","localizedName":"Lime Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:lingering_potion","unlocalizedName":"item.minecraft.lingering_potion.effect.water","localizedName":"Lingering Water Bottle","maxDamage":0,"maxStackSize":1},{"id":"minecraft:llama_spawn_egg","unlocalizedName":"item.minecraft.llama_spawn_egg","localizedName":"Llama Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:loom","unlocalizedName":"block.minecraft.loom","localizedName":"Loom","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_banner","unlocalizedName":"block.minecraft.magenta_banner","localizedName":"Magenta Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:magenta_bed","unlocalizedName":"block.minecraft.magenta_bed","localizedName":"Magenta Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:magenta_carpet","unlocalizedName":"block.minecraft.magenta_carpet","localizedName":"Magenta Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_concrete","unlocalizedName":"block.minecraft.magenta_concrete","localizedName":"Magenta Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_concrete_powder","unlocalizedName":"block.minecraft.magenta_concrete_powder","localizedName":"Magenta Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_dye","unlocalizedName":"item.minecraft.magenta_dye","localizedName":"Magenta Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_glazed_terracotta","unlocalizedName":"block.minecraft.magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_shulker_box","unlocalizedName":"block.minecraft.magenta_shulker_box","localizedName":"Magenta Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:magenta_stained_glass","unlocalizedName":"block.minecraft.magenta_stained_glass","localizedName":"Magenta Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_stained_glass_pane","unlocalizedName":"block.minecraft.magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_terracotta","unlocalizedName":"block.minecraft.magenta_terracotta","localizedName":"Magenta Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magenta_wool","unlocalizedName":"block.minecraft.magenta_wool","localizedName":"Magenta Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magma_block","unlocalizedName":"block.minecraft.magma_block","localizedName":"Magma Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magma_cream","unlocalizedName":"item.minecraft.magma_cream","localizedName":"Magma Cream","maxDamage":0,"maxStackSize":64},{"id":"minecraft:magma_cube_spawn_egg","unlocalizedName":"item.minecraft.magma_cube_spawn_egg","localizedName":"Magma Cube Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:map","unlocalizedName":"item.minecraft.map","localizedName":"Empty Map","maxDamage":0,"maxStackSize":64},{"id":"minecraft:melon","unlocalizedName":"block.minecraft.melon","localizedName":"Melon","maxDamage":0,"maxStackSize":64},{"id":"minecraft:melon_seeds","unlocalizedName":"item.minecraft.melon_seeds","localizedName":"Melon Seeds","maxDamage":0,"maxStackSize":64},{"id":"minecraft:melon_slice","unlocalizedName":"item.minecraft.melon_slice","localizedName":"Melon Slice","maxDamage":0,"maxStackSize":64},{"id":"minecraft:milk_bucket","unlocalizedName":"item.minecraft.milk_bucket","localizedName":"Milk Bucket","maxDamage":0,"maxStackSize":1},{"id":"minecraft:minecart","unlocalizedName":"item.minecraft.minecart","localizedName":"Minecart","maxDamage":0,"maxStackSize":1},{"id":"minecraft:mojang_banner_pattern","unlocalizedName":"item.minecraft.mojang_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1},{"id":"minecraft:mooshroom_spawn_egg","unlocalizedName":"item.minecraft.mooshroom_spawn_egg","localizedName":"Mooshroom Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_cobblestone","unlocalizedName":"block.minecraft.mossy_cobblestone","localizedName":"Mossy Cobblestone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_cobblestone_slab","unlocalizedName":"block.minecraft.mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_cobblestone_stairs","unlocalizedName":"block.minecraft.mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_cobblestone_wall","unlocalizedName":"block.minecraft.mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_stone_brick_slab","unlocalizedName":"block.minecraft.mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_stone_brick_stairs","unlocalizedName":"block.minecraft.mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_stone_brick_wall","unlocalizedName":"block.minecraft.mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mossy_stone_bricks","unlocalizedName":"block.minecraft.mossy_stone_bricks","localizedName":"Mossy Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mule_spawn_egg","unlocalizedName":"item.minecraft.mule_spawn_egg","localizedName":"Mule Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mushroom_stem","unlocalizedName":"block.minecraft.mushroom_stem","localizedName":"Mushroom Stem","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mushroom_stew","unlocalizedName":"item.minecraft.mushroom_stew","localizedName":"Mushroom Stew","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_11","unlocalizedName":"item.minecraft.music_disc_11","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_13","unlocalizedName":"item.minecraft.music_disc_13","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_blocks","unlocalizedName":"item.minecraft.music_disc_blocks","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_cat","unlocalizedName":"item.minecraft.music_disc_cat","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_chirp","unlocalizedName":"item.minecraft.music_disc_chirp","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_far","unlocalizedName":"item.minecraft.music_disc_far","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_mall","unlocalizedName":"item.minecraft.music_disc_mall","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_mellohi","unlocalizedName":"item.minecraft.music_disc_mellohi","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_stal","unlocalizedName":"item.minecraft.music_disc_stal","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_strad","unlocalizedName":"item.minecraft.music_disc_strad","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_wait","unlocalizedName":"item.minecraft.music_disc_wait","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:music_disc_ward","unlocalizedName":"item.minecraft.music_disc_ward","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1},{"id":"minecraft:mutton","unlocalizedName":"item.minecraft.mutton","localizedName":"Raw Mutton","maxDamage":0,"maxStackSize":64},{"id":"minecraft:mycelium","unlocalizedName":"block.minecraft.mycelium","localizedName":"Mycelium","maxDamage":0,"maxStackSize":64},{"id":"minecraft:name_tag","unlocalizedName":"item.minecraft.name_tag","localizedName":"Name Tag","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nautilus_shell","unlocalizedName":"item.minecraft.nautilus_shell","localizedName":"Nautilus Shell","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_brick","unlocalizedName":"item.minecraft.nether_brick","localizedName":"Nether Brick","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_brick_fence","unlocalizedName":"block.minecraft.nether_brick_fence","localizedName":"Nether Brick Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_brick_slab","unlocalizedName":"block.minecraft.nether_brick_slab","localizedName":"Nether Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_brick_stairs","unlocalizedName":"block.minecraft.nether_brick_stairs","localizedName":"Nether Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_brick_wall","unlocalizedName":"block.minecraft.nether_brick_wall","localizedName":"Nether Brick Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_bricks","unlocalizedName":"block.minecraft.nether_bricks","localizedName":"Nether Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_quartz_ore","unlocalizedName":"block.minecraft.nether_quartz_ore","localizedName":"Nether Quartz Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_star","unlocalizedName":"item.minecraft.nether_star","localizedName":"Nether Star","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_wart","unlocalizedName":"item.minecraft.nether_wart","localizedName":"Nether Wart","maxDamage":0,"maxStackSize":64},{"id":"minecraft:nether_wart_block","unlocalizedName":"block.minecraft.nether_wart_block","localizedName":"Nether Wart Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:netherrack","unlocalizedName":"block.minecraft.netherrack","localizedName":"Netherrack","maxDamage":0,"maxStackSize":64},{"id":"minecraft:note_block","unlocalizedName":"block.minecraft.note_block","localizedName":"Note Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_boat","unlocalizedName":"item.minecraft.oak_boat","localizedName":"Oak Boat","maxDamage":0,"maxStackSize":1},{"id":"minecraft:oak_button","unlocalizedName":"block.minecraft.oak_button","localizedName":"Oak Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_door","unlocalizedName":"block.minecraft.oak_door","localizedName":"Oak Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_fence","unlocalizedName":"block.minecraft.oak_fence","localizedName":"Oak Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_fence_gate","unlocalizedName":"block.minecraft.oak_fence_gate","localizedName":"Oak Fence Gate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_leaves","unlocalizedName":"block.minecraft.oak_leaves","localizedName":"Oak Leaves","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_log","unlocalizedName":"block.minecraft.oak_log","localizedName":"Oak Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_planks","unlocalizedName":"block.minecraft.oak_planks","localizedName":"Oak Planks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_pressure_plate","unlocalizedName":"block.minecraft.oak_pressure_plate","localizedName":"Oak Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_sapling","unlocalizedName":"block.minecraft.oak_sapling","localizedName":"Oak Sapling","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_sign","unlocalizedName":"block.minecraft.oak_sign","localizedName":"Oak Sign","maxDamage":0,"maxStackSize":16},{"id":"minecraft:oak_slab","unlocalizedName":"block.minecraft.oak_slab","localizedName":"Oak Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_stairs","unlocalizedName":"block.minecraft.oak_stairs","localizedName":"Oak Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_trapdoor","unlocalizedName":"block.minecraft.oak_trapdoor","localizedName":"Oak Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oak_wood","unlocalizedName":"block.minecraft.oak_wood","localizedName":"Oak Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:observer","unlocalizedName":"block.minecraft.observer","localizedName":"Observer","maxDamage":0,"maxStackSize":64},{"id":"minecraft:obsidian","unlocalizedName":"block.minecraft.obsidian","localizedName":"Obsidian","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ocelot_spawn_egg","unlocalizedName":"item.minecraft.ocelot_spawn_egg","localizedName":"Ocelot Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_banner","unlocalizedName":"block.minecraft.orange_banner","localizedName":"Orange Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:orange_bed","unlocalizedName":"block.minecraft.orange_bed","localizedName":"Orange Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:orange_carpet","unlocalizedName":"block.minecraft.orange_carpet","localizedName":"Orange Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_concrete","unlocalizedName":"block.minecraft.orange_concrete","localizedName":"Orange Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_concrete_powder","unlocalizedName":"block.minecraft.orange_concrete_powder","localizedName":"Orange Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_dye","unlocalizedName":"item.minecraft.orange_dye","localizedName":"Orange Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_glazed_terracotta","unlocalizedName":"block.minecraft.orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_shulker_box","unlocalizedName":"block.minecraft.orange_shulker_box","localizedName":"Orange Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:orange_stained_glass","unlocalizedName":"block.minecraft.orange_stained_glass","localizedName":"Orange Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_stained_glass_pane","unlocalizedName":"block.minecraft.orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_terracotta","unlocalizedName":"block.minecraft.orange_terracotta","localizedName":"Orange Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_tulip","unlocalizedName":"block.minecraft.orange_tulip","localizedName":"Orange Tulip","maxDamage":0,"maxStackSize":64},{"id":"minecraft:orange_wool","unlocalizedName":"block.minecraft.orange_wool","localizedName":"Orange Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:oxeye_daisy","unlocalizedName":"block.minecraft.oxeye_daisy","localizedName":"Oxeye Daisy","maxDamage":0,"maxStackSize":64},{"id":"minecraft:packed_ice","unlocalizedName":"block.minecraft.packed_ice","localizedName":"Packed Ice","maxDamage":0,"maxStackSize":64},{"id":"minecraft:painting","unlocalizedName":"item.minecraft.painting","localizedName":"Painting","maxDamage":0,"maxStackSize":64},{"id":"minecraft:panda_spawn_egg","unlocalizedName":"item.minecraft.panda_spawn_egg","localizedName":"Panda Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:paper","unlocalizedName":"item.minecraft.paper","localizedName":"Paper","maxDamage":0,"maxStackSize":64},{"id":"minecraft:parrot_spawn_egg","unlocalizedName":"item.minecraft.parrot_spawn_egg","localizedName":"Parrot Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:peony","unlocalizedName":"block.minecraft.peony","localizedName":"Peony","maxDamage":0,"maxStackSize":64},{"id":"minecraft:petrified_oak_slab","unlocalizedName":"block.minecraft.petrified_oak_slab","localizedName":"Petrified Oak Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:phantom_membrane","unlocalizedName":"item.minecraft.phantom_membrane","localizedName":"Phantom Membrane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:phantom_spawn_egg","unlocalizedName":"item.minecraft.phantom_spawn_egg","localizedName":"Phantom Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pig_spawn_egg","unlocalizedName":"item.minecraft.pig_spawn_egg","localizedName":"Pig Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pillager_spawn_egg","unlocalizedName":"item.minecraft.pillager_spawn_egg","localizedName":"Pillager Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_banner","unlocalizedName":"block.minecraft.pink_banner","localizedName":"Pink Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:pink_bed","unlocalizedName":"block.minecraft.pink_bed","localizedName":"Pink Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:pink_carpet","unlocalizedName":"block.minecraft.pink_carpet","localizedName":"Pink Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_concrete","unlocalizedName":"block.minecraft.pink_concrete","localizedName":"Pink Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_concrete_powder","unlocalizedName":"block.minecraft.pink_concrete_powder","localizedName":"Pink Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_dye","unlocalizedName":"item.minecraft.pink_dye","localizedName":"Pink Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_glazed_terracotta","unlocalizedName":"block.minecraft.pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_shulker_box","unlocalizedName":"block.minecraft.pink_shulker_box","localizedName":"Pink Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:pink_stained_glass","unlocalizedName":"block.minecraft.pink_stained_glass","localizedName":"Pink Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_stained_glass_pane","unlocalizedName":"block.minecraft.pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_terracotta","unlocalizedName":"block.minecraft.pink_terracotta","localizedName":"Pink Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_tulip","unlocalizedName":"block.minecraft.pink_tulip","localizedName":"Pink Tulip","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pink_wool","unlocalizedName":"block.minecraft.pink_wool","localizedName":"Pink Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:piston","unlocalizedName":"block.minecraft.piston","localizedName":"Piston","maxDamage":0,"maxStackSize":64},{"id":"minecraft:player_head","unlocalizedName":"block.minecraft.player_head","localizedName":"Player Head","maxDamage":0,"maxStackSize":64},{"id":"minecraft:podzol","unlocalizedName":"block.minecraft.podzol","localizedName":"Podzol","maxDamage":0,"maxStackSize":64},{"id":"minecraft:poisonous_potato","unlocalizedName":"item.minecraft.poisonous_potato","localizedName":"Poisonous Potato","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polar_bear_spawn_egg","unlocalizedName":"item.minecraft.polar_bear_spawn_egg","localizedName":"Polar Bear Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_andesite","unlocalizedName":"block.minecraft.polished_andesite","localizedName":"Polished Andesite","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_andesite_slab","unlocalizedName":"block.minecraft.polished_andesite_slab","localizedName":"Polished Andesite Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_andesite_stairs","unlocalizedName":"block.minecraft.polished_andesite_stairs","localizedName":"Polished Andesite Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_diorite","unlocalizedName":"block.minecraft.polished_diorite","localizedName":"Polished Diorite","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_diorite_slab","unlocalizedName":"block.minecraft.polished_diorite_slab","localizedName":"Polished Diorite Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_diorite_stairs","unlocalizedName":"block.minecraft.polished_diorite_stairs","localizedName":"Polished Diorite Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_granite","unlocalizedName":"block.minecraft.polished_granite","localizedName":"Polished Granite","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_granite_slab","unlocalizedName":"block.minecraft.polished_granite_slab","localizedName":"Polished Granite Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:polished_granite_stairs","unlocalizedName":"block.minecraft.polished_granite_stairs","localizedName":"Polished Granite Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:popped_chorus_fruit","unlocalizedName":"item.minecraft.popped_chorus_fruit","localizedName":"Popped Chorus Fruit","maxDamage":0,"maxStackSize":64},{"id":"minecraft:poppy","unlocalizedName":"block.minecraft.poppy","localizedName":"Poppy","maxDamage":0,"maxStackSize":64},{"id":"minecraft:porkchop","unlocalizedName":"item.minecraft.porkchop","localizedName":"Raw Porkchop","maxDamage":0,"maxStackSize":64},{"id":"minecraft:potato","unlocalizedName":"item.minecraft.potato","localizedName":"Potato","maxDamage":0,"maxStackSize":64},{"id":"minecraft:potion","unlocalizedName":"item.minecraft.potion.effect.water","localizedName":"Water Bottle","maxDamage":0,"maxStackSize":1},{"id":"minecraft:powered_rail","unlocalizedName":"block.minecraft.powered_rail","localizedName":"Powered Rail","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine","unlocalizedName":"block.minecraft.prismarine","localizedName":"Prismarine","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_brick_slab","unlocalizedName":"block.minecraft.prismarine_brick_slab","localizedName":"Prismarine Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_brick_stairs","unlocalizedName":"block.minecraft.prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_bricks","unlocalizedName":"block.minecraft.prismarine_bricks","localizedName":"Prismarine Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_crystals","unlocalizedName":"item.minecraft.prismarine_crystals","localizedName":"Prismarine Crystals","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_shard","unlocalizedName":"item.minecraft.prismarine_shard","localizedName":"Prismarine Shard","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_slab","unlocalizedName":"block.minecraft.prismarine_slab","localizedName":"Prismarine Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_stairs","unlocalizedName":"block.minecraft.prismarine_stairs","localizedName":"Prismarine Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:prismarine_wall","unlocalizedName":"block.minecraft.prismarine_wall","localizedName":"Prismarine Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pufferfish","unlocalizedName":"item.minecraft.pufferfish","localizedName":"Pufferfish","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pufferfish_bucket","unlocalizedName":"item.minecraft.pufferfish_bucket","localizedName":"Bucket of Pufferfish","maxDamage":0,"maxStackSize":1},{"id":"minecraft:pufferfish_spawn_egg","unlocalizedName":"item.minecraft.pufferfish_spawn_egg","localizedName":"Pufferfish Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pumpkin","unlocalizedName":"block.minecraft.pumpkin","localizedName":"Pumpkin","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pumpkin_pie","unlocalizedName":"item.minecraft.pumpkin_pie","localizedName":"Pumpkin Pie","maxDamage":0,"maxStackSize":64},{"id":"minecraft:pumpkin_seeds","unlocalizedName":"item.minecraft.pumpkin_seeds","localizedName":"Pumpkin Seeds","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_banner","unlocalizedName":"block.minecraft.purple_banner","localizedName":"Purple Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:purple_bed","unlocalizedName":"block.minecraft.purple_bed","localizedName":"Purple Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:purple_carpet","unlocalizedName":"block.minecraft.purple_carpet","localizedName":"Purple Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_concrete","unlocalizedName":"block.minecraft.purple_concrete","localizedName":"Purple Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_concrete_powder","unlocalizedName":"block.minecraft.purple_concrete_powder","localizedName":"Purple Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_dye","unlocalizedName":"item.minecraft.purple_dye","localizedName":"Purple Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_glazed_terracotta","unlocalizedName":"block.minecraft.purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_shulker_box","unlocalizedName":"block.minecraft.purple_shulker_box","localizedName":"Purple Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:purple_stained_glass","unlocalizedName":"block.minecraft.purple_stained_glass","localizedName":"Purple Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_stained_glass_pane","unlocalizedName":"block.minecraft.purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_terracotta","unlocalizedName":"block.minecraft.purple_terracotta","localizedName":"Purple Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purple_wool","unlocalizedName":"block.minecraft.purple_wool","localizedName":"Purple Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purpur_block","unlocalizedName":"block.minecraft.purpur_block","localizedName":"Purpur Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purpur_pillar","unlocalizedName":"block.minecraft.purpur_pillar","localizedName":"Purpur Pillar","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purpur_slab","unlocalizedName":"block.minecraft.purpur_slab","localizedName":"Purpur Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:purpur_stairs","unlocalizedName":"block.minecraft.purpur_stairs","localizedName":"Purpur Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:quartz","unlocalizedName":"item.minecraft.quartz","localizedName":"Nether Quartz","maxDamage":0,"maxStackSize":64},{"id":"minecraft:quartz_block","unlocalizedName":"block.minecraft.quartz_block","localizedName":"Block of Quartz","maxDamage":0,"maxStackSize":64},{"id":"minecraft:quartz_pillar","unlocalizedName":"block.minecraft.quartz_pillar","localizedName":"Quartz Pillar","maxDamage":0,"maxStackSize":64},{"id":"minecraft:quartz_slab","unlocalizedName":"block.minecraft.quartz_slab","localizedName":"Quartz Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:quartz_stairs","unlocalizedName":"block.minecraft.quartz_stairs","localizedName":"Quartz Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rabbit","unlocalizedName":"item.minecraft.rabbit","localizedName":"Raw Rabbit","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rabbit_foot","unlocalizedName":"item.minecraft.rabbit_foot","localizedName":"Rabbit's Foot","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rabbit_hide","unlocalizedName":"item.minecraft.rabbit_hide","localizedName":"Rabbit Hide","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rabbit_spawn_egg","unlocalizedName":"item.minecraft.rabbit_spawn_egg","localizedName":"Rabbit Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rabbit_stew","unlocalizedName":"item.minecraft.rabbit_stew","localizedName":"Rabbit Stew","maxDamage":0,"maxStackSize":1},{"id":"minecraft:rail","unlocalizedName":"block.minecraft.rail","localizedName":"Rail","maxDamage":0,"maxStackSize":64},{"id":"minecraft:ravager_spawn_egg","unlocalizedName":"item.minecraft.ravager_spawn_egg","localizedName":"Ravager Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_banner","unlocalizedName":"block.minecraft.red_banner","localizedName":"Red Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:red_bed","unlocalizedName":"block.minecraft.red_bed","localizedName":"Red Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:red_carpet","unlocalizedName":"block.minecraft.red_carpet","localizedName":"Red Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_concrete","unlocalizedName":"block.minecraft.red_concrete","localizedName":"Red Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_concrete_powder","unlocalizedName":"block.minecraft.red_concrete_powder","localizedName":"Red Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_dye","unlocalizedName":"item.minecraft.red_dye","localizedName":"Red Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_glazed_terracotta","unlocalizedName":"block.minecraft.red_glazed_terracotta","localizedName":"Red Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_mushroom","unlocalizedName":"block.minecraft.red_mushroom","localizedName":"Red Mushroom","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_mushroom_block","unlocalizedName":"block.minecraft.red_mushroom_block","localizedName":"Red Mushroom Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_nether_brick_slab","unlocalizedName":"block.minecraft.red_nether_brick_slab","localizedName":"Red Nether Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_nether_brick_stairs","unlocalizedName":"block.minecraft.red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_nether_brick_wall","unlocalizedName":"block.minecraft.red_nether_brick_wall","localizedName":"Red Nether Brick Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_nether_bricks","unlocalizedName":"block.minecraft.red_nether_bricks","localizedName":"Red Nether Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_sand","unlocalizedName":"block.minecraft.red_sand","localizedName":"Red Sand","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_sandstone","unlocalizedName":"block.minecraft.red_sandstone","localizedName":"Red Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_sandstone_slab","unlocalizedName":"block.minecraft.red_sandstone_slab","localizedName":"Red Sandstone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_sandstone_stairs","unlocalizedName":"block.minecraft.red_sandstone_stairs","localizedName":"Red Sandstone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_sandstone_wall","unlocalizedName":"block.minecraft.red_sandstone_wall","localizedName":"Red Sandstone Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_shulker_box","unlocalizedName":"block.minecraft.red_shulker_box","localizedName":"Red Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:red_stained_glass","unlocalizedName":"block.minecraft.red_stained_glass","localizedName":"Red Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_stained_glass_pane","unlocalizedName":"block.minecraft.red_stained_glass_pane","localizedName":"Red Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_terracotta","unlocalizedName":"block.minecraft.red_terracotta","localizedName":"Red Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_tulip","unlocalizedName":"block.minecraft.red_tulip","localizedName":"Red Tulip","maxDamage":0,"maxStackSize":64},{"id":"minecraft:red_wool","unlocalizedName":"block.minecraft.red_wool","localizedName":"Red Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:redstone","unlocalizedName":"item.minecraft.redstone","localizedName":"Redstone Dust","maxDamage":0,"maxStackSize":64},{"id":"minecraft:redstone_block","unlocalizedName":"block.minecraft.redstone_block","localizedName":"Block of Redstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:redstone_lamp","unlocalizedName":"block.minecraft.redstone_lamp","localizedName":"Redstone Lamp","maxDamage":0,"maxStackSize":64},{"id":"minecraft:redstone_ore","unlocalizedName":"block.minecraft.redstone_ore","localizedName":"Redstone Ore","maxDamage":0,"maxStackSize":64},{"id":"minecraft:redstone_torch","unlocalizedName":"block.minecraft.redstone_torch","localizedName":"Redstone Torch","maxDamage":0,"maxStackSize":64},{"id":"minecraft:repeater","unlocalizedName":"block.minecraft.repeater","localizedName":"Redstone Repeater","maxDamage":0,"maxStackSize":64},{"id":"minecraft:repeating_command_block","unlocalizedName":"block.minecraft.repeating_command_block","localizedName":"Repeating Command Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rose_bush","unlocalizedName":"block.minecraft.rose_bush","localizedName":"Rose Bush","maxDamage":0,"maxStackSize":64},{"id":"minecraft:rotten_flesh","unlocalizedName":"item.minecraft.rotten_flesh","localizedName":"Rotten Flesh","maxDamage":0,"maxStackSize":64},{"id":"minecraft:saddle","unlocalizedName":"item.minecraft.saddle","localizedName":"Saddle","maxDamage":0,"maxStackSize":1},{"id":"minecraft:salmon","unlocalizedName":"item.minecraft.salmon","localizedName":"Raw Salmon","maxDamage":0,"maxStackSize":64},{"id":"minecraft:salmon_bucket","unlocalizedName":"item.minecraft.salmon_bucket","localizedName":"Bucket of Salmon","maxDamage":0,"maxStackSize":1},{"id":"minecraft:salmon_spawn_egg","unlocalizedName":"item.minecraft.salmon_spawn_egg","localizedName":"Salmon Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sand","unlocalizedName":"block.minecraft.sand","localizedName":"Sand","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sandstone","unlocalizedName":"block.minecraft.sandstone","localizedName":"Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sandstone_slab","unlocalizedName":"block.minecraft.sandstone_slab","localizedName":"Sandstone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sandstone_stairs","unlocalizedName":"block.minecraft.sandstone_stairs","localizedName":"Sandstone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sandstone_wall","unlocalizedName":"block.minecraft.sandstone_wall","localizedName":"Sandstone Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:scaffolding","unlocalizedName":"block.minecraft.scaffolding","localizedName":"Scaffolding","maxDamage":0,"maxStackSize":64},{"id":"minecraft:scute","unlocalizedName":"item.minecraft.scute","localizedName":"Scute","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sea_lantern","unlocalizedName":"block.minecraft.sea_lantern","localizedName":"Sea Lantern","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sea_pickle","unlocalizedName":"block.minecraft.sea_pickle","localizedName":"Sea Pickle","maxDamage":0,"maxStackSize":64},{"id":"minecraft:seagrass","unlocalizedName":"block.minecraft.seagrass","localizedName":"Seagrass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:shears","unlocalizedName":"item.minecraft.shears","localizedName":"Shears","maxDamage":238,"maxStackSize":1},{"id":"minecraft:sheep_spawn_egg","unlocalizedName":"item.minecraft.sheep_spawn_egg","localizedName":"Sheep Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:shield","unlocalizedName":"item.minecraft.shield","localizedName":"Shield","maxDamage":336,"maxStackSize":1},{"id":"minecraft:shulker_box","unlocalizedName":"block.minecraft.shulker_box","localizedName":"Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:shulker_shell","unlocalizedName":"item.minecraft.shulker_shell","localizedName":"Shulker Shell","maxDamage":0,"maxStackSize":64},{"id":"minecraft:shulker_spawn_egg","unlocalizedName":"item.minecraft.shulker_spawn_egg","localizedName":"Shulker Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:silverfish_spawn_egg","unlocalizedName":"item.minecraft.silverfish_spawn_egg","localizedName":"Silverfish Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:skeleton_horse_spawn_egg","unlocalizedName":"item.minecraft.skeleton_horse_spawn_egg","localizedName":"Skeleton Horse Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:skeleton_skull","unlocalizedName":"block.minecraft.skeleton_skull","localizedName":"Skeleton Skull","maxDamage":0,"maxStackSize":64},{"id":"minecraft:skeleton_spawn_egg","unlocalizedName":"item.minecraft.skeleton_spawn_egg","localizedName":"Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:skull_banner_pattern","unlocalizedName":"item.minecraft.skull_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1},{"id":"minecraft:slime_ball","unlocalizedName":"item.minecraft.slime_ball","localizedName":"Slimeball","maxDamage":0,"maxStackSize":64},{"id":"minecraft:slime_block","unlocalizedName":"block.minecraft.slime_block","localizedName":"Slime Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:slime_spawn_egg","unlocalizedName":"item.minecraft.slime_spawn_egg","localizedName":"Slime Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smithing_table","unlocalizedName":"block.minecraft.smithing_table","localizedName":"Smithing Table","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smoker","unlocalizedName":"block.minecraft.smoker","localizedName":"Smoker","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_quartz","unlocalizedName":"block.minecraft.smooth_quartz","localizedName":"Smooth Quartz","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_quartz_slab","unlocalizedName":"block.minecraft.smooth_quartz_slab","localizedName":"Smooth Quartz Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_quartz_stairs","unlocalizedName":"block.minecraft.smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_red_sandstone","unlocalizedName":"block.minecraft.smooth_red_sandstone","localizedName":"Smooth Red Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_red_sandstone_slab","unlocalizedName":"block.minecraft.smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_red_sandstone_stairs","unlocalizedName":"block.minecraft.smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_sandstone","unlocalizedName":"block.minecraft.smooth_sandstone","localizedName":"Smooth Sandstone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_sandstone_slab","unlocalizedName":"block.minecraft.smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_sandstone_stairs","unlocalizedName":"block.minecraft.smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_stone","unlocalizedName":"block.minecraft.smooth_stone","localizedName":"Smooth Stone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:smooth_stone_slab","unlocalizedName":"block.minecraft.smooth_stone_slab","localizedName":"Smooth Stone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:snow","unlocalizedName":"block.minecraft.snow","localizedName":"Snow","maxDamage":0,"maxStackSize":64},{"id":"minecraft:snow_block","unlocalizedName":"block.minecraft.snow_block","localizedName":"Snow Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:snowball","unlocalizedName":"item.minecraft.snowball","localizedName":"Snowball","maxDamage":0,"maxStackSize":16},{"id":"minecraft:soul_sand","unlocalizedName":"block.minecraft.soul_sand","localizedName":"Soul Sand","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spawner","unlocalizedName":"block.minecraft.spawner","localizedName":"Spawner","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spectral_arrow","unlocalizedName":"item.minecraft.spectral_arrow","localizedName":"Spectral Arrow","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spider_eye","unlocalizedName":"item.minecraft.spider_eye","localizedName":"Spider Eye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spider_spawn_egg","unlocalizedName":"item.minecraft.spider_spawn_egg","localizedName":"Spider Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:splash_potion","unlocalizedName":"item.minecraft.splash_potion.effect.water","localizedName":"Splash Water Bottle","maxDamage":0,"maxStackSize":1},{"id":"minecraft:sponge","unlocalizedName":"block.minecraft.sponge","localizedName":"Sponge","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_boat","unlocalizedName":"item.minecraft.spruce_boat","localizedName":"Spruce Boat","maxDamage":0,"maxStackSize":1},{"id":"minecraft:spruce_button","unlocalizedName":"block.minecraft.spruce_button","localizedName":"Spruce Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_door","unlocalizedName":"block.minecraft.spruce_door","localizedName":"Spruce Door","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_fence","unlocalizedName":"block.minecraft.spruce_fence","localizedName":"Spruce Fence","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_fence_gate","unlocalizedName":"block.minecraft.spruce_fence_gate","localizedName":"Spruce Fence Gate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_leaves","unlocalizedName":"block.minecraft.spruce_leaves","localizedName":"Spruce Leaves","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_log","unlocalizedName":"block.minecraft.spruce_log","localizedName":"Spruce Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_planks","unlocalizedName":"block.minecraft.spruce_planks","localizedName":"Spruce Planks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_pressure_plate","unlocalizedName":"block.minecraft.spruce_pressure_plate","localizedName":"Spruce Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_sapling","unlocalizedName":"block.minecraft.spruce_sapling","localizedName":"Spruce Sapling","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_sign","unlocalizedName":"block.minecraft.spruce_sign","localizedName":"Spruce Sign","maxDamage":0,"maxStackSize":16},{"id":"minecraft:spruce_slab","unlocalizedName":"block.minecraft.spruce_slab","localizedName":"Spruce Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_stairs","unlocalizedName":"block.minecraft.spruce_stairs","localizedName":"Spruce Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_trapdoor","unlocalizedName":"block.minecraft.spruce_trapdoor","localizedName":"Spruce Trapdoor","maxDamage":0,"maxStackSize":64},{"id":"minecraft:spruce_wood","unlocalizedName":"block.minecraft.spruce_wood","localizedName":"Spruce Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:squid_spawn_egg","unlocalizedName":"item.minecraft.squid_spawn_egg","localizedName":"Squid Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stick","unlocalizedName":"item.minecraft.stick","localizedName":"Stick","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sticky_piston","unlocalizedName":"block.minecraft.sticky_piston","localizedName":"Sticky Piston","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone","unlocalizedName":"block.minecraft.stone","localizedName":"Stone","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_axe","unlocalizedName":"item.minecraft.stone_axe","localizedName":"Stone Axe","maxDamage":131,"maxStackSize":1},{"id":"minecraft:stone_brick_slab","unlocalizedName":"block.minecraft.stone_brick_slab","localizedName":"Stone Brick Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_brick_stairs","unlocalizedName":"block.minecraft.stone_brick_stairs","localizedName":"Stone Brick Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_brick_wall","unlocalizedName":"block.minecraft.stone_brick_wall","localizedName":"Stone Brick Wall","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_bricks","unlocalizedName":"block.minecraft.stone_bricks","localizedName":"Stone Bricks","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_button","unlocalizedName":"block.minecraft.stone_button","localizedName":"Stone Button","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_hoe","unlocalizedName":"item.minecraft.stone_hoe","localizedName":"Stone Hoe","maxDamage":131,"maxStackSize":1},{"id":"minecraft:stone_pickaxe","unlocalizedName":"item.minecraft.stone_pickaxe","localizedName":"Stone Pickaxe","maxDamage":131,"maxStackSize":1},{"id":"minecraft:stone_pressure_plate","unlocalizedName":"block.minecraft.stone_pressure_plate","localizedName":"Stone Pressure Plate","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_shovel","unlocalizedName":"item.minecraft.stone_shovel","localizedName":"Stone Shovel","maxDamage":131,"maxStackSize":1},{"id":"minecraft:stone_slab","unlocalizedName":"block.minecraft.stone_slab","localizedName":"Stone Slab","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_stairs","unlocalizedName":"block.minecraft.stone_stairs","localizedName":"Stone Stairs","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stone_sword","unlocalizedName":"item.minecraft.stone_sword","localizedName":"Stone Sword","maxDamage":131,"maxStackSize":1},{"id":"minecraft:stonecutter","unlocalizedName":"block.minecraft.stonecutter","localizedName":"Stonecutter","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stray_spawn_egg","unlocalizedName":"item.minecraft.stray_spawn_egg","localizedName":"Stray Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:string","unlocalizedName":"item.minecraft.string","localizedName":"String","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_acacia_log","unlocalizedName":"block.minecraft.stripped_acacia_log","localizedName":"Stripped Acacia Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_acacia_wood","unlocalizedName":"block.minecraft.stripped_acacia_wood","localizedName":"Stripped Acacia Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_birch_log","unlocalizedName":"block.minecraft.stripped_birch_log","localizedName":"Stripped Birch Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_birch_wood","unlocalizedName":"block.minecraft.stripped_birch_wood","localizedName":"Stripped Birch Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_dark_oak_log","unlocalizedName":"block.minecraft.stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_dark_oak_wood","unlocalizedName":"block.minecraft.stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_jungle_log","unlocalizedName":"block.minecraft.stripped_jungle_log","localizedName":"Stripped Jungle Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_jungle_wood","unlocalizedName":"block.minecraft.stripped_jungle_wood","localizedName":"Stripped Jungle Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_oak_log","unlocalizedName":"block.minecraft.stripped_oak_log","localizedName":"Stripped Oak Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_oak_wood","unlocalizedName":"block.minecraft.stripped_oak_wood","localizedName":"Stripped Oak Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_spruce_log","unlocalizedName":"block.minecraft.stripped_spruce_log","localizedName":"Stripped Spruce Log","maxDamage":0,"maxStackSize":64},{"id":"minecraft:stripped_spruce_wood","unlocalizedName":"block.minecraft.stripped_spruce_wood","localizedName":"Stripped Spruce Wood","maxDamage":0,"maxStackSize":64},{"id":"minecraft:structure_block","unlocalizedName":"block.minecraft.structure_block","localizedName":"Structure Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:structure_void","unlocalizedName":"block.minecraft.structure_void","localizedName":"Structure Void","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sugar","unlocalizedName":"item.minecraft.sugar","localizedName":"Sugar","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sugar_cane","unlocalizedName":"block.minecraft.sugar_cane","localizedName":"Sugar Cane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:sunflower","unlocalizedName":"block.minecraft.sunflower","localizedName":"Sunflower","maxDamage":0,"maxStackSize":64},{"id":"minecraft:suspicious_stew","unlocalizedName":"item.minecraft.suspicious_stew","localizedName":"Suspicious Stew","maxDamage":0,"maxStackSize":1},{"id":"minecraft:sweet_berries","unlocalizedName":"item.minecraft.sweet_berries","localizedName":"Sweet Berries","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tall_grass","unlocalizedName":"block.minecraft.tall_grass","localizedName":"Tall Grass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:terracotta","unlocalizedName":"block.minecraft.terracotta","localizedName":"Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tipped_arrow","unlocalizedName":"item.minecraft.tipped_arrow.effect.poison","localizedName":"Arrow of Poison","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tnt","unlocalizedName":"block.minecraft.tnt","localizedName":"TNT","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tnt_minecart","unlocalizedName":"item.minecraft.tnt_minecart","localizedName":"Minecart with TNT","maxDamage":0,"maxStackSize":1},{"id":"minecraft:torch","unlocalizedName":"block.minecraft.torch","localizedName":"Torch","maxDamage":0,"maxStackSize":64},{"id":"minecraft:totem_of_undying","unlocalizedName":"item.minecraft.totem_of_undying","localizedName":"Totem of Undying","maxDamage":0,"maxStackSize":1},{"id":"minecraft:trader_llama_spawn_egg","unlocalizedName":"item.minecraft.trader_llama_spawn_egg","localizedName":"Trader Llama Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:trapped_chest","unlocalizedName":"block.minecraft.trapped_chest","localizedName":"Trapped Chest","maxDamage":0,"maxStackSize":64},{"id":"minecraft:trident","unlocalizedName":"item.minecraft.trident","localizedName":"Trident","maxDamage":250,"maxStackSize":1},{"id":"minecraft:tripwire_hook","unlocalizedName":"block.minecraft.tripwire_hook","localizedName":"Tripwire Hook","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tropical_fish","unlocalizedName":"item.minecraft.tropical_fish","localizedName":"Tropical Fish","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tropical_fish_bucket","unlocalizedName":"item.minecraft.tropical_fish_bucket","localizedName":"Bucket of Tropical Fish","maxDamage":0,"maxStackSize":1},{"id":"minecraft:tropical_fish_spawn_egg","unlocalizedName":"item.minecraft.tropical_fish_spawn_egg","localizedName":"Tropical Fish Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tube_coral","unlocalizedName":"block.minecraft.tube_coral","localizedName":"Tube Coral","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tube_coral_block","unlocalizedName":"block.minecraft.tube_coral_block","localizedName":"Tube Coral Block","maxDamage":0,"maxStackSize":64},{"id":"minecraft:tube_coral_fan","unlocalizedName":"block.minecraft.tube_coral_fan","localizedName":"Tube Coral Fan","maxDamage":0,"maxStackSize":64},{"id":"minecraft:turtle_egg","unlocalizedName":"block.minecraft.turtle_egg","localizedName":"Turtle Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:turtle_helmet","unlocalizedName":"item.minecraft.turtle_helmet","localizedName":"Turtle Shell","maxDamage":275,"maxStackSize":1},{"id":"minecraft:turtle_spawn_egg","unlocalizedName":"item.minecraft.turtle_spawn_egg","localizedName":"Turtle Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:vex_spawn_egg","unlocalizedName":"item.minecraft.vex_spawn_egg","localizedName":"Vex Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:villager_spawn_egg","unlocalizedName":"item.minecraft.villager_spawn_egg","localizedName":"Villager Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:vindicator_spawn_egg","unlocalizedName":"item.minecraft.vindicator_spawn_egg","localizedName":"Vindicator Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:vine","unlocalizedName":"block.minecraft.vine","localizedName":"Vines","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wandering_trader_spawn_egg","unlocalizedName":"item.minecraft.wandering_trader_spawn_egg","localizedName":"Wandering Trader Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:water_bucket","unlocalizedName":"item.minecraft.water_bucket","localizedName":"Water Bucket","maxDamage":0,"maxStackSize":1},{"id":"minecraft:wet_sponge","unlocalizedName":"block.minecraft.wet_sponge","localizedName":"Wet Sponge","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wheat","unlocalizedName":"item.minecraft.wheat","localizedName":"Wheat","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wheat_seeds","unlocalizedName":"item.minecraft.wheat_seeds","localizedName":"Wheat Seeds","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_banner","unlocalizedName":"block.minecraft.white_banner","localizedName":"White Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:white_bed","unlocalizedName":"block.minecraft.white_bed","localizedName":"White Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:white_carpet","unlocalizedName":"block.minecraft.white_carpet","localizedName":"White Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_concrete","unlocalizedName":"block.minecraft.white_concrete","localizedName":"White Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_concrete_powder","unlocalizedName":"block.minecraft.white_concrete_powder","localizedName":"White Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_dye","unlocalizedName":"item.minecraft.white_dye","localizedName":"White Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_glazed_terracotta","unlocalizedName":"block.minecraft.white_glazed_terracotta","localizedName":"White Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_shulker_box","unlocalizedName":"block.minecraft.white_shulker_box","localizedName":"White Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:white_stained_glass","unlocalizedName":"block.minecraft.white_stained_glass","localizedName":"White Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_stained_glass_pane","unlocalizedName":"block.minecraft.white_stained_glass_pane","localizedName":"White Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_terracotta","unlocalizedName":"block.minecraft.white_terracotta","localizedName":"White Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_tulip","unlocalizedName":"block.minecraft.white_tulip","localizedName":"White Tulip","maxDamage":0,"maxStackSize":64},{"id":"minecraft:white_wool","unlocalizedName":"block.minecraft.white_wool","localizedName":"White Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:witch_spawn_egg","unlocalizedName":"item.minecraft.witch_spawn_egg","localizedName":"Witch Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wither_rose","unlocalizedName":"block.minecraft.wither_rose","localizedName":"Wither Rose","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wither_skeleton_skull","unlocalizedName":"block.minecraft.wither_skeleton_skull","localizedName":"Wither Skeleton Skull","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wither_skeleton_spawn_egg","unlocalizedName":"item.minecraft.wither_skeleton_spawn_egg","localizedName":"Wither Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wolf_spawn_egg","unlocalizedName":"item.minecraft.wolf_spawn_egg","localizedName":"Wolf Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:wooden_axe","unlocalizedName":"item.minecraft.wooden_axe","localizedName":"Wooden Axe","maxDamage":59,"maxStackSize":1},{"id":"minecraft:wooden_hoe","unlocalizedName":"item.minecraft.wooden_hoe","localizedName":"Wooden Hoe","maxDamage":59,"maxStackSize":1},{"id":"minecraft:wooden_pickaxe","unlocalizedName":"item.minecraft.wooden_pickaxe","localizedName":"Wooden Pickaxe","maxDamage":59,"maxStackSize":1},{"id":"minecraft:wooden_shovel","unlocalizedName":"item.minecraft.wooden_shovel","localizedName":"Wooden Shovel","maxDamage":59,"maxStackSize":1},{"id":"minecraft:wooden_sword","unlocalizedName":"item.minecraft.wooden_sword","localizedName":"Wooden Sword","maxDamage":59,"maxStackSize":1},{"id":"minecraft:writable_book","unlocalizedName":"item.minecraft.writable_book","localizedName":"Book and Quill","maxDamage":0,"maxStackSize":1},{"id":"minecraft:written_book","unlocalizedName":"item.minecraft.written_book","localizedName":"Written Book","maxDamage":0,"maxStackSize":16},{"id":"minecraft:yellow_banner","unlocalizedName":"block.minecraft.yellow_banner","localizedName":"Yellow Banner","maxDamage":0,"maxStackSize":16},{"id":"minecraft:yellow_bed","unlocalizedName":"block.minecraft.yellow_bed","localizedName":"Yellow Bed","maxDamage":0,"maxStackSize":1},{"id":"minecraft:yellow_carpet","unlocalizedName":"block.minecraft.yellow_carpet","localizedName":"Yellow Carpet","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_concrete","unlocalizedName":"block.minecraft.yellow_concrete","localizedName":"Yellow Concrete","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_concrete_powder","unlocalizedName":"block.minecraft.yellow_concrete_powder","localizedName":"Yellow Concrete Powder","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_dye","unlocalizedName":"item.minecraft.yellow_dye","localizedName":"Yellow Dye","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_glazed_terracotta","unlocalizedName":"block.minecraft.yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_shulker_box","unlocalizedName":"block.minecraft.yellow_shulker_box","localizedName":"Yellow Shulker Box","maxDamage":0,"maxStackSize":1},{"id":"minecraft:yellow_stained_glass","unlocalizedName":"block.minecraft.yellow_stained_glass","localizedName":"Yellow Stained Glass","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_stained_glass_pane","unlocalizedName":"block.minecraft.yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_terracotta","unlocalizedName":"block.minecraft.yellow_terracotta","localizedName":"Yellow Terracotta","maxDamage":0,"maxStackSize":64},{"id":"minecraft:yellow_wool","unlocalizedName":"block.minecraft.yellow_wool","localizedName":"Yellow Wool","maxDamage":0,"maxStackSize":64},{"id":"minecraft:zombie_head","unlocalizedName":"block.minecraft.zombie_head","localizedName":"Zombie Head","maxDamage":0,"maxStackSize":64},{"id":"minecraft:zombie_horse_spawn_egg","unlocalizedName":"item.minecraft.zombie_horse_spawn_egg","localizedName":"Zombie Horse Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:zombie_pigman_spawn_egg","unlocalizedName":"item.minecraft.zombie_pigman_spawn_egg","localizedName":"Zombie Pigman Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:zombie_spawn_egg","unlocalizedName":"item.minecraft.zombie_spawn_egg","localizedName":"Zombie Spawn Egg","maxDamage":0,"maxStackSize":64},{"id":"minecraft:zombie_villager_spawn_egg","unlocalizedName":"item.minecraft.zombie_villager_spawn_egg","localizedName":"Zombie Villager Spawn Egg","maxDamage":0,"maxStackSize":64}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.116.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.116.json deleted file mode 100644 index 543059690e..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.116.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_boat","localizedName":"Acacia Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.acacia_boat"},{"id":"minecraft:acacia_button","localizedName":"Acacia Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_button"},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_door"},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_fence"},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_fence_gate"},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_leaves"},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_log"},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_planks"},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_pressure_plate"},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_sapling"},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.acacia_sign"},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_slab"},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_stairs"},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_trapdoor"},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_wood"},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.activator_rail"},{"id":"minecraft:air","localizedName":"Air","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.air"},{"id":"minecraft:allium","localizedName":"Allium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.allium"},{"id":"minecraft:ancient_debris","localizedName":"Ancient Debris","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ancient_debris"},{"id":"minecraft:andesite","localizedName":"Andesite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite"},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_slab"},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_stairs"},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_wall"},{"id":"minecraft:anvil","localizedName":"Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.anvil"},{"id":"minecraft:apple","localizedName":"Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.apple"},{"id":"minecraft:armor_stand","localizedName":"Armor Stand","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.armor_stand"},{"id":"minecraft:arrow","localizedName":"Arrow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.arrow"},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azure_bluet"},{"id":"minecraft:baked_potato","localizedName":"Baked Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.baked_potato"},{"id":"minecraft:bamboo","localizedName":"Bamboo","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bamboo"},{"id":"minecraft:barrel","localizedName":"Barrel","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.barrel"},{"id":"minecraft:barrier","localizedName":"Barrier","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.barrier"},{"id":"minecraft:basalt","localizedName":"Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.basalt"},{"id":"minecraft:bat_spawn_egg","localizedName":"Bat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bat_spawn_egg"},{"id":"minecraft:beacon","localizedName":"Beacon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.beacon"},{"id":"minecraft:bedrock","localizedName":"Bedrock","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bedrock"},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bee_nest"},{"id":"minecraft:bee_spawn_egg","localizedName":"Bee Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bee_spawn_egg"},{"id":"minecraft:beef","localizedName":"Raw Beef","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beef"},{"id":"minecraft:beehive","localizedName":"Beehive","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.beehive"},{"id":"minecraft:beetroot","localizedName":"Beetroot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beetroot"},{"id":"minecraft:beetroot_seeds","localizedName":"Beetroot Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beetroot_seeds"},{"id":"minecraft:beetroot_soup","localizedName":"Beetroot Soup","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.beetroot_soup"},{"id":"minecraft:bell","localizedName":"Bell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bell"},{"id":"minecraft:birch_boat","localizedName":"Birch Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.birch_boat"},{"id":"minecraft:birch_button","localizedName":"Birch Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_button"},{"id":"minecraft:birch_door","localizedName":"Birch Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_door"},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_fence"},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_fence_gate"},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_leaves"},{"id":"minecraft:birch_log","localizedName":"Birch Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_log"},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_planks"},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_pressure_plate"},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_sapling"},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.birch_sign"},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_slab"},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_stairs"},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_trapdoor"},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_wood"},{"id":"minecraft:black_banner","localizedName":"Black Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.black_banner"},{"id":"minecraft:black_bed","localizedName":"Black Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.black_bed"},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_carpet"},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_concrete"},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_concrete_powder"},{"id":"minecraft:black_dye","localizedName":"Black Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.black_dye"},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_glazed_terracotta"},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.black_shulker_box"},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_stained_glass"},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_stained_glass_pane"},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_terracotta"},{"id":"minecraft:black_wool","localizedName":"Black Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_wool"},{"id":"minecraft:blackstone","localizedName":"Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone"},{"id":"minecraft:blackstone_slab","localizedName":"Blackstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_slab"},{"id":"minecraft:blackstone_stairs","localizedName":"Blackstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_stairs"},{"id":"minecraft:blackstone_wall","localizedName":"Blackstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_wall"},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blast_furnace"},{"id":"minecraft:blaze_powder","localizedName":"Blaze Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_powder"},{"id":"minecraft:blaze_rod","localizedName":"Blaze Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_rod"},{"id":"minecraft:blaze_spawn_egg","localizedName":"Blaze Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_spawn_egg"},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.blue_banner"},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.blue_bed"},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_carpet"},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_concrete"},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_concrete_powder"},{"id":"minecraft:blue_dye","localizedName":"Blue Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blue_dye"},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_glazed_terracotta"},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_ice"},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_orchid"},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.blue_shulker_box"},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_stained_glass"},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_stained_glass_pane"},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_terracotta"},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_wool"},{"id":"minecraft:bone","localizedName":"Bone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bone"},{"id":"minecraft:bone_block","localizedName":"Bone Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bone_block"},{"id":"minecraft:bone_meal","localizedName":"Bone Meal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bone_meal"},{"id":"minecraft:book","localizedName":"Book","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.book"},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bookshelf"},{"id":"minecraft:bow","localizedName":"Bow","maxDamage":384,"maxStackSize":1,"unlocalizedName":"item.minecraft.bow"},{"id":"minecraft:bowl","localizedName":"Bowl","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bowl"},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral"},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral_block"},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral_fan"},{"id":"minecraft:bread","localizedName":"Bread","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bread"},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brewing_stand"},{"id":"minecraft:brick","localizedName":"Brick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.brick"},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_slab"},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_stairs"},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_wall"},{"id":"minecraft:bricks","localizedName":"Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bricks"},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.brown_banner"},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.brown_bed"},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_carpet"},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_concrete"},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_concrete_powder"},{"id":"minecraft:brown_dye","localizedName":"Brown Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.brown_dye"},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_glazed_terracotta"},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_mushroom"},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_mushroom_block"},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.brown_shulker_box"},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_stained_glass"},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_stained_glass_pane"},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_terracotta"},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_wool"},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral"},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral_block"},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral_fan"},{"id":"minecraft:bucket","localizedName":"Bucket","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.bucket"},{"id":"minecraft:cactus","localizedName":"Cactus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cactus"},{"id":"minecraft:cake","localizedName":"Cake","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cake"},{"id":"minecraft:campfire","localizedName":"Campfire","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.campfire"},{"id":"minecraft:carrot","localizedName":"Carrot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.carrot"},{"id":"minecraft:carrot_on_a_stick","localizedName":"Carrot on a Stick","maxDamage":25,"maxStackSize":1,"unlocalizedName":"item.minecraft.carrot_on_a_stick"},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cartography_table"},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.carved_pumpkin"},{"id":"minecraft:cat_spawn_egg","localizedName":"Cat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cat_spawn_egg"},{"id":"minecraft:cauldron","localizedName":"Cauldron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cauldron"},{"id":"minecraft:cave_spider_spawn_egg","localizedName":"Cave Spider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cave_spider_spawn_egg"},{"id":"minecraft:chain","localizedName":"Chain","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chain"},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chain_command_block"},{"id":"minecraft:chainmail_boots","localizedName":"Chainmail Boots","maxDamage":195,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_boots"},{"id":"minecraft:chainmail_chestplate","localizedName":"Chainmail Chestplate","maxDamage":240,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_chestplate"},{"id":"minecraft:chainmail_helmet","localizedName":"Chainmail Helmet","maxDamage":165,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_helmet"},{"id":"minecraft:chainmail_leggings","localizedName":"Chainmail Leggings","maxDamage":225,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_leggings"},{"id":"minecraft:charcoal","localizedName":"Charcoal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.charcoal"},{"id":"minecraft:chest","localizedName":"Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chest"},{"id":"minecraft:chest_minecart","localizedName":"Minecart with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.chest_minecart"},{"id":"minecraft:chicken","localizedName":"Raw Chicken","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chicken"},{"id":"minecraft:chicken_spawn_egg","localizedName":"Chicken Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chicken_spawn_egg"},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chipped_anvil"},{"id":"minecraft:chiseled_nether_bricks","localizedName":"Chiseled Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_nether_bricks"},{"id":"minecraft:chiseled_polished_blackstone","localizedName":"Chiseled Polished Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_polished_blackstone"},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_quartz_block"},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_red_sandstone"},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_sandstone"},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_stone_bricks"},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chorus_flower"},{"id":"minecraft:chorus_fruit","localizedName":"Chorus Fruit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chorus_fruit"},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chorus_plant"},{"id":"minecraft:clay","localizedName":"Clay","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.clay"},{"id":"minecraft:clay_ball","localizedName":"Clay Ball","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.clay_ball"},{"id":"minecraft:clock","localizedName":"Clock","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.clock"},{"id":"minecraft:coal","localizedName":"Coal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.coal"},{"id":"minecraft:coal_block","localizedName":"Block of Coal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coal_block"},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coal_ore"},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coarse_dirt"},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone"},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_slab"},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_stairs"},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_wall"},{"id":"minecraft:cobweb","localizedName":"Cobweb","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobweb"},{"id":"minecraft:cocoa_beans","localizedName":"Cocoa Beans","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cocoa_beans"},{"id":"minecraft:cod","localizedName":"Raw Cod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cod"},{"id":"minecraft:cod_bucket","localizedName":"Bucket of Cod","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.cod_bucket"},{"id":"minecraft:cod_spawn_egg","localizedName":"Cod Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cod_spawn_egg"},{"id":"minecraft:command_block","localizedName":"Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.command_block"},{"id":"minecraft:command_block_minecart","localizedName":"Minecart with Command Block","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.command_block_minecart"},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.comparator"},{"id":"minecraft:compass","localizedName":"Compass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.compass"},{"id":"minecraft:composter","localizedName":"Composter","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.composter"},{"id":"minecraft:conduit","localizedName":"Conduit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.conduit"},{"id":"minecraft:cooked_beef","localizedName":"Steak","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_beef"},{"id":"minecraft:cooked_chicken","localizedName":"Cooked Chicken","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_chicken"},{"id":"minecraft:cooked_cod","localizedName":"Cooked Cod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_cod"},{"id":"minecraft:cooked_mutton","localizedName":"Cooked Mutton","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_mutton"},{"id":"minecraft:cooked_porkchop","localizedName":"Cooked Porkchop","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_porkchop"},{"id":"minecraft:cooked_rabbit","localizedName":"Cooked Rabbit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_rabbit"},{"id":"minecraft:cooked_salmon","localizedName":"Cooked Salmon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_salmon"},{"id":"minecraft:cookie","localizedName":"Cookie","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cookie"},{"id":"minecraft:cornflower","localizedName":"Cornflower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cornflower"},{"id":"minecraft:cow_spawn_egg","localizedName":"Cow Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cow_spawn_egg"},{"id":"minecraft:cracked_nether_bricks","localizedName":"Cracked Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_nether_bricks"},{"id":"minecraft:cracked_polished_blackstone_bricks","localizedName":"Cracked Polished Blackstone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_polished_blackstone_bricks"},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_stone_bricks"},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crafting_table"},{"id":"minecraft:creeper_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.creeper_banner_pattern"},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.creeper_head"},{"id":"minecraft:creeper_spawn_egg","localizedName":"Creeper Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.creeper_spawn_egg"},{"id":"minecraft:crimson_button","localizedName":"Crimson Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_button"},{"id":"minecraft:crimson_door","localizedName":"Crimson Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_door"},{"id":"minecraft:crimson_fence","localizedName":"Crimson Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fence"},{"id":"minecraft:crimson_fence_gate","localizedName":"Crimson Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fence_gate"},{"id":"minecraft:crimson_fungus","localizedName":"Crimson Fungus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fungus"},{"id":"minecraft:crimson_hyphae","localizedName":"Crimson Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_hyphae"},{"id":"minecraft:crimson_nylium","localizedName":"Crimson Nylium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_nylium"},{"id":"minecraft:crimson_planks","localizedName":"Crimson Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_planks"},{"id":"minecraft:crimson_pressure_plate","localizedName":"Crimson Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_pressure_plate"},{"id":"minecraft:crimson_roots","localizedName":"Crimson Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_roots"},{"id":"minecraft:crimson_sign","localizedName":"Crimson Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.crimson_sign"},{"id":"minecraft:crimson_slab","localizedName":"Crimson Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_slab"},{"id":"minecraft:crimson_stairs","localizedName":"Crimson Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_stairs"},{"id":"minecraft:crimson_stem","localizedName":"Crimson Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_stem"},{"id":"minecraft:crimson_trapdoor","localizedName":"Crimson Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_trapdoor"},{"id":"minecraft:crossbow","localizedName":"Crossbow","maxDamage":326,"maxStackSize":1,"unlocalizedName":"item.minecraft.crossbow"},{"id":"minecraft:crying_obsidian","localizedName":"Crying Obsidian","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crying_obsidian"},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_red_sandstone"},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_red_sandstone_slab"},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_sandstone"},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_sandstone_slab"},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.cyan_banner"},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cyan_bed"},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_carpet"},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_concrete"},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_concrete_powder"},{"id":"minecraft:cyan_dye","localizedName":"Cyan Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cyan_dye"},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_glazed_terracotta"},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cyan_shulker_box"},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_stained_glass"},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_stained_glass_pane"},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_terracotta"},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_wool"},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.damaged_anvil"},{"id":"minecraft:dandelion","localizedName":"Dandelion","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dandelion"},{"id":"minecraft:dark_oak_boat","localizedName":"Dark Oak Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.dark_oak_boat"},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_button"},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_door"},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_fence"},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_fence_gate"},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_leaves"},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_log"},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_planks"},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_pressure_plate"},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_sapling"},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.dark_oak_sign"},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_slab"},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_stairs"},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_trapdoor"},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_wood"},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine"},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine_slab"},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine_stairs"},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.daylight_detector"},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral"},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral_block"},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral_fan"},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral"},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral_block"},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral_fan"},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bush"},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral"},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral_block"},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral_fan"},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral"},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral_block"},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral_fan"},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral"},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral_block"},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral_fan"},{"id":"minecraft:debug_stick","localizedName":"Debug Stick","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.debug_stick"},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.detector_rail"},{"id":"minecraft:diamond","localizedName":"Diamond","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.diamond"},{"id":"minecraft:diamond_axe","localizedName":"Diamond Axe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_axe"},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diamond_block"},{"id":"minecraft:diamond_boots","localizedName":"Diamond Boots","maxDamage":429,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_boots"},{"id":"minecraft:diamond_chestplate","localizedName":"Diamond Chestplate","maxDamage":528,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_chestplate"},{"id":"minecraft:diamond_helmet","localizedName":"Diamond Helmet","maxDamage":363,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_helmet"},{"id":"minecraft:diamond_hoe","localizedName":"Diamond Hoe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_hoe"},{"id":"minecraft:diamond_horse_armor","localizedName":"Diamond Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_horse_armor"},{"id":"minecraft:diamond_leggings","localizedName":"Diamond Leggings","maxDamage":495,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_leggings"},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diamond_ore"},{"id":"minecraft:diamond_pickaxe","localizedName":"Diamond Pickaxe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_pickaxe"},{"id":"minecraft:diamond_shovel","localizedName":"Diamond Shovel","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_shovel"},{"id":"minecraft:diamond_sword","localizedName":"Diamond Sword","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_sword"},{"id":"minecraft:diorite","localizedName":"Diorite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite"},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_slab"},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_stairs"},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_wall"},{"id":"minecraft:dirt","localizedName":"Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dirt"},{"id":"minecraft:dispenser","localizedName":"Dispenser","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dispenser"},{"id":"minecraft:dolphin_spawn_egg","localizedName":"Dolphin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dolphin_spawn_egg"},{"id":"minecraft:donkey_spawn_egg","localizedName":"Donkey Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.donkey_spawn_egg"},{"id":"minecraft:dragon_breath","localizedName":"Dragon's Breath","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dragon_breath"},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dragon_egg"},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dragon_head"},{"id":"minecraft:dried_kelp","localizedName":"Dried Kelp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dried_kelp"},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dried_kelp_block"},{"id":"minecraft:dropper","localizedName":"Dropper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dropper"},{"id":"minecraft:drowned_spawn_egg","localizedName":"Drowned Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.drowned_spawn_egg"},{"id":"minecraft:egg","localizedName":"Egg","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.egg"},{"id":"minecraft:elder_guardian_spawn_egg","localizedName":"Elder Guardian Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.elder_guardian_spawn_egg"},{"id":"minecraft:elytra","localizedName":"Elytra","maxDamage":432,"maxStackSize":1,"unlocalizedName":"item.minecraft.elytra"},{"id":"minecraft:emerald","localizedName":"Emerald","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.emerald"},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.emerald_block"},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.emerald_ore"},{"id":"minecraft:enchanted_book","localizedName":"Enchanted Book","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.enchanted_book"},{"id":"minecraft:enchanted_golden_apple","localizedName":"Enchanted Golden Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.enchanted_golden_apple"},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.enchanting_table"},{"id":"minecraft:end_crystal","localizedName":"End Crystal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.end_crystal"},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_portal_frame"},{"id":"minecraft:end_rod","localizedName":"End Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_rod"},{"id":"minecraft:end_stone","localizedName":"End Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone"},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_slab"},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_stairs"},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_wall"},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_bricks"},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ender_chest"},{"id":"minecraft:ender_eye","localizedName":"Eye of Ender","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ender_eye"},{"id":"minecraft:ender_pearl","localizedName":"Ender Pearl","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.ender_pearl"},{"id":"minecraft:enderman_spawn_egg","localizedName":"Enderman Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.enderman_spawn_egg"},{"id":"minecraft:endermite_spawn_egg","localizedName":"Endermite Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.endermite_spawn_egg"},{"id":"minecraft:evoker_spawn_egg","localizedName":"Evoker Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.evoker_spawn_egg"},{"id":"minecraft:experience_bottle","localizedName":"Bottle o' Enchanting","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.experience_bottle"},{"id":"minecraft:farmland","localizedName":"Farmland","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.farmland"},{"id":"minecraft:feather","localizedName":"Feather","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.feather"},{"id":"minecraft:fermented_spider_eye","localizedName":"Fermented Spider Eye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fermented_spider_eye"},{"id":"minecraft:fern","localizedName":"Fern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fern"},{"id":"minecraft:filled_map","localizedName":"Map","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.filled_map"},{"id":"minecraft:fire_charge","localizedName":"Fire Charge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fire_charge"},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral"},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral_block"},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral_fan"},{"id":"minecraft:firework_rocket","localizedName":"Firework Rocket","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.firework_rocket"},{"id":"minecraft:firework_star","localizedName":"Firework Star","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.firework_star"},{"id":"minecraft:fishing_rod","localizedName":"Fishing Rod","maxDamage":64,"maxStackSize":1,"unlocalizedName":"item.minecraft.fishing_rod"},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fletching_table"},{"id":"minecraft:flint","localizedName":"Flint","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.flint"},{"id":"minecraft:flint_and_steel","localizedName":"Flint and Steel","maxDamage":64,"maxStackSize":1,"unlocalizedName":"item.minecraft.flint_and_steel"},{"id":"minecraft:flower_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.flower_banner_pattern"},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flower_pot"},{"id":"minecraft:fox_spawn_egg","localizedName":"Fox Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fox_spawn_egg"},{"id":"minecraft:furnace","localizedName":"Furnace","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.furnace"},{"id":"minecraft:furnace_minecart","localizedName":"Minecart with Furnace","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.furnace_minecart"},{"id":"minecraft:ghast_spawn_egg","localizedName":"Ghast Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ghast_spawn_egg"},{"id":"minecraft:ghast_tear","localizedName":"Ghast Tear","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ghast_tear"},{"id":"minecraft:gilded_blackstone","localizedName":"Gilded Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gilded_blackstone"},{"id":"minecraft:glass","localizedName":"Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glass"},{"id":"minecraft:glass_bottle","localizedName":"Glass Bottle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glass_bottle"},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glass_pane"},{"id":"minecraft:glistering_melon_slice","localizedName":"Glistering Melon Slice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glistering_melon_slice"},{"id":"minecraft:globe_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.globe_banner_pattern"},{"id":"minecraft:glowstone","localizedName":"Glowstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glowstone"},{"id":"minecraft:glowstone_dust","localizedName":"Glowstone Dust","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glowstone_dust"},{"id":"minecraft:gold_block","localizedName":"Block of Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gold_block"},{"id":"minecraft:gold_ingot","localizedName":"Gold Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gold_ingot"},{"id":"minecraft:gold_nugget","localizedName":"Gold Nugget","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gold_nugget"},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gold_ore"},{"id":"minecraft:golden_apple","localizedName":"Golden Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.golden_apple"},{"id":"minecraft:golden_axe","localizedName":"Golden Axe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_axe"},{"id":"minecraft:golden_boots","localizedName":"Golden Boots","maxDamage":91,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_boots"},{"id":"minecraft:golden_carrot","localizedName":"Golden Carrot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.golden_carrot"},{"id":"minecraft:golden_chestplate","localizedName":"Golden Chestplate","maxDamage":112,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_chestplate"},{"id":"minecraft:golden_helmet","localizedName":"Golden Helmet","maxDamage":77,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_helmet"},{"id":"minecraft:golden_hoe","localizedName":"Golden Hoe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_hoe"},{"id":"minecraft:golden_horse_armor","localizedName":"Golden Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_horse_armor"},{"id":"minecraft:golden_leggings","localizedName":"Golden Leggings","maxDamage":105,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_leggings"},{"id":"minecraft:golden_pickaxe","localizedName":"Golden Pickaxe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_pickaxe"},{"id":"minecraft:golden_shovel","localizedName":"Golden Shovel","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_shovel"},{"id":"minecraft:golden_sword","localizedName":"Golden Sword","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_sword"},{"id":"minecraft:granite","localizedName":"Granite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite"},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_slab"},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_stairs"},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_wall"},{"id":"minecraft:grass","localizedName":"Grass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass"},{"id":"minecraft:grass_block","localizedName":"Grass Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass_block"},{"id":"minecraft:grass_path","localizedName":"Grass Path","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass_path"},{"id":"minecraft:gravel","localizedName":"Gravel","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gravel"},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.gray_banner"},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.gray_bed"},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_carpet"},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_concrete"},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_concrete_powder"},{"id":"minecraft:gray_dye","localizedName":"Gray Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gray_dye"},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_glazed_terracotta"},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.gray_shulker_box"},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_stained_glass"},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_stained_glass_pane"},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_terracotta"},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_wool"},{"id":"minecraft:green_banner","localizedName":"Green Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.green_banner"},{"id":"minecraft:green_bed","localizedName":"Green Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.green_bed"},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_carpet"},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_concrete"},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_concrete_powder"},{"id":"minecraft:green_dye","localizedName":"Green Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.green_dye"},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_glazed_terracotta"},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.green_shulker_box"},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_stained_glass"},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_stained_glass_pane"},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_terracotta"},{"id":"minecraft:green_wool","localizedName":"Green Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_wool"},{"id":"minecraft:grindstone","localizedName":"Grindstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grindstone"},{"id":"minecraft:guardian_spawn_egg","localizedName":"Guardian Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.guardian_spawn_egg"},{"id":"minecraft:gunpowder","localizedName":"Gunpowder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gunpowder"},{"id":"minecraft:hay_block","localizedName":"Hay Bale","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hay_block"},{"id":"minecraft:heart_of_the_sea","localizedName":"Heart of the Sea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.heart_of_the_sea"},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.heavy_weighted_pressure_plate"},{"id":"minecraft:hoglin_spawn_egg","localizedName":"Hoglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.hoglin_spawn_egg"},{"id":"minecraft:honey_block","localizedName":"Honey Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.honey_block"},{"id":"minecraft:honey_bottle","localizedName":"Honey Bottle","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.honey_bottle"},{"id":"minecraft:honeycomb","localizedName":"Honeycomb","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.honeycomb"},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.honeycomb_block"},{"id":"minecraft:hopper","localizedName":"Hopper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hopper"},{"id":"minecraft:hopper_minecart","localizedName":"Minecart with Hopper","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.hopper_minecart"},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral"},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral_block"},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral_fan"},{"id":"minecraft:horse_spawn_egg","localizedName":"Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.horse_spawn_egg"},{"id":"minecraft:husk_spawn_egg","localizedName":"Husk Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.husk_spawn_egg"},{"id":"minecraft:ice","localizedName":"Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ice"},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_chiseled_stone_bricks"},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_cobblestone"},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_cracked_stone_bricks"},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_mossy_stone_bricks"},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_stone"},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_stone_bricks"},{"id":"minecraft:ink_sac","localizedName":"Ink Sac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ink_sac"},{"id":"minecraft:iron_axe","localizedName":"Iron Axe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_axe"},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_bars"},{"id":"minecraft:iron_block","localizedName":"Block of Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_block"},{"id":"minecraft:iron_boots","localizedName":"Iron Boots","maxDamage":195,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_boots"},{"id":"minecraft:iron_chestplate","localizedName":"Iron Chestplate","maxDamage":240,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_chestplate"},{"id":"minecraft:iron_door","localizedName":"Iron Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_door"},{"id":"minecraft:iron_helmet","localizedName":"Iron Helmet","maxDamage":165,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_helmet"},{"id":"minecraft:iron_hoe","localizedName":"Iron Hoe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_hoe"},{"id":"minecraft:iron_horse_armor","localizedName":"Iron Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_horse_armor"},{"id":"minecraft:iron_ingot","localizedName":"Iron Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.iron_ingot"},{"id":"minecraft:iron_leggings","localizedName":"Iron Leggings","maxDamage":225,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_leggings"},{"id":"minecraft:iron_nugget","localizedName":"Iron Nugget","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.iron_nugget"},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_ore"},{"id":"minecraft:iron_pickaxe","localizedName":"Iron Pickaxe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_pickaxe"},{"id":"minecraft:iron_shovel","localizedName":"Iron Shovel","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_shovel"},{"id":"minecraft:iron_sword","localizedName":"Iron Sword","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_sword"},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_trapdoor"},{"id":"minecraft:item_frame","localizedName":"Item Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.item_frame"},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o'Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jack_o_lantern"},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jigsaw"},{"id":"minecraft:jukebox","localizedName":"Jukebox","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jukebox"},{"id":"minecraft:jungle_boat","localizedName":"Jungle Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.jungle_boat"},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_button"},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_door"},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_fence"},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_fence_gate"},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_leaves"},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_log"},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_planks"},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_pressure_plate"},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_sapling"},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.jungle_sign"},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_slab"},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_stairs"},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_trapdoor"},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_wood"},{"id":"minecraft:kelp","localizedName":"Kelp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.kelp"},{"id":"minecraft:knowledge_book","localizedName":"Knowledge Book","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.knowledge_book"},{"id":"minecraft:ladder","localizedName":"Ladder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ladder"},{"id":"minecraft:lantern","localizedName":"Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lantern"},{"id":"minecraft:lapis_block","localizedName":"Lapis Lazuli Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lapis_block"},{"id":"minecraft:lapis_lazuli","localizedName":"Lapis Lazuli","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lapis_lazuli"},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lapis_ore"},{"id":"minecraft:large_fern","localizedName":"Large Fern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.large_fern"},{"id":"minecraft:lava_bucket","localizedName":"Lava Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.lava_bucket"},{"id":"minecraft:lead","localizedName":"Lead","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lead"},{"id":"minecraft:leather","localizedName":"Leather","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.leather"},{"id":"minecraft:leather_boots","localizedName":"Leather Boots","maxDamage":65,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_boots"},{"id":"minecraft:leather_chestplate","localizedName":"Leather Tunic","maxDamage":80,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_chestplate"},{"id":"minecraft:leather_helmet","localizedName":"Leather Cap","maxDamage":55,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_helmet"},{"id":"minecraft:leather_horse_armor","localizedName":"Leather Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_horse_armor"},{"id":"minecraft:leather_leggings","localizedName":"Leather Pants","maxDamage":75,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_leggings"},{"id":"minecraft:lectern","localizedName":"Lectern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lectern"},{"id":"minecraft:lever","localizedName":"Lever","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lever"},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.light_blue_banner"},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_blue_bed"},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_carpet"},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_concrete"},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_concrete_powder"},{"id":"minecraft:light_blue_dye","localizedName":"Light Blue Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.light_blue_dye"},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_glazed_terracotta"},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_blue_shulker_box"},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_stained_glass"},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_stained_glass_pane"},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_terracotta"},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_wool"},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.light_gray_banner"},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_gray_bed"},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_carpet"},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_concrete"},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_concrete_powder"},{"id":"minecraft:light_gray_dye","localizedName":"Light Gray Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.light_gray_dye"},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_glazed_terracotta"},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_gray_shulker_box"},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_stained_glass"},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_stained_glass_pane"},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_terracotta"},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_wool"},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_weighted_pressure_plate"},{"id":"minecraft:lilac","localizedName":"Lilac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lilac"},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lily_of_the_valley"},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lily_pad"},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.lime_banner"},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.lime_bed"},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_carpet"},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_concrete"},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_concrete_powder"},{"id":"minecraft:lime_dye","localizedName":"Lime Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lime_dye"},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_glazed_terracotta"},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.lime_shulker_box"},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_stained_glass"},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_stained_glass_pane"},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_terracotta"},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_wool"},{"id":"minecraft:lingering_potion","localizedName":"Lingering Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.lingering_potion.effect.water"},{"id":"minecraft:llama_spawn_egg","localizedName":"Llama Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.llama_spawn_egg"},{"id":"minecraft:lodestone","localizedName":"Lodestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lodestone"},{"id":"minecraft:loom","localizedName":"Loom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.loom"},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.magenta_banner"},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.magenta_bed"},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_carpet"},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_concrete"},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_concrete_powder"},{"id":"minecraft:magenta_dye","localizedName":"Magenta Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magenta_dye"},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_glazed_terracotta"},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.magenta_shulker_box"},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_stained_glass"},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_stained_glass_pane"},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_terracotta"},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_wool"},{"id":"minecraft:magma_block","localizedName":"Magma Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magma_block"},{"id":"minecraft:magma_cream","localizedName":"Magma Cream","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magma_cream"},{"id":"minecraft:magma_cube_spawn_egg","localizedName":"Magma Cube Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magma_cube_spawn_egg"},{"id":"minecraft:map","localizedName":"Empty Map","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.map"},{"id":"minecraft:melon","localizedName":"Melon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.melon"},{"id":"minecraft:melon_seeds","localizedName":"Melon Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.melon_seeds"},{"id":"minecraft:melon_slice","localizedName":"Melon Slice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.melon_slice"},{"id":"minecraft:milk_bucket","localizedName":"Milk Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.milk_bucket"},{"id":"minecraft:minecart","localizedName":"Minecart","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.minecart"},{"id":"minecraft:mojang_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mojang_banner_pattern"},{"id":"minecraft:mooshroom_spawn_egg","localizedName":"Mooshroom Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mooshroom_spawn_egg"},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone"},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_slab"},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_stairs"},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_wall"},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_slab"},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_stairs"},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_wall"},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_bricks"},{"id":"minecraft:mule_spawn_egg","localizedName":"Mule Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mule_spawn_egg"},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mushroom_stem"},{"id":"minecraft:mushroom_stew","localizedName":"Mushroom Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mushroom_stew"},{"id":"minecraft:music_disc_11","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_11"},{"id":"minecraft:music_disc_13","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_13"},{"id":"minecraft:music_disc_blocks","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_blocks"},{"id":"minecraft:music_disc_cat","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_cat"},{"id":"minecraft:music_disc_chirp","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_chirp"},{"id":"minecraft:music_disc_far","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_far"},{"id":"minecraft:music_disc_mall","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_mall"},{"id":"minecraft:music_disc_mellohi","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_mellohi"},{"id":"minecraft:music_disc_pigstep","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_pigstep"},{"id":"minecraft:music_disc_stal","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_stal"},{"id":"minecraft:music_disc_strad","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_strad"},{"id":"minecraft:music_disc_wait","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_wait"},{"id":"minecraft:music_disc_ward","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_ward"},{"id":"minecraft:mutton","localizedName":"Raw Mutton","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mutton"},{"id":"minecraft:mycelium","localizedName":"Mycelium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mycelium"},{"id":"minecraft:name_tag","localizedName":"Name Tag","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.name_tag"},{"id":"minecraft:nautilus_shell","localizedName":"Nautilus Shell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nautilus_shell"},{"id":"minecraft:nether_brick","localizedName":"Nether Brick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_brick"},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_fence"},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_slab"},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_stairs"},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_wall"},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_bricks"},{"id":"minecraft:nether_gold_ore","localizedName":"Nether Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_gold_ore"},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_quartz_ore"},{"id":"minecraft:nether_sprouts","localizedName":"Nether Sprouts","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_sprouts"},{"id":"minecraft:nether_star","localizedName":"Nether Star","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_star"},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_wart"},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_wart_block"},{"id":"minecraft:netherite_axe","localizedName":"Netherite Axe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_axe"},{"id":"minecraft:netherite_block","localizedName":"Block of Netherite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.netherite_block"},{"id":"minecraft:netherite_boots","localizedName":"Netherite Boots","maxDamage":481,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_boots"},{"id":"minecraft:netherite_chestplate","localizedName":"Netherite Chestplate","maxDamage":592,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_chestplate"},{"id":"minecraft:netherite_helmet","localizedName":"Netherite Helmet","maxDamage":407,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_helmet"},{"id":"minecraft:netherite_hoe","localizedName":"Netherite Hoe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_hoe"},{"id":"minecraft:netherite_ingot","localizedName":"Netherite Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.netherite_ingot"},{"id":"minecraft:netherite_leggings","localizedName":"Netherite Leggings","maxDamage":555,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_leggings"},{"id":"minecraft:netherite_pickaxe","localizedName":"Netherite Pickaxe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_pickaxe"},{"id":"minecraft:netherite_scrap","localizedName":"Netherite Scrap","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.netherite_scrap"},{"id":"minecraft:netherite_shovel","localizedName":"Netherite Shovel","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_shovel"},{"id":"minecraft:netherite_sword","localizedName":"Netherite Sword","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_sword"},{"id":"minecraft:netherrack","localizedName":"Netherrack","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.netherrack"},{"id":"minecraft:note_block","localizedName":"Note Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.note_block"},{"id":"minecraft:oak_boat","localizedName":"Oak Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.oak_boat"},{"id":"minecraft:oak_button","localizedName":"Oak Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_button"},{"id":"minecraft:oak_door","localizedName":"Oak Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_door"},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_fence"},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_fence_gate"},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_leaves"},{"id":"minecraft:oak_log","localizedName":"Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_log"},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_planks"},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_pressure_plate"},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_sapling"},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.oak_sign"},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_slab"},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_stairs"},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_trapdoor"},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_wood"},{"id":"minecraft:observer","localizedName":"Observer","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.observer"},{"id":"minecraft:obsidian","localizedName":"Obsidian","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.obsidian"},{"id":"minecraft:ocelot_spawn_egg","localizedName":"Ocelot Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ocelot_spawn_egg"},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.orange_banner"},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.orange_bed"},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_carpet"},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_concrete"},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_concrete_powder"},{"id":"minecraft:orange_dye","localizedName":"Orange Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.orange_dye"},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_glazed_terracotta"},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.orange_shulker_box"},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_stained_glass"},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_stained_glass_pane"},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_terracotta"},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_tulip"},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_wool"},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxeye_daisy"},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.packed_ice"},{"id":"minecraft:painting","localizedName":"Painting","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.painting"},{"id":"minecraft:panda_spawn_egg","localizedName":"Panda Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.panda_spawn_egg"},{"id":"minecraft:paper","localizedName":"Paper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.paper"},{"id":"minecraft:parrot_spawn_egg","localizedName":"Parrot Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.parrot_spawn_egg"},{"id":"minecraft:peony","localizedName":"Peony","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.peony"},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.petrified_oak_slab"},{"id":"minecraft:phantom_membrane","localizedName":"Phantom Membrane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.phantom_membrane"},{"id":"minecraft:phantom_spawn_egg","localizedName":"Phantom Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.phantom_spawn_egg"},{"id":"minecraft:pig_spawn_egg","localizedName":"Pig Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pig_spawn_egg"},{"id":"minecraft:piglin_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.piglin_banner_pattern"},{"id":"minecraft:piglin_brute_spawn_egg","localizedName":"Piglin Brute Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.piglin_brute_spawn_egg"},{"id":"minecraft:piglin_spawn_egg","localizedName":"Piglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.piglin_spawn_egg"},{"id":"minecraft:pillager_spawn_egg","localizedName":"Pillager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pillager_spawn_egg"},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.pink_banner"},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.pink_bed"},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_carpet"},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_concrete"},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_concrete_powder"},{"id":"minecraft:pink_dye","localizedName":"Pink Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pink_dye"},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_glazed_terracotta"},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.pink_shulker_box"},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_stained_glass"},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_stained_glass_pane"},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_terracotta"},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_tulip"},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_wool"},{"id":"minecraft:piston","localizedName":"Piston","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.piston"},{"id":"minecraft:player_head","localizedName":"Player Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.player_head"},{"id":"minecraft:podzol","localizedName":"Podzol","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.podzol"},{"id":"minecraft:poisonous_potato","localizedName":"Poisonous Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.poisonous_potato"},{"id":"minecraft:polar_bear_spawn_egg","localizedName":"Polar Bear Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.polar_bear_spawn_egg"},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite"},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite_slab"},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite_stairs"},{"id":"minecraft:polished_basalt","localizedName":"Polished Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_basalt"},{"id":"minecraft:polished_blackstone","localizedName":"Polished Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone"},{"id":"minecraft:polished_blackstone_brick_slab","localizedName":"Polished Blackstone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_slab"},{"id":"minecraft:polished_blackstone_brick_stairs","localizedName":"Polished Blackstone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_stairs"},{"id":"minecraft:polished_blackstone_brick_wall","localizedName":"Polished Blackstone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_wall"},{"id":"minecraft:polished_blackstone_bricks","localizedName":"Polished Blackstone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_bricks"},{"id":"minecraft:polished_blackstone_button","localizedName":"Polished Blackstone Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_button"},{"id":"minecraft:polished_blackstone_pressure_plate","localizedName":"Polished Blackstone Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_pressure_plate"},{"id":"minecraft:polished_blackstone_slab","localizedName":"Polished Blackstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_slab"},{"id":"minecraft:polished_blackstone_stairs","localizedName":"Polished Blackstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_stairs"},{"id":"minecraft:polished_blackstone_wall","localizedName":"Polished Blackstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_wall"},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite"},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite_slab"},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite_stairs"},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite"},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite_slab"},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite_stairs"},{"id":"minecraft:popped_chorus_fruit","localizedName":"Popped Chorus Fruit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.popped_chorus_fruit"},{"id":"minecraft:poppy","localizedName":"Poppy","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.poppy"},{"id":"minecraft:porkchop","localizedName":"Raw Porkchop","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.porkchop"},{"id":"minecraft:potato","localizedName":"Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.potato"},{"id":"minecraft:potion","localizedName":"Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.potion.effect.water"},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.powered_rail"},{"id":"minecraft:prismarine","localizedName":"Prismarine","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine"},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_brick_slab"},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_brick_stairs"},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_bricks"},{"id":"minecraft:prismarine_crystals","localizedName":"Prismarine Crystals","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.prismarine_crystals"},{"id":"minecraft:prismarine_shard","localizedName":"Prismarine Shard","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.prismarine_shard"},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_slab"},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_stairs"},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_wall"},{"id":"minecraft:pufferfish","localizedName":"Pufferfish","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pufferfish"},{"id":"minecraft:pufferfish_bucket","localizedName":"Bucket of Pufferfish","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.pufferfish_bucket"},{"id":"minecraft:pufferfish_spawn_egg","localizedName":"Pufferfish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pufferfish_spawn_egg"},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pumpkin"},{"id":"minecraft:pumpkin_pie","localizedName":"Pumpkin Pie","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pumpkin_pie"},{"id":"minecraft:pumpkin_seeds","localizedName":"Pumpkin Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pumpkin_seeds"},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.purple_banner"},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.purple_bed"},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_carpet"},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_concrete"},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_concrete_powder"},{"id":"minecraft:purple_dye","localizedName":"Purple Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.purple_dye"},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_glazed_terracotta"},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.purple_shulker_box"},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_stained_glass"},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_stained_glass_pane"},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_terracotta"},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_wool"},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_block"},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_pillar"},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_slab"},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_stairs"},{"id":"minecraft:quartz","localizedName":"Nether Quartz","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.quartz"},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_block"},{"id":"minecraft:quartz_bricks","localizedName":"Quartz Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_bricks"},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_pillar"},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_slab"},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_stairs"},{"id":"minecraft:rabbit","localizedName":"Raw Rabbit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit"},{"id":"minecraft:rabbit_foot","localizedName":"Rabbit's Foot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_foot"},{"id":"minecraft:rabbit_hide","localizedName":"Rabbit Hide","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_hide"},{"id":"minecraft:rabbit_spawn_egg","localizedName":"Rabbit Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_spawn_egg"},{"id":"minecraft:rabbit_stew","localizedName":"Rabbit Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.rabbit_stew"},{"id":"minecraft:rail","localizedName":"Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rail"},{"id":"minecraft:ravager_spawn_egg","localizedName":"Ravager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ravager_spawn_egg"},{"id":"minecraft:red_banner","localizedName":"Red Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.red_banner"},{"id":"minecraft:red_bed","localizedName":"Red Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.red_bed"},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_carpet"},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_concrete"},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_concrete_powder"},{"id":"minecraft:red_dye","localizedName":"Red Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.red_dye"},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_glazed_terracotta"},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_mushroom"},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_mushroom_block"},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_slab"},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_stairs"},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_wall"},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_bricks"},{"id":"minecraft:red_sand","localizedName":"Red Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sand"},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone"},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_slab"},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_stairs"},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_wall"},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.red_shulker_box"},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_stained_glass"},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_stained_glass_pane"},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_terracotta"},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_tulip"},{"id":"minecraft:red_wool","localizedName":"Red Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_wool"},{"id":"minecraft:redstone","localizedName":"Redstone Dust","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.redstone"},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_block"},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_lamp"},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_ore"},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_torch"},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.repeater"},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.repeating_command_block"},{"id":"minecraft:respawn_anchor","localizedName":"Respawn Anchor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.respawn_anchor"},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rose_bush"},{"id":"minecraft:rotten_flesh","localizedName":"Rotten Flesh","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rotten_flesh"},{"id":"minecraft:saddle","localizedName":"Saddle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.saddle"},{"id":"minecraft:salmon","localizedName":"Raw Salmon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.salmon"},{"id":"minecraft:salmon_bucket","localizedName":"Bucket of Salmon","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.salmon_bucket"},{"id":"minecraft:salmon_spawn_egg","localizedName":"Salmon Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.salmon_spawn_egg"},{"id":"minecraft:sand","localizedName":"Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sand"},{"id":"minecraft:sandstone","localizedName":"Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone"},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_slab"},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_stairs"},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_wall"},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.scaffolding"},{"id":"minecraft:scute","localizedName":"Scute","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.scute"},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sea_lantern"},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sea_pickle"},{"id":"minecraft:seagrass","localizedName":"Seagrass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.seagrass"},{"id":"minecraft:shears","localizedName":"Shears","maxDamage":238,"maxStackSize":1,"unlocalizedName":"item.minecraft.shears"},{"id":"minecraft:sheep_spawn_egg","localizedName":"Sheep Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sheep_spawn_egg"},{"id":"minecraft:shield","localizedName":"Shield","maxDamage":336,"maxStackSize":1,"unlocalizedName":"item.minecraft.shield"},{"id":"minecraft:shroomlight","localizedName":"Shroomlight","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.shroomlight"},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.shulker_box"},{"id":"minecraft:shulker_shell","localizedName":"Shulker Shell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.shulker_shell"},{"id":"minecraft:shulker_spawn_egg","localizedName":"Shulker Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.shulker_spawn_egg"},{"id":"minecraft:silverfish_spawn_egg","localizedName":"Silverfish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.silverfish_spawn_egg"},{"id":"minecraft:skeleton_horse_spawn_egg","localizedName":"Skeleton Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.skeleton_horse_spawn_egg"},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.skeleton_skull"},{"id":"minecraft:skeleton_spawn_egg","localizedName":"Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.skeleton_spawn_egg"},{"id":"minecraft:skull_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.skull_banner_pattern"},{"id":"minecraft:slime_ball","localizedName":"Slimeball","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.slime_ball"},{"id":"minecraft:slime_block","localizedName":"Slime Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.slime_block"},{"id":"minecraft:slime_spawn_egg","localizedName":"Slime Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.slime_spawn_egg"},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smithing_table"},{"id":"minecraft:smoker","localizedName":"Smoker","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smoker"},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz"},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz_slab"},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz_stairs"},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone"},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone_slab"},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone_stairs"},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone"},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone_slab"},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone_stairs"},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_stone"},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_stone_slab"},{"id":"minecraft:snow","localizedName":"Snow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.snow"},{"id":"minecraft:snow_block","localizedName":"Snow Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.snow_block"},{"id":"minecraft:snowball","localizedName":"Snowball","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.snowball"},{"id":"minecraft:soul_campfire","localizedName":"Soul Campfire","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_campfire"},{"id":"minecraft:soul_lantern","localizedName":"Soul Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_lantern"},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_sand"},{"id":"minecraft:soul_soil","localizedName":"Soul Soil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_soil"},{"id":"minecraft:soul_torch","localizedName":"Soul Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_torch"},{"id":"minecraft:spawner","localizedName":"Spawner","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spawner"},{"id":"minecraft:spectral_arrow","localizedName":"Spectral Arrow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spectral_arrow"},{"id":"minecraft:spider_eye","localizedName":"Spider Eye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spider_eye"},{"id":"minecraft:spider_spawn_egg","localizedName":"Spider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spider_spawn_egg"},{"id":"minecraft:splash_potion","localizedName":"Splash Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.splash_potion.effect.water"},{"id":"minecraft:sponge","localizedName":"Sponge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sponge"},{"id":"minecraft:spruce_boat","localizedName":"Spruce Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.spruce_boat"},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_button"},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_door"},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_fence"},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_fence_gate"},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_leaves"},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_log"},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_planks"},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_pressure_plate"},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_sapling"},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.spruce_sign"},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_slab"},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_stairs"},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_trapdoor"},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_wood"},{"id":"minecraft:squid_spawn_egg","localizedName":"Squid Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.squid_spawn_egg"},{"id":"minecraft:stick","localizedName":"Stick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.stick"},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sticky_piston"},{"id":"minecraft:stone","localizedName":"Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone"},{"id":"minecraft:stone_axe","localizedName":"Stone Axe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_axe"},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_slab"},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_stairs"},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_wall"},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_bricks"},{"id":"minecraft:stone_button","localizedName":"Stone Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_button"},{"id":"minecraft:stone_hoe","localizedName":"Stone Hoe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_hoe"},{"id":"minecraft:stone_pickaxe","localizedName":"Stone Pickaxe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_pickaxe"},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_pressure_plate"},{"id":"minecraft:stone_shovel","localizedName":"Stone Shovel","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_shovel"},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_slab"},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_stairs"},{"id":"minecraft:stone_sword","localizedName":"Stone Sword","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_sword"},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stonecutter"},{"id":"minecraft:stray_spawn_egg","localizedName":"Stray Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.stray_spawn_egg"},{"id":"minecraft:strider_spawn_egg","localizedName":"Strider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.strider_spawn_egg"},{"id":"minecraft:string","localizedName":"String","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.string"},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_acacia_log"},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_acacia_wood"},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_birch_log"},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_birch_wood"},{"id":"minecraft:stripped_crimson_hyphae","localizedName":"Stripped Crimson Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_crimson_hyphae"},{"id":"minecraft:stripped_crimson_stem","localizedName":"Stripped Crimson Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_crimson_stem"},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_dark_oak_log"},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_dark_oak_wood"},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_jungle_log"},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_jungle_wood"},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_oak_log"},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_oak_wood"},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_spruce_log"},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_spruce_wood"},{"id":"minecraft:stripped_warped_hyphae","localizedName":"Stripped Warped Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_warped_hyphae"},{"id":"minecraft:stripped_warped_stem","localizedName":"Stripped Warped Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_warped_stem"},{"id":"minecraft:structure_block","localizedName":"Structure Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.structure_block"},{"id":"minecraft:structure_void","localizedName":"Structure Void","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.structure_void"},{"id":"minecraft:sugar","localizedName":"Sugar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sugar"},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sugar_cane"},{"id":"minecraft:sunflower","localizedName":"Sunflower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sunflower"},{"id":"minecraft:suspicious_stew","localizedName":"Suspicious Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.suspicious_stew"},{"id":"minecraft:sweet_berries","localizedName":"Sweet Berries","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sweet_berries"},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tall_grass"},{"id":"minecraft:target","localizedName":"Target","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.target"},{"id":"minecraft:terracotta","localizedName":"Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.terracotta"},{"id":"minecraft:tipped_arrow","localizedName":"Arrow of Poison","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tipped_arrow.effect.poison"},{"id":"minecraft:tnt","localizedName":"TNT","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tnt"},{"id":"minecraft:tnt_minecart","localizedName":"Minecart with TNT","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tnt_minecart"},{"id":"minecraft:torch","localizedName":"Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.torch"},{"id":"minecraft:totem_of_undying","localizedName":"Totem of Undying","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.totem_of_undying"},{"id":"minecraft:trader_llama_spawn_egg","localizedName":"Trader Llama Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.trader_llama_spawn_egg"},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.trapped_chest"},{"id":"minecraft:trident","localizedName":"Trident","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.trident"},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tripwire_hook"},{"id":"minecraft:tropical_fish","localizedName":"Tropical Fish","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tropical_fish"},{"id":"minecraft:tropical_fish_bucket","localizedName":"Bucket of Tropical Fish","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tropical_fish_bucket"},{"id":"minecraft:tropical_fish_spawn_egg","localizedName":"Tropical Fish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tropical_fish_spawn_egg"},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral"},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral_block"},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral_fan"},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.turtle_egg"},{"id":"minecraft:turtle_helmet","localizedName":"Turtle Shell","maxDamage":275,"maxStackSize":1,"unlocalizedName":"item.minecraft.turtle_helmet"},{"id":"minecraft:turtle_spawn_egg","localizedName":"Turtle Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.turtle_spawn_egg"},{"id":"minecraft:twisting_vines","localizedName":"Twisting Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.twisting_vines"},{"id":"minecraft:vex_spawn_egg","localizedName":"Vex Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.vex_spawn_egg"},{"id":"minecraft:villager_spawn_egg","localizedName":"Villager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.villager_spawn_egg"},{"id":"minecraft:vindicator_spawn_egg","localizedName":"Vindicator Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.vindicator_spawn_egg"},{"id":"minecraft:vine","localizedName":"Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.vine"},{"id":"minecraft:wandering_trader_spawn_egg","localizedName":"Wandering Trader Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wandering_trader_spawn_egg"},{"id":"minecraft:warped_button","localizedName":"Warped Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_button"},{"id":"minecraft:warped_door","localizedName":"Warped Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_door"},{"id":"minecraft:warped_fence","localizedName":"Warped Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fence"},{"id":"minecraft:warped_fence_gate","localizedName":"Warped Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fence_gate"},{"id":"minecraft:warped_fungus","localizedName":"Warped Fungus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fungus"},{"id":"minecraft:warped_fungus_on_a_stick","localizedName":"Warped Fungus on a Stick","maxDamage":100,"maxStackSize":1,"unlocalizedName":"item.minecraft.warped_fungus_on_a_stick"},{"id":"minecraft:warped_hyphae","localizedName":"Warped Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_hyphae"},{"id":"minecraft:warped_nylium","localizedName":"Warped Nylium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_nylium"},{"id":"minecraft:warped_planks","localizedName":"Warped Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_planks"},{"id":"minecraft:warped_pressure_plate","localizedName":"Warped Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_pressure_plate"},{"id":"minecraft:warped_roots","localizedName":"Warped Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_roots"},{"id":"minecraft:warped_sign","localizedName":"Warped Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.warped_sign"},{"id":"minecraft:warped_slab","localizedName":"Warped Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_slab"},{"id":"minecraft:warped_stairs","localizedName":"Warped Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_stairs"},{"id":"minecraft:warped_stem","localizedName":"Warped Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_stem"},{"id":"minecraft:warped_trapdoor","localizedName":"Warped Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_trapdoor"},{"id":"minecraft:warped_wart_block","localizedName":"Warped Wart Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_wart_block"},{"id":"minecraft:water_bucket","localizedName":"Water Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.water_bucket"},{"id":"minecraft:weeping_vines","localizedName":"Weeping Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weeping_vines"},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wet_sponge"},{"id":"minecraft:wheat","localizedName":"Wheat","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wheat"},{"id":"minecraft:wheat_seeds","localizedName":"Wheat Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wheat_seeds"},{"id":"minecraft:white_banner","localizedName":"White Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.white_banner"},{"id":"minecraft:white_bed","localizedName":"White Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.white_bed"},{"id":"minecraft:white_carpet","localizedName":"White Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_carpet"},{"id":"minecraft:white_concrete","localizedName":"White Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_concrete"},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_concrete_powder"},{"id":"minecraft:white_dye","localizedName":"White Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.white_dye"},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_glazed_terracotta"},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.white_shulker_box"},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_stained_glass"},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_stained_glass_pane"},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_terracotta"},{"id":"minecraft:white_tulip","localizedName":"White Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_tulip"},{"id":"minecraft:white_wool","localizedName":"White Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_wool"},{"id":"minecraft:witch_spawn_egg","localizedName":"Witch Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.witch_spawn_egg"},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wither_rose"},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wither_skeleton_skull"},{"id":"minecraft:wither_skeleton_spawn_egg","localizedName":"Wither Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wither_skeleton_spawn_egg"},{"id":"minecraft:wolf_spawn_egg","localizedName":"Wolf Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wolf_spawn_egg"},{"id":"minecraft:wooden_axe","localizedName":"Wooden Axe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_axe"},{"id":"minecraft:wooden_hoe","localizedName":"Wooden Hoe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_hoe"},{"id":"minecraft:wooden_pickaxe","localizedName":"Wooden Pickaxe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_pickaxe"},{"id":"minecraft:wooden_shovel","localizedName":"Wooden Shovel","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_shovel"},{"id":"minecraft:wooden_sword","localizedName":"Wooden Sword","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_sword"},{"id":"minecraft:writable_book","localizedName":"Book and Quill","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.writable_book"},{"id":"minecraft:written_book","localizedName":"Written Book","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.written_book"},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.yellow_banner"},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.yellow_bed"},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_carpet"},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_concrete"},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_concrete_powder"},{"id":"minecraft:yellow_dye","localizedName":"Yellow Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.yellow_dye"},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_glazed_terracotta"},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.yellow_shulker_box"},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_stained_glass"},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_stained_glass_pane"},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_terracotta"},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_wool"},{"id":"minecraft:zoglin_spawn_egg","localizedName":"Zoglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zoglin_spawn_egg"},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.zombie_head"},{"id":"minecraft:zombie_horse_spawn_egg","localizedName":"Zombie Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_horse_spawn_egg"},{"id":"minecraft:zombie_spawn_egg","localizedName":"Zombie Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_spawn_egg"},{"id":"minecraft:zombie_villager_spawn_egg","localizedName":"Zombie Villager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_villager_spawn_egg"},{"id":"minecraft:zombified_piglin_spawn_egg","localizedName":"Zombified Piglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombified_piglin_spawn_egg"}] \ No newline at end of file diff --git a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.117.json b/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.117.json deleted file mode 100644 index d11bafadd8..0000000000 --- a/worldedit-core/src/main/resources/com/sk89q/worldedit/world/registry/items.117.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"minecraft:acacia_boat","localizedName":"Acacia Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.acacia_boat"},{"id":"minecraft:acacia_button","localizedName":"Acacia Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_button"},{"id":"minecraft:acacia_door","localizedName":"Acacia Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_door"},{"id":"minecraft:acacia_fence","localizedName":"Acacia Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_fence"},{"id":"minecraft:acacia_fence_gate","localizedName":"Acacia Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_fence_gate"},{"id":"minecraft:acacia_leaves","localizedName":"Acacia Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_leaves"},{"id":"minecraft:acacia_log","localizedName":"Acacia Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_log"},{"id":"minecraft:acacia_planks","localizedName":"Acacia Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_planks"},{"id":"minecraft:acacia_pressure_plate","localizedName":"Acacia Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_pressure_plate"},{"id":"minecraft:acacia_sapling","localizedName":"Acacia Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_sapling"},{"id":"minecraft:acacia_sign","localizedName":"Acacia Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.acacia_sign"},{"id":"minecraft:acacia_slab","localizedName":"Acacia Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_slab"},{"id":"minecraft:acacia_stairs","localizedName":"Acacia Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_stairs"},{"id":"minecraft:acacia_trapdoor","localizedName":"Acacia Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_trapdoor"},{"id":"minecraft:acacia_wood","localizedName":"Acacia Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.acacia_wood"},{"id":"minecraft:activator_rail","localizedName":"Activator Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.activator_rail"},{"id":"minecraft:air","localizedName":"Air","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.air"},{"id":"minecraft:allium","localizedName":"Allium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.allium"},{"id":"minecraft:amethyst_block","localizedName":"Block of Amethyst","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.amethyst_block"},{"id":"minecraft:amethyst_cluster","localizedName":"Amethyst Cluster","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.amethyst_cluster"},{"id":"minecraft:amethyst_shard","localizedName":"Amethyst Shard","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.amethyst_shard"},{"id":"minecraft:ancient_debris","localizedName":"Ancient Debris","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ancient_debris"},{"id":"minecraft:andesite","localizedName":"Andesite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite"},{"id":"minecraft:andesite_slab","localizedName":"Andesite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_slab"},{"id":"minecraft:andesite_stairs","localizedName":"Andesite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_stairs"},{"id":"minecraft:andesite_wall","localizedName":"Andesite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.andesite_wall"},{"id":"minecraft:anvil","localizedName":"Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.anvil"},{"id":"minecraft:apple","localizedName":"Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.apple"},{"id":"minecraft:armor_stand","localizedName":"Armor Stand","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.armor_stand"},{"id":"minecraft:arrow","localizedName":"Arrow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.arrow"},{"id":"minecraft:axolotl_bucket","localizedName":"Bucket of Axolotl","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.axolotl_bucket"},{"id":"minecraft:axolotl_spawn_egg","localizedName":"Axolotl Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.axolotl_spawn_egg"},{"id":"minecraft:azalea","localizedName":"Azalea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azalea"},{"id":"minecraft:azalea_leaves","localizedName":"Azalea Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azalea_leaves"},{"id":"minecraft:azure_bluet","localizedName":"Azure Bluet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.azure_bluet"},{"id":"minecraft:baked_potato","localizedName":"Baked Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.baked_potato"},{"id":"minecraft:bamboo","localizedName":"Bamboo","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bamboo"},{"id":"minecraft:barrel","localizedName":"Barrel","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.barrel"},{"id":"minecraft:barrier","localizedName":"Barrier","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.barrier"},{"id":"minecraft:basalt","localizedName":"Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.basalt"},{"id":"minecraft:bat_spawn_egg","localizedName":"Bat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bat_spawn_egg"},{"id":"minecraft:beacon","localizedName":"Beacon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.beacon"},{"id":"minecraft:bedrock","localizedName":"Bedrock","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bedrock"},{"id":"minecraft:bee_nest","localizedName":"Bee Nest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bee_nest"},{"id":"minecraft:bee_spawn_egg","localizedName":"Bee Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bee_spawn_egg"},{"id":"minecraft:beef","localizedName":"Raw Beef","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beef"},{"id":"minecraft:beehive","localizedName":"Beehive","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.beehive"},{"id":"minecraft:beetroot","localizedName":"Beetroot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beetroot"},{"id":"minecraft:beetroot_seeds","localizedName":"Beetroot Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.beetroot_seeds"},{"id":"minecraft:beetroot_soup","localizedName":"Beetroot Soup","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.beetroot_soup"},{"id":"minecraft:bell","localizedName":"Bell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bell"},{"id":"minecraft:big_dripleaf","localizedName":"Big Dripleaf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.big_dripleaf"},{"id":"minecraft:birch_boat","localizedName":"Birch Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.birch_boat"},{"id":"minecraft:birch_button","localizedName":"Birch Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_button"},{"id":"minecraft:birch_door","localizedName":"Birch Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_door"},{"id":"minecraft:birch_fence","localizedName":"Birch Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_fence"},{"id":"minecraft:birch_fence_gate","localizedName":"Birch Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_fence_gate"},{"id":"minecraft:birch_leaves","localizedName":"Birch Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_leaves"},{"id":"minecraft:birch_log","localizedName":"Birch Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_log"},{"id":"minecraft:birch_planks","localizedName":"Birch Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_planks"},{"id":"minecraft:birch_pressure_plate","localizedName":"Birch Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_pressure_plate"},{"id":"minecraft:birch_sapling","localizedName":"Birch Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_sapling"},{"id":"minecraft:birch_sign","localizedName":"Birch Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.birch_sign"},{"id":"minecraft:birch_slab","localizedName":"Birch Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_slab"},{"id":"minecraft:birch_stairs","localizedName":"Birch Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_stairs"},{"id":"minecraft:birch_trapdoor","localizedName":"Birch Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_trapdoor"},{"id":"minecraft:birch_wood","localizedName":"Birch Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.birch_wood"},{"id":"minecraft:black_banner","localizedName":"Black Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.black_banner"},{"id":"minecraft:black_bed","localizedName":"Black Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.black_bed"},{"id":"minecraft:black_candle","localizedName":"Black Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_candle"},{"id":"minecraft:black_carpet","localizedName":"Black Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_carpet"},{"id":"minecraft:black_concrete","localizedName":"Black Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_concrete"},{"id":"minecraft:black_concrete_powder","localizedName":"Black Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_concrete_powder"},{"id":"minecraft:black_dye","localizedName":"Black Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.black_dye"},{"id":"minecraft:black_glazed_terracotta","localizedName":"Black Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_glazed_terracotta"},{"id":"minecraft:black_shulker_box","localizedName":"Black Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.black_shulker_box"},{"id":"minecraft:black_stained_glass","localizedName":"Black Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_stained_glass"},{"id":"minecraft:black_stained_glass_pane","localizedName":"Black Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_stained_glass_pane"},{"id":"minecraft:black_terracotta","localizedName":"Black Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_terracotta"},{"id":"minecraft:black_wool","localizedName":"Black Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.black_wool"},{"id":"minecraft:blackstone","localizedName":"Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone"},{"id":"minecraft:blackstone_slab","localizedName":"Blackstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_slab"},{"id":"minecraft:blackstone_stairs","localizedName":"Blackstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_stairs"},{"id":"minecraft:blackstone_wall","localizedName":"Blackstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blackstone_wall"},{"id":"minecraft:blast_furnace","localizedName":"Blast Furnace","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blast_furnace"},{"id":"minecraft:blaze_powder","localizedName":"Blaze Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_powder"},{"id":"minecraft:blaze_rod","localizedName":"Blaze Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_rod"},{"id":"minecraft:blaze_spawn_egg","localizedName":"Blaze Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blaze_spawn_egg"},{"id":"minecraft:blue_banner","localizedName":"Blue Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.blue_banner"},{"id":"minecraft:blue_bed","localizedName":"Blue Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.blue_bed"},{"id":"minecraft:blue_candle","localizedName":"Blue Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_candle"},{"id":"minecraft:blue_carpet","localizedName":"Blue Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_carpet"},{"id":"minecraft:blue_concrete","localizedName":"Blue Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_concrete"},{"id":"minecraft:blue_concrete_powder","localizedName":"Blue Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_concrete_powder"},{"id":"minecraft:blue_dye","localizedName":"Blue Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.blue_dye"},{"id":"minecraft:blue_glazed_terracotta","localizedName":"Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_glazed_terracotta"},{"id":"minecraft:blue_ice","localizedName":"Blue Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_ice"},{"id":"minecraft:blue_orchid","localizedName":"Blue Orchid","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_orchid"},{"id":"minecraft:blue_shulker_box","localizedName":"Blue Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.blue_shulker_box"},{"id":"minecraft:blue_stained_glass","localizedName":"Blue Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_stained_glass"},{"id":"minecraft:blue_stained_glass_pane","localizedName":"Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_stained_glass_pane"},{"id":"minecraft:blue_terracotta","localizedName":"Blue Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_terracotta"},{"id":"minecraft:blue_wool","localizedName":"Blue Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.blue_wool"},{"id":"minecraft:bone","localizedName":"Bone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bone"},{"id":"minecraft:bone_block","localizedName":"Bone Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bone_block"},{"id":"minecraft:bone_meal","localizedName":"Bone Meal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bone_meal"},{"id":"minecraft:book","localizedName":"Book","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.book"},{"id":"minecraft:bookshelf","localizedName":"Bookshelf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bookshelf"},{"id":"minecraft:bow","localizedName":"Bow","maxDamage":384,"maxStackSize":1,"unlocalizedName":"item.minecraft.bow"},{"id":"minecraft:bowl","localizedName":"Bowl","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bowl"},{"id":"minecraft:brain_coral","localizedName":"Brain Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral"},{"id":"minecraft:brain_coral_block","localizedName":"Brain Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral_block"},{"id":"minecraft:brain_coral_fan","localizedName":"Brain Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brain_coral_fan"},{"id":"minecraft:bread","localizedName":"Bread","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.bread"},{"id":"minecraft:brewing_stand","localizedName":"Brewing Stand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brewing_stand"},{"id":"minecraft:brick","localizedName":"Brick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.brick"},{"id":"minecraft:brick_slab","localizedName":"Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_slab"},{"id":"minecraft:brick_stairs","localizedName":"Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_stairs"},{"id":"minecraft:brick_wall","localizedName":"Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brick_wall"},{"id":"minecraft:bricks","localizedName":"Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bricks"},{"id":"minecraft:brown_banner","localizedName":"Brown Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.brown_banner"},{"id":"minecraft:brown_bed","localizedName":"Brown Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.brown_bed"},{"id":"minecraft:brown_candle","localizedName":"Brown Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_candle"},{"id":"minecraft:brown_carpet","localizedName":"Brown Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_carpet"},{"id":"minecraft:brown_concrete","localizedName":"Brown Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_concrete"},{"id":"minecraft:brown_concrete_powder","localizedName":"Brown Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_concrete_powder"},{"id":"minecraft:brown_dye","localizedName":"Brown Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.brown_dye"},{"id":"minecraft:brown_glazed_terracotta","localizedName":"Brown Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_glazed_terracotta"},{"id":"minecraft:brown_mushroom","localizedName":"Brown Mushroom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_mushroom"},{"id":"minecraft:brown_mushroom_block","localizedName":"Brown Mushroom Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_mushroom_block"},{"id":"minecraft:brown_shulker_box","localizedName":"Brown Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.brown_shulker_box"},{"id":"minecraft:brown_stained_glass","localizedName":"Brown Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_stained_glass"},{"id":"minecraft:brown_stained_glass_pane","localizedName":"Brown Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_stained_glass_pane"},{"id":"minecraft:brown_terracotta","localizedName":"Brown Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_terracotta"},{"id":"minecraft:brown_wool","localizedName":"Brown Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.brown_wool"},{"id":"minecraft:bubble_coral","localizedName":"Bubble Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral"},{"id":"minecraft:bubble_coral_block","localizedName":"Bubble Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral_block"},{"id":"minecraft:bubble_coral_fan","localizedName":"Bubble Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.bubble_coral_fan"},{"id":"minecraft:bucket","localizedName":"Bucket","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.bucket"},{"id":"minecraft:budding_amethyst","localizedName":"Budding Amethyst","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.budding_amethyst"},{"id":"minecraft:bundle","localizedName":"Bundle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.bundle"},{"id":"minecraft:cactus","localizedName":"Cactus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cactus"},{"id":"minecraft:cake","localizedName":"Cake","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cake"},{"id":"minecraft:calcite","localizedName":"Calcite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.calcite"},{"id":"minecraft:campfire","localizedName":"Campfire","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.campfire"},{"id":"minecraft:candle","localizedName":"Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.candle"},{"id":"minecraft:carrot","localizedName":"Carrot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.carrot"},{"id":"minecraft:carrot_on_a_stick","localizedName":"Carrot on a Stick","maxDamage":25,"maxStackSize":1,"unlocalizedName":"item.minecraft.carrot_on_a_stick"},{"id":"minecraft:cartography_table","localizedName":"Cartography Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cartography_table"},{"id":"minecraft:carved_pumpkin","localizedName":"Carved Pumpkin","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.carved_pumpkin"},{"id":"minecraft:cat_spawn_egg","localizedName":"Cat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cat_spawn_egg"},{"id":"minecraft:cauldron","localizedName":"Cauldron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cauldron"},{"id":"minecraft:cave_spider_spawn_egg","localizedName":"Cave Spider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cave_spider_spawn_egg"},{"id":"minecraft:chain","localizedName":"Chain","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chain"},{"id":"minecraft:chain_command_block","localizedName":"Chain Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chain_command_block"},{"id":"minecraft:chainmail_boots","localizedName":"Chainmail Boots","maxDamage":195,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_boots"},{"id":"minecraft:chainmail_chestplate","localizedName":"Chainmail Chestplate","maxDamage":240,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_chestplate"},{"id":"minecraft:chainmail_helmet","localizedName":"Chainmail Helmet","maxDamage":165,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_helmet"},{"id":"minecraft:chainmail_leggings","localizedName":"Chainmail Leggings","maxDamage":225,"maxStackSize":1,"unlocalizedName":"item.minecraft.chainmail_leggings"},{"id":"minecraft:charcoal","localizedName":"Charcoal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.charcoal"},{"id":"minecraft:chest","localizedName":"Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chest"},{"id":"minecraft:chest_minecart","localizedName":"Minecart with Chest","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.chest_minecart"},{"id":"minecraft:chicken","localizedName":"Raw Chicken","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chicken"},{"id":"minecraft:chicken_spawn_egg","localizedName":"Chicken Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chicken_spawn_egg"},{"id":"minecraft:chipped_anvil","localizedName":"Chipped Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chipped_anvil"},{"id":"minecraft:chiseled_deepslate","localizedName":"Chiseled Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_deepslate"},{"id":"minecraft:chiseled_nether_bricks","localizedName":"Chiseled Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_nether_bricks"},{"id":"minecraft:chiseled_polished_blackstone","localizedName":"Chiseled Polished Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_polished_blackstone"},{"id":"minecraft:chiseled_quartz_block","localizedName":"Chiseled Quartz Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_quartz_block"},{"id":"minecraft:chiseled_red_sandstone","localizedName":"Chiseled Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_red_sandstone"},{"id":"minecraft:chiseled_sandstone","localizedName":"Chiseled Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_sandstone"},{"id":"minecraft:chiseled_stone_bricks","localizedName":"Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chiseled_stone_bricks"},{"id":"minecraft:chorus_flower","localizedName":"Chorus Flower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chorus_flower"},{"id":"minecraft:chorus_fruit","localizedName":"Chorus Fruit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.chorus_fruit"},{"id":"minecraft:chorus_plant","localizedName":"Chorus Plant","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.chorus_plant"},{"id":"minecraft:clay","localizedName":"Clay","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.clay"},{"id":"minecraft:clay_ball","localizedName":"Clay Ball","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.clay_ball"},{"id":"minecraft:clock","localizedName":"Clock","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.clock"},{"id":"minecraft:coal","localizedName":"Coal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.coal"},{"id":"minecraft:coal_block","localizedName":"Block of Coal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coal_block"},{"id":"minecraft:coal_ore","localizedName":"Coal Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coal_ore"},{"id":"minecraft:coarse_dirt","localizedName":"Coarse Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.coarse_dirt"},{"id":"minecraft:cobbled_deepslate","localizedName":"Cobbled Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate"},{"id":"minecraft:cobbled_deepslate_slab","localizedName":"Cobbled Deepslate Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate_slab"},{"id":"minecraft:cobbled_deepslate_stairs","localizedName":"Cobbled Deepslate Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate_stairs"},{"id":"minecraft:cobbled_deepslate_wall","localizedName":"Cobbled Deepslate Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobbled_deepslate_wall"},{"id":"minecraft:cobblestone","localizedName":"Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone"},{"id":"minecraft:cobblestone_slab","localizedName":"Cobblestone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_slab"},{"id":"minecraft:cobblestone_stairs","localizedName":"Cobblestone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_stairs"},{"id":"minecraft:cobblestone_wall","localizedName":"Cobblestone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobblestone_wall"},{"id":"minecraft:cobweb","localizedName":"Cobweb","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cobweb"},{"id":"minecraft:cocoa_beans","localizedName":"Cocoa Beans","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cocoa_beans"},{"id":"minecraft:cod","localizedName":"Raw Cod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cod"},{"id":"minecraft:cod_bucket","localizedName":"Bucket of Cod","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.cod_bucket"},{"id":"minecraft:cod_spawn_egg","localizedName":"Cod Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cod_spawn_egg"},{"id":"minecraft:command_block","localizedName":"Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.command_block"},{"id":"minecraft:command_block_minecart","localizedName":"Minecart with Command Block","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.command_block_minecart"},{"id":"minecraft:comparator","localizedName":"Redstone Comparator","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.comparator"},{"id":"minecraft:compass","localizedName":"Compass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.compass"},{"id":"minecraft:composter","localizedName":"Composter","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.composter"},{"id":"minecraft:conduit","localizedName":"Conduit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.conduit"},{"id":"minecraft:cooked_beef","localizedName":"Steak","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_beef"},{"id":"minecraft:cooked_chicken","localizedName":"Cooked Chicken","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_chicken"},{"id":"minecraft:cooked_cod","localizedName":"Cooked Cod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_cod"},{"id":"minecraft:cooked_mutton","localizedName":"Cooked Mutton","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_mutton"},{"id":"minecraft:cooked_porkchop","localizedName":"Cooked Porkchop","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_porkchop"},{"id":"minecraft:cooked_rabbit","localizedName":"Cooked Rabbit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_rabbit"},{"id":"minecraft:cooked_salmon","localizedName":"Cooked Salmon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cooked_salmon"},{"id":"minecraft:cookie","localizedName":"Cookie","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cookie"},{"id":"minecraft:copper_block","localizedName":"Block of Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.copper_block"},{"id":"minecraft:copper_ingot","localizedName":"Copper Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.copper_ingot"},{"id":"minecraft:copper_ore","localizedName":"Copper Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.copper_ore"},{"id":"minecraft:cornflower","localizedName":"Cornflower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cornflower"},{"id":"minecraft:cow_spawn_egg","localizedName":"Cow Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cow_spawn_egg"},{"id":"minecraft:cracked_deepslate_bricks","localizedName":"Cracked Deepslate Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_deepslate_bricks"},{"id":"minecraft:cracked_deepslate_tiles","localizedName":"Cracked Deepslate Tiles","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_deepslate_tiles"},{"id":"minecraft:cracked_nether_bricks","localizedName":"Cracked Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_nether_bricks"},{"id":"minecraft:cracked_polished_blackstone_bricks","localizedName":"Cracked Polished Blackstone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_polished_blackstone_bricks"},{"id":"minecraft:cracked_stone_bricks","localizedName":"Cracked Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cracked_stone_bricks"},{"id":"minecraft:crafting_table","localizedName":"Crafting Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crafting_table"},{"id":"minecraft:creeper_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.creeper_banner_pattern"},{"id":"minecraft:creeper_head","localizedName":"Creeper Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.creeper_head"},{"id":"minecraft:creeper_spawn_egg","localizedName":"Creeper Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.creeper_spawn_egg"},{"id":"minecraft:crimson_button","localizedName":"Crimson Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_button"},{"id":"minecraft:crimson_door","localizedName":"Crimson Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_door"},{"id":"minecraft:crimson_fence","localizedName":"Crimson Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fence"},{"id":"minecraft:crimson_fence_gate","localizedName":"Crimson Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fence_gate"},{"id":"minecraft:crimson_fungus","localizedName":"Crimson Fungus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_fungus"},{"id":"minecraft:crimson_hyphae","localizedName":"Crimson Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_hyphae"},{"id":"minecraft:crimson_nylium","localizedName":"Crimson Nylium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_nylium"},{"id":"minecraft:crimson_planks","localizedName":"Crimson Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_planks"},{"id":"minecraft:crimson_pressure_plate","localizedName":"Crimson Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_pressure_plate"},{"id":"minecraft:crimson_roots","localizedName":"Crimson Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_roots"},{"id":"minecraft:crimson_sign","localizedName":"Crimson Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.crimson_sign"},{"id":"minecraft:crimson_slab","localizedName":"Crimson Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_slab"},{"id":"minecraft:crimson_stairs","localizedName":"Crimson Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_stairs"},{"id":"minecraft:crimson_stem","localizedName":"Crimson Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_stem"},{"id":"minecraft:crimson_trapdoor","localizedName":"Crimson Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crimson_trapdoor"},{"id":"minecraft:crossbow","localizedName":"Crossbow","maxDamage":326,"maxStackSize":1,"unlocalizedName":"item.minecraft.crossbow"},{"id":"minecraft:crying_obsidian","localizedName":"Crying Obsidian","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.crying_obsidian"},{"id":"minecraft:cut_copper","localizedName":"Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_copper"},{"id":"minecraft:cut_copper_slab","localizedName":"Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_copper_slab"},{"id":"minecraft:cut_copper_stairs","localizedName":"Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_copper_stairs"},{"id":"minecraft:cut_red_sandstone","localizedName":"Cut Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_red_sandstone"},{"id":"minecraft:cut_red_sandstone_slab","localizedName":"Cut Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_red_sandstone_slab"},{"id":"minecraft:cut_sandstone","localizedName":"Cut Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_sandstone"},{"id":"minecraft:cut_sandstone_slab","localizedName":"Cut Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cut_sandstone_slab"},{"id":"minecraft:cyan_banner","localizedName":"Cyan Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.cyan_banner"},{"id":"minecraft:cyan_bed","localizedName":"Cyan Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cyan_bed"},{"id":"minecraft:cyan_candle","localizedName":"Cyan Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_candle"},{"id":"minecraft:cyan_carpet","localizedName":"Cyan Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_carpet"},{"id":"minecraft:cyan_concrete","localizedName":"Cyan Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_concrete"},{"id":"minecraft:cyan_concrete_powder","localizedName":"Cyan Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_concrete_powder"},{"id":"minecraft:cyan_dye","localizedName":"Cyan Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.cyan_dye"},{"id":"minecraft:cyan_glazed_terracotta","localizedName":"Cyan Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_glazed_terracotta"},{"id":"minecraft:cyan_shulker_box","localizedName":"Cyan Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.cyan_shulker_box"},{"id":"minecraft:cyan_stained_glass","localizedName":"Cyan Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_stained_glass"},{"id":"minecraft:cyan_stained_glass_pane","localizedName":"Cyan Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_stained_glass_pane"},{"id":"minecraft:cyan_terracotta","localizedName":"Cyan Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_terracotta"},{"id":"minecraft:cyan_wool","localizedName":"Cyan Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.cyan_wool"},{"id":"minecraft:damaged_anvil","localizedName":"Damaged Anvil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.damaged_anvil"},{"id":"minecraft:dandelion","localizedName":"Dandelion","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dandelion"},{"id":"minecraft:dark_oak_boat","localizedName":"Dark Oak Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.dark_oak_boat"},{"id":"minecraft:dark_oak_button","localizedName":"Dark Oak Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_button"},{"id":"minecraft:dark_oak_door","localizedName":"Dark Oak Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_door"},{"id":"minecraft:dark_oak_fence","localizedName":"Dark Oak Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_fence"},{"id":"minecraft:dark_oak_fence_gate","localizedName":"Dark Oak Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_fence_gate"},{"id":"minecraft:dark_oak_leaves","localizedName":"Dark Oak Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_leaves"},{"id":"minecraft:dark_oak_log","localizedName":"Dark Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_log"},{"id":"minecraft:dark_oak_planks","localizedName":"Dark Oak Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_planks"},{"id":"minecraft:dark_oak_pressure_plate","localizedName":"Dark Oak Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_pressure_plate"},{"id":"minecraft:dark_oak_sapling","localizedName":"Dark Oak Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_sapling"},{"id":"minecraft:dark_oak_sign","localizedName":"Dark Oak Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.dark_oak_sign"},{"id":"minecraft:dark_oak_slab","localizedName":"Dark Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_slab"},{"id":"minecraft:dark_oak_stairs","localizedName":"Dark Oak Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_stairs"},{"id":"minecraft:dark_oak_trapdoor","localizedName":"Dark Oak Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_trapdoor"},{"id":"minecraft:dark_oak_wood","localizedName":"Dark Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_oak_wood"},{"id":"minecraft:dark_prismarine","localizedName":"Dark Prismarine","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine"},{"id":"minecraft:dark_prismarine_slab","localizedName":"Dark Prismarine Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine_slab"},{"id":"minecraft:dark_prismarine_stairs","localizedName":"Dark Prismarine Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dark_prismarine_stairs"},{"id":"minecraft:daylight_detector","localizedName":"Daylight Detector","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.daylight_detector"},{"id":"minecraft:dead_brain_coral","localizedName":"Dead Brain Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral"},{"id":"minecraft:dead_brain_coral_block","localizedName":"Dead Brain Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral_block"},{"id":"minecraft:dead_brain_coral_fan","localizedName":"Dead Brain Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_brain_coral_fan"},{"id":"minecraft:dead_bubble_coral","localizedName":"Dead Bubble Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral"},{"id":"minecraft:dead_bubble_coral_block","localizedName":"Dead Bubble Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral_block"},{"id":"minecraft:dead_bubble_coral_fan","localizedName":"Dead Bubble Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bubble_coral_fan"},{"id":"minecraft:dead_bush","localizedName":"Dead Bush","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_bush"},{"id":"minecraft:dead_fire_coral","localizedName":"Dead Fire Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral"},{"id":"minecraft:dead_fire_coral_block","localizedName":"Dead Fire Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral_block"},{"id":"minecraft:dead_fire_coral_fan","localizedName":"Dead Fire Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_fire_coral_fan"},{"id":"minecraft:dead_horn_coral","localizedName":"Dead Horn Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral"},{"id":"minecraft:dead_horn_coral_block","localizedName":"Dead Horn Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral_block"},{"id":"minecraft:dead_horn_coral_fan","localizedName":"Dead Horn Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_horn_coral_fan"},{"id":"minecraft:dead_tube_coral","localizedName":"Dead Tube Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral"},{"id":"minecraft:dead_tube_coral_block","localizedName":"Dead Tube Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral_block"},{"id":"minecraft:dead_tube_coral_fan","localizedName":"Dead Tube Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dead_tube_coral_fan"},{"id":"minecraft:debug_stick","localizedName":"Debug Stick","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.debug_stick"},{"id":"minecraft:deepslate","localizedName":"Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate"},{"id":"minecraft:deepslate_brick_slab","localizedName":"Deepslate Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_brick_slab"},{"id":"minecraft:deepslate_brick_stairs","localizedName":"Deepslate Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_brick_stairs"},{"id":"minecraft:deepslate_brick_wall","localizedName":"Deepslate Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_brick_wall"},{"id":"minecraft:deepslate_bricks","localizedName":"Deepslate Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_bricks"},{"id":"minecraft:deepslate_coal_ore","localizedName":"Deepslate Coal Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_coal_ore"},{"id":"minecraft:deepslate_copper_ore","localizedName":"Deepslate Copper Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_copper_ore"},{"id":"minecraft:deepslate_diamond_ore","localizedName":"Deepslate Diamond Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_diamond_ore"},{"id":"minecraft:deepslate_emerald_ore","localizedName":"Deepslate Emerald Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_emerald_ore"},{"id":"minecraft:deepslate_gold_ore","localizedName":"Deepslate Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_gold_ore"},{"id":"minecraft:deepslate_iron_ore","localizedName":"Deepslate Iron Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_iron_ore"},{"id":"minecraft:deepslate_lapis_ore","localizedName":"Deepslate Lapis Lazuli Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_lapis_ore"},{"id":"minecraft:deepslate_redstone_ore","localizedName":"Deepslate Redstone Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_redstone_ore"},{"id":"minecraft:deepslate_tile_slab","localizedName":"Deepslate Tile Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tile_slab"},{"id":"minecraft:deepslate_tile_stairs","localizedName":"Deepslate Tile Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tile_stairs"},{"id":"minecraft:deepslate_tile_wall","localizedName":"Deepslate Tile Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tile_wall"},{"id":"minecraft:deepslate_tiles","localizedName":"Deepslate Tiles","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.deepslate_tiles"},{"id":"minecraft:detector_rail","localizedName":"Detector Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.detector_rail"},{"id":"minecraft:diamond","localizedName":"Diamond","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.diamond"},{"id":"minecraft:diamond_axe","localizedName":"Diamond Axe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_axe"},{"id":"minecraft:diamond_block","localizedName":"Block of Diamond","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diamond_block"},{"id":"minecraft:diamond_boots","localizedName":"Diamond Boots","maxDamage":429,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_boots"},{"id":"minecraft:diamond_chestplate","localizedName":"Diamond Chestplate","maxDamage":528,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_chestplate"},{"id":"minecraft:diamond_helmet","localizedName":"Diamond Helmet","maxDamage":363,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_helmet"},{"id":"minecraft:diamond_hoe","localizedName":"Diamond Hoe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_hoe"},{"id":"minecraft:diamond_horse_armor","localizedName":"Diamond Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_horse_armor"},{"id":"minecraft:diamond_leggings","localizedName":"Diamond Leggings","maxDamage":495,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_leggings"},{"id":"minecraft:diamond_ore","localizedName":"Diamond Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diamond_ore"},{"id":"minecraft:diamond_pickaxe","localizedName":"Diamond Pickaxe","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_pickaxe"},{"id":"minecraft:diamond_shovel","localizedName":"Diamond Shovel","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_shovel"},{"id":"minecraft:diamond_sword","localizedName":"Diamond Sword","maxDamage":1561,"maxStackSize":1,"unlocalizedName":"item.minecraft.diamond_sword"},{"id":"minecraft:diorite","localizedName":"Diorite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite"},{"id":"minecraft:diorite_slab","localizedName":"Diorite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_slab"},{"id":"minecraft:diorite_stairs","localizedName":"Diorite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_stairs"},{"id":"minecraft:diorite_wall","localizedName":"Diorite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.diorite_wall"},{"id":"minecraft:dirt","localizedName":"Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dirt"},{"id":"minecraft:dirt_path","localizedName":"Dirt Path","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dirt_path"},{"id":"minecraft:dispenser","localizedName":"Dispenser","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dispenser"},{"id":"minecraft:dolphin_spawn_egg","localizedName":"Dolphin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dolphin_spawn_egg"},{"id":"minecraft:donkey_spawn_egg","localizedName":"Donkey Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.donkey_spawn_egg"},{"id":"minecraft:dragon_breath","localizedName":"Dragon\u0027s Breath","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dragon_breath"},{"id":"minecraft:dragon_egg","localizedName":"Dragon Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dragon_egg"},{"id":"minecraft:dragon_head","localizedName":"Dragon Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dragon_head"},{"id":"minecraft:dried_kelp","localizedName":"Dried Kelp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.dried_kelp"},{"id":"minecraft:dried_kelp_block","localizedName":"Dried Kelp Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dried_kelp_block"},{"id":"minecraft:dripstone_block","localizedName":"Dripstone Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dripstone_block"},{"id":"minecraft:dropper","localizedName":"Dropper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.dropper"},{"id":"minecraft:drowned_spawn_egg","localizedName":"Drowned Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.drowned_spawn_egg"},{"id":"minecraft:egg","localizedName":"Egg","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.egg"},{"id":"minecraft:elder_guardian_spawn_egg","localizedName":"Elder Guardian Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.elder_guardian_spawn_egg"},{"id":"minecraft:elytra","localizedName":"Elytra","maxDamage":432,"maxStackSize":1,"unlocalizedName":"item.minecraft.elytra"},{"id":"minecraft:emerald","localizedName":"Emerald","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.emerald"},{"id":"minecraft:emerald_block","localizedName":"Block of Emerald","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.emerald_block"},{"id":"minecraft:emerald_ore","localizedName":"Emerald Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.emerald_ore"},{"id":"minecraft:enchanted_book","localizedName":"Enchanted Book","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.enchanted_book"},{"id":"minecraft:enchanted_golden_apple","localizedName":"Enchanted Golden Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.enchanted_golden_apple"},{"id":"minecraft:enchanting_table","localizedName":"Enchanting Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.enchanting_table"},{"id":"minecraft:end_crystal","localizedName":"End Crystal","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.end_crystal"},{"id":"minecraft:end_portal_frame","localizedName":"End Portal Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_portal_frame"},{"id":"minecraft:end_rod","localizedName":"End Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_rod"},{"id":"minecraft:end_stone","localizedName":"End Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone"},{"id":"minecraft:end_stone_brick_slab","localizedName":"End Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_slab"},{"id":"minecraft:end_stone_brick_stairs","localizedName":"End Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_stairs"},{"id":"minecraft:end_stone_brick_wall","localizedName":"End Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_brick_wall"},{"id":"minecraft:end_stone_bricks","localizedName":"End Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.end_stone_bricks"},{"id":"minecraft:ender_chest","localizedName":"Ender Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ender_chest"},{"id":"minecraft:ender_eye","localizedName":"Eye of Ender","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ender_eye"},{"id":"minecraft:ender_pearl","localizedName":"Ender Pearl","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.ender_pearl"},{"id":"minecraft:enderman_spawn_egg","localizedName":"Enderman Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.enderman_spawn_egg"},{"id":"minecraft:endermite_spawn_egg","localizedName":"Endermite Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.endermite_spawn_egg"},{"id":"minecraft:evoker_spawn_egg","localizedName":"Evoker Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.evoker_spawn_egg"},{"id":"minecraft:experience_bottle","localizedName":"Bottle o\u0027 Enchanting","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.experience_bottle"},{"id":"minecraft:exposed_copper","localizedName":"Exposed Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_copper"},{"id":"minecraft:exposed_cut_copper","localizedName":"Exposed Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_cut_copper"},{"id":"minecraft:exposed_cut_copper_slab","localizedName":"Exposed Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_cut_copper_slab"},{"id":"minecraft:exposed_cut_copper_stairs","localizedName":"Exposed Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.exposed_cut_copper_stairs"},{"id":"minecraft:farmland","localizedName":"Farmland","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.farmland"},{"id":"minecraft:feather","localizedName":"Feather","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.feather"},{"id":"minecraft:fermented_spider_eye","localizedName":"Fermented Spider Eye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fermented_spider_eye"},{"id":"minecraft:fern","localizedName":"Fern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fern"},{"id":"minecraft:filled_map","localizedName":"Map","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.filled_map"},{"id":"minecraft:fire_charge","localizedName":"Fire Charge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fire_charge"},{"id":"minecraft:fire_coral","localizedName":"Fire Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral"},{"id":"minecraft:fire_coral_block","localizedName":"Fire Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral_block"},{"id":"minecraft:fire_coral_fan","localizedName":"Fire Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fire_coral_fan"},{"id":"minecraft:firework_rocket","localizedName":"Firework Rocket","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.firework_rocket"},{"id":"minecraft:firework_star","localizedName":"Firework Star","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.firework_star"},{"id":"minecraft:fishing_rod","localizedName":"Fishing Rod","maxDamage":64,"maxStackSize":1,"unlocalizedName":"item.minecraft.fishing_rod"},{"id":"minecraft:fletching_table","localizedName":"Fletching Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.fletching_table"},{"id":"minecraft:flint","localizedName":"Flint","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.flint"},{"id":"minecraft:flint_and_steel","localizedName":"Flint and Steel","maxDamage":64,"maxStackSize":1,"unlocalizedName":"item.minecraft.flint_and_steel"},{"id":"minecraft:flower_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.flower_banner_pattern"},{"id":"minecraft:flower_pot","localizedName":"Flower Pot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flower_pot"},{"id":"minecraft:flowering_azalea","localizedName":"Flowering Azalea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flowering_azalea"},{"id":"minecraft:flowering_azalea_leaves","localizedName":"Flowering Azalea Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.flowering_azalea_leaves"},{"id":"minecraft:fox_spawn_egg","localizedName":"Fox Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.fox_spawn_egg"},{"id":"minecraft:furnace","localizedName":"Furnace","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.furnace"},{"id":"minecraft:furnace_minecart","localizedName":"Minecart with Furnace","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.furnace_minecart"},{"id":"minecraft:ghast_spawn_egg","localizedName":"Ghast Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ghast_spawn_egg"},{"id":"minecraft:ghast_tear","localizedName":"Ghast Tear","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ghast_tear"},{"id":"minecraft:gilded_blackstone","localizedName":"Gilded Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gilded_blackstone"},{"id":"minecraft:glass","localizedName":"Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glass"},{"id":"minecraft:glass_bottle","localizedName":"Glass Bottle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glass_bottle"},{"id":"minecraft:glass_pane","localizedName":"Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glass_pane"},{"id":"minecraft:glistering_melon_slice","localizedName":"Glistering Melon Slice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glistering_melon_slice"},{"id":"minecraft:globe_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.globe_banner_pattern"},{"id":"minecraft:glow_berries","localizedName":"Glow Berries","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_berries"},{"id":"minecraft:glow_ink_sac","localizedName":"Glow Ink Sac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_ink_sac"},{"id":"minecraft:glow_item_frame","localizedName":"Glow Item Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_item_frame"},{"id":"minecraft:glow_lichen","localizedName":"Glow Lichen","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glow_lichen"},{"id":"minecraft:glow_squid_spawn_egg","localizedName":"Glow Squid Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glow_squid_spawn_egg"},{"id":"minecraft:glowstone","localizedName":"Glowstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.glowstone"},{"id":"minecraft:glowstone_dust","localizedName":"Glowstone Dust","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.glowstone_dust"},{"id":"minecraft:goat_spawn_egg","localizedName":"Goat Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.goat_spawn_egg"},{"id":"minecraft:gold_block","localizedName":"Block of Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gold_block"},{"id":"minecraft:gold_ingot","localizedName":"Gold Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gold_ingot"},{"id":"minecraft:gold_nugget","localizedName":"Gold Nugget","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gold_nugget"},{"id":"minecraft:gold_ore","localizedName":"Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gold_ore"},{"id":"minecraft:golden_apple","localizedName":"Golden Apple","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.golden_apple"},{"id":"minecraft:golden_axe","localizedName":"Golden Axe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_axe"},{"id":"minecraft:golden_boots","localizedName":"Golden Boots","maxDamage":91,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_boots"},{"id":"minecraft:golden_carrot","localizedName":"Golden Carrot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.golden_carrot"},{"id":"minecraft:golden_chestplate","localizedName":"Golden Chestplate","maxDamage":112,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_chestplate"},{"id":"minecraft:golden_helmet","localizedName":"Golden Helmet","maxDamage":77,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_helmet"},{"id":"minecraft:golden_hoe","localizedName":"Golden Hoe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_hoe"},{"id":"minecraft:golden_horse_armor","localizedName":"Golden Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_horse_armor"},{"id":"minecraft:golden_leggings","localizedName":"Golden Leggings","maxDamage":105,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_leggings"},{"id":"minecraft:golden_pickaxe","localizedName":"Golden Pickaxe","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_pickaxe"},{"id":"minecraft:golden_shovel","localizedName":"Golden Shovel","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_shovel"},{"id":"minecraft:golden_sword","localizedName":"Golden Sword","maxDamage":32,"maxStackSize":1,"unlocalizedName":"item.minecraft.golden_sword"},{"id":"minecraft:granite","localizedName":"Granite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite"},{"id":"minecraft:granite_slab","localizedName":"Granite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_slab"},{"id":"minecraft:granite_stairs","localizedName":"Granite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_stairs"},{"id":"minecraft:granite_wall","localizedName":"Granite Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.granite_wall"},{"id":"minecraft:grass","localizedName":"Grass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass"},{"id":"minecraft:grass_block","localizedName":"Grass Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grass_block"},{"id":"minecraft:gravel","localizedName":"Gravel","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gravel"},{"id":"minecraft:gray_banner","localizedName":"Gray Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.gray_banner"},{"id":"minecraft:gray_bed","localizedName":"Gray Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.gray_bed"},{"id":"minecraft:gray_candle","localizedName":"Gray Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_candle"},{"id":"minecraft:gray_carpet","localizedName":"Gray Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_carpet"},{"id":"minecraft:gray_concrete","localizedName":"Gray Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_concrete"},{"id":"minecraft:gray_concrete_powder","localizedName":"Gray Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_concrete_powder"},{"id":"minecraft:gray_dye","localizedName":"Gray Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gray_dye"},{"id":"minecraft:gray_glazed_terracotta","localizedName":"Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_glazed_terracotta"},{"id":"minecraft:gray_shulker_box","localizedName":"Gray Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.gray_shulker_box"},{"id":"minecraft:gray_stained_glass","localizedName":"Gray Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_stained_glass"},{"id":"minecraft:gray_stained_glass_pane","localizedName":"Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_stained_glass_pane"},{"id":"minecraft:gray_terracotta","localizedName":"Gray Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_terracotta"},{"id":"minecraft:gray_wool","localizedName":"Gray Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.gray_wool"},{"id":"minecraft:green_banner","localizedName":"Green Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.green_banner"},{"id":"minecraft:green_bed","localizedName":"Green Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.green_bed"},{"id":"minecraft:green_candle","localizedName":"Green Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_candle"},{"id":"minecraft:green_carpet","localizedName":"Green Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_carpet"},{"id":"minecraft:green_concrete","localizedName":"Green Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_concrete"},{"id":"minecraft:green_concrete_powder","localizedName":"Green Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_concrete_powder"},{"id":"minecraft:green_dye","localizedName":"Green Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.green_dye"},{"id":"minecraft:green_glazed_terracotta","localizedName":"Green Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_glazed_terracotta"},{"id":"minecraft:green_shulker_box","localizedName":"Green Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.green_shulker_box"},{"id":"minecraft:green_stained_glass","localizedName":"Green Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_stained_glass"},{"id":"minecraft:green_stained_glass_pane","localizedName":"Green Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_stained_glass_pane"},{"id":"minecraft:green_terracotta","localizedName":"Green Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_terracotta"},{"id":"minecraft:green_wool","localizedName":"Green Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.green_wool"},{"id":"minecraft:grindstone","localizedName":"Grindstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.grindstone"},{"id":"minecraft:guardian_spawn_egg","localizedName":"Guardian Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.guardian_spawn_egg"},{"id":"minecraft:gunpowder","localizedName":"Gunpowder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.gunpowder"},{"id":"minecraft:hanging_roots","localizedName":"Hanging Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hanging_roots"},{"id":"minecraft:hay_block","localizedName":"Hay Bale","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hay_block"},{"id":"minecraft:heart_of_the_sea","localizedName":"Heart of the Sea","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.heart_of_the_sea"},{"id":"minecraft:heavy_weighted_pressure_plate","localizedName":"Heavy Weighted Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.heavy_weighted_pressure_plate"},{"id":"minecraft:hoglin_spawn_egg","localizedName":"Hoglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.hoglin_spawn_egg"},{"id":"minecraft:honey_block","localizedName":"Honey Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.honey_block"},{"id":"minecraft:honey_bottle","localizedName":"Honey Bottle","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.honey_bottle"},{"id":"minecraft:honeycomb","localizedName":"Honeycomb","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.honeycomb"},{"id":"minecraft:honeycomb_block","localizedName":"Honeycomb Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.honeycomb_block"},{"id":"minecraft:hopper","localizedName":"Hopper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.hopper"},{"id":"minecraft:hopper_minecart","localizedName":"Minecart with Hopper","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.hopper_minecart"},{"id":"minecraft:horn_coral","localizedName":"Horn Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral"},{"id":"minecraft:horn_coral_block","localizedName":"Horn Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral_block"},{"id":"minecraft:horn_coral_fan","localizedName":"Horn Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.horn_coral_fan"},{"id":"minecraft:horse_spawn_egg","localizedName":"Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.horse_spawn_egg"},{"id":"minecraft:husk_spawn_egg","localizedName":"Husk Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.husk_spawn_egg"},{"id":"minecraft:ice","localizedName":"Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ice"},{"id":"minecraft:infested_chiseled_stone_bricks","localizedName":"Infested Chiseled Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_chiseled_stone_bricks"},{"id":"minecraft:infested_cobblestone","localizedName":"Infested Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_cobblestone"},{"id":"minecraft:infested_cracked_stone_bricks","localizedName":"Infested Cracked Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_cracked_stone_bricks"},{"id":"minecraft:infested_deepslate","localizedName":"Infested Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_deepslate"},{"id":"minecraft:infested_mossy_stone_bricks","localizedName":"Infested Mossy Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_mossy_stone_bricks"},{"id":"minecraft:infested_stone","localizedName":"Infested Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_stone"},{"id":"minecraft:infested_stone_bricks","localizedName":"Infested Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.infested_stone_bricks"},{"id":"minecraft:ink_sac","localizedName":"Ink Sac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ink_sac"},{"id":"minecraft:iron_axe","localizedName":"Iron Axe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_axe"},{"id":"minecraft:iron_bars","localizedName":"Iron Bars","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_bars"},{"id":"minecraft:iron_block","localizedName":"Block of Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_block"},{"id":"minecraft:iron_boots","localizedName":"Iron Boots","maxDamage":195,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_boots"},{"id":"minecraft:iron_chestplate","localizedName":"Iron Chestplate","maxDamage":240,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_chestplate"},{"id":"minecraft:iron_door","localizedName":"Iron Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_door"},{"id":"minecraft:iron_helmet","localizedName":"Iron Helmet","maxDamage":165,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_helmet"},{"id":"minecraft:iron_hoe","localizedName":"Iron Hoe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_hoe"},{"id":"minecraft:iron_horse_armor","localizedName":"Iron Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_horse_armor"},{"id":"minecraft:iron_ingot","localizedName":"Iron Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.iron_ingot"},{"id":"minecraft:iron_leggings","localizedName":"Iron Leggings","maxDamage":225,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_leggings"},{"id":"minecraft:iron_nugget","localizedName":"Iron Nugget","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.iron_nugget"},{"id":"minecraft:iron_ore","localizedName":"Iron Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_ore"},{"id":"minecraft:iron_pickaxe","localizedName":"Iron Pickaxe","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_pickaxe"},{"id":"minecraft:iron_shovel","localizedName":"Iron Shovel","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_shovel"},{"id":"minecraft:iron_sword","localizedName":"Iron Sword","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.iron_sword"},{"id":"minecraft:iron_trapdoor","localizedName":"Iron Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.iron_trapdoor"},{"id":"minecraft:item_frame","localizedName":"Item Frame","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.item_frame"},{"id":"minecraft:jack_o_lantern","localizedName":"Jack o\u0027Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jack_o_lantern"},{"id":"minecraft:jigsaw","localizedName":"Jigsaw Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jigsaw"},{"id":"minecraft:jukebox","localizedName":"Jukebox","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jukebox"},{"id":"minecraft:jungle_boat","localizedName":"Jungle Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.jungle_boat"},{"id":"minecraft:jungle_button","localizedName":"Jungle Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_button"},{"id":"minecraft:jungle_door","localizedName":"Jungle Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_door"},{"id":"minecraft:jungle_fence","localizedName":"Jungle Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_fence"},{"id":"minecraft:jungle_fence_gate","localizedName":"Jungle Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_fence_gate"},{"id":"minecraft:jungle_leaves","localizedName":"Jungle Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_leaves"},{"id":"minecraft:jungle_log","localizedName":"Jungle Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_log"},{"id":"minecraft:jungle_planks","localizedName":"Jungle Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_planks"},{"id":"minecraft:jungle_pressure_plate","localizedName":"Jungle Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_pressure_plate"},{"id":"minecraft:jungle_sapling","localizedName":"Jungle Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_sapling"},{"id":"minecraft:jungle_sign","localizedName":"Jungle Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.jungle_sign"},{"id":"minecraft:jungle_slab","localizedName":"Jungle Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_slab"},{"id":"minecraft:jungle_stairs","localizedName":"Jungle Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_stairs"},{"id":"minecraft:jungle_trapdoor","localizedName":"Jungle Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_trapdoor"},{"id":"minecraft:jungle_wood","localizedName":"Jungle Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.jungle_wood"},{"id":"minecraft:kelp","localizedName":"Kelp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.kelp"},{"id":"minecraft:knowledge_book","localizedName":"Knowledge Book","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.knowledge_book"},{"id":"minecraft:ladder","localizedName":"Ladder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.ladder"},{"id":"minecraft:lantern","localizedName":"Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lantern"},{"id":"minecraft:lapis_block","localizedName":"Block of Lapis Lazuli","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lapis_block"},{"id":"minecraft:lapis_lazuli","localizedName":"Lapis Lazuli","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lapis_lazuli"},{"id":"minecraft:lapis_ore","localizedName":"Lapis Lazuli Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lapis_ore"},{"id":"minecraft:large_amethyst_bud","localizedName":"Large Amethyst Bud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.large_amethyst_bud"},{"id":"minecraft:large_fern","localizedName":"Large Fern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.large_fern"},{"id":"minecraft:lava_bucket","localizedName":"Lava Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.lava_bucket"},{"id":"minecraft:lead","localizedName":"Lead","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lead"},{"id":"minecraft:leather","localizedName":"Leather","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.leather"},{"id":"minecraft:leather_boots","localizedName":"Leather Boots","maxDamage":65,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_boots"},{"id":"minecraft:leather_chestplate","localizedName":"Leather Tunic","maxDamage":80,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_chestplate"},{"id":"minecraft:leather_helmet","localizedName":"Leather Cap","maxDamage":55,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_helmet"},{"id":"minecraft:leather_horse_armor","localizedName":"Leather Horse Armor","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_horse_armor"},{"id":"minecraft:leather_leggings","localizedName":"Leather Pants","maxDamage":75,"maxStackSize":1,"unlocalizedName":"item.minecraft.leather_leggings"},{"id":"minecraft:lectern","localizedName":"Lectern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lectern"},{"id":"minecraft:lever","localizedName":"Lever","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lever"},{"id":"minecraft:light","localizedName":"Light","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light"},{"id":"minecraft:light_blue_banner","localizedName":"Light Blue Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.light_blue_banner"},{"id":"minecraft:light_blue_bed","localizedName":"Light Blue Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_blue_bed"},{"id":"minecraft:light_blue_candle","localizedName":"Light Blue Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_candle"},{"id":"minecraft:light_blue_carpet","localizedName":"Light Blue Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_carpet"},{"id":"minecraft:light_blue_concrete","localizedName":"Light Blue Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_concrete"},{"id":"minecraft:light_blue_concrete_powder","localizedName":"Light Blue Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_concrete_powder"},{"id":"minecraft:light_blue_dye","localizedName":"Light Blue Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.light_blue_dye"},{"id":"minecraft:light_blue_glazed_terracotta","localizedName":"Light Blue Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_glazed_terracotta"},{"id":"minecraft:light_blue_shulker_box","localizedName":"Light Blue Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_blue_shulker_box"},{"id":"minecraft:light_blue_stained_glass","localizedName":"Light Blue Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_stained_glass"},{"id":"minecraft:light_blue_stained_glass_pane","localizedName":"Light Blue Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_stained_glass_pane"},{"id":"minecraft:light_blue_terracotta","localizedName":"Light Blue Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_terracotta"},{"id":"minecraft:light_blue_wool","localizedName":"Light Blue Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_blue_wool"},{"id":"minecraft:light_gray_banner","localizedName":"Light Gray Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.light_gray_banner"},{"id":"minecraft:light_gray_bed","localizedName":"Light Gray Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_gray_bed"},{"id":"minecraft:light_gray_candle","localizedName":"Light Gray Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_candle"},{"id":"minecraft:light_gray_carpet","localizedName":"Light Gray Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_carpet"},{"id":"minecraft:light_gray_concrete","localizedName":"Light Gray Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_concrete"},{"id":"minecraft:light_gray_concrete_powder","localizedName":"Light Gray Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_concrete_powder"},{"id":"minecraft:light_gray_dye","localizedName":"Light Gray Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.light_gray_dye"},{"id":"minecraft:light_gray_glazed_terracotta","localizedName":"Light Gray Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_glazed_terracotta"},{"id":"minecraft:light_gray_shulker_box","localizedName":"Light Gray Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.light_gray_shulker_box"},{"id":"minecraft:light_gray_stained_glass","localizedName":"Light Gray Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_stained_glass"},{"id":"minecraft:light_gray_stained_glass_pane","localizedName":"Light Gray Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_stained_glass_pane"},{"id":"minecraft:light_gray_terracotta","localizedName":"Light Gray Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_terracotta"},{"id":"minecraft:light_gray_wool","localizedName":"Light Gray Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_gray_wool"},{"id":"minecraft:light_weighted_pressure_plate","localizedName":"Light Weighted Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.light_weighted_pressure_plate"},{"id":"minecraft:lightning_rod","localizedName":"Lightning Rod","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lightning_rod"},{"id":"minecraft:lilac","localizedName":"Lilac","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lilac"},{"id":"minecraft:lily_of_the_valley","localizedName":"Lily of the Valley","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lily_of_the_valley"},{"id":"minecraft:lily_pad","localizedName":"Lily Pad","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lily_pad"},{"id":"minecraft:lime_banner","localizedName":"Lime Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.lime_banner"},{"id":"minecraft:lime_bed","localizedName":"Lime Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.lime_bed"},{"id":"minecraft:lime_candle","localizedName":"Lime Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_candle"},{"id":"minecraft:lime_carpet","localizedName":"Lime Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_carpet"},{"id":"minecraft:lime_concrete","localizedName":"Lime Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_concrete"},{"id":"minecraft:lime_concrete_powder","localizedName":"Lime Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_concrete_powder"},{"id":"minecraft:lime_dye","localizedName":"Lime Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.lime_dye"},{"id":"minecraft:lime_glazed_terracotta","localizedName":"Lime Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_glazed_terracotta"},{"id":"minecraft:lime_shulker_box","localizedName":"Lime Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.lime_shulker_box"},{"id":"minecraft:lime_stained_glass","localizedName":"Lime Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_stained_glass"},{"id":"minecraft:lime_stained_glass_pane","localizedName":"Lime Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_stained_glass_pane"},{"id":"minecraft:lime_terracotta","localizedName":"Lime Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_terracotta"},{"id":"minecraft:lime_wool","localizedName":"Lime Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lime_wool"},{"id":"minecraft:lingering_potion","localizedName":"Lingering Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.lingering_potion.effect.water"},{"id":"minecraft:llama_spawn_egg","localizedName":"Llama Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.llama_spawn_egg"},{"id":"minecraft:lodestone","localizedName":"Lodestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.lodestone"},{"id":"minecraft:loom","localizedName":"Loom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.loom"},{"id":"minecraft:magenta_banner","localizedName":"Magenta Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.magenta_banner"},{"id":"minecraft:magenta_bed","localizedName":"Magenta Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.magenta_bed"},{"id":"minecraft:magenta_candle","localizedName":"Magenta Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_candle"},{"id":"minecraft:magenta_carpet","localizedName":"Magenta Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_carpet"},{"id":"minecraft:magenta_concrete","localizedName":"Magenta Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_concrete"},{"id":"minecraft:magenta_concrete_powder","localizedName":"Magenta Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_concrete_powder"},{"id":"minecraft:magenta_dye","localizedName":"Magenta Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magenta_dye"},{"id":"minecraft:magenta_glazed_terracotta","localizedName":"Magenta Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_glazed_terracotta"},{"id":"minecraft:magenta_shulker_box","localizedName":"Magenta Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.magenta_shulker_box"},{"id":"minecraft:magenta_stained_glass","localizedName":"Magenta Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_stained_glass"},{"id":"minecraft:magenta_stained_glass_pane","localizedName":"Magenta Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_stained_glass_pane"},{"id":"minecraft:magenta_terracotta","localizedName":"Magenta Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_terracotta"},{"id":"minecraft:magenta_wool","localizedName":"Magenta Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magenta_wool"},{"id":"minecraft:magma_block","localizedName":"Magma Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.magma_block"},{"id":"minecraft:magma_cream","localizedName":"Magma Cream","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magma_cream"},{"id":"minecraft:magma_cube_spawn_egg","localizedName":"Magma Cube Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.magma_cube_spawn_egg"},{"id":"minecraft:map","localizedName":"Empty Map","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.map"},{"id":"minecraft:medium_amethyst_bud","localizedName":"Medium Amethyst Bud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.medium_amethyst_bud"},{"id":"minecraft:melon","localizedName":"Melon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.melon"},{"id":"minecraft:melon_seeds","localizedName":"Melon Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.melon_seeds"},{"id":"minecraft:melon_slice","localizedName":"Melon Slice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.melon_slice"},{"id":"minecraft:milk_bucket","localizedName":"Milk Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.milk_bucket"},{"id":"minecraft:minecart","localizedName":"Minecart","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.minecart"},{"id":"minecraft:mojang_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mojang_banner_pattern"},{"id":"minecraft:mooshroom_spawn_egg","localizedName":"Mooshroom Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mooshroom_spawn_egg"},{"id":"minecraft:moss_block","localizedName":"Moss Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.moss_block"},{"id":"minecraft:moss_carpet","localizedName":"Moss Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.moss_carpet"},{"id":"minecraft:mossy_cobblestone","localizedName":"Mossy Cobblestone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone"},{"id":"minecraft:mossy_cobblestone_slab","localizedName":"Mossy Cobblestone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_slab"},{"id":"minecraft:mossy_cobblestone_stairs","localizedName":"Mossy Cobblestone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_stairs"},{"id":"minecraft:mossy_cobblestone_wall","localizedName":"Mossy Cobblestone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_cobblestone_wall"},{"id":"minecraft:mossy_stone_brick_slab","localizedName":"Mossy Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_slab"},{"id":"minecraft:mossy_stone_brick_stairs","localizedName":"Mossy Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_stairs"},{"id":"minecraft:mossy_stone_brick_wall","localizedName":"Mossy Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_brick_wall"},{"id":"minecraft:mossy_stone_bricks","localizedName":"Mossy Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mossy_stone_bricks"},{"id":"minecraft:mule_spawn_egg","localizedName":"Mule Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mule_spawn_egg"},{"id":"minecraft:mushroom_stem","localizedName":"Mushroom Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mushroom_stem"},{"id":"minecraft:mushroom_stew","localizedName":"Mushroom Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.mushroom_stew"},{"id":"minecraft:music_disc_11","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_11"},{"id":"minecraft:music_disc_13","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_13"},{"id":"minecraft:music_disc_blocks","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_blocks"},{"id":"minecraft:music_disc_cat","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_cat"},{"id":"minecraft:music_disc_chirp","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_chirp"},{"id":"minecraft:music_disc_far","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_far"},{"id":"minecraft:music_disc_mall","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_mall"},{"id":"minecraft:music_disc_mellohi","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_mellohi"},{"id":"minecraft:music_disc_pigstep","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_pigstep"},{"id":"minecraft:music_disc_stal","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_stal"},{"id":"minecraft:music_disc_strad","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_strad"},{"id":"minecraft:music_disc_wait","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_wait"},{"id":"minecraft:music_disc_ward","localizedName":"Music Disc","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.music_disc_ward"},{"id":"minecraft:mutton","localizedName":"Raw Mutton","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.mutton"},{"id":"minecraft:mycelium","localizedName":"Mycelium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.mycelium"},{"id":"minecraft:name_tag","localizedName":"Name Tag","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.name_tag"},{"id":"minecraft:nautilus_shell","localizedName":"Nautilus Shell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nautilus_shell"},{"id":"minecraft:nether_brick","localizedName":"Nether Brick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_brick"},{"id":"minecraft:nether_brick_fence","localizedName":"Nether Brick Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_fence"},{"id":"minecraft:nether_brick_slab","localizedName":"Nether Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_slab"},{"id":"minecraft:nether_brick_stairs","localizedName":"Nether Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_stairs"},{"id":"minecraft:nether_brick_wall","localizedName":"Nether Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_brick_wall"},{"id":"minecraft:nether_bricks","localizedName":"Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_bricks"},{"id":"minecraft:nether_gold_ore","localizedName":"Nether Gold Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_gold_ore"},{"id":"minecraft:nether_quartz_ore","localizedName":"Nether Quartz Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_quartz_ore"},{"id":"minecraft:nether_sprouts","localizedName":"Nether Sprouts","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_sprouts"},{"id":"minecraft:nether_star","localizedName":"Nether Star","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_star"},{"id":"minecraft:nether_wart","localizedName":"Nether Wart","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.nether_wart"},{"id":"minecraft:nether_wart_block","localizedName":"Nether Wart Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.nether_wart_block"},{"id":"minecraft:netherite_axe","localizedName":"Netherite Axe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_axe"},{"id":"minecraft:netherite_block","localizedName":"Block of Netherite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.netherite_block"},{"id":"minecraft:netherite_boots","localizedName":"Netherite Boots","maxDamage":481,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_boots"},{"id":"minecraft:netherite_chestplate","localizedName":"Netherite Chestplate","maxDamage":592,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_chestplate"},{"id":"minecraft:netherite_helmet","localizedName":"Netherite Helmet","maxDamage":407,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_helmet"},{"id":"minecraft:netherite_hoe","localizedName":"Netherite Hoe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_hoe"},{"id":"minecraft:netherite_ingot","localizedName":"Netherite Ingot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.netherite_ingot"},{"id":"minecraft:netherite_leggings","localizedName":"Netherite Leggings","maxDamage":555,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_leggings"},{"id":"minecraft:netherite_pickaxe","localizedName":"Netherite Pickaxe","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_pickaxe"},{"id":"minecraft:netherite_scrap","localizedName":"Netherite Scrap","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.netherite_scrap"},{"id":"minecraft:netherite_shovel","localizedName":"Netherite Shovel","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_shovel"},{"id":"minecraft:netherite_sword","localizedName":"Netherite Sword","maxDamage":2031,"maxStackSize":1,"unlocalizedName":"item.minecraft.netherite_sword"},{"id":"minecraft:netherrack","localizedName":"Netherrack","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.netherrack"},{"id":"minecraft:note_block","localizedName":"Note Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.note_block"},{"id":"minecraft:oak_boat","localizedName":"Oak Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.oak_boat"},{"id":"minecraft:oak_button","localizedName":"Oak Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_button"},{"id":"minecraft:oak_door","localizedName":"Oak Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_door"},{"id":"minecraft:oak_fence","localizedName":"Oak Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_fence"},{"id":"minecraft:oak_fence_gate","localizedName":"Oak Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_fence_gate"},{"id":"minecraft:oak_leaves","localizedName":"Oak Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_leaves"},{"id":"minecraft:oak_log","localizedName":"Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_log"},{"id":"minecraft:oak_planks","localizedName":"Oak Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_planks"},{"id":"minecraft:oak_pressure_plate","localizedName":"Oak Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_pressure_plate"},{"id":"minecraft:oak_sapling","localizedName":"Oak Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_sapling"},{"id":"minecraft:oak_sign","localizedName":"Oak Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.oak_sign"},{"id":"minecraft:oak_slab","localizedName":"Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_slab"},{"id":"minecraft:oak_stairs","localizedName":"Oak Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_stairs"},{"id":"minecraft:oak_trapdoor","localizedName":"Oak Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_trapdoor"},{"id":"minecraft:oak_wood","localizedName":"Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oak_wood"},{"id":"minecraft:observer","localizedName":"Observer","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.observer"},{"id":"minecraft:obsidian","localizedName":"Obsidian","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.obsidian"},{"id":"minecraft:ocelot_spawn_egg","localizedName":"Ocelot Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ocelot_spawn_egg"},{"id":"minecraft:orange_banner","localizedName":"Orange Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.orange_banner"},{"id":"minecraft:orange_bed","localizedName":"Orange Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.orange_bed"},{"id":"minecraft:orange_candle","localizedName":"Orange Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_candle"},{"id":"minecraft:orange_carpet","localizedName":"Orange Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_carpet"},{"id":"minecraft:orange_concrete","localizedName":"Orange Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_concrete"},{"id":"minecraft:orange_concrete_powder","localizedName":"Orange Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_concrete_powder"},{"id":"minecraft:orange_dye","localizedName":"Orange Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.orange_dye"},{"id":"minecraft:orange_glazed_terracotta","localizedName":"Orange Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_glazed_terracotta"},{"id":"minecraft:orange_shulker_box","localizedName":"Orange Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.orange_shulker_box"},{"id":"minecraft:orange_stained_glass","localizedName":"Orange Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_stained_glass"},{"id":"minecraft:orange_stained_glass_pane","localizedName":"Orange Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_stained_glass_pane"},{"id":"minecraft:orange_terracotta","localizedName":"Orange Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_terracotta"},{"id":"minecraft:orange_tulip","localizedName":"Orange Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_tulip"},{"id":"minecraft:orange_wool","localizedName":"Orange Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.orange_wool"},{"id":"minecraft:oxeye_daisy","localizedName":"Oxeye Daisy","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxeye_daisy"},{"id":"minecraft:oxidized_copper","localizedName":"Oxidized Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_copper"},{"id":"minecraft:oxidized_cut_copper","localizedName":"Oxidized Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_cut_copper"},{"id":"minecraft:oxidized_cut_copper_slab","localizedName":"Oxidized Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_cut_copper_slab"},{"id":"minecraft:oxidized_cut_copper_stairs","localizedName":"Oxidized Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.oxidized_cut_copper_stairs"},{"id":"minecraft:packed_ice","localizedName":"Packed Ice","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.packed_ice"},{"id":"minecraft:painting","localizedName":"Painting","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.painting"},{"id":"minecraft:panda_spawn_egg","localizedName":"Panda Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.panda_spawn_egg"},{"id":"minecraft:paper","localizedName":"Paper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.paper"},{"id":"minecraft:parrot_spawn_egg","localizedName":"Parrot Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.parrot_spawn_egg"},{"id":"minecraft:peony","localizedName":"Peony","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.peony"},{"id":"minecraft:petrified_oak_slab","localizedName":"Petrified Oak Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.petrified_oak_slab"},{"id":"minecraft:phantom_membrane","localizedName":"Phantom Membrane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.phantom_membrane"},{"id":"minecraft:phantom_spawn_egg","localizedName":"Phantom Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.phantom_spawn_egg"},{"id":"minecraft:pig_spawn_egg","localizedName":"Pig Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pig_spawn_egg"},{"id":"minecraft:piglin_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.piglin_banner_pattern"},{"id":"minecraft:piglin_brute_spawn_egg","localizedName":"Piglin Brute Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.piglin_brute_spawn_egg"},{"id":"minecraft:piglin_spawn_egg","localizedName":"Piglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.piglin_spawn_egg"},{"id":"minecraft:pillager_spawn_egg","localizedName":"Pillager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pillager_spawn_egg"},{"id":"minecraft:pink_banner","localizedName":"Pink Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.pink_banner"},{"id":"minecraft:pink_bed","localizedName":"Pink Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.pink_bed"},{"id":"minecraft:pink_candle","localizedName":"Pink Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_candle"},{"id":"minecraft:pink_carpet","localizedName":"Pink Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_carpet"},{"id":"minecraft:pink_concrete","localizedName":"Pink Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_concrete"},{"id":"minecraft:pink_concrete_powder","localizedName":"Pink Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_concrete_powder"},{"id":"minecraft:pink_dye","localizedName":"Pink Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pink_dye"},{"id":"minecraft:pink_glazed_terracotta","localizedName":"Pink Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_glazed_terracotta"},{"id":"minecraft:pink_shulker_box","localizedName":"Pink Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.pink_shulker_box"},{"id":"minecraft:pink_stained_glass","localizedName":"Pink Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_stained_glass"},{"id":"minecraft:pink_stained_glass_pane","localizedName":"Pink Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_stained_glass_pane"},{"id":"minecraft:pink_terracotta","localizedName":"Pink Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_terracotta"},{"id":"minecraft:pink_tulip","localizedName":"Pink Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_tulip"},{"id":"minecraft:pink_wool","localizedName":"Pink Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pink_wool"},{"id":"minecraft:piston","localizedName":"Piston","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.piston"},{"id":"minecraft:player_head","localizedName":"Player Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.player_head"},{"id":"minecraft:podzol","localizedName":"Podzol","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.podzol"},{"id":"minecraft:pointed_dripstone","localizedName":"Pointed Dripstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pointed_dripstone"},{"id":"minecraft:poisonous_potato","localizedName":"Poisonous Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.poisonous_potato"},{"id":"minecraft:polar_bear_spawn_egg","localizedName":"Polar Bear Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.polar_bear_spawn_egg"},{"id":"minecraft:polished_andesite","localizedName":"Polished Andesite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite"},{"id":"minecraft:polished_andesite_slab","localizedName":"Polished Andesite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite_slab"},{"id":"minecraft:polished_andesite_stairs","localizedName":"Polished Andesite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_andesite_stairs"},{"id":"minecraft:polished_basalt","localizedName":"Polished Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_basalt"},{"id":"minecraft:polished_blackstone","localizedName":"Polished Blackstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone"},{"id":"minecraft:polished_blackstone_brick_slab","localizedName":"Polished Blackstone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_slab"},{"id":"minecraft:polished_blackstone_brick_stairs","localizedName":"Polished Blackstone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_stairs"},{"id":"minecraft:polished_blackstone_brick_wall","localizedName":"Polished Blackstone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_brick_wall"},{"id":"minecraft:polished_blackstone_bricks","localizedName":"Polished Blackstone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_bricks"},{"id":"minecraft:polished_blackstone_button","localizedName":"Polished Blackstone Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_button"},{"id":"minecraft:polished_blackstone_pressure_plate","localizedName":"Polished Blackstone Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_pressure_plate"},{"id":"minecraft:polished_blackstone_slab","localizedName":"Polished Blackstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_slab"},{"id":"minecraft:polished_blackstone_stairs","localizedName":"Polished Blackstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_stairs"},{"id":"minecraft:polished_blackstone_wall","localizedName":"Polished Blackstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_blackstone_wall"},{"id":"minecraft:polished_deepslate","localizedName":"Polished Deepslate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate"},{"id":"minecraft:polished_deepslate_slab","localizedName":"Polished Deepslate Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate_slab"},{"id":"minecraft:polished_deepslate_stairs","localizedName":"Polished Deepslate Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate_stairs"},{"id":"minecraft:polished_deepslate_wall","localizedName":"Polished Deepslate Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_deepslate_wall"},{"id":"minecraft:polished_diorite","localizedName":"Polished Diorite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite"},{"id":"minecraft:polished_diorite_slab","localizedName":"Polished Diorite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite_slab"},{"id":"minecraft:polished_diorite_stairs","localizedName":"Polished Diorite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_diorite_stairs"},{"id":"minecraft:polished_granite","localizedName":"Polished Granite","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite"},{"id":"minecraft:polished_granite_slab","localizedName":"Polished Granite Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite_slab"},{"id":"minecraft:polished_granite_stairs","localizedName":"Polished Granite Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.polished_granite_stairs"},{"id":"minecraft:popped_chorus_fruit","localizedName":"Popped Chorus Fruit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.popped_chorus_fruit"},{"id":"minecraft:poppy","localizedName":"Poppy","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.poppy"},{"id":"minecraft:porkchop","localizedName":"Raw Porkchop","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.porkchop"},{"id":"minecraft:potato","localizedName":"Potato","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.potato"},{"id":"minecraft:potion","localizedName":"Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.potion.effect.water"},{"id":"minecraft:powder_snow_bucket","localizedName":"Powder Snow Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.powder_snow_bucket"},{"id":"minecraft:powered_rail","localizedName":"Powered Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.powered_rail"},{"id":"minecraft:prismarine","localizedName":"Prismarine","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine"},{"id":"minecraft:prismarine_brick_slab","localizedName":"Prismarine Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_brick_slab"},{"id":"minecraft:prismarine_brick_stairs","localizedName":"Prismarine Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_brick_stairs"},{"id":"minecraft:prismarine_bricks","localizedName":"Prismarine Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_bricks"},{"id":"minecraft:prismarine_crystals","localizedName":"Prismarine Crystals","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.prismarine_crystals"},{"id":"minecraft:prismarine_shard","localizedName":"Prismarine Shard","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.prismarine_shard"},{"id":"minecraft:prismarine_slab","localizedName":"Prismarine Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_slab"},{"id":"minecraft:prismarine_stairs","localizedName":"Prismarine Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_stairs"},{"id":"minecraft:prismarine_wall","localizedName":"Prismarine Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.prismarine_wall"},{"id":"minecraft:pufferfish","localizedName":"Pufferfish","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pufferfish"},{"id":"minecraft:pufferfish_bucket","localizedName":"Bucket of Pufferfish","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.pufferfish_bucket"},{"id":"minecraft:pufferfish_spawn_egg","localizedName":"Pufferfish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pufferfish_spawn_egg"},{"id":"minecraft:pumpkin","localizedName":"Pumpkin","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.pumpkin"},{"id":"minecraft:pumpkin_pie","localizedName":"Pumpkin Pie","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pumpkin_pie"},{"id":"minecraft:pumpkin_seeds","localizedName":"Pumpkin Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.pumpkin_seeds"},{"id":"minecraft:purple_banner","localizedName":"Purple Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.purple_banner"},{"id":"minecraft:purple_bed","localizedName":"Purple Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.purple_bed"},{"id":"minecraft:purple_candle","localizedName":"Purple Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_candle"},{"id":"minecraft:purple_carpet","localizedName":"Purple Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_carpet"},{"id":"minecraft:purple_concrete","localizedName":"Purple Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_concrete"},{"id":"minecraft:purple_concrete_powder","localizedName":"Purple Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_concrete_powder"},{"id":"minecraft:purple_dye","localizedName":"Purple Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.purple_dye"},{"id":"minecraft:purple_glazed_terracotta","localizedName":"Purple Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_glazed_terracotta"},{"id":"minecraft:purple_shulker_box","localizedName":"Purple Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.purple_shulker_box"},{"id":"minecraft:purple_stained_glass","localizedName":"Purple Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_stained_glass"},{"id":"minecraft:purple_stained_glass_pane","localizedName":"Purple Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_stained_glass_pane"},{"id":"minecraft:purple_terracotta","localizedName":"Purple Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_terracotta"},{"id":"minecraft:purple_wool","localizedName":"Purple Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purple_wool"},{"id":"minecraft:purpur_block","localizedName":"Purpur Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_block"},{"id":"minecraft:purpur_pillar","localizedName":"Purpur Pillar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_pillar"},{"id":"minecraft:purpur_slab","localizedName":"Purpur Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_slab"},{"id":"minecraft:purpur_stairs","localizedName":"Purpur Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.purpur_stairs"},{"id":"minecraft:quartz","localizedName":"Nether Quartz","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.quartz"},{"id":"minecraft:quartz_block","localizedName":"Block of Quartz","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_block"},{"id":"minecraft:quartz_bricks","localizedName":"Quartz Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_bricks"},{"id":"minecraft:quartz_pillar","localizedName":"Quartz Pillar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_pillar"},{"id":"minecraft:quartz_slab","localizedName":"Quartz Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_slab"},{"id":"minecraft:quartz_stairs","localizedName":"Quartz Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.quartz_stairs"},{"id":"minecraft:rabbit","localizedName":"Raw Rabbit","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit"},{"id":"minecraft:rabbit_foot","localizedName":"Rabbit\u0027s Foot","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_foot"},{"id":"minecraft:rabbit_hide","localizedName":"Rabbit Hide","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_hide"},{"id":"minecraft:rabbit_spawn_egg","localizedName":"Rabbit Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rabbit_spawn_egg"},{"id":"minecraft:rabbit_stew","localizedName":"Rabbit Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.rabbit_stew"},{"id":"minecraft:rail","localizedName":"Rail","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rail"},{"id":"minecraft:ravager_spawn_egg","localizedName":"Ravager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.ravager_spawn_egg"},{"id":"minecraft:raw_copper","localizedName":"Raw Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.raw_copper"},{"id":"minecraft:raw_copper_block","localizedName":"Block of Raw Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.raw_copper_block"},{"id":"minecraft:raw_gold","localizedName":"Raw Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.raw_gold"},{"id":"minecraft:raw_gold_block","localizedName":"Block of Raw Gold","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.raw_gold_block"},{"id":"minecraft:raw_iron","localizedName":"Raw Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.raw_iron"},{"id":"minecraft:raw_iron_block","localizedName":"Block of Raw Iron","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.raw_iron_block"},{"id":"minecraft:red_banner","localizedName":"Red Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.red_banner"},{"id":"minecraft:red_bed","localizedName":"Red Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.red_bed"},{"id":"minecraft:red_candle","localizedName":"Red Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_candle"},{"id":"minecraft:red_carpet","localizedName":"Red Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_carpet"},{"id":"minecraft:red_concrete","localizedName":"Red Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_concrete"},{"id":"minecraft:red_concrete_powder","localizedName":"Red Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_concrete_powder"},{"id":"minecraft:red_dye","localizedName":"Red Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.red_dye"},{"id":"minecraft:red_glazed_terracotta","localizedName":"Red Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_glazed_terracotta"},{"id":"minecraft:red_mushroom","localizedName":"Red Mushroom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_mushroom"},{"id":"minecraft:red_mushroom_block","localizedName":"Red Mushroom Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_mushroom_block"},{"id":"minecraft:red_nether_brick_slab","localizedName":"Red Nether Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_slab"},{"id":"minecraft:red_nether_brick_stairs","localizedName":"Red Nether Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_stairs"},{"id":"minecraft:red_nether_brick_wall","localizedName":"Red Nether Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_brick_wall"},{"id":"minecraft:red_nether_bricks","localizedName":"Red Nether Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_nether_bricks"},{"id":"minecraft:red_sand","localizedName":"Red Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sand"},{"id":"minecraft:red_sandstone","localizedName":"Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone"},{"id":"minecraft:red_sandstone_slab","localizedName":"Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_slab"},{"id":"minecraft:red_sandstone_stairs","localizedName":"Red Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_stairs"},{"id":"minecraft:red_sandstone_wall","localizedName":"Red Sandstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_sandstone_wall"},{"id":"minecraft:red_shulker_box","localizedName":"Red Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.red_shulker_box"},{"id":"minecraft:red_stained_glass","localizedName":"Red Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_stained_glass"},{"id":"minecraft:red_stained_glass_pane","localizedName":"Red Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_stained_glass_pane"},{"id":"minecraft:red_terracotta","localizedName":"Red Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_terracotta"},{"id":"minecraft:red_tulip","localizedName":"Red Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_tulip"},{"id":"minecraft:red_wool","localizedName":"Red Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.red_wool"},{"id":"minecraft:redstone","localizedName":"Redstone Dust","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.redstone"},{"id":"minecraft:redstone_block","localizedName":"Block of Redstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_block"},{"id":"minecraft:redstone_lamp","localizedName":"Redstone Lamp","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_lamp"},{"id":"minecraft:redstone_ore","localizedName":"Redstone Ore","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_ore"},{"id":"minecraft:redstone_torch","localizedName":"Redstone Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.redstone_torch"},{"id":"minecraft:repeater","localizedName":"Redstone Repeater","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.repeater"},{"id":"minecraft:repeating_command_block","localizedName":"Repeating Command Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.repeating_command_block"},{"id":"minecraft:respawn_anchor","localizedName":"Respawn Anchor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.respawn_anchor"},{"id":"minecraft:rooted_dirt","localizedName":"Rooted Dirt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rooted_dirt"},{"id":"minecraft:rose_bush","localizedName":"Rose Bush","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.rose_bush"},{"id":"minecraft:rotten_flesh","localizedName":"Rotten Flesh","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.rotten_flesh"},{"id":"minecraft:saddle","localizedName":"Saddle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.saddle"},{"id":"minecraft:salmon","localizedName":"Raw Salmon","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.salmon"},{"id":"minecraft:salmon_bucket","localizedName":"Bucket of Salmon","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.salmon_bucket"},{"id":"minecraft:salmon_spawn_egg","localizedName":"Salmon Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.salmon_spawn_egg"},{"id":"minecraft:sand","localizedName":"Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sand"},{"id":"minecraft:sandstone","localizedName":"Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone"},{"id":"minecraft:sandstone_slab","localizedName":"Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_slab"},{"id":"minecraft:sandstone_stairs","localizedName":"Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_stairs"},{"id":"minecraft:sandstone_wall","localizedName":"Sandstone Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sandstone_wall"},{"id":"minecraft:scaffolding","localizedName":"Scaffolding","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.scaffolding"},{"id":"minecraft:sculk_sensor","localizedName":"Sculk Sensor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sculk_sensor"},{"id":"minecraft:scute","localizedName":"Scute","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.scute"},{"id":"minecraft:sea_lantern","localizedName":"Sea Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sea_lantern"},{"id":"minecraft:sea_pickle","localizedName":"Sea Pickle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sea_pickle"},{"id":"minecraft:seagrass","localizedName":"Seagrass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.seagrass"},{"id":"minecraft:shears","localizedName":"Shears","maxDamage":238,"maxStackSize":1,"unlocalizedName":"item.minecraft.shears"},{"id":"minecraft:sheep_spawn_egg","localizedName":"Sheep Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sheep_spawn_egg"},{"id":"minecraft:shield","localizedName":"Shield","maxDamage":336,"maxStackSize":1,"unlocalizedName":"item.minecraft.shield"},{"id":"minecraft:shroomlight","localizedName":"Shroomlight","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.shroomlight"},{"id":"minecraft:shulker_box","localizedName":"Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.shulker_box"},{"id":"minecraft:shulker_shell","localizedName":"Shulker Shell","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.shulker_shell"},{"id":"minecraft:shulker_spawn_egg","localizedName":"Shulker Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.shulker_spawn_egg"},{"id":"minecraft:silverfish_spawn_egg","localizedName":"Silverfish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.silverfish_spawn_egg"},{"id":"minecraft:skeleton_horse_spawn_egg","localizedName":"Skeleton Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.skeleton_horse_spawn_egg"},{"id":"minecraft:skeleton_skull","localizedName":"Skeleton Skull","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.skeleton_skull"},{"id":"minecraft:skeleton_spawn_egg","localizedName":"Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.skeleton_spawn_egg"},{"id":"minecraft:skull_banner_pattern","localizedName":"Banner Pattern","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.skull_banner_pattern"},{"id":"minecraft:slime_ball","localizedName":"Slimeball","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.slime_ball"},{"id":"minecraft:slime_block","localizedName":"Slime Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.slime_block"},{"id":"minecraft:slime_spawn_egg","localizedName":"Slime Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.slime_spawn_egg"},{"id":"minecraft:small_amethyst_bud","localizedName":"Small Amethyst Bud","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.small_amethyst_bud"},{"id":"minecraft:small_dripleaf","localizedName":"Small Dripleaf","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.small_dripleaf"},{"id":"minecraft:smithing_table","localizedName":"Smithing Table","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smithing_table"},{"id":"minecraft:smoker","localizedName":"Smoker","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smoker"},{"id":"minecraft:smooth_basalt","localizedName":"Smooth Basalt","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_basalt"},{"id":"minecraft:smooth_quartz","localizedName":"Smooth Quartz Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz"},{"id":"minecraft:smooth_quartz_slab","localizedName":"Smooth Quartz Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz_slab"},{"id":"minecraft:smooth_quartz_stairs","localizedName":"Smooth Quartz Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_quartz_stairs"},{"id":"minecraft:smooth_red_sandstone","localizedName":"Smooth Red Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone"},{"id":"minecraft:smooth_red_sandstone_slab","localizedName":"Smooth Red Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone_slab"},{"id":"minecraft:smooth_red_sandstone_stairs","localizedName":"Smooth Red Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_red_sandstone_stairs"},{"id":"minecraft:smooth_sandstone","localizedName":"Smooth Sandstone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone"},{"id":"minecraft:smooth_sandstone_slab","localizedName":"Smooth Sandstone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone_slab"},{"id":"minecraft:smooth_sandstone_stairs","localizedName":"Smooth Sandstone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_sandstone_stairs"},{"id":"minecraft:smooth_stone","localizedName":"Smooth Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_stone"},{"id":"minecraft:smooth_stone_slab","localizedName":"Smooth Stone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.smooth_stone_slab"},{"id":"minecraft:snow","localizedName":"Snow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.snow"},{"id":"minecraft:snow_block","localizedName":"Snow Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.snow_block"},{"id":"minecraft:snowball","localizedName":"Snowball","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.snowball"},{"id":"minecraft:soul_campfire","localizedName":"Soul Campfire","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_campfire"},{"id":"minecraft:soul_lantern","localizedName":"Soul Lantern","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_lantern"},{"id":"minecraft:soul_sand","localizedName":"Soul Sand","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_sand"},{"id":"minecraft:soul_soil","localizedName":"Soul Soil","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_soil"},{"id":"minecraft:soul_torch","localizedName":"Soul Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.soul_torch"},{"id":"minecraft:spawner","localizedName":"Spawner","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spawner"},{"id":"minecraft:spectral_arrow","localizedName":"Spectral Arrow","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spectral_arrow"},{"id":"minecraft:spider_eye","localizedName":"Spider Eye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spider_eye"},{"id":"minecraft:spider_spawn_egg","localizedName":"Spider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.spider_spawn_egg"},{"id":"minecraft:splash_potion","localizedName":"Splash Water Bottle","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.splash_potion.effect.water"},{"id":"minecraft:sponge","localizedName":"Sponge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sponge"},{"id":"minecraft:spore_blossom","localizedName":"Spore Blossom","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spore_blossom"},{"id":"minecraft:spruce_boat","localizedName":"Spruce Boat","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.spruce_boat"},{"id":"minecraft:spruce_button","localizedName":"Spruce Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_button"},{"id":"minecraft:spruce_door","localizedName":"Spruce Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_door"},{"id":"minecraft:spruce_fence","localizedName":"Spruce Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_fence"},{"id":"minecraft:spruce_fence_gate","localizedName":"Spruce Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_fence_gate"},{"id":"minecraft:spruce_leaves","localizedName":"Spruce Leaves","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_leaves"},{"id":"minecraft:spruce_log","localizedName":"Spruce Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_log"},{"id":"minecraft:spruce_planks","localizedName":"Spruce Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_planks"},{"id":"minecraft:spruce_pressure_plate","localizedName":"Spruce Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_pressure_plate"},{"id":"minecraft:spruce_sapling","localizedName":"Spruce Sapling","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_sapling"},{"id":"minecraft:spruce_sign","localizedName":"Spruce Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.spruce_sign"},{"id":"minecraft:spruce_slab","localizedName":"Spruce Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_slab"},{"id":"minecraft:spruce_stairs","localizedName":"Spruce Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_stairs"},{"id":"minecraft:spruce_trapdoor","localizedName":"Spruce Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_trapdoor"},{"id":"minecraft:spruce_wood","localizedName":"Spruce Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.spruce_wood"},{"id":"minecraft:spyglass","localizedName":"Spyglass","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.spyglass"},{"id":"minecraft:squid_spawn_egg","localizedName":"Squid Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.squid_spawn_egg"},{"id":"minecraft:stick","localizedName":"Stick","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.stick"},{"id":"minecraft:sticky_piston","localizedName":"Sticky Piston","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sticky_piston"},{"id":"minecraft:stone","localizedName":"Stone","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone"},{"id":"minecraft:stone_axe","localizedName":"Stone Axe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_axe"},{"id":"minecraft:stone_brick_slab","localizedName":"Stone Brick Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_slab"},{"id":"minecraft:stone_brick_stairs","localizedName":"Stone Brick Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_stairs"},{"id":"minecraft:stone_brick_wall","localizedName":"Stone Brick Wall","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_brick_wall"},{"id":"minecraft:stone_bricks","localizedName":"Stone Bricks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_bricks"},{"id":"minecraft:stone_button","localizedName":"Stone Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_button"},{"id":"minecraft:stone_hoe","localizedName":"Stone Hoe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_hoe"},{"id":"minecraft:stone_pickaxe","localizedName":"Stone Pickaxe","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_pickaxe"},{"id":"minecraft:stone_pressure_plate","localizedName":"Stone Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_pressure_plate"},{"id":"minecraft:stone_shovel","localizedName":"Stone Shovel","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_shovel"},{"id":"minecraft:stone_slab","localizedName":"Stone Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_slab"},{"id":"minecraft:stone_stairs","localizedName":"Stone Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stone_stairs"},{"id":"minecraft:stone_sword","localizedName":"Stone Sword","maxDamage":131,"maxStackSize":1,"unlocalizedName":"item.minecraft.stone_sword"},{"id":"minecraft:stonecutter","localizedName":"Stonecutter","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stonecutter"},{"id":"minecraft:stray_spawn_egg","localizedName":"Stray Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.stray_spawn_egg"},{"id":"minecraft:strider_spawn_egg","localizedName":"Strider Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.strider_spawn_egg"},{"id":"minecraft:string","localizedName":"String","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.string"},{"id":"minecraft:stripped_acacia_log","localizedName":"Stripped Acacia Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_acacia_log"},{"id":"minecraft:stripped_acacia_wood","localizedName":"Stripped Acacia Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_acacia_wood"},{"id":"minecraft:stripped_birch_log","localizedName":"Stripped Birch Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_birch_log"},{"id":"minecraft:stripped_birch_wood","localizedName":"Stripped Birch Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_birch_wood"},{"id":"minecraft:stripped_crimson_hyphae","localizedName":"Stripped Crimson Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_crimson_hyphae"},{"id":"minecraft:stripped_crimson_stem","localizedName":"Stripped Crimson Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_crimson_stem"},{"id":"minecraft:stripped_dark_oak_log","localizedName":"Stripped Dark Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_dark_oak_log"},{"id":"minecraft:stripped_dark_oak_wood","localizedName":"Stripped Dark Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_dark_oak_wood"},{"id":"minecraft:stripped_jungle_log","localizedName":"Stripped Jungle Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_jungle_log"},{"id":"minecraft:stripped_jungle_wood","localizedName":"Stripped Jungle Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_jungle_wood"},{"id":"minecraft:stripped_oak_log","localizedName":"Stripped Oak Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_oak_log"},{"id":"minecraft:stripped_oak_wood","localizedName":"Stripped Oak Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_oak_wood"},{"id":"minecraft:stripped_spruce_log","localizedName":"Stripped Spruce Log","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_spruce_log"},{"id":"minecraft:stripped_spruce_wood","localizedName":"Stripped Spruce Wood","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_spruce_wood"},{"id":"minecraft:stripped_warped_hyphae","localizedName":"Stripped Warped Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_warped_hyphae"},{"id":"minecraft:stripped_warped_stem","localizedName":"Stripped Warped Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.stripped_warped_stem"},{"id":"minecraft:structure_block","localizedName":"Structure Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.structure_block"},{"id":"minecraft:structure_void","localizedName":"Structure Void","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.structure_void"},{"id":"minecraft:sugar","localizedName":"Sugar","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sugar"},{"id":"minecraft:sugar_cane","localizedName":"Sugar Cane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sugar_cane"},{"id":"minecraft:sunflower","localizedName":"Sunflower","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.sunflower"},{"id":"minecraft:suspicious_stew","localizedName":"Suspicious Stew","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.suspicious_stew"},{"id":"minecraft:sweet_berries","localizedName":"Sweet Berries","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.sweet_berries"},{"id":"minecraft:tall_grass","localizedName":"Tall Grass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tall_grass"},{"id":"minecraft:target","localizedName":"Target","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.target"},{"id":"minecraft:terracotta","localizedName":"Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.terracotta"},{"id":"minecraft:tinted_glass","localizedName":"Tinted Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tinted_glass"},{"id":"minecraft:tipped_arrow","localizedName":"Arrow of Poison","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tipped_arrow.effect.poison"},{"id":"minecraft:tnt","localizedName":"TNT","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tnt"},{"id":"minecraft:tnt_minecart","localizedName":"Minecart with TNT","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tnt_minecart"},{"id":"minecraft:torch","localizedName":"Torch","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.torch"},{"id":"minecraft:totem_of_undying","localizedName":"Totem of Undying","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.totem_of_undying"},{"id":"minecraft:trader_llama_spawn_egg","localizedName":"Trader Llama Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.trader_llama_spawn_egg"},{"id":"minecraft:trapped_chest","localizedName":"Trapped Chest","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.trapped_chest"},{"id":"minecraft:trident","localizedName":"Trident","maxDamage":250,"maxStackSize":1,"unlocalizedName":"item.minecraft.trident"},{"id":"minecraft:tripwire_hook","localizedName":"Tripwire Hook","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tripwire_hook"},{"id":"minecraft:tropical_fish","localizedName":"Tropical Fish","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tropical_fish"},{"id":"minecraft:tropical_fish_bucket","localizedName":"Bucket of Tropical Fish","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.tropical_fish_bucket"},{"id":"minecraft:tropical_fish_spawn_egg","localizedName":"Tropical Fish Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.tropical_fish_spawn_egg"},{"id":"minecraft:tube_coral","localizedName":"Tube Coral","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral"},{"id":"minecraft:tube_coral_block","localizedName":"Tube Coral Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral_block"},{"id":"minecraft:tube_coral_fan","localizedName":"Tube Coral Fan","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tube_coral_fan"},{"id":"minecraft:tuff","localizedName":"Tuff","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.tuff"},{"id":"minecraft:turtle_egg","localizedName":"Turtle Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.turtle_egg"},{"id":"minecraft:turtle_helmet","localizedName":"Turtle Shell","maxDamage":275,"maxStackSize":1,"unlocalizedName":"item.minecraft.turtle_helmet"},{"id":"minecraft:turtle_spawn_egg","localizedName":"Turtle Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.turtle_spawn_egg"},{"id":"minecraft:twisting_vines","localizedName":"Twisting Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.twisting_vines"},{"id":"minecraft:vex_spawn_egg","localizedName":"Vex Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.vex_spawn_egg"},{"id":"minecraft:villager_spawn_egg","localizedName":"Villager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.villager_spawn_egg"},{"id":"minecraft:vindicator_spawn_egg","localizedName":"Vindicator Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.vindicator_spawn_egg"},{"id":"minecraft:vine","localizedName":"Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.vine"},{"id":"minecraft:wandering_trader_spawn_egg","localizedName":"Wandering Trader Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wandering_trader_spawn_egg"},{"id":"minecraft:warped_button","localizedName":"Warped Button","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_button"},{"id":"minecraft:warped_door","localizedName":"Warped Door","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_door"},{"id":"minecraft:warped_fence","localizedName":"Warped Fence","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fence"},{"id":"minecraft:warped_fence_gate","localizedName":"Warped Fence Gate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fence_gate"},{"id":"minecraft:warped_fungus","localizedName":"Warped Fungus","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_fungus"},{"id":"minecraft:warped_fungus_on_a_stick","localizedName":"Warped Fungus on a Stick","maxDamage":100,"maxStackSize":1,"unlocalizedName":"item.minecraft.warped_fungus_on_a_stick"},{"id":"minecraft:warped_hyphae","localizedName":"Warped Hyphae","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_hyphae"},{"id":"minecraft:warped_nylium","localizedName":"Warped Nylium","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_nylium"},{"id":"minecraft:warped_planks","localizedName":"Warped Planks","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_planks"},{"id":"minecraft:warped_pressure_plate","localizedName":"Warped Pressure Plate","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_pressure_plate"},{"id":"minecraft:warped_roots","localizedName":"Warped Roots","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_roots"},{"id":"minecraft:warped_sign","localizedName":"Warped Sign","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.warped_sign"},{"id":"minecraft:warped_slab","localizedName":"Warped Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_slab"},{"id":"minecraft:warped_stairs","localizedName":"Warped Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_stairs"},{"id":"minecraft:warped_stem","localizedName":"Warped Stem","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_stem"},{"id":"minecraft:warped_trapdoor","localizedName":"Warped Trapdoor","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_trapdoor"},{"id":"minecraft:warped_wart_block","localizedName":"Warped Wart Block","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.warped_wart_block"},{"id":"minecraft:water_bucket","localizedName":"Water Bucket","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.water_bucket"},{"id":"minecraft:waxed_copper_block","localizedName":"Waxed Block of Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_copper_block"},{"id":"minecraft:waxed_cut_copper","localizedName":"Waxed Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_cut_copper"},{"id":"minecraft:waxed_cut_copper_slab","localizedName":"Waxed Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_cut_copper_slab"},{"id":"minecraft:waxed_cut_copper_stairs","localizedName":"Waxed Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_cut_copper_stairs"},{"id":"minecraft:waxed_exposed_copper","localizedName":"Waxed Exposed Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_copper"},{"id":"minecraft:waxed_exposed_cut_copper","localizedName":"Waxed Exposed Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_cut_copper"},{"id":"minecraft:waxed_exposed_cut_copper_slab","localizedName":"Waxed Exposed Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_cut_copper_slab"},{"id":"minecraft:waxed_exposed_cut_copper_stairs","localizedName":"Waxed Exposed Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_exposed_cut_copper_stairs"},{"id":"minecraft:waxed_oxidized_copper","localizedName":"Waxed Oxidized Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_copper"},{"id":"minecraft:waxed_oxidized_cut_copper","localizedName":"Waxed Oxidized Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_cut_copper"},{"id":"minecraft:waxed_oxidized_cut_copper_slab","localizedName":"Waxed Oxidized Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_cut_copper_slab"},{"id":"minecraft:waxed_oxidized_cut_copper_stairs","localizedName":"Waxed Oxidized Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_oxidized_cut_copper_stairs"},{"id":"minecraft:waxed_weathered_copper","localizedName":"Waxed Weathered Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_copper"},{"id":"minecraft:waxed_weathered_cut_copper","localizedName":"Waxed Weathered Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_cut_copper"},{"id":"minecraft:waxed_weathered_cut_copper_slab","localizedName":"Waxed Weathered Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_cut_copper_slab"},{"id":"minecraft:waxed_weathered_cut_copper_stairs","localizedName":"Waxed Weathered Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.waxed_weathered_cut_copper_stairs"},{"id":"minecraft:weathered_copper","localizedName":"Weathered Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_copper"},{"id":"minecraft:weathered_cut_copper","localizedName":"Weathered Cut Copper","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_cut_copper"},{"id":"minecraft:weathered_cut_copper_slab","localizedName":"Weathered Cut Copper Slab","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_cut_copper_slab"},{"id":"minecraft:weathered_cut_copper_stairs","localizedName":"Weathered Cut Copper Stairs","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weathered_cut_copper_stairs"},{"id":"minecraft:weeping_vines","localizedName":"Weeping Vines","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.weeping_vines"},{"id":"minecraft:wet_sponge","localizedName":"Wet Sponge","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wet_sponge"},{"id":"minecraft:wheat","localizedName":"Wheat","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wheat"},{"id":"minecraft:wheat_seeds","localizedName":"Wheat Seeds","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wheat_seeds"},{"id":"minecraft:white_banner","localizedName":"White Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.white_banner"},{"id":"minecraft:white_bed","localizedName":"White Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.white_bed"},{"id":"minecraft:white_candle","localizedName":"White Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_candle"},{"id":"minecraft:white_carpet","localizedName":"White Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_carpet"},{"id":"minecraft:white_concrete","localizedName":"White Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_concrete"},{"id":"minecraft:white_concrete_powder","localizedName":"White Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_concrete_powder"},{"id":"minecraft:white_dye","localizedName":"White Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.white_dye"},{"id":"minecraft:white_glazed_terracotta","localizedName":"White Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_glazed_terracotta"},{"id":"minecraft:white_shulker_box","localizedName":"White Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.white_shulker_box"},{"id":"minecraft:white_stained_glass","localizedName":"White Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_stained_glass"},{"id":"minecraft:white_stained_glass_pane","localizedName":"White Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_stained_glass_pane"},{"id":"minecraft:white_terracotta","localizedName":"White Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_terracotta"},{"id":"minecraft:white_tulip","localizedName":"White Tulip","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_tulip"},{"id":"minecraft:white_wool","localizedName":"White Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.white_wool"},{"id":"minecraft:witch_spawn_egg","localizedName":"Witch Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.witch_spawn_egg"},{"id":"minecraft:wither_rose","localizedName":"Wither Rose","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wither_rose"},{"id":"minecraft:wither_skeleton_skull","localizedName":"Wither Skeleton Skull","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.wither_skeleton_skull"},{"id":"minecraft:wither_skeleton_spawn_egg","localizedName":"Wither Skeleton Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wither_skeleton_spawn_egg"},{"id":"minecraft:wolf_spawn_egg","localizedName":"Wolf Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.wolf_spawn_egg"},{"id":"minecraft:wooden_axe","localizedName":"Wooden Axe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_axe"},{"id":"minecraft:wooden_hoe","localizedName":"Wooden Hoe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_hoe"},{"id":"minecraft:wooden_pickaxe","localizedName":"Wooden Pickaxe","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_pickaxe"},{"id":"minecraft:wooden_shovel","localizedName":"Wooden Shovel","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_shovel"},{"id":"minecraft:wooden_sword","localizedName":"Wooden Sword","maxDamage":59,"maxStackSize":1,"unlocalizedName":"item.minecraft.wooden_sword"},{"id":"minecraft:writable_book","localizedName":"Book and Quill","maxDamage":0,"maxStackSize":1,"unlocalizedName":"item.minecraft.writable_book"},{"id":"minecraft:written_book","localizedName":"Written Book","maxDamage":0,"maxStackSize":16,"unlocalizedName":"item.minecraft.written_book"},{"id":"minecraft:yellow_banner","localizedName":"Yellow Banner","maxDamage":0,"maxStackSize":16,"unlocalizedName":"block.minecraft.yellow_banner"},{"id":"minecraft:yellow_bed","localizedName":"Yellow Bed","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.yellow_bed"},{"id":"minecraft:yellow_candle","localizedName":"Yellow Candle","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_candle"},{"id":"minecraft:yellow_carpet","localizedName":"Yellow Carpet","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_carpet"},{"id":"minecraft:yellow_concrete","localizedName":"Yellow Concrete","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_concrete"},{"id":"minecraft:yellow_concrete_powder","localizedName":"Yellow Concrete Powder","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_concrete_powder"},{"id":"minecraft:yellow_dye","localizedName":"Yellow Dye","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.yellow_dye"},{"id":"minecraft:yellow_glazed_terracotta","localizedName":"Yellow Glazed Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_glazed_terracotta"},{"id":"minecraft:yellow_shulker_box","localizedName":"Yellow Shulker Box","maxDamage":0,"maxStackSize":1,"unlocalizedName":"block.minecraft.yellow_shulker_box"},{"id":"minecraft:yellow_stained_glass","localizedName":"Yellow Stained Glass","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_stained_glass"},{"id":"minecraft:yellow_stained_glass_pane","localizedName":"Yellow Stained Glass Pane","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_stained_glass_pane"},{"id":"minecraft:yellow_terracotta","localizedName":"Yellow Terracotta","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_terracotta"},{"id":"minecraft:yellow_wool","localizedName":"Yellow Wool","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.yellow_wool"},{"id":"minecraft:zoglin_spawn_egg","localizedName":"Zoglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zoglin_spawn_egg"},{"id":"minecraft:zombie_head","localizedName":"Zombie Head","maxDamage":0,"maxStackSize":64,"unlocalizedName":"block.minecraft.zombie_head"},{"id":"minecraft:zombie_horse_spawn_egg","localizedName":"Zombie Horse Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_horse_spawn_egg"},{"id":"minecraft:zombie_spawn_egg","localizedName":"Zombie Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_spawn_egg"},{"id":"minecraft:zombie_villager_spawn_egg","localizedName":"Zombie Villager Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombie_villager_spawn_egg"},{"id":"minecraft:zombified_piglin_spawn_egg","localizedName":"Zombified Piglin Spawn Egg","maxDamage":0,"maxStackSize":64,"unlocalizedName":"item.minecraft.zombified_piglin_spawn_egg"}] \ No newline at end of file From d25669abe7079ee3bc46b013332c3fde067243fd Mon Sep 17 00:00:00 2001 From: Maddy Miller Date: Wed, 24 Apr 2024 20:33:44 +1000 Subject: [PATCH 02/23] Disable chunk batching by default (#2509) --- .../src/main/java/com/sk89q/worldedit/EditSession.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java index 7cccce3ebd..f39025cef4 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/EditSession.java @@ -272,7 +272,7 @@ public String getDisplayName() { @SuppressWarnings("deprecation") MultiStageReorder reorder = new MultiStageReorder(extent, false); extent = traceIfNeeded(reorderExtent = reorder); - extent = traceIfNeeded(chunkBatchingExtent = new ChunkBatchingExtent(extent)); + extent = traceIfNeeded(chunkBatchingExtent = new ChunkBatchingExtent(extent, false)); extent = wrapExtent(extent, eventBus, event, Stage.BEFORE_REORDER); if (watchdog != null) { // reset before buffering extents, since they may buffer all changes @@ -360,9 +360,6 @@ private List getActiveTracingExtents() { * chunk batching}. */ public void enableStandardMode() { - if (chunkBatchingExtent != null) { - setBatchingChunks(true); - } } /** From f1cdd6a978c86b600670b79304be95b52ce0a511 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sun, 7 Apr 2024 01:54:49 -0700 Subject: [PATCH 03/23] Update for Java 21 - Fix some new warnings - Removed sponge from build, as it simply isn't maintained well currently. May be removed entirely in the future - Remove 1.18 support from Bukkit as it breaks under 21 for some reason - Fix a bug in `ForwardSeekableInputStream` --- buildSrc/build.gradle.kts | 20 +++++++++++++++---- buildSrc/src/main/kotlin/AdapterConfig.kt | 7 ++++++- buildSrc/src/main/kotlin/CommonConfig.kt | 2 +- buildSrc/src/main/kotlin/CommonJavaConfig.kt | 3 ++- buildSrc/src/main/kotlin/PlatformConfig.kt | 2 +- gradle.properties | 4 ++-- settings.gradle.kts | 4 ++-- verification/build.gradle.kts | 2 +- worldedit-core/build.gradle.kts | 2 +- worldedit-core/doctools/build.gradle.kts | 8 +------- .../sk89q/worldedit/WorldEditManifest.java | 4 ++-- .../sk89q/worldedit/entity/BaseEntity.java | 3 +++ .../extent/validation/BlockChangeLimiter.java | 1 + .../worldedit/regions/Polygonal2DRegion.java | 10 +++------- .../util/io/ForwardSeekableInputStream.java | 3 ++- .../sk89q/worldedit/util/net/HttpRequest.java | 9 ++------- .../worldedit/util/paste/EngineHubPaste.java | 3 ++- .../util/task/FutureForwardingTask.java | 13 ++++++------ .../util/translation/TranslationManager.java | 2 +- .../worldedit/world/block/BlockType.java | 7 +++++++ .../worldedit/world/chunk/AnvilChunk13.java | 2 +- .../sk89q/worldedit/world/item/ItemType.java | 4 +++- worldedit-fabric/build.gradle.kts | 2 +- worldedit-forge/build.gradle.kts | 2 +- .../worldedit/forge/ForgeResourceLoader.java | 5 +++-- worldedit-sponge/build.gradle.kts | 2 +- 26 files changed, 73 insertions(+), 53 deletions(-) diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 095eca217c..c4ff0808fe 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -46,16 +46,28 @@ val mixinVersion: String = properties.getProperty("mixin.version") dependencies { implementation(gradleApi()) implementation("gradle.plugin.org.cadixdev.gradle:licenser:0.6.1") - implementation("org.ajoberstar.grgit:grgit-gradle:5.2.1") - implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.0") + implementation("org.ajoberstar.grgit:grgit-gradle:5.2.2") + implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.2") implementation("com.github.johnrengelman:shadow:8.1.1") - implementation("org.jfrog.buildinfo:build-info-extractor-gradle:5.1.14") + implementation("org.jfrog.buildinfo:build-info-extractor-gradle:5.2.0") implementation("org.spongepowered:spongegradle-plugin-development:2.2.0") implementation("org.spongepowered:vanillagradle:0.2.1-20231105.223944-69") implementation("net.minecraftforge.gradle:ForgeGradle:6.0.21") implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.2.0") - implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.5.11") + implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.5.13") implementation("org.spongepowered:mixingradle:0.7.38") + constraints { + val asmVersion = "[9.7,)" + implementation("org.ow2.asm:asm:$asmVersion") { + because("Need Java 21 support in shadow") + } + implementation("org.ow2.asm:asm-commons:$asmVersion") { + because("Need Java 21 support in shadow") + } + implementation("org.vafer:jdependency:[2.10,)") { + because("Need Java 21 support in shadow") + } + } } diff --git a/buildSrc/src/main/kotlin/AdapterConfig.kt b/buildSrc/src/main/kotlin/AdapterConfig.kt index 04b30cbc7e..c940cb51d4 100644 --- a/buildSrc/src/main/kotlin/AdapterConfig.kt +++ b/buildSrc/src/main/kotlin/AdapterConfig.kt @@ -4,7 +4,7 @@ import org.gradle.kotlin.dsl.dependencies // For specific version pinning, see // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ -fun Project.applyPaperweightAdapterConfiguration(javaRelease: Int = 17) { +fun Project.applyPaperweightAdapterConfiguration(javaRelease: Int = 21) { applyCommonConfiguration() apply(plugin = "java-library") applyCommonJavaConfiguration( @@ -16,6 +16,11 @@ fun Project.applyPaperweightAdapterConfiguration(javaRelease: Int = 17) { dependencies { "implementation"(project(":worldedit-bukkit")) + constraints { + "remapper"("net.fabricmc:tiny-remapper:[0.8.11,)") { + because("Need remapper to support Java 21") + } + } } tasks.named("assemble") { diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index ba0f6bde87..e8bd844bbb 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -35,7 +35,7 @@ fun Project.applyCommonConfiguration() { plugins.withId("java") { the().toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(21)) } } diff --git a/buildSrc/src/main/kotlin/CommonJavaConfig.kt b/buildSrc/src/main/kotlin/CommonJavaConfig.kt index c71ec265f6..5df3fb4f20 100644 --- a/buildSrc/src/main/kotlin/CommonJavaConfig.kt +++ b/buildSrc/src/main/kotlin/CommonJavaConfig.kt @@ -21,8 +21,9 @@ fun Project.applyCommonJavaConfiguration(sourcesJar: Boolean, javaRelease: Int = .withType() .matching { it.name == "compileJava" || it.name == "compileTestJava" } .configureEach { + // TODO: re-enable this-escape when ANTLR suppresses it properly val disabledLint = listOf( - "processing", "path", "fallthrough", "serial", "overloads", + "processing", "path", "fallthrough", "serial", "overloads", "this-escape", ) options.release.set(javaRelease) options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" }) diff --git a/buildSrc/src/main/kotlin/PlatformConfig.kt b/buildSrc/src/main/kotlin/PlatformConfig.kt index b39ee71939..cdf30b7a8f 100644 --- a/buildSrc/src/main/kotlin/PlatformConfig.kt +++ b/buildSrc/src/main/kotlin/PlatformConfig.kt @@ -11,7 +11,7 @@ import org.gradle.kotlin.dsl.named import org.gradle.kotlin.dsl.register import kotlin.collections.set -fun Project.applyPlatformAndCoreConfiguration(javaRelease: Int = 17) { +fun Project.applyPlatformAndCoreConfiguration(javaRelease: Int = 21) { applyCommonConfiguration() apply(plugin = "java") apply(plugin = "maven-publish") diff --git a/gradle.properties b/gradle.properties index b9fb782bcf..1642c4490e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ version=7.3.1-SNAPSHOT org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true -loom.version=1.5.6 -mixin.version=0.12.5+mixin.0.8.5 +loom.version=1.6.6 +mixin.version=0.13.2+mixin.0.8.5 diff --git a/settings.gradle.kts b/settings.gradle.kts index 0ae0b6bc14..0b145f0b92 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,11 +16,11 @@ rootProject.name = "worldedit" include("worldedit-libs") -listOf("1.18.2", "1.19.4", "1.20", "1.20.2", "1.20.4").forEach { +listOf("1.19.4", "1.20", "1.20.2", "1.20.4").forEach { include("worldedit-bukkit:adapters:adapter-$it") } -listOf("bukkit", "core", "sponge", "fabric", "forge", "cli").forEach { +listOf("bukkit", "core", "fabric", "forge", "cli").forEach { include("worldedit-libs:$it") include("worldedit-$it") } diff --git a/verification/build.gradle.kts b/verification/build.gradle.kts index 98aea05f62..d855e6208a 100644 --- a/verification/build.gradle.kts +++ b/verification/build.gradle.kts @@ -43,7 +43,7 @@ tasks.check { // Generic setup for all tasks // Pull the version before our current version. val baseVersion = "(,${rootProject.version.toString().substringBefore("-SNAPSHOT")}[" -for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "forge", "sponge")) { +for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "forge")) { val capitalizedFragment = projectFragment.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.ROOT) else it.toString() } val proj = project(":worldedit-$projectFragment") diff --git a/worldedit-core/build.gradle.kts b/worldedit-core/build.gradle.kts index 17a8a7cf46..96f859cba5 100644 --- a/worldedit-core/build.gradle.kts +++ b/worldedit-core/build.gradle.kts @@ -57,7 +57,7 @@ dependencies { "implementation"("it.unimi.dsi:fastutil") - val antlrVersion = "4.9.1" + val antlrVersion = "4.13.1" "antlr"("org.antlr:antlr4:$antlrVersion") "implementation"("org.antlr:antlr4-runtime:$antlrVersion") diff --git a/worldedit-core/doctools/build.gradle.kts b/worldedit-core/doctools/build.gradle.kts index 6f2123f20f..f51cc415ea 100644 --- a/worldedit-core/doctools/build.gradle.kts +++ b/worldedit-core/doctools/build.gradle.kts @@ -1,16 +1,10 @@ -import org.jetbrains.kotlin.gradle.tasks.KotlinCompile - plugins { - kotlin("jvm") version "1.8.20" + kotlin("jvm") version "1.9.23" application } applyCommonConfiguration() -tasks.withType { - kotlinOptions.jvmTarget = "17" -} - application.mainClass.set("com.sk89q.worldedit.internal.util.DocumentationPrinter") tasks.named("run") { workingDir = rootProject.projectDir diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java b/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java index 8d8de2af7b..2132f727e9 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.net.JarURLConnection; +import java.net.URI; import java.net.URL; import java.util.function.Supplier; import java.util.jar.Attributes; @@ -72,8 +73,7 @@ public static WorldEditManifest load() { } try { - URL url = new URL(classPath); - JarURLConnection jarConnection = (JarURLConnection) url.openConnection(); + JarURLConnection jarConnection = (JarURLConnection) URI.create(classPath).toURL().openConnection(); Manifest manifest = jarConnection.getManifest(); return manifest.getMainAttributes(); } catch (IOException e) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java b/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java index 74cc77738b..36935125af 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/entity/BaseEntity.java @@ -55,6 +55,7 @@ public class BaseEntity implements NbtValued { * @param nbtData NBT data * @deprecated Use {@link BaseEntity#BaseEntity(EntityType, LazyReference)} */ + @SuppressWarnings("this-escape") @Deprecated public BaseEntity(EntityType type, CompoundTag nbtData) { this(type); @@ -67,6 +68,7 @@ public BaseEntity(EntityType type, CompoundTag nbtData) { * @param type the entity type * @param nbtData NBT data */ + @SuppressWarnings("this-escape") public BaseEntity(EntityType type, LazyReference nbtData) { this(type); setNbtReference(nbtData); @@ -86,6 +88,7 @@ public BaseEntity(EntityType type) { * * @param other the object to clone */ + @SuppressWarnings("this-escape") public BaseEntity(BaseEntity other) { checkNotNull(other); this.type = other.getType(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/validation/BlockChangeLimiter.java b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/validation/BlockChangeLimiter.java index dd93c8527d..91a64ba38b 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/extent/validation/BlockChangeLimiter.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/extent/validation/BlockChangeLimiter.java @@ -43,6 +43,7 @@ public class BlockChangeLimiter extends AbstractDelegateExtent { * @param extent the extent * @param limit the limit (>= 0) or -1 for no limit */ + @SuppressWarnings("this-escape") // Unlikely anyone is extending this in practice public BlockChangeLimiter(Extent extent, int limit) { super(extent); setLimit(limit); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java index 30fde408ce..b54baed6e0 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/regions/Polygonal2DRegion.java @@ -276,17 +276,13 @@ public void contract(BlockVector3... changes) throws RegionOperationException { @Override public void shift(BlockVector3 change) throws RegionOperationException { - final double changeX = change.x(); - final double changeY = change.y(); - final double changeZ = change.z(); - for (int i = 0; i < points.size(); ++i) { BlockVector2 point = points.get(i); - points.set(i, BlockVector2.at(point.x() + changeX, point.z() + changeZ)); + points.set(i, BlockVector2.at(point.x() + change.x(), point.z() + change.z())); } - minY += changeY; - maxY += changeY; + minY += change.y(); + maxY += change.y(); recalculate(); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/ForwardSeekableInputStream.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/ForwardSeekableInputStream.java index 3fb87bde35..328bfdb8cf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/ForwardSeekableInputStream.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/io/ForwardSeekableInputStream.java @@ -60,7 +60,7 @@ public boolean markSupported() { @Override public int read(byte[] b, int off, int len) throws IOException { - int read = super.read(b, off, len); + int read = parent.read(b, off, len); position += read; return read; } @@ -86,6 +86,7 @@ public long skip(long n) throws IOException { public void seek(long n) throws IOException { long diff = n - position; + System.err.println("Seek to " + n + " from position " + position + " using " + diff); if (diff < 0) { throw new IOException("Can't seek backwards"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java index cdcb894ead..b06e81f826 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java @@ -353,7 +353,7 @@ public static HttpRequest request(String method, URL url) { */ public static URL url(String url) { try { - return new URL(url); + return URI.create(url).toURL(); } catch (MalformedURLException e) { throw new RuntimeException(e); } @@ -367,12 +367,7 @@ public static URL url(String url) { */ private static URL reformat(URL existing) { try { - URL url = new URL(existing.toString()); - URI uri = new URI( - url.getProtocol(), url.getUserInfo(), url.getHost(), url.getPort(), - url.getPath(), url.getQuery(), url.getRef()); - url = uri.toURL(); - return url; + return existing.toURI().toURL(); } catch (MalformedURLException | URISyntaxException e) { return existing; } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java index a5bf59e4f7..0e66ac24cb 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java @@ -24,6 +24,7 @@ import com.sk89q.worldedit.util.net.HttpRequest; import java.io.IOException; +import java.net.URI; import java.net.URL; import java.util.Map; import java.util.concurrent.Callable; @@ -82,7 +83,7 @@ public URL call() throws IOException, InterruptedException { .execute() .expectResponseCode(200, 204); - return new URL(response.viewUrl); + return URI.create(response.viewUrl).toURL(); } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/task/FutureForwardingTask.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/task/FutureForwardingTask.java index 07cde87f10..a30b523dd5 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/task/FutureForwardingTask.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/task/FutureForwardingTask.java @@ -82,21 +82,22 @@ public V get(long timeout, TimeUnit unit) throws InterruptedException, Execution return future.get(timeout, unit); } + // TODO: consider deprecating in favor of Future.State? @Override - public State getState() { + public Task.State getState() { if (isCancelled()) { - return State.CANCELLED; + return Task.State.CANCELLED; } else if (isDone()) { try { get(); - return State.SUCCEEDED; + return Task.State.SUCCEEDED; } catch (InterruptedException e) { - return State.CANCELLED; + return Task.State.CANCELLED; } catch (ExecutionException e) { - return State.FAILED; + return Task.State.FAILED; } } else { - return State.RUNNING; + return Task.State.RUNNING; } } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java index ddeecbcced..432383fb87 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/translation/TranslationManager.java @@ -158,7 +158,7 @@ private MessageFormat getTranslation(Locale locale, String key) { // Recurse into other options if not already at the base condition (defaultLocale) if (!locale.getCountry().isEmpty()) { // try without country modifier - return getTranslation(new Locale(locale.getLanguage()), key); + return getTranslation(Locale.of(locale.getLanguage()), key); } // otherwise, try the default locale return getTranslation(defaultLocale, key); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockType.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockType.java index 331c110374..27cfe95270 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockType.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockType.java @@ -49,21 +49,28 @@ public class BlockType implements Keyed { private final Function values; private final LazyReference defaultState = LazyReference.from(this::computeDefaultState); + @SuppressWarnings("this-escape") private final LazyReference emptyFuzzy = LazyReference.from(() -> new FuzzyBlockState(this)); + @SuppressWarnings("this-escape") private final LazyReference>> properties = LazyReference.from(() -> ImmutableMap.copyOf(WorldEdit.getInstance().getPlatformManager() .queryCapability(Capability.GAME_HOOKS).getRegistries().getBlockRegistry().getProperties(this))); + @SuppressWarnings("this-escape") private final LazyReference blockMaterial = LazyReference.from(() -> WorldEdit.getInstance().getPlatformManager() .queryCapability(Capability.GAME_HOOKS).getRegistries().getBlockRegistry().getMaterial(this)); + @SuppressWarnings("this-escape") private final LazyReference, Object>, BlockState>> blockStatesMap = LazyReference.from(() -> BlockState.generateStateMap(this)); + @SuppressWarnings("this-escape") @Deprecated private final LazyReference name = LazyReference.from(() -> WorldEdit.getInstance().getPlatformManager() .queryCapability(Capability.GAME_HOOKS).getRegistries().getBlockRegistry().getName(this)); + @SuppressWarnings("this-escape") private final LazyReference legacyId = LazyReference.from(() -> computeLegacy(0)); + @SuppressWarnings("this-escape") private final LazyReference legacyData = LazyReference.from(() -> computeLegacy(1)); public BlockType(String id) { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk13.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk13.java index 687607c454..dcb9979802 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk13.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/chunk/AnvilChunk13.java @@ -156,7 +156,7 @@ protected void readBlockStates(BlockState[] palette, long[] blockStatesSerialize throw new InvalidFormatException("Too short block state table"); } currentSerializedValue = blockStatesSerialized[nextSerializedItem++]; - localBlockId |= (currentSerializedValue & ((1L << bitsNextLong) - 1)) << remainingBits; + localBlockId |= (int) (currentSerializedValue & ((1L << bitsNextLong) - 1)) << remainingBits; currentSerializedValue >>>= bitsNextLong; remainingBits = 64 - bitsNextLong; } else { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemType.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemType.java index fc838c3968..29e44fd916 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemType.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemType.java @@ -37,7 +37,7 @@ public class ItemType implements Keyed { public static final NamespacedRegistry REGISTRY = new NamespacedRegistry<>("item type", true); private final String id; - @SuppressWarnings("deprecation") + @SuppressWarnings({"deprecation", "this-escape"}) private final LazyReference name = LazyReference.from(() -> { String name = GuavaUtil.firstNonNull( WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS) @@ -46,10 +46,12 @@ public class ItemType implements Keyed { ); return name.isEmpty() ? id() : name; }); + @SuppressWarnings("this-escape") private final LazyReference richName = LazyReference.from(() -> WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS) .getRegistries().getItemRegistry().getRichName(this) ); + @SuppressWarnings("this-escape") private final LazyReference itemMaterial = LazyReference.from(() -> WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS) .getRegistries().getItemRegistry().getMaterial(this) diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index 00e2b8b4f1..f0eb430da9 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -8,7 +8,7 @@ plugins { `java-library` } -applyPlatformAndCoreConfiguration(javaRelease = 17) +applyPlatformAndCoreConfiguration() applyShadowConfiguration() val minecraftVersion = "1.20.4" diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts index 84c5c694ad..522d21da28 100644 --- a/worldedit-forge/build.gradle.kts +++ b/worldedit-forge/build.gradle.kts @@ -10,7 +10,7 @@ plugins { `java-library` } -applyPlatformAndCoreConfiguration(javaRelease = 17) +applyPlatformAndCoreConfiguration() applyShadowConfiguration() val minecraftVersion = "1.20.4" diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java index 043ffb24c7..cb480efdb2 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java @@ -23,6 +23,7 @@ import com.sk89q.worldedit.util.io.WorldEditResourceLoader; import java.io.IOException; +import java.net.URI; import java.net.URL; public class ForgeResourceLoader extends WorldEditResourceLoader { @@ -33,9 +34,9 @@ public ForgeResourceLoader(WorldEdit worldEdit) { private static URL getResourceForgeHack(String location) throws IOException { try { - URL url = new URL("modjar://worldedit/" + location); + URL url = URI.create("modjar://worldedit/" + location).toURL(); try { - url.openStream(); + url.openStream().close(); } catch (IOException e) { // doesn't actually exist return null; diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index 2844f523e8..3debe99bad 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -7,7 +7,7 @@ plugins { id("org.spongepowered.gradle.vanilla") } -applyPlatformAndCoreConfiguration(javaRelease = 17) +applyPlatformAndCoreConfiguration() applyShadowConfiguration() repositories { From ecec974100794d3e0b839dac396727aabb8a290b Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 9 Apr 2024 23:18:18 -0700 Subject: [PATCH 04/23] Fix version of Java for launching in Fabric --- worldedit-fabric/build.gradle.kts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index f0eb430da9..357d81066d 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -2,6 +2,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import net.fabricmc.loom.api.LoomGradleExtensionAPI import net.fabricmc.loom.configuration.FabricApiExtension import net.fabricmc.loom.task.RemapJarTask +import net.fabricmc.loom.task.RunGameTask plugins { id("fabric-loom") @@ -20,6 +21,10 @@ configure { accessWidenerPath.set(project.file("src/main/resources/worldedit.accesswidener")) } +tasks.withType().configureEach { + javaLauncher.set(javaToolchains.launcherFor(java.toolchain)) +} + repositories { maven { name = "Fabric" From 4f4988235aa8083b66c2001c37e8b8edcb4ab354 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 15 Apr 2024 20:26:07 -0700 Subject: [PATCH 05/23] [Fabric] Update to 1.20.5-pre2, some LinBus-related stuff --- gradle.properties | 4 +- .../util/collection/MoreStreams.java | 39 +++++++++++++- worldedit-fabric/build.gradle.kts | 7 ++- .../sk89q/worldedit/fabric/FabricAdapter.java | 53 +++++++++++-------- .../fabric/FabricBlockCommandSender.java | 3 +- .../worldedit/fabric/FabricCommandSender.java | 3 +- .../worldedit/fabric/FabricDataFixer.java | 32 +++++------ .../sk89q/worldedit/fabric/FabricPlayer.java | 25 +++++---- .../sk89q/worldedit/fabric/FabricWorld.java | 32 ++++------- .../worldedit/fabric/FabricWorldEdit.java | 17 +++++- .../fabric/WorldEditGenListener.java | 2 +- .../fabric/internal/FabricEntity.java | 8 ++- .../FabricServerLevelDelegateProxy.java | 7 ++- .../internal/FabricWorldNativeAccess.java | 5 +- .../net/handler/WECUIPacketHandler.java | 27 ++++++++-- 15 files changed, 171 insertions(+), 93 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1642c4490e..8e0e3202bd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,5 @@ version=7.3.1-SNAPSHOT org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true -loom.version=1.6.6 -mixin.version=0.13.2+mixin.0.8.5 +loom.version=1.6.9 +mixin.version=0.13.3+mixin.0.8.5 diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/collection/MoreStreams.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/collection/MoreStreams.java index a60204bd46..0abbf4c060 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/collection/MoreStreams.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/collection/MoreStreams.java @@ -21,17 +21,22 @@ import com.google.common.collect.AbstractIterator; +import java.nio.ByteBuffer; +import java.nio.IntBuffer; +import java.nio.LongBuffer; import java.util.Iterator; import java.util.Spliterator; import java.util.Spliterators; import java.util.function.Predicate; +import java.util.stream.IntStream; +import java.util.stream.LongStream; import java.util.stream.Stream; import java.util.stream.StreamSupport; import static java.util.Objects.requireNonNull; /** - * Additionally stream facilities. + * Additional stream facilities. */ public class MoreStreams { @@ -78,6 +83,38 @@ private T done() { ), stream.isParallel()).onClose(stream::close); } + /** + * Create a stream of every element in the given buffer view, from it's current position to it's current limit. + * The position of the buffer is not modified. + * + *

The bytes are sign-extended to be ints. This means {@code -1} will still be {@code -1}.

+ * + * @param buffer the buffer to stream + */ + public static IntStream bufferStream(ByteBuffer buffer) { + return IntStream.range(buffer.position(), buffer.limit()).map(buffer::get); + } + + /** + * Create a stream of every element in the given buffer view, from it's current position to it's current limit. + * The position of the buffer is not modified. + * + * @param buffer the buffer to stream + */ + public static IntStream bufferStream(IntBuffer buffer) { + return IntStream.range(buffer.position(), buffer.limit()).map(buffer::get); + } + + /** + * Create a stream of every element in the given buffer view, from it's current position to it's current limit. + * The position of the buffer is not modified. + * + * @param buffer the buffer to stream + */ + public static LongStream bufferStream(LongBuffer buffer) { + return IntStream.range(buffer.position(), buffer.limit()).mapToLong(buffer::get); + } + private MoreStreams() { } } diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index 357d81066d..cdc06a6e4b 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -12,8 +12,7 @@ plugins { applyPlatformAndCoreConfiguration() applyShadowConfiguration() -val minecraftVersion = "1.20.4" -val loaderVersion = "0.15.1" +val minecraftVersion = "1.20.5-pre2" val fabricApiConfiguration: Configuration = configurations.create("fabricApi") @@ -45,7 +44,7 @@ dependencies { "minecraft"("com.mojang:minecraft:$minecraftVersion") "mappings"(project.the().officialMojangMappings()) - "modImplementation"("net.fabricmc:fabric-loader:$loaderVersion") + "modImplementation"("net.fabricmc:fabric-loader:0.15.10") // [1] Load the API dependencies from the fabric mod json... @@ -58,7 +57,7 @@ dependencies { .toSet() // [2] Request the matching dependency from fabric-loom for (wantedDependency in wantedDependencies) { - val dep = project.the().module(wantedDependency, "0.91.1+1.20.4") + val dep = project.the().module(wantedDependency, "0.97.1+1.20.5") "include"(dep) "modImplementation"(dep) } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricAdapter.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricAdapter.java index 053a7a4ce4..8556974f60 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricAdapter.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricAdapter.java @@ -19,6 +19,7 @@ package com.sk89q.worldedit.fabric; +import com.mojang.serialization.Codec; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.fabric.internal.FabricTransmogrifier; @@ -40,7 +41,10 @@ import com.sk89q.worldedit.world.item.ItemTypes; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.StringRepresentable; @@ -52,6 +56,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.Vec3; +import org.enginehub.linbus.tree.LinCompoundTag; import java.util.Comparator; import java.util.Map; @@ -200,12 +205,17 @@ public static BlockState adapt(net.minecraft.world.level.block.state.BlockState } public static BaseBlock adapt(BlockEntity blockEntity) { + if (!blockEntity.hasLevel()) { + throw new IllegalArgumentException("BlockEntity must have a level"); + } int blockStateId = Block.getId(blockEntity.getBlockState()); BlockState worldEdit = BlockStateIdAccess.getBlockStateById(blockStateId); if (worldEdit == null) { worldEdit = FabricTransmogrifier.transmogToWorldEdit(blockEntity.getBlockState()); } - return worldEdit.toBaseBlock(LazyReference.from(() -> NBTConverter.fromNative(blockEntity.saveWithId()))); + // Save this outside the reference to ensure it doesn't mutate + CompoundTag savedNative = blockEntity.saveWithId(blockEntity.getLevel().registryAccess()); + return worldEdit.toBaseBlock(LazyReference.from(() -> NBTConverter.fromNative(savedNative))); } public static Block adapt(BlockType blockType) { @@ -224,33 +234,34 @@ public static ItemType adapt(Item item) { return ItemTypes.get(FabricWorldEdit.getRegistry(Registries.ITEM).getKey(item).toString()); } + /** + * For serializing and deserializing components. + */ + private static final Codec COMPONENTS_CODEC = DataComponentPatch.CODEC.optionalFieldOf( + "components", DataComponentPatch.EMPTY + ).codec(); + public static ItemStack adapt(BaseItemStack baseItemStack) { - net.minecraft.nbt.CompoundTag fabricCompound = null; - if (baseItemStack.getNbt() != null) { - fabricCompound = NBTConverter.toNative(baseItemStack.getNbt()); - } final ItemStack itemStack = new ItemStack(adapt(baseItemStack.getType()), baseItemStack.getAmount()); - itemStack.setTag(fabricCompound); + LinCompoundTag nbt = baseItemStack.getNbt(); + if (nbt != null) { + DataComponentPatch componentPatch = COMPONENTS_CODEC.parse( + FabricWorldEdit.registryAccess().createSerializationContext(NbtOps.INSTANCE), + NBTConverter.toNative(nbt) + ).getOrThrow(); + itemStack.applyComponents(componentPatch); + } return itemStack; } public static BaseItemStack adapt(ItemStack itemStack) { - net.minecraft.nbt.CompoundTag tag = itemStack.save(new net.minecraft.nbt.CompoundTag()); - if (tag.isEmpty()) { - tag = null; - } else { - final net.minecraft.nbt.Tag tagTag = tag.get("tag"); - if (tagTag instanceof net.minecraft.nbt.CompoundTag) { - tag = ((net.minecraft.nbt.CompoundTag) tagTag); - } else { - tag = null; - } - } - net.minecraft.nbt.CompoundTag finalTag = tag; + CompoundTag tag = (CompoundTag) COMPONENTS_CODEC.encodeStart( + FabricWorldEdit.registryAccess().createSerializationContext(NbtOps.INSTANCE), + itemStack.getComponentsPatch() + ).getOrThrow(); return new BaseItemStack( - adapt(itemStack.getItem()), - finalTag == null ? null : LazyReference.from(() -> NBTConverter.fromNative(finalTag)), - itemStack.getCount()); + adapt(itemStack.getItem()), LazyReference.from(() -> NBTConverter.fromNative(tag)), itemStack.getCount() + ); } /** diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCommandSender.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCommandSender.java index 02fc468b9e..8368f0430c 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCommandSender.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCommandSender.java @@ -85,7 +85,8 @@ public void printError(String msg) { @Override public void print(Component component) { sendMessage(net.minecraft.network.chat.Component.Serializer.fromJson( - GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())) + GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())), + this.sender.getLevel().registryAccess() )); } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricCommandSender.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricCommandSender.java index 7240319a6c..9d169170ba 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricCommandSender.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricCommandSender.java @@ -90,7 +90,8 @@ public void printError(String msg) { @Override public void print(Component component) { sendMessage(net.minecraft.network.chat.Component.Serializer.fromJson( - GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())) + GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())), + this.sender.registryAccess() )); } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java index 623935cd4d..0a2d62b99c 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricDataFixer.java @@ -38,6 +38,7 @@ import com.mojang.serialization.Dynamic; import com.sk89q.worldedit.fabric.internal.NBTConverter; import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.FloatTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.NbtOps; @@ -66,6 +67,7 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.Executor; +import java.util.function.Function; import java.util.stream.Collectors; import javax.annotation.Nullable; @@ -107,22 +109,22 @@ public T fixUp(FixType type, T original, int srcVer) { return original; } + private static LinCompoundTag applyAsNbt(LinCompoundTag original, Function function) { + CompoundTag originalNative = NBTConverter.toNative(original); + CompoundTag fixedNative = function.apply(originalNative); + return NBTConverter.fromNative(fixedNative); + } + private LinCompoundTag fixChunk(LinCompoundTag originalChunk, int srcVer) { - net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(originalChunk); - net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.CHUNK, tag, srcVer); - return NBTConverter.fromNative(fixed); + return applyAsNbt(originalChunk, tag -> convert(References.CHUNK, tag, srcVer)); } private LinCompoundTag fixBlockEntity(LinCompoundTag origTileEnt, int srcVer) { - net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(origTileEnt); - net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.BLOCK_ENTITY, tag, srcVer); - return NBTConverter.fromNative(fixed); + return applyAsNbt(origTileEnt, tag -> convert(References.BLOCK_ENTITY, tag, srcVer)); } private LinCompoundTag fixEntity(LinCompoundTag origEnt, int srcVer) { - net.minecraft.nbt.CompoundTag tag = NBTConverter.toNative(origEnt); - net.minecraft.nbt.CompoundTag fixed = convert(LegacyType.ENTITY, tag, srcVer); - return NBTConverter.fromNative(fixed); + return applyAsNbt(origEnt, tag -> convert(References.ENTITY, tag, srcVer)); } private String fixBlockState(String blockState, int srcVer) { @@ -1881,7 +1883,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (object == null) { try { - object = Component.Serializer.fromJson(s); + object = Component.Serializer.fromJson(s, FabricWorldEdit.registryAccess()); } catch (JsonParseException jsonparseexception1) { ; } @@ -1889,7 +1891,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (object == null) { try { - object = Component.Serializer.fromJsonLenient(s); + object = Component.Serializer.fromJsonLenient(s, FabricWorldEdit.registryAccess()); } catch (JsonParseException jsonparseexception2) { ; } @@ -1903,7 +1905,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) object = Component.literal(""); } - nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson((Component) object))); + nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson((Component) object, FabricWorldEdit.registryAccess()))); } nbttagcompound1.put("pages", nbttaglist); @@ -2546,7 +2548,7 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (object == null) { try { - object = Component.Serializer.fromJson(s1); + object = Component.Serializer.fromJson(s1, FabricWorldEdit.registryAccess()); } catch (JsonParseException jsonparseexception1) { ; } @@ -2554,7 +2556,7 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (object == null) { try { - object = Component.Serializer.fromJsonLenient(s1); + object = Component.Serializer.fromJsonLenient(s1, FabricWorldEdit.registryAccess()); } catch (JsonParseException jsonparseexception2) { ; } @@ -2568,7 +2570,7 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { object = Component.literal(""); } - nbttagcompound.putString(s, Component.Serializer.toJson((Component) object)); + nbttagcompound.putString(s, Component.Serializer.toJson((Component) object, FabricWorldEdit.registryAccess())); } } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java index 258d034164..52f512756a 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java @@ -40,11 +40,9 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockTypes; -import io.netty.buffer.Unpooled; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; @@ -55,7 +53,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType; import org.enginehub.linbus.tree.LinCompoundTag; -import java.nio.charset.StandardCharsets; import java.util.Locale; import java.util.UUID; import javax.annotation.Nullable; @@ -94,10 +91,10 @@ public BaseEntity getState() { public Location getLocation() { Vector3 position = Vector3.at(this.player.getX(), this.player.getY(), this.player.getZ()); return new Location( - FabricWorldEdit.inst.getWorld(this.player.serverLevel()), - position, - this.player.getYRot(), - this.player.getXRot()); + FabricWorldEdit.inst.getWorld(this.player.serverLevel()), + position, + this.player.getYRot(), + this.player.getXRot()); } @Override @@ -132,9 +129,8 @@ public void dispatchCUIEvent(CUIEvent event) { send = send + "|" + StringUtil.joinString(params, "|"); } ServerPlayNetworking.send( - this.player, - WECUIPacketHandler.CUI_IDENTIFIER, - new FriendlyByteBuf(Unpooled.copiedBuffer(send, StandardCharsets.UTF_8)) + this.player, + new WECUIPacketHandler.CuiInitializationPacket(send) ); } @@ -173,7 +169,10 @@ public void printError(String msg) { @Override public void print(Component component) { - this.player.sendSystemMessage(net.minecraft.network.chat.Component.Serializer.fromJson(GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())))); + this.player.sendSystemMessage(net.minecraft.network.chat.Component.Serializer.fromJson( + GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())), + player.level().registryAccess() + )); } private void sendColorized(String msg, ChatFormatting formatting) { @@ -246,8 +245,8 @@ public > void sendFakeBlock(BlockVector3 pos, B bl player.connection.send(new ClientboundBlockEntityDataPacket( new BlockPos(pos.x(), pos.y(), pos.z()), BlockEntityType.STRUCTURE_BLOCK, - NBTConverter.toNative(nbtData)) - ); + NBTConverter.toNative(nbtData) + )); } } } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java index 556a633ba0..1820539755 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorld.java @@ -41,7 +41,6 @@ import com.sk89q.worldedit.fabric.internal.NBTConverter; import com.sk89q.worldedit.function.mask.AbstractExtentMask; import com.sk89q.worldedit.function.mask.Mask; -import com.sk89q.worldedit.function.mask.Mask2D; import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; @@ -93,9 +92,9 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkSource; -import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.PalettedContainer; +import net.minecraft.world.level.chunk.status.ChunkStatus; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.WorldOptions; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; @@ -279,7 +278,8 @@ public boolean useItem(BlockVector3 position, BaseItem item, Direction face) { InteractionResult used = stack.useOn(itemUseContext); if (used != InteractionResult.SUCCESS) { // try activating the block - used = getWorld().getBlockState(blockPos).use(world, fakePlayer, InteractionHand.MAIN_HAND, rayTraceResult); + used = getWorld().getBlockState(blockPos).useItemOn(stack, world, fakePlayer, InteractionHand.MAIN_HAND, rayTraceResult) + .result(); } if (used != InteractionResult.SUCCESS) { used = stack.use(world, fakePlayer, InteractionHand.MAIN_HAND).getResult(); @@ -414,7 +414,7 @@ private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld BlockStateHolder state = FabricAdapter.adapt(chunk.getBlockState(pos)); BlockEntity blockEntity = chunk.getBlockEntity(pos); if (blockEntity != null) { - net.minecraft.nbt.CompoundTag tag = blockEntity.saveWithId(); + net.minecraft.nbt.CompoundTag tag = blockEntity.saveWithId(serverWorld.registryAccess()); state = state.toBaseBlock(LazyReference.from(() -> NBTConverter.fromNative(tag))); } extent.setBlock(vec, state.toBaseBlock()); @@ -432,7 +432,7 @@ private List> submitChunkLoadTasks(Region region, for (BlockVector2 chunk : region.getChunks()) { chunkLoadings.add( world.getChunkSource().getChunkFuture(chunk.x(), chunk.z(), ChunkStatus.FEATURES, true) - .thenApply(either -> either.left().orElse(null)) + .thenApply(either -> either.orElse(null)) ); } return chunkLoadings; @@ -613,12 +613,7 @@ public int getMaxY() { @Override public BlockVector3 getSpawnPosition() { - LevelData worldProps = getWorld().getLevelData(); - return BlockVector3.at( - worldProps.getXSpawn(), - worldProps.getYSpawn(), - worldProps.getZSpawn() - ); + return FabricAdapter.adapt(getWorld().getLevelData().getSpawnPos()); } @Override @@ -637,7 +632,7 @@ public BaseBlock getFullBlock(BlockVector3 position) { BlockEntity tile = ((LevelChunk) getWorld().getChunk(pos)).getBlockEntity(pos, LevelChunk.EntityCreationType.CHECK); if (tile != null) { - net.minecraft.nbt.CompoundTag tag = tile.saveWithId(); + net.minecraft.nbt.CompoundTag tag = tile.saveWithId(getWorld().registryAccess()); return getBlock(position).toBaseBlock(LazyReference.from(() -> NBTConverter.fromNative(tag))); } else { return getBlock(position).toBaseBlock(); @@ -699,10 +694,10 @@ public Entity createEntity(Location location, BaseEntity entity) { if (entityType.isEmpty()) { return null; } - LinCompoundTag nativeTag = entity.getNbt(); + LinCompoundTag linTag = entity.getNbt(); net.minecraft.nbt.CompoundTag tag; - if (nativeTag != null) { - tag = NBTConverter.toNative(nativeTag); + if (linTag != null) { + tag = NBTConverter.toNative(linTag); removeUnwantedEntityTagsRecursively(tag); } else { tag = new net.minecraft.nbt.CompoundTag(); @@ -742,14 +737,7 @@ public Mask createLiquidMask() { public boolean test(BlockVector3 vector) { return FabricAdapter.adapt(getExtent().getBlock(vector)).getBlock() instanceof LiquidBlock; } - - @Nullable - @Override - public Mask2D toMask2D() { - return null; - } }; } - } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java index 345c78e6be..fb4c48277d 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricWorldEdit.java @@ -64,6 +64,7 @@ import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; @@ -114,6 +115,18 @@ public class FabricWorldEdit implements ModInitializer { LIFECYCLED_SERVER = lifecycledServer; } + /** + * {@return current server's registry access} Not for long-term storage. + */ + public static RegistryAccess registryAccess() { + return LIFECYCLED_SERVER.valueOrThrow().registryAccess(); + } + + /** + * {@return current server's registry} Not for long-term storage. + * + * @param key the registry key + */ public static Registry getRegistry(ResourceKey> key) { return LIFECYCLED_SERVER.valueOrThrow().registryAccess().registryOrThrow(key); } @@ -255,13 +268,13 @@ private void setupRegistries(MinecraftServer server) { } }); // Features - for (ResourceLocation name: server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { + for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { if (ConfiguredFeatureType.REGISTRY.get(name.toString()) == null) { ConfiguredFeatureType.REGISTRY.register(name.toString(), new ConfiguredFeatureType(name.toString())); } } // Structures - for (ResourceLocation name: server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { + for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { if (StructureType.REGISTRY.get(name.toString()) == null) { StructureType.REGISTRY.register(name.toString(), new StructureType(name.toString())); } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditGenListener.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditGenListener.java index 3cbd70ffef..8a1ebc2391 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditGenListener.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/WorldEditGenListener.java @@ -23,7 +23,7 @@ import net.fabricmc.api.Environment; import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.chunk.ChunkStatus; +import net.minecraft.world.level.chunk.status.ChunkStatus; import javax.annotation.Nullable; diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java index 1721c52482..af8c858490 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java @@ -26,7 +26,6 @@ import com.sk89q.worldedit.fabric.FabricAdapter; import com.sk89q.worldedit.fabric.FabricEntityProperties; import com.sk89q.worldedit.fabric.FabricWorldEdit; -import com.sk89q.worldedit.fabric.internal.NBTConverter; import com.sk89q.worldedit.math.Vector3; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.concurrency.LazyReference; @@ -34,7 +33,9 @@ import com.sk89q.worldedit.world.entity.EntityTypes; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; +import org.enginehub.linbus.tree.LinCompoundTag; import java.lang.ref.WeakReference; import javax.annotation.Nullable; @@ -59,7 +60,10 @@ public BaseEntity getState() { ResourceLocation id = FabricWorldEdit.getRegistry(Registries.ENTITY_TYPE).getKey(entity.getType()); CompoundTag tag = new CompoundTag(); entity.saveWithoutId(tag); - return new BaseEntity(EntityTypes.get(id.toString()), LazyReference.from(() -> NBTConverter.fromNative(tag))); + return new BaseEntity( + EntityTypes.get(id.toString()), + LazyReference.from(() -> NBTConverter.fromNative(tag)) + ); } @Override diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricServerLevelDelegateProxy.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricServerLevelDelegateProxy.java index 2fdee8b9f1..9263078d74 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricServerLevelDelegateProxy.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricServerLevelDelegateProxy.java @@ -63,7 +63,12 @@ private BlockEntity getBlockEntity(BlockPos blockPos) { return null; } BlockEntity newEntity = tileEntity.getType().create(blockPos, getBlockState(blockPos)); - newEntity.load(NBTConverter.toNative(this.editSession.getFullBlock(FabricAdapter.adapt(blockPos)).getNbtReference().getValue())); + newEntity.loadWithComponents( + NBTConverter.toNative( + this.editSession.getFullBlock(FabricAdapter.adapt(blockPos)).getNbtReference().getValue() + ), + this.serverLevel.registryAccess() + ); return newEntity; } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java index c2b4137fee..55695ac166 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricWorldNativeAccess.java @@ -106,11 +106,12 @@ public void updateLightingForBlock(BlockPos position) { @Override public boolean updateTileEntity(BlockPos position, LinCompoundTag tag) { CompoundTag nativeTag = NBTConverter.toNative(tag); - BlockEntity tileEntity = getWorld().getChunkAt(position).getBlockEntity(position); + Level level = getWorld(); + BlockEntity tileEntity = level.getChunkAt(position).getBlockEntity(position); if (tileEntity == null) { return false; } - tileEntity.load(nativeTag); + tileEntity.loadWithComponents(nativeTag, level.registryAccess()); tileEntity.setChanged(); return true; } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java index 888174e0fb..5a78b532d5 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java @@ -23,7 +23,9 @@ import com.sk89q.worldedit.fabric.FabricAdapter; import com.sk89q.worldedit.fabric.FabricPlayer; import com.sk89q.worldedit.fabric.FabricWorldEdit; +import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry; import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; import net.minecraft.resources.ResourceLocation; import java.nio.charset.StandardCharsets; @@ -34,12 +36,27 @@ private WECUIPacketHandler() { public static final ResourceLocation CUI_IDENTIFIER = new ResourceLocation(FabricWorldEdit.MOD_ID, FabricWorldEdit.CUI_PLUGIN_CHANNEL); + public record CuiInitializationPacket(String text) implements CustomPacketPayload { + public static final Type TYPE = new Type<>(CUI_IDENTIFIER); + + @Override + public Type type() { + return TYPE; + } + } + public static void init() { - ServerPlayNetworking.registerGlobalReceiver(CUI_IDENTIFIER, (server, player, handler, buf, responder) -> { - LocalSession session = FabricWorldEdit.inst.getSession(player); - String text = buf.toString(StandardCharsets.UTF_8); - FabricPlayer actor = FabricAdapter.adaptPlayer(player); - session.handleCUIInitializationMessage(text, actor); + PayloadTypeRegistry.playC2S().register( + CuiInitializationPacket.TYPE, + CustomPacketPayload.codec( + (packet, buffer) -> buffer.writeCharSequence(packet.text(), StandardCharsets.UTF_8), + buffer -> new CuiInitializationPacket(buffer.toString(StandardCharsets.UTF_8)) + ) + ); + ServerPlayNetworking.registerGlobalReceiver(CuiInitializationPacket.TYPE, (payload, context) -> { + LocalSession session = FabricWorldEdit.inst.getSession(context.player()); + FabricPlayer actor = FabricAdapter.adaptPlayer(context.player()); + session.handleCUIInitializationMessage(payload.text(), actor); }); } } From e661e8f2657f5b70b3994e4c3e36bade8c0c652d Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 15 Apr 2024 20:55:37 -0700 Subject: [PATCH 06/23] Update workflows to 21 --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/gradle.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 453f94a57f..1a12615f43 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -29,7 +29,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 17 + java-version: 21 cache: 'gradle' distribution: 'temurin' diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index b86f176a44..38be938e24 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -16,7 +16,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v4 with: - java-version: 17 + java-version: 21 distribution: 'temurin' - name: Setup Gradle From 1cc21d5e958b61364cbc291eba75efc07def11bf Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 23 Apr 2024 18:36:48 -0700 Subject: [PATCH 07/23] [Fabric] 1.20.5 --- worldedit-fabric/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index cdc06a6e4b..d472aa9e28 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -12,7 +12,7 @@ plugins { applyPlatformAndCoreConfiguration() applyShadowConfiguration() -val minecraftVersion = "1.20.5-pre2" +val minecraftVersion = "1.20.5" val fabricApiConfiguration: Configuration = configurations.create("fabricApi") @@ -57,7 +57,7 @@ dependencies { .toSet() // [2] Request the matching dependency from fabric-loom for (wantedDependency in wantedDependencies) { - val dep = project.the().module(wantedDependency, "0.97.1+1.20.5") + val dep = project.the().module(wantedDependency, "0.97.6+1.20.5") "include"(dep) "modImplementation"(dep) } From 0f5e23df6a61d01d3a7e6f1bf9185dca3c89d3d9 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 24 Apr 2024 01:17:53 -0700 Subject: [PATCH 08/23] [NeoForge] 1.20.5 Removes Forge. --- COMPILING.md | 9 +- buildSrc/build.gradle.kts | 13 +- buildSrc/src/main/kotlin/CommonConfig.kt | 10 + buildSrc/src/main/kotlin/PlatformConfig.kt | 2 +- buildSrc/src/main/kotlin/Versions.kt | 2 +- settings.gradle.kts | 2 +- verification/build.gradle.kts | 11 +- worldedit-forge/build.gradle.kts | 191 ------------------ .../forge/internal/TileEntityUtils.java | 55 ----- .../forge/net/handler/PacketHandlerUtil.java | 47 ----- .../forge/net/handler/WECUIPacketHandler.java | 64 ------ .../resources/META-INF/accesstransformer.cfg | 11 - .../src/main/resources/META-INF/mods.toml | 37 ---- .../{forge => neoforge}/build.gradle.kts | 0 worldedit-mod/build.gradle.kts | 8 +- worldedit-neoforge/build.gradle.kts | 125 ++++++++++++ .../worldedit/neoforge}/CommandWrapper.java | 6 +- .../worldedit/neoforge/NeoForgeAdapter.java | 91 +++++---- .../neoforge/NeoForgeBiomeRegistry.java | 4 +- .../NeoForgeBlockCategoryRegistry.java | 20 +- .../neoforge/NeoForgeBlockCommandSender.java | 15 +- .../neoforge/NeoForgeBlockMaterial.java | 6 +- .../neoforge/NeoForgeBlockRegistry.java | 20 +- .../neoforge/NeoForgeCommandSender.java | 9 +- .../neoforge/NeoForgeConfiguration.java | 9 +- .../worldedit/neoforge/NeoForgeDataFixer.java | 35 ++-- .../neoforge/NeoForgeEntityProperties.java | 6 +- .../NeoForgeItemCategoryRegistry.java | 20 +- .../neoforge/NeoForgeItemRegistry.java | 8 +- .../neoforge/NeoForgePermissionsProvider.java | 28 +-- .../worldedit/neoforge/NeoForgePlatform.java | 47 ++--- .../worldedit/neoforge/NeoForgePlayer.java | 42 ++-- .../neoforge/NeoForgeRegistries.java | 18 +- .../neoforge/NeoForgeResourceLoader.java | 6 +- .../worldedit/neoforge/NeoForgeWatchdog.java | 6 +- .../worldedit/neoforge/NeoForgeWorld.java | 112 +++++----- .../worldedit/neoforge/NeoForgeWorldEdit.java | 138 +++++-------- .../worldedit/neoforge}/ThreadSafeCache.java | 14 +- .../neoforge}/WorldEditFakePlayer.java | 2 +- .../neoforge}/WorldEditGenListener.java | 8 +- .../neoforge}/internal/ExtendedChunk.java | 2 +- .../neoforge}/internal/IPropertyAdapter.java | 2 +- .../neoforge}/internal/NBTConverter.java | 2 +- .../neoforge/internal/NeoForgeEntity.java | 24 +-- .../NeoForgeServerLevelDelegateProxy.java | 29 +-- .../internal/NeoForgeTransmogrifier.java | 18 +- .../internal/NeoForgeWorldNativeAccess.java | 21 +- .../mixin/AccessorServerPlayerGameMode.java | 2 +- .../mixin/MixinLevelChunkSetBlockHook.java | 4 +- .../MixinServerGamePacketListenerImpl.java | 10 +- .../net/handler/WECUIPacketHandler.java | 73 +++++++ .../resources/META-INF/accesstransformer.cfg | 10 + .../resources/META-INF/neoforge.mods.toml | 36 ++++ .../resources/defaults/worldedit.properties | 0 .../src/main/resources/pack.mcmeta | 0 .../src/main/resources/worldedit-icon.png | Bin .../resources/worldedit-neoforge.mixins.json | 4 +- 57 files changed, 654 insertions(+), 840 deletions(-) delete mode 100644 worldedit-forge/build.gradle.kts delete mode 100644 worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/TileEntityUtils.java delete mode 100644 worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/PacketHandlerUtil.java delete mode 100644 worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/WECUIPacketHandler.java delete mode 100644 worldedit-forge/src/main/resources/META-INF/accesstransformer.cfg delete mode 100644 worldedit-forge/src/main/resources/META-INF/mods.toml rename worldedit-libs/{forge => neoforge}/build.gradle.kts (100%) create mode 100644 worldedit-neoforge/build.gradle.kts rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/CommandWrapper.java (96%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeAdapter.java (75%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBiomeRegistry.java (95%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCategoryRegistry.java (74%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCommandSender.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCommandSender.java (91%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockMaterial.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockMaterial.java (92%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockRegistry.java (79%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeCommandSender.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeCommandSender.java (94%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeConfiguration.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeConfiguration.java (85%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeDataFixer.java (98%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityProperties.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeEntityProperties.java (96%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemCategoryRegistry.java (74%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemRegistry.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemRegistry.java (85%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePermissionsProvider.java (63%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java (83%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlayer.java (86%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeRegistries.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeRegistries.java (79%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeResourceLoader.java (91%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWatchdog.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWatchdog.java (89%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorld.java (87%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java (75%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/ThreadSafeCache.java (87%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/WorldEditFakePlayer.java (98%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/WorldEditGenListener.java (85%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/internal/ExtendedChunk.java (97%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/internal/IPropertyAdapter.java (97%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/internal/NBTConverter.java (99%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeEntity.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeEntity.java (82%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeServerLevelDelegateProxy.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeServerLevelDelegateProxy.java (78%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeTransmogrifier.java (92%) rename worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeWorldNativeAccess.java (88%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/mixin/AccessorServerPlayerGameMode.java (96%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/mixin/MixinLevelChunkSetBlockHook.java (97%) rename {worldedit-forge/src/main/java/com/sk89q/worldedit/forge => worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge}/mixin/MixinServerGamePacketListenerImpl.java (87%) create mode 100644 worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java create mode 100644 worldedit-neoforge/src/main/resources/META-INF/accesstransformer.cfg create mode 100644 worldedit-neoforge/src/main/resources/META-INF/neoforge.mods.toml rename {worldedit-forge => worldedit-neoforge}/src/main/resources/defaults/worldedit.properties (100%) rename {worldedit-forge => worldedit-neoforge}/src/main/resources/pack.mcmeta (100%) rename {worldedit-forge => worldedit-neoforge}/src/main/resources/worldedit-icon.png (100%) rename worldedit-forge/src/main/resources/worldedit-forge.mixins.json => worldedit-neoforge/src/main/resources/worldedit-neoforge.mixins.json (72%) diff --git a/COMPILING.md b/COMPILING.md index 762d84f60e..91125feefd 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -1,18 +1,15 @@ Compiling ========= -You can compile WorldEdit as long as you have some version of Java greater than or equal to 16 installed. Gradle will download JDK 16 specifically if needed, +You can compile WorldEdit as long as you have some version of Java greater than or equal to 21 installed. Gradle will download JDK 21 specifically if needed, but it needs some version of Java to bootstrap from. -Note that if you have JRE 16 installed, Gradle will currently attempt to use that to compile, which will not work. It is easiest to uninstall JRE 16 and -replace it with JDK 16. - The build process uses Gradle, which you do *not* need to download. WorldEdit is a multi-module project with four modules: * `worldedit-core` contains the WorldEdit API * `worldedit-bukkit` is the Bukkit plugin * `worldedit-sponge` is the Sponge plugin -* `worldedit-forge` is the Forge mod +* `worldedit-neoforge` is the NeoForge mod * `worldedit-fabric` is the Fabric mod ## To compile... @@ -34,7 +31,7 @@ You will find: * The core WorldEdit API in **worldedit-core/build/libs** * WorldEdit for Bukkit in **worldedit-bukkit/build/libs** * WorldEdit for Sponge in **worldedit-sponge/build/libs** -* WorldEdit for Forge in **worldedit-forge/build/libs** +* WorldEdit for NeoForge in **worldedit-neoforge/build/libs** * WorldEdit for Fabric in **worldedit-fabric/build/libs** If you want to use WorldEdit, use the `-dist` version. diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index c4ff0808fe..e21b712529 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,14 +9,14 @@ repositories { name = "PaperMC" url = uri("https://repo.papermc.io/repository/maven-public/") content { - includeGroupByRegex("io\\.papermc\\..*") + includeGroupAndSubgroups("io.papermc") } } maven { - name = "Forge Maven" - url = uri("https://maven.minecraftforge.net/") + name = "NeoForged Maven" + url = uri("https://maven.neoforged.net/releases") content { - includeGroupByRegex("net\\.minecraftforge(|\\..*)$") + includeGroupAndSubgroups("net.neoforged") } } mavenCentral() @@ -52,12 +52,13 @@ dependencies { implementation("org.jfrog.buildinfo:build-info-extractor-gradle:5.2.0") implementation("org.spongepowered:spongegradle-plugin-development:2.2.0") implementation("org.spongepowered:vanillagradle:0.2.1-20231105.223944-69") - implementation("net.minecraftforge.gradle:ForgeGradle:6.0.21") + val neoGradleVersion = "7.0.107" + implementation("net.neoforged.gradle:userdev:$neoGradleVersion") + implementation("net.neoforged.gradle:mixin:$neoGradleVersion") implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.2.0") implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.5.13") - implementation("org.spongepowered:mixingradle:0.7.38") constraints { val asmVersion = "[9.7,)" implementation("org.ow2.asm:asm:$asmVersion") { diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index e8bd844bbb..6f3faa8018 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -7,6 +7,7 @@ import org.gradle.kotlin.dsl.configure import org.gradle.kotlin.dsl.dependencies import org.gradle.kotlin.dsl.repositories import org.gradle.kotlin.dsl.the +import org.gradle.plugins.ide.idea.model.IdeaModel fun Project.applyCommonConfiguration() { group = rootProject.group @@ -68,4 +69,13 @@ fun Project.applyCommonConfiguration() { include("**/*.java") include("**/*.kt") } + + plugins.withId("idea") { + configure { + module { + isDownloadSources = true + isDownloadJavadoc = true + } + } + } } diff --git a/buildSrc/src/main/kotlin/PlatformConfig.kt b/buildSrc/src/main/kotlin/PlatformConfig.kt index cdf30b7a8f..38f68d0101 100644 --- a/buildSrc/src/main/kotlin/PlatformConfig.kt +++ b/buildSrc/src/main/kotlin/PlatformConfig.kt @@ -19,7 +19,7 @@ fun Project.applyPlatformAndCoreConfiguration(javaRelease: Int = 21) { applyCommonJavaConfiguration( sourcesJar = name in setOf("worldedit-core", "worldedit-bukkit", "worldedit-fabric"), javaRelease = javaRelease, - banSlf4j = name !in setOf("worldedit-fabric", "worldedit-forge", "worldedit-sponge"), + banSlf4j = name !in setOf("worldedit-fabric", "worldedit-neoforge", "worldedit-sponge"), ) ext["internalVersion"] = "$version+${rootProject.ext["gitCommitHash"]}" diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index 4498454ae2..c17780708c 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -10,7 +10,7 @@ object Versions { const val FAST_UTIL = "8.5.12" const val GUAVA = "32.1.3-jre" const val GSON = "2.10.1" - const val LOG4J = "2.19.0" + const val LOG4J = "2.22.1" const val LIN_BUS = "0.1.0-SNAPSHOT" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 0b145f0b92..883e10a287 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,7 +20,7 @@ listOf("1.19.4", "1.20", "1.20.2", "1.20.4").forEach { include("worldedit-bukkit:adapters:adapter-$it") } -listOf("bukkit", "core", "fabric", "forge", "cli").forEach { +listOf("bukkit", "core", "fabric", "neoforge", "cli").forEach { include("worldedit-libs:$it") include("worldedit-$it") } diff --git a/verification/build.gradle.kts b/verification/build.gradle.kts index d855e6208a..54872941cc 100644 --- a/verification/build.gradle.kts +++ b/verification/build.gradle.kts @@ -43,7 +43,7 @@ tasks.check { // Generic setup for all tasks // Pull the version before our current version. val baseVersion = "(,${rootProject.version.toString().substringBefore("-SNAPSHOT")}[" -for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "forge")) { +for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "neoforge")) { val capitalizedFragment = projectFragment.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.ROOT) else it.toString() } val proj = project(":worldedit-$projectFragment") @@ -134,7 +134,8 @@ tasks.named("checkFabricApiCompatibility") { // Need to check against the reobf JAR newClasspath.setFrom(project(":worldedit-fabric").tasks.named("remapJar")) } -tasks.named("checkForgeApiCompatibility") { - // Need to check against the reobf JAR - newClasspath.builtBy(project(":worldedit-forge").tasks.named("reobfJar")) -} +//tasks.named("checkForgeApiCompatibility") { +// // Need to check against the reobf JAR +// newClasspath.builtBy(project(":worldedit-neoforge").tasks.named("reobfJar")) +//} +"" diff --git a/worldedit-forge/build.gradle.kts b/worldedit-forge/build.gradle.kts deleted file mode 100644 index 522d21da28..0000000000 --- a/worldedit-forge/build.gradle.kts +++ /dev/null @@ -1,191 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import net.minecraftforge.gradle.common.util.RunConfig -import net.minecraftforge.gradle.userdev.UserDevExtension -import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace -import org.spongepowered.asm.gradle.plugins.MixinExtension.ConfigureReobfTask - -plugins { - id("net.minecraftforge.gradle") - id("org.spongepowered.mixin") - `java-library` -} - -applyPlatformAndCoreConfiguration() -applyShadowConfiguration() - -val minecraftVersion = "1.20.4" -val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> - "$useless.${major.toInt() + 1}" -} -val forgeVersion = "49.0.30" - -val apiClasspath = configurations.create("apiClasspath") { - isCanBeResolved = true - extendsFrom(configurations.api.get()) -} - -repositories { - val forgeMaven = maven { - name = "Forge Maven" - url = uri("https://maven.minecraftforge.net/") - content { - includeGroupByRegex("net\\.minecraftforge(|\\..*)$") - } - } - remove(forgeMaven) - addFirst(forgeMaven) -} - -dependencies { - "api"(project(":worldedit-core")) - "implementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { - because("Mojang provides Log4J") - }) - - "minecraft"("net.minecraftforge:forge:$minecraftVersion-$forgeVersion") - "annotationProcessor"("org.spongepowered:mixin:0.8.5:processor") -} - -configure { - mappings("official", minecraftVersion) - - accessTransformer(file("src/main/resources/META-INF/accesstransformer.cfg")) - - runs { - val runConfig = Action { - properties(mapOf( - "forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP", - "forge.logging.console.level" to "debug" - )) - workingDirectory = project.file("run").canonicalPath - source(sourceSets["main"]) - lazyToken("minecraft_classpath") { - apiClasspath.resolve().joinToString(File.pathSeparator) { it.absolutePath } - } - } - create("client", runConfig) - create("server", runConfig) - } - -} - -configure { - add(sourceSets["main"], "worldedit-forge.mixins.refmap.json") - config("worldedit-forge.mixins.json") -} - -// Workaround until SpongePowered/MixinGradle#51 is merged -afterEvaluate { - tasks.withType().configureEach { - dependsOn(tasks.compileJava) - } -} - -configure { - archivesName.set("${archivesName.get()}-mc$minecraftVersion") -} - -val javaComponent = components["java"] as AdhocComponentWithVariants -javaComponent.withVariantsFromConfiguration(configurations["apiElements"]) { - skip() -} - -javaComponent.withVariantsFromConfiguration(configurations["runtimeElements"]) { - skip() -} - -tasks.register("deobfJar") { - from(sourceSets["main"].output) - archiveClassifier.set("dev") -} - -val reobfApiElements = configurations.register("reobfApiElements") { - isVisible = false - description = "Re-obfuscated API elements for libs" - isCanBeResolved = false - isCanBeConsumed = true - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_API)) - attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) - attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.EXTERNAL)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8) - } - outgoing.artifact(tasks.named("jar")) { - builtBy(project.provider { tasks.named("reobfJar") }) - } - extendsFrom(configurations["api"]) -} - -javaComponent.addVariantsFromConfiguration(reobfApiElements.get()) { - mapToMavenScope("compile") -} - -val reobfRuntimeElements = configurations.register("reobfRuntimeElements") { - isVisible = false - description = "Re-obfuscated runtime elements for libs" - isCanBeResolved = false - isCanBeConsumed = true - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_RUNTIME)) - attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) - attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.EXTERNAL)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8) - } - outgoing.artifact(tasks.named("jar")) { - builtBy(project.provider { tasks.named("reobfJar") }) - } - extendsFrom(configurations["reobfApiElements"]) - extendsFrom(configurations["runtimeClasspath"].copy { d -> d.group != "net.minecraftforge" }) -} - -javaComponent.addVariantsFromConfiguration(reobfRuntimeElements.get()) { - mapToMavenScope("runtime") -} - -configure { - publications.named("maven") { - artifactId = the().archivesName.get() - from(components["java"]) - } -} - -tasks.named("processResources") { - // this will ensure that this task is redone when the versions change. - val properties = mapOf( - "version" to project.ext["internalVersion"], - "forgeVersion" to forgeVersion, - "minecraftVersion" to minecraftVersion, - "nextMajorMinecraftVersion" to nextMajorMinecraftVersion - ) - properties.forEach { (key, value) -> - inputs.property(key, value) - } - - filesMatching("META-INF/mods.toml") { - expand(properties) - } - - // copy from -core resources as well - from(project(":worldedit-core").tasks.named("processResources")) -} - -addJarManifest(WorldEditKind.Mod, includeClasspath = false) - -tasks.named("shadowJar") { - dependencies { - relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") - - include(dependency("org.antlr:antlr4-runtime")) - include(dependency("org.mozilla:rhino-runtime")) - include(dependency("com.sk89q.lib:jlibnoise")) - } - minimize { - exclude(dependency("org.mozilla:rhino-runtime")) - } -} - -val reobf = extensions.getByName>("reobf") -reobf.create("shadowJar") diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/TileEntityUtils.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/TileEntityUtils.java deleted file mode 100644 index d49574f679..0000000000 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/TileEntityUtils.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.forge.internal; - -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; - -/** - * Utility methods for setting tile entities in the world. - */ -public final class TileEntityUtils { - - private TileEntityUtils() { - } - - /** - * Set a tile entity at the given location using the tile entity ID from - * the tag. - * - * @param world the world - * @param position the position - * @param tag the tag for the tile entity - */ - static boolean setTileEntity(Level world, BlockPos position, CompoundTag tag) { - BlockEntity tileEntity = BlockEntity.loadStatic(position, world.getBlockState(position), tag); - if (tileEntity == null) { - return false; - } - world.setBlockEntity(tileEntity); - return true; - } - - public static CompoundTag copyNbtData(BlockEntity tile) { - return tile.saveWithId(); - } -} diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/PacketHandlerUtil.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/PacketHandlerUtil.java deleted file mode 100644 index d4fc34971c..0000000000 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/PacketHandlerUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.forge.net.handler; - -import com.sk89q.worldedit.forge.ForgeWorldEdit; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.network.Channel; -import net.minecraftforge.network.ChannelBuilder; - -final class PacketHandlerUtil { - private PacketHandlerUtil() { - } - - static ChannelBuilder buildLenientHandler(String id, int protocolVersion) { - final Channel.VersionTest validator = validateLenient(protocolVersion); - return ChannelBuilder - .named(new ResourceLocation(ForgeWorldEdit.MOD_ID, id)) - .clientAcceptedVersions(validator) - .serverAcceptedVersions(validator) - .networkProtocolVersion(protocolVersion); - } - - private static Channel.VersionTest validateLenient(int protocolVersion) { - return (status, remoteVersion) -> - protocolVersion == remoteVersion - // These two ignore protocolVersion anyway so it doesn't matter what it is - || Channel.VersionTest.ACCEPT_MISSING.accepts(status, protocolVersion) - || Channel.VersionTest.ACCEPT_VANILLA.accepts(status, protocolVersion); - } -} diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/WECUIPacketHandler.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/WECUIPacketHandler.java deleted file mode 100644 index 8cbf60868d..0000000000 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/net/handler/WECUIPacketHandler.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.forge.net.handler; - -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.forge.ForgePlayer; -import com.sk89q.worldedit.forge.ForgeWorldEdit; -import net.minecraft.network.Connection; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.event.network.CustomPayloadEvent; -import net.minecraftforge.network.EventNetworkChannel; - -import java.nio.charset.StandardCharsets; - -import static com.sk89q.worldedit.forge.ForgeAdapter.adaptPlayer; - -public final class WECUIPacketHandler { - private WECUIPacketHandler() { - } - - private static final int PROTOCOL_VERSION = 1; - private static final EventNetworkChannel HANDLER = PacketHandlerUtil - .buildLenientHandler(ForgeWorldEdit.CUI_PLUGIN_CHANNEL, PROTOCOL_VERSION) - .eventNetworkChannel(); - - public static void init() { - HANDLER.addListener(WECUIPacketHandler::onPacketData); - } - - public static void onPacketData(CustomPayloadEvent event) { - if (event.getSource().isClientSide()) { - // Ignore client-side packets - return; - } - ServerPlayer player = event.getSource().getSender(); - LocalSession session = ForgeWorldEdit.inst.getSession(player); - String text = event.getPayload().toString(StandardCharsets.UTF_8); - final ForgePlayer actor = adaptPlayer(player); - session.handleCUIInitializationMessage(text, actor); - } - - public static void send(Connection connection, FriendlyByteBuf friendlyByteBuf) { - HANDLER.send(friendlyByteBuf, connection); - } - -} diff --git a/worldedit-forge/src/main/resources/META-INF/accesstransformer.cfg b/worldedit-forge/src/main/resources/META-INF/accesstransformer.cfg deleted file mode 100644 index 5d7bf338a0..0000000000 --- a/worldedit-forge/src/main/resources/META-INF/accesstransformer.cfg +++ /dev/null @@ -1,11 +0,0 @@ -public net.minecraft.server.MinecraftServer f_302313_ # nextTickTimeNanos - -# For regen -public net.minecraft.server.MinecraftServer f_129744_ # storageSource -public net.minecraft.server.level.ServerChunkCache f_8332_ # mainThreadProcessor -public net.minecraft.server.level.ServerChunkCache m_8456_(IILnet/minecraft/world/level/chunk/ChunkStatus;Z)Ljava/util/concurrent/CompletableFuture; # getChunkFutureMainThread - -public net.minecraft.world.level.chunk.ChunkBiomeContainer f_62112_ # biomes -public-f net.minecraft.world.level.storage.PrimaryLevelData f_244409_ # worldOptions - -public net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket (Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/nbt/CompoundTag;)V # constructor diff --git a/worldedit-forge/src/main/resources/META-INF/mods.toml b/worldedit-forge/src/main/resources/META-INF/mods.toml deleted file mode 100644 index 3a6a8a88c5..0000000000 --- a/worldedit-forge/src/main/resources/META-INF/mods.toml +++ /dev/null @@ -1,37 +0,0 @@ -# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml -modLoader="javafml" -# A version range to match for said mod loader - for regular FML @Mod it will be the minecraft version (without the 1.) -loaderVersion="[24,)" -# A URL to refer people to when problems occur with this mod -issueTrackerURL="https://discord.gg/enginehub" -# A URL for the "homepage" for this mod, displayed in the mod UI -displayURL="https://enginehub.org/worldedit/" -# A file name (in the root of the mod JAR) containing a logo for display -logoFile="worldedit-icon.png" -# A text field displayed in the mod UI -authors="EngineHub" -license="GPL" -# A list of mods - how many allowed here is determined by the individual mod loader -[[mods]] -# The modid of the mod -modId="worldedit" -# The version number of the mod - there's a few well known ${} variables useable here or just hardcode it -version="${version}" - # A display name for the mod -displayName="WorldEdit" -# The description text for the mod (multi line!) -description=''' -WorldEdit is an easy-to-use in-game world editor for Minecraft, supporting both single- and multi-player. -''' -[[dependencies.worldedit]] - modId="minecraft" - mandatory=true - versionRange="[${minecraftVersion},${nextMajorMinecraftVersion})" - ordering="NONE" - side="BOTH" -[[dependencies.worldedit]] - modId="forge" - mandatory=true - versionRange="[${forgeVersion},)" - ordering="NONE" - side="BOTH" diff --git a/worldedit-libs/forge/build.gradle.kts b/worldedit-libs/neoforge/build.gradle.kts similarity index 100% rename from worldedit-libs/forge/build.gradle.kts rename to worldedit-libs/neoforge/build.gradle.kts diff --git a/worldedit-mod/build.gradle.kts b/worldedit-mod/build.gradle.kts index 8cf962c3b5..fd3d91c1e9 100644 --- a/worldedit-mod/build.gradle.kts +++ b/worldedit-mod/build.gradle.kts @@ -64,13 +64,13 @@ val fabricZipTree = zipTree( project(":worldedit-fabric").tasks.named("remapShadowJar").flatMap { it.archiveFile } ) val forgeZipTree = zipTree( - project(":worldedit-forge").tasks.named("shadowJar").map { it.outputs.files.singleFile } + project(":worldedit-neoforge").tasks.named("shadowJar").map { it.outputs.files.singleFile } ) val mergeManifests = tasks.register("mergeManifests") { dependsOn( project(":worldedit-fabric").tasks.named("remapShadowJar"), - project(":worldedit-forge").tasks.named("reobfShadowJar") + project(":worldedit-neoforge").tasks.named("shadowJar") ) inputManifests.from( fabricZipTree.matching { include("META-INF/MANIFEST.MF") }, @@ -82,7 +82,7 @@ val mergeManifests = tasks.register("mergeManifests") { tasks.register("jar") { dependsOn( project(":worldedit-fabric").tasks.named("remapShadowJar"), - project(":worldedit-forge").tasks.named("reobfShadowJar"), + project(":worldedit-neoforge").tasks.named("shadowJar"), mergeManifests ) from(fabricZipTree) { @@ -106,7 +106,7 @@ tasks.register("jar") { // Exclude worldedit-core exclude { val pathString = it.relativePath.pathString - pathString.startsWith("com/sk89q/worldedit/") && !pathString.startsWith("com/sk89q/worldedit/forge/") + pathString.startsWith("com/sk89q/worldedit/") && !pathString.startsWith("com/sk89q/worldedit/neoforge/") } // Questionable excludes. So far the two files from each jar are the same. exclude("defaults/worldedit.properties") diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts new file mode 100644 index 0000000000..1354e93514 --- /dev/null +++ b/worldedit-neoforge/build.gradle.kts @@ -0,0 +1,125 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar +import net.neoforged.gradle.dsl.common.runs.run.Run + +plugins { + id("net.neoforged.gradle.userdev") + `java-library` +} + +applyPlatformAndCoreConfiguration() +applyShadowConfiguration() + +val minecraftVersion = "1.20.5" +val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> + "$useless.${major.toInt() + 1}" +} +val neoVersion = "20.5.0-beta" + +val apiClasspath = configurations.create("apiClasspath") { + isCanBeResolved = true + extendsFrom(configurations.api.get()) +} + +repositories { + for (repo in project.repositories) { + if (repo is MavenArtifactRepository && repo.url.toString() == "https://maven.neoforged.net/releases/") { + repo.mavenContent { + includeGroupAndSubgroups("net.neoforged") + } + } + } + // For Fabric's mixin fork + maven { + name = "Fabric" + url = uri("https://maven.fabricmc.net/") + mavenContent { + includeGroup("net.fabricmc") + } + } +} + +dependencies { + "api"(project(":worldedit-core")) + "implementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { + because("Mojang provides Log4J") + }) + + "implementation"("net.neoforged:neoforge:$neoVersion") +} + +minecraft { + accessTransformers { + file("src/main/resources/META-INF/accesstransformer.cfg") + } +} + +runs { + val runConfig = Action { + systemProperties(mapOf( + "forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP", + "forge.logging.console.level" to "debug" + )) + workingDirectory(project.file("run").canonicalPath) + modSources(sourceSets["main"]) + dependencies { + runtime(apiClasspath) + } + } + create("client", runConfig) + create("server", runConfig) +} + +subsystems { + parchment { + // https://parchmentmc.org/docs/getting-started; note that we use older MC versions some times which is OK + minecraftVersion = "1.20.4" + mappingsVersion = "2024.04.14" + } +} + +configure { + archivesName.set("${archivesName.get()}-mc$minecraftVersion") +} + +configure { + publications.named("maven") { + artifactId = the().archivesName.get() + from(components["java"]) + } +} + +tasks.named("processResources") { + // this will ensure that this task is redone when the versions change. + val properties = mapOf( + "version" to project.ext["internalVersion"], + "neoVersion" to neoVersion, + "minecraftVersion" to minecraftVersion, + "nextMajorMinecraftVersion" to nextMajorMinecraftVersion + ) + properties.forEach { (key, value) -> + inputs.property(key, value) + } + + filesMatching("META-INF/neoforge.mods.toml") { + expand(properties) + } + + // copy from -core resources as well + from(project(":worldedit-core").tasks.named("processResources")) +} + +addJarManifest(WorldEditKind.Mod, includeClasspath = false) + +tasks.named("shadowJar") { + dependencies { + relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") + relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") + + include(dependency("org.antlr:antlr4-runtime")) + include(dependency("org.mozilla:rhino-runtime")) + include(dependency("com.sk89q.lib:jlibnoise")) + } + minimize { + exclude(dependency("org.mozilla:rhino-runtime")) + } +} diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/CommandWrapper.java similarity index 96% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/CommandWrapper.java index 0886606152..c5f51132fe 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/CommandWrapper.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.google.common.collect.ImmutableList; import com.mojang.brigadier.Command; @@ -75,7 +75,7 @@ public static void register(CommandDispatcher dispatcher, or private static Predicate requirementsFor(org.enginehub.piston.Command mapping) { return ctx -> { - final Actor actor = ForgeAdapter.adaptCommandSource(ctx); + final Actor actor = NeoForgeAdapter.adaptCommandSource(ctx); InjectedValueStore store = MapBackedValueStore.create(); store.injectValue(Key.of(Actor.class), context -> Optional.of(actor)); return mapping.getCondition().satisfied(store); @@ -85,7 +85,7 @@ private static Predicate requirementsFor(org.enginehub.pisto private static CompletableFuture suggest(CommandContext context, SuggestionsBuilder builder) throws CommandSyntaxException { CommandSuggestionEvent event = new CommandSuggestionEvent( - ForgeAdapter.adaptCommandSource(context.getSource()), + NeoForgeAdapter.adaptCommandSource(context.getSource()), builder.getInput() ); WorldEdit.getInstance().getEventBus().post(event); diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeAdapter.java similarity index 75% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeAdapter.java index 6c691d559a..516f724124 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeAdapter.java @@ -17,15 +17,16 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; +import com.mojang.serialization.Codec; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.extension.platform.Actor; -import com.sk89q.worldedit.forge.internal.ForgeTransmogrifier; -import com.sk89q.worldedit.forge.internal.NBTConverter; import com.sk89q.worldedit.internal.block.BlockStateIdAccess; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.neoforge.internal.NBTConverter; +import com.sk89q.worldedit.neoforge.internal.NeoForgeTransmogrifier; import com.sk89q.worldedit.registry.state.Property; import com.sk89q.worldedit.util.Direction; import com.sk89q.worldedit.util.concurrency.LazyReference; @@ -39,7 +40,11 @@ import com.sk89q.worldedit.world.item.ItemTypes; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.BlockPos; +import net.minecraft.core.component.DataComponentPatch; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -51,8 +56,8 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.properties.DirectionProperty; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.server.ServerLifecycleHooks; +import net.neoforged.neoforge.server.ServerLifecycleHooks; +import org.enginehub.linbus.tree.LinCompoundTag; import java.util.Comparator; import java.util.Map; @@ -62,13 +67,13 @@ import static com.google.common.base.Preconditions.checkNotNull; -public final class ForgeAdapter { +public final class NeoForgeAdapter { - private ForgeAdapter() { + private NeoForgeAdapter() { } public static World adapt(ServerLevel world) { - return new ForgeWorld(world); + return new NeoForgeWorld(world); } /** @@ -79,8 +84,8 @@ public static World adapt(ServerLevel world) { */ public static ServerLevel adapt(World world) { checkNotNull(world); - if (world instanceof ForgeWorld) { - return ((ForgeWorld) world).getWorld(); + if (world instanceof NeoForgeWorld) { + return ((NeoForgeWorld) world).getWorld(); } else { // TODO introduce a better cross-platform world API to match more easily throw new UnsupportedOperationException("Cannot adapt from a " + world.getClass()); @@ -151,15 +156,17 @@ public static BlockPos toBlockPos(BlockVector3 vector) { /** * Adapts property. + * * @deprecated without replacement, use the block adapter methods */ @Deprecated public static Property adaptProperty(net.minecraft.world.level.block.state.properties.Property property) { - return ForgeTransmogrifier.transmogToWorldEditProperty(property); + return NeoForgeTransmogrifier.transmogToWorldEditProperty(property); } /** * Adapts properties. + * * @deprecated without replacement, use the block adapter methods */ @Deprecated @@ -180,7 +187,7 @@ public static Map, Object> adaptProperties(BlockType block, Map COMPONENTS_CODEC = DataComponentPatch.CODEC.optionalFieldOf( + "components", DataComponentPatch.EMPTY + ).codec(); + public static ItemStack adapt(BaseItemStack baseItemStack) { - net.minecraft.nbt.CompoundTag forgeCompound = null; - if (baseItemStack.getNbt() != null) { - forgeCompound = NBTConverter.toNative(baseItemStack.getNbt()); - } final ItemStack itemStack = new ItemStack(adapt(baseItemStack.getType()), baseItemStack.getAmount()); - itemStack.setTag(forgeCompound); + LinCompoundTag nbt = baseItemStack.getNbt(); + if (nbt != null) { + DataComponentPatch componentPatch = COMPONENTS_CODEC.parse( + ServerLifecycleHooks.getCurrentServer().registryAccess().createSerializationContext(NbtOps.INSTANCE), + NBTConverter.toNative(nbt) + ).getOrThrow(); + itemStack.applyComponents(componentPatch); + } return itemStack; } public static BaseItemStack adapt(ItemStack itemStack) { - net.minecraft.nbt.CompoundTag tag = itemStack.serializeNBT(); - if (tag.getAllKeys().isEmpty()) { - tag = null; - } else { - final net.minecraft.nbt.Tag tagTag = tag.get("tag"); - if (tagTag instanceof net.minecraft.nbt.CompoundTag) { - tag = ((net.minecraft.nbt.CompoundTag) tagTag); - } else { - tag = null; - } - } - net.minecraft.nbt.CompoundTag finalTag = tag; + CompoundTag tag = (CompoundTag) COMPONENTS_CODEC.encodeStart( + ServerLifecycleHooks.getCurrentServer().registryAccess().createSerializationContext(NbtOps.INSTANCE), + itemStack.getComponentsPatch() + ).getOrThrow(); return new BaseItemStack( - adapt(itemStack.getItem()), - finalTag == null ? null : LazyReference.from(() -> NBTConverter.fromNative(finalTag)), - itemStack.getCount() + adapt(itemStack.getItem()), LazyReference.from(() -> NBTConverter.fromNative(tag)), itemStack.getCount() ); } @@ -246,9 +253,9 @@ public static BaseItemStack adapt(ItemStack itemStack) { * @param player the player * @return the WorldEdit player */ - public static ForgePlayer adaptPlayer(ServerPlayer player) { + public static NeoForgePlayer adaptPlayer(ServerPlayer player) { checkNotNull(player); - return new ForgePlayer(player); + return new NeoForgePlayer(player); } /** @@ -262,10 +269,10 @@ public static Actor adaptCommandSource(CommandSourceStack commandSourceStack) { if (commandSourceStack.isPlayer()) { return adaptPlayer(commandSourceStack.getPlayer()); } - if (ForgeWorldEdit.inst.getConfig().commandBlockSupport && commandSourceStack.source instanceof BaseCommandBlock commandBlock) { - return new ForgeBlockCommandSender(commandBlock); + if (NeoForgeWorldEdit.inst.getConfig().commandBlockSupport && commandSourceStack.source instanceof BaseCommandBlock commandBlock) { + return new NeoForgeBlockCommandSender(commandBlock); } - return new ForgeCommandSender(commandSourceStack); + return new NeoForgeCommandSender(commandSourceStack); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBiomeRegistry.java similarity index 95% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBiomeRegistry.java index 95d970c9d9..9f8b921200 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBiomeRegistry.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.util.formatting.text.Component; import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; @@ -30,7 +30,7 @@ /** * Provides access to biome data in Forge. */ -class ForgeBiomeRegistry implements BiomeRegistry { +class NeoForgeBiomeRegistry implements BiomeRegistry { @Override public Component getRichName(BiomeType biomeType) { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCategoryRegistry.java similarity index 74% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCategoryRegistry.java index 5fe862f943..178b9e123a 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCategoryRegistry.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCategoryRegistry.java @@ -17,34 +17,32 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.google.common.collect.ImmutableSet; import com.sk89q.worldedit.world.block.BlockType; import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.tags.ITagManager; +import net.neoforged.neoforge.server.ServerLifecycleHooks; -import java.util.Objects; import java.util.Set; -public class ForgeBlockCategoryRegistry implements BlockCategoryRegistry { +public class NeoForgeBlockCategoryRegistry implements BlockCategoryRegistry { @Override public Set getCategorisedByName(String category) { - ITagManager tags = Objects.requireNonNull( - ForgeRegistries.BLOCKS.tags(), "no block tags registry" - ); - return tags + return ServerLifecycleHooks.getCurrentServer().registryAccess().registryOrThrow(Registries.BLOCK) .getTag(TagKey.create( Registries.BLOCK, new ResourceLocation(category) )) .stream() - .map(ForgeAdapter::adapt) + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(NeoForgeAdapter::adapt) .collect(ImmutableSet.toImmutableSet()); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCommandSender.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCommandSender.java similarity index 91% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCommandSender.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCommandSender.java index c454cdc547..f021774228 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockCommandSender.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockCommandSender.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.extension.platform.AbstractCommandBlockActor; @@ -33,8 +33,8 @@ import net.minecraft.world.level.BaseCommandBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.common.util.LogicalSidedProvider; -import net.minecraftforge.fml.LogicalSide; +import net.neoforged.fml.LogicalSide; +import net.neoforged.neoforge.common.util.LogicalSidedProvider; import java.nio.charset.StandardCharsets; import java.util.Locale; @@ -42,12 +42,12 @@ import static com.google.common.base.Preconditions.checkNotNull; -public class ForgeBlockCommandSender extends AbstractCommandBlockActor { +public class NeoForgeBlockCommandSender extends AbstractCommandBlockActor { private final BaseCommandBlock sender; private final UUID uuid; - public ForgeBlockCommandSender(BaseCommandBlock sender) { - super(new Location(ForgeAdapter.adapt(checkNotNull(sender).getLevel()), ForgeAdapter.adapt(sender.getPosition()))); + public NeoForgeBlockCommandSender(BaseCommandBlock sender) { + super(new Location(NeoForgeAdapter.adapt(checkNotNull(sender).getLevel()), NeoForgeAdapter.adapt(sender.getPosition()))); this.sender = sender; this.uuid = UUID.nameUUIDFromBytes((UUID_PREFIX + sender.getName()).getBytes(StandardCharsets.UTF_8)); @@ -87,7 +87,8 @@ public void printError(String msg) { @Override public void print(Component component) { sendMessage(net.minecraft.network.chat.Component.Serializer.fromJson( - GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())) + GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())), + sender.getLevel().registryAccess() )); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockMaterial.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockMaterial.java similarity index 92% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockMaterial.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockMaterial.java index 7fa78ca803..74c98c854c 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockMaterial.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockMaterial.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.world.registry.BlockMaterial; import com.sk89q.worldedit.world.registry.PassthroughBlockMaterial; @@ -31,11 +31,11 @@ * Material, and passes the rest to another implementation, typically the * bundled block info. */ -public class ForgeBlockMaterial extends PassthroughBlockMaterial { +public class NeoForgeBlockMaterial extends PassthroughBlockMaterial { private final BlockState block; - public ForgeBlockMaterial(BlockState block, @Nullable BlockMaterial secondary) { + public NeoForgeBlockMaterial(BlockState block, @Nullable BlockMaterial secondary) { super(secondary); this.block = block; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockRegistry.java similarity index 79% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockRegistry.java index b0f6dbb175..5867d9a4e6 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBlockRegistry.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeBlockRegistry.java @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; -import com.sk89q.worldedit.forge.internal.ForgeTransmogrifier; +import com.sk89q.worldedit.neoforge.internal.NeoForgeTransmogrifier; import com.sk89q.worldedit.registry.state.Property; import com.sk89q.worldedit.util.formatting.text.Component; import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; @@ -35,43 +35,43 @@ import java.util.OptionalInt; import java.util.TreeMap; -public class ForgeBlockRegistry extends BundledBlockRegistry { +public class NeoForgeBlockRegistry extends BundledBlockRegistry { - private final Map materialMap = new HashMap<>(); + private final Map materialMap = new HashMap<>(); @Override public Component getRichName(BlockType blockType) { - return TranslatableComponent.of(ForgeAdapter.adapt(blockType).getDescriptionId()); + return TranslatableComponent.of(NeoForgeAdapter.adapt(blockType).getDescriptionId()); } @Override public BlockMaterial getMaterial(BlockType blockType) { - Block block = ForgeAdapter.adapt(blockType); + Block block = NeoForgeAdapter.adapt(blockType); if (block == null) { return super.getMaterial(blockType); } return materialMap.computeIfAbsent( block.defaultBlockState(), - s -> new ForgeBlockMaterial(s, super.getMaterial(blockType)) + s -> new NeoForgeBlockMaterial(s, super.getMaterial(blockType)) ); } @Override public Map> getProperties(BlockType blockType) { - Block block = ForgeAdapter.adapt(blockType); + Block block = NeoForgeAdapter.adapt(blockType); Map> map = new TreeMap<>(); Collection> propertyKeys = block .defaultBlockState() .getProperties(); for (net.minecraft.world.level.block.state.properties.Property key : propertyKeys) { - map.put(key.getName(), ForgeTransmogrifier.transmogToWorldEditProperty(key)); + map.put(key.getName(), NeoForgeTransmogrifier.transmogToWorldEditProperty(key)); } return map; } @Override public OptionalInt getInternalBlockStateId(BlockState state) { - net.minecraft.world.level.block.state.BlockState equivalent = ForgeAdapter.adapt(state); + net.minecraft.world.level.block.state.BlockState equivalent = NeoForgeAdapter.adapt(state); return OptionalInt.of(Block.getId(equivalent)); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeCommandSender.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeCommandSender.java similarity index 94% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeCommandSender.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeCommandSender.java index aad1181057..3918a17cf9 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeCommandSender.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeCommandSender.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.extension.platform.AbstractNonPlayerActor; @@ -35,7 +35,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; -public class ForgeCommandSender extends AbstractNonPlayerActor { +public class NeoForgeCommandSender extends AbstractNonPlayerActor { /** * One time generated ID. @@ -44,7 +44,7 @@ public class ForgeCommandSender extends AbstractNonPlayerActor { private final CommandSourceStack sender; - public ForgeCommandSender(CommandSourceStack sender) { + public NeoForgeCommandSender(CommandSourceStack sender) { checkNotNull(sender); checkArgument(!sender.isPlayer(), "Cannot wrap a player"); @@ -90,7 +90,8 @@ public void printError(String msg) { @Override public void print(Component component) { sendMessage(net.minecraft.network.chat.Component.Serializer.fromJson( - GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())) + GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())), + sender.registryAccess() )); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeConfiguration.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeConfiguration.java similarity index 85% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeConfiguration.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeConfiguration.java index a20070d73b..7af1234912 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeConfiguration.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeConfiguration.java @@ -17,19 +17,18 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.util.PropertiesConfiguration; -import java.io.File; import java.nio.file.Path; -public class ForgeConfiguration extends PropertiesConfiguration { +public class NeoForgeConfiguration extends PropertiesConfiguration { public boolean creativeEnable = false; public boolean cheatMode = false; - public ForgeConfiguration(ForgeWorldEdit mod) { + public NeoForgeConfiguration(NeoForgeWorldEdit mod) { super(mod.getWorkingDir().resolve("worldedit.properties")); } @@ -41,6 +40,6 @@ protected void loadExtra() { @Override public Path getWorkingDirectoryPath() { - return ForgeWorldEdit.inst.getWorkingDir(); + return NeoForgeWorldEdit.inst.getWorkingDir(); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeDataFixer.java similarity index 98% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeDataFixer.java index 5e8aa8d561..e397ce0958 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeDataFixer.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeDataFixer.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -35,7 +35,7 @@ import com.mojang.datafixers.DataFixerBuilder; import com.mojang.datafixers.schemas.Schema; import com.mojang.serialization.Dynamic; -import com.sk89q.worldedit.forge.internal.NBTConverter; +import com.sk89q.worldedit.neoforge.internal.NBTConverter; import net.minecraft.core.Direction; import net.minecraft.nbt.FloatTag; import net.minecraft.nbt.ListTag; @@ -50,6 +50,7 @@ import net.minecraft.util.datafix.DataFixers; import net.minecraft.util.datafix.fixes.References; import net.minecraft.world.item.DyeColor; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.enginehub.linbus.tree.LinCompoundTag; @@ -87,7 +88,7 @@ *

*/ @SuppressWarnings({ "UnnecessarilyQualifiedStaticUsage", "unchecked", "rawtypes" }) -class ForgeDataFixer extends DataFixerBuilder implements com.sk89q.worldedit.world.DataFixer { +class NeoForgeDataFixer extends DataFixerBuilder implements com.sk89q.worldedit.world.DataFixer { @SuppressWarnings("unchecked") @Override @@ -180,7 +181,7 @@ private static String fixName(String key, int srcVer, TypeReference type) { private static final NbtOps OPS_NBT = NbtOps.INSTANCE; private static final int LEGACY_VERSION = 1343; private static int DATA_VERSION; - private static ForgeDataFixer INSTANCE; + private static NeoForgeDataFixer INSTANCE; private final Map> converters = new EnumMap<>(LegacyType.class); private final Map> inspectors = new EnumMap<>(LegacyType.class); @@ -211,7 +212,7 @@ public TypeReference getDFUType() { } } - ForgeDataFixer(int dataVersion) { + NeoForgeDataFixer(int dataVersion) { super(dataVersion); DATA_VERSION = dataVersion; INSTANCE = this; @@ -252,7 +253,7 @@ public Dynamic update(TypeReference type, Dynamic dynamic, int sourceV } private net.minecraft.nbt.CompoundTag convert(LegacyType type, net.minecraft.nbt.CompoundTag cmp, int sourceVer, int desiredVersion) { - List converters = ForgeDataFixer.this.converters.get(type); + List converters = NeoForgeDataFixer.this.converters.get(type); if (converters != null && !converters.isEmpty()) { for (DataConverter converter : converters) { int dataVersion = converter.getDataVersion(); @@ -262,7 +263,7 @@ private net.minecraft.nbt.CompoundTag convert(LegacyType type, net.minecraft.nbt } } - List inspectors = ForgeDataFixer.this.inspectors.get(type); + List inspectors = NeoForgeDataFixer.this.inspectors.get(type); if (inspectors != null && !inspectors.isEmpty()) { for (DataInspector inspector : inspectors) { cmp = inspector.inspect(cmp, sourceVer, desiredVersion); @@ -818,7 +819,7 @@ public net.minecraft.nbt.CompoundTag inspect(net.minecraft.nbt.CompoundTag cmp, private static class DataInspectorEntity implements DataInspector { - private static final Logger a = LogManager.getLogger(ForgeDataFixer.class); + private static final Logger a = LogManager.getLogger(NeoForgeDataFixer.class); DataInspectorEntity() { } @@ -893,7 +894,7 @@ private static class DataInspectorItemList extends DataInspectorTagged { net.minecraft.nbt.CompoundTag inspectChecked(net.minecraft.nbt.CompoundTag nbttagcompound, int sourceVer, int targetVer) { for (String s : this.keys) { - ForgeDataFixer.convertItems(nbttagcompound, s, sourceVer, targetVer); + NeoForgeDataFixer.convertItems(nbttagcompound, s, sourceVer, targetVer); } return nbttagcompound; @@ -911,7 +912,7 @@ private static class DataInspectorItem extends DataInspectorTagged { net.minecraft.nbt.CompoundTag inspectChecked(net.minecraft.nbt.CompoundTag nbttagcompound, int sourceVer, int targetVer) { for (String key : this.keys) { - ForgeDataFixer.convertItem(nbttagcompound, key, sourceVer, targetVer); + NeoForgeDataFixer.convertItem(nbttagcompound, key, sourceVer, targetVer); } return nbttagcompound; @@ -1882,7 +1883,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (object == null) { try { - object = Component.Serializer.fromJson(s); + object = Component.Serializer.fromJson(s, ServerLifecycleHooks.getCurrentServer().registryAccess()); } catch (JsonParseException jsonparseexception1) { ; } @@ -1890,7 +1891,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) if (object == null) { try { - object = Component.Serializer.fromJsonLenient(s); + object = Component.Serializer.fromJsonLenient(s, ServerLifecycleHooks.getCurrentServer().registryAccess()); } catch (JsonParseException jsonparseexception2) { ; } @@ -1904,7 +1905,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) object = Component.literal(""); } - nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson((Component) object))); + nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson((Component) object, ServerLifecycleHooks.getCurrentServer().registryAccess()))); } nbttagcompound1.put("pages", nbttaglist); @@ -2412,7 +2413,7 @@ public net.minecraft.nbt.CompoundTag convert(net.minecraft.nbt.CompoundTag cmp) private static class DataConverterBedBlock implements DataConverter { - private static final Logger a = LogManager.getLogger(ForgeDataFixer.class); + private static final Logger a = LogManager.getLogger(NeoForgeDataFixer.class); DataConverterBedBlock() { } @@ -2547,7 +2548,7 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (object == null) { try { - object = Component.Serializer.fromJson(s1); + object = Component.Serializer.fromJson(s1, ServerLifecycleHooks.getCurrentServer().registryAccess()); } catch (JsonParseException jsonparseexception1) { ; } @@ -2555,7 +2556,7 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { if (object == null) { try { - object = Component.Serializer.fromJsonLenient(s1); + object = Component.Serializer.fromJsonLenient(s1, ServerLifecycleHooks.getCurrentServer().registryAccess()); } catch (JsonParseException jsonparseexception2) { ; } @@ -2569,7 +2570,7 @@ private void convert(net.minecraft.nbt.CompoundTag nbttagcompound, String s) { object = Component.literal(""); } - nbttagcompound.putString(s, Component.Serializer.toJson((Component) object)); + nbttagcompound.putString(s, Component.Serializer.toJson((Component) object, ServerLifecycleHooks.getCurrentServer().registryAccess())); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityProperties.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeEntityProperties.java similarity index 96% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityProperties.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeEntityProperties.java index 5d2175ee85..7963f985b1 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityProperties.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeEntityProperties.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.entity.metadata.EntityProperties; import net.minecraft.server.level.ServerPlayer; @@ -45,11 +45,11 @@ import static com.google.common.base.Preconditions.checkNotNull; -public class ForgeEntityProperties implements EntityProperties { +public class NeoForgeEntityProperties implements EntityProperties { private final Entity entity; - public ForgeEntityProperties(Entity entity) { + public NeoForgeEntityProperties(Entity entity) { checkNotNull(entity); this.entity = entity; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemCategoryRegistry.java similarity index 74% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemCategoryRegistry.java index 2862a09473..b9c5dcac7d 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemCategoryRegistry.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemCategoryRegistry.java @@ -17,34 +17,32 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.google.common.collect.ImmutableSet; import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.tags.ITagManager; +import net.neoforged.neoforge.server.ServerLifecycleHooks; -import java.util.Objects; import java.util.Set; -public class ForgeItemCategoryRegistry implements ItemCategoryRegistry { +public class NeoForgeItemCategoryRegistry implements ItemCategoryRegistry { @Override public Set getCategorisedByName(String category) { - ITagManager tags = Objects.requireNonNull( - ForgeRegistries.ITEMS.tags(), "no item tags registry" - ); - return tags + return ServerLifecycleHooks.getCurrentServer().registryAccess().registryOrThrow(Registries.ITEM) .getTag(TagKey.create( Registries.ITEM, new ResourceLocation(category) )) .stream() - .map(ForgeAdapter::adapt) + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(NeoForgeAdapter::adapt) .collect(ImmutableSet.toImmutableSet()); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemRegistry.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemRegistry.java similarity index 85% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemRegistry.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemRegistry.java index cd8a1e1409..7b9d2a9baf 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeItemRegistry.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeItemRegistry.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.util.formatting.text.Component; @@ -25,19 +25,19 @@ import com.sk89q.worldedit.world.item.ItemType; import com.sk89q.worldedit.world.registry.BundledItemRegistry; -public class ForgeItemRegistry extends BundledItemRegistry { +public class NeoForgeItemRegistry extends BundledItemRegistry { @Override public Component getRichName(ItemType itemType) { return TranslatableComponent.of( - ForgeAdapter.adapt(itemType).getDescriptionId() + NeoForgeAdapter.adapt(itemType).getDescriptionId() ); } @Override public Component getRichName(BaseItemStack itemStack) { return TranslatableComponent.of( - ForgeAdapter.adapt(itemStack).getDescriptionId() + NeoForgeAdapter.adapt(itemStack).getDescriptionId() ); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePermissionsProvider.java similarity index 63% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePermissionsProvider.java index cdfe1dae6d..ce48cd2d2f 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePermissionsProvider.java @@ -17,29 +17,29 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.GameType; -import net.minecraftforge.server.ServerLifecycleHooks; +import net.neoforged.neoforge.server.ServerLifecycleHooks; -public interface ForgePermissionsProvider { +public interface NeoForgePermissionsProvider { boolean hasPermission(ServerPlayer player, String permission); void registerPermission(String permission); - class VanillaPermissionsProvider implements ForgePermissionsProvider { + class VanillaPermissionsProvider implements NeoForgePermissionsProvider { - private final ForgePlatform platform; + private final NeoForgePlatform platform; - public VanillaPermissionsProvider(ForgePlatform platform) { + public VanillaPermissionsProvider(NeoForgePlatform platform) { this.platform = platform; } @Override public boolean hasPermission(ServerPlayer player, String permission) { - ForgeConfiguration configuration = platform.getConfiguration(); + NeoForgeConfiguration configuration = platform.getConfiguration(); return configuration.cheatMode || ServerLifecycleHooks.getCurrentServer().getPlayerList().isOp(player.getGameProfile()) || (configuration.creativeEnable && player.gameMode.getGameModeForPlayer() == GameType.CREATIVE); @@ -49,18 +49,4 @@ public boolean hasPermission(ServerPlayer player, String permission) { public void registerPermission(String permission) { } } - - // TODO Re-add when Sponge for 1.14 is out - // class SpongePermissionsProvider implements ForgePermissionsProvider { - // - // @Override - // public boolean hasPermission(EntityPlayerMP player, String permission) { - // return ((Player) player).hasPermission(permission); - // } - // - // @Override - // public void registerPermission(ICommand command, String permission) { - // - // } - // } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java similarity index 83% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java index d46e9594b3..5b8a57af1c 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; @@ -29,7 +29,7 @@ import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extension.platform.MultiUserPlatform; import com.sk89q.worldedit.extension.platform.Preference; -import com.sk89q.worldedit.forge.internal.ExtendedChunk; +import com.sk89q.worldedit.neoforge.internal.ExtendedChunk; import com.sk89q.worldedit.util.SideEffect; import com.sk89q.worldedit.util.io.ResourceLoader; import com.sk89q.worldedit.world.DataFixer; @@ -37,6 +37,7 @@ import com.sk89q.worldedit.world.registry.Registries; import net.minecraft.SharedConstants; import net.minecraft.commands.Commands; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.dedicated.DedicatedServer; @@ -45,7 +46,7 @@ import net.minecraft.server.players.PlayerList; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.storage.ServerLevelData; -import net.minecraftforge.server.ServerLifecycleHooks; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import org.enginehub.piston.Command; import org.enginehub.piston.CommandManager; @@ -60,17 +61,17 @@ import static java.util.stream.Collectors.toList; -class ForgePlatform extends AbstractPlatform implements MultiUserPlatform { +class NeoForgePlatform extends AbstractPlatform implements MultiUserPlatform { - private final ForgeWorldEdit mod; - private final ForgeDataFixer dataFixer; - private @Nullable ForgeWatchdog watchdog; + private final NeoForgeWorldEdit mod; + private final NeoForgeDataFixer dataFixer; + private @Nullable NeoForgeWatchdog watchdog; private boolean hookingEvents = false; - private final ResourceLoader resourceLoader = new ForgeResourceLoader(WorldEdit.getInstance()); + private final ResourceLoader resourceLoader = new NeoForgeResourceLoader(WorldEdit.getInstance()); - ForgePlatform(ForgeWorldEdit mod) { + NeoForgePlatform(NeoForgeWorldEdit mod) { this.mod = mod; - this.dataFixer = new ForgeDataFixer(getDataVersion()); + this.dataFixer = new NeoForgeDataFixer(getDataVersion()); } boolean isHookingEvents() { @@ -84,7 +85,7 @@ public ResourceLoader getResourceLoader() { @Override public Registries getRegistries() { - return ForgeRegistries.getInstance(); + return NeoForgeRegistries.getInstance(); } @Override @@ -99,7 +100,7 @@ public DataFixer getDataFixer() { @Override public boolean isValidMobType(String type) { - return net.minecraftforge.registries.ForgeRegistries.ENTITY_TYPES.containsKey(new ResourceLocation(type)); + return BuiltInRegistries.ENTITY_TYPE.containsKey(new ResourceLocation(type)); } @Override @@ -115,11 +116,11 @@ public int schedule(long delay, long period, Runnable task) { @Override @Nullable - public ForgeWatchdog getWatchdog() { + public NeoForgeWatchdog getWatchdog() { if (watchdog == null) { MinecraftServer server = ServerLifecycleHooks.getCurrentServer(); if (server instanceof DedicatedServer) { - watchdog = new ForgeWatchdog((DedicatedServer) server); + watchdog = new NeoForgeWatchdog((DedicatedServer) server); } } return watchdog; @@ -130,7 +131,7 @@ public List getWorlds() { Iterable worlds = ServerLifecycleHooks.getCurrentServer().getAllLevels(); List ret = new ArrayList<>(); for (ServerLevel world : worlds) { - ret.add(new ForgeWorld(world)); + ret.add(new NeoForgeWorld(world)); } return ret; } @@ -138,23 +139,23 @@ public List getWorlds() { @Nullable @Override public Player matchPlayer(Player player) { - if (player instanceof ForgePlayer) { + if (player instanceof NeoForgePlayer) { return player; } else { ServerPlayer entity = ServerLifecycleHooks.getCurrentServer().getPlayerList().getPlayerByName(player.getName()); - return entity != null ? new ForgePlayer(entity) : null; + return entity != null ? new NeoForgePlayer(entity) : null; } } @Nullable @Override public World matchWorld(World world) { - if (world instanceof ForgeWorld) { + if (world instanceof NeoForgeWorld) { return world; } else { for (ServerLevel ws : ServerLifecycleHooks.getCurrentServer().getAllLevels()) { if (((ServerLevelData) ws.getLevelData()).getLevelName().equals(world.getName())) { - return new ForgeWorld(ws); + return new NeoForgeWorld(ws); } } @@ -170,13 +171,13 @@ public void registerCommands(CommandManager manager) { } Commands mcMan = server.getCommands(); - for (Command command : manager.getAllCommands().collect(toList())) { + for (Command command : manager.getAllCommands().toList()) { CommandWrapper.register(mcMan.getDispatcher(), command); Set perms = command.getCondition().as(PermissionCondition.class) .map(PermissionCondition::getPermissions) .orElseGet(Collections::emptySet); if (!perms.isEmpty()) { - perms.forEach(ForgeWorldEdit.inst.getPermissionsProvider()::registerPermission); + perms.forEach(NeoForgeWorldEdit.inst.getPermissionsProvider()::registerPermission); } } } @@ -187,7 +188,7 @@ public void setGameHooksEnabled(boolean enabled) { } @Override - public ForgeConfiguration getConfiguration() { + public NeoForgeConfiguration getConfiguration() { return mod.getConfig(); } @@ -253,7 +254,7 @@ public Collection getConnectedUsers() { PlayerList scm = ServerLifecycleHooks.getCurrentServer().getPlayerList(); for (ServerPlayer entity : scm.getPlayers()) { if (entity != null) { - users.add(new ForgePlayer(entity)); + users.add(new NeoForgePlayer(entity)); } } return users; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlayer.java similarity index 86% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlayer.java index bccd06fc98..fddd8bc453 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlayer.java @@ -17,18 +17,18 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.util.StringUtil; import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.extension.platform.AbstractPlayerActor; import com.sk89q.worldedit.extent.inventory.BlockBag; -import com.sk89q.worldedit.forge.internal.NBTConverter; -import com.sk89q.worldedit.forge.net.handler.WECUIPacketHandler; import com.sk89q.worldedit.internal.cui.CUIEvent; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.neoforge.internal.NBTConverter; +import com.sk89q.worldedit.neoforge.net.handler.WECUIPacketHandler; import com.sk89q.worldedit.session.SessionKey; import com.sk89q.worldedit.util.HandSide; import com.sk89q.worldedit.util.Location; @@ -40,10 +40,8 @@ import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockStateHolder; import com.sk89q.worldedit.world.block.BlockTypes; -import io.netty.buffer.Unpooled; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; -import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; import net.minecraft.network.protocol.game.ClientboundBlockUpdatePacket; import net.minecraft.server.level.ServerLevel; @@ -51,18 +49,18 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntityType; +import net.neoforged.neoforge.network.PacketDistributor; import org.enginehub.linbus.tree.LinCompoundTag; -import java.nio.charset.StandardCharsets; import java.util.Locale; import java.util.UUID; import javax.annotation.Nullable; -public class ForgePlayer extends AbstractPlayerActor { +public class NeoForgePlayer extends AbstractPlayerActor { private final ServerPlayer player; - protected ForgePlayer(ServerPlayer player) { + protected NeoForgePlayer(ServerPlayer player) { this.player = player; ThreadSafeCache.getInstance().getOnlineIds().add(getUniqueId()); } @@ -79,7 +77,7 @@ public BaseItemStack getItemInHand(HandSide handSide) { ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND ); - return ForgeAdapter.adapt(is); + return NeoForgeAdapter.adapt(is); } @Override @@ -96,7 +94,7 @@ public BaseEntity getState() { public Location getLocation() { Vector3 position = Vector3.at(this.player.getX(), this.player.getY(), this.player.getZ()); return new Location( - ForgeWorldEdit.inst.getWorld(this.player.serverLevel()), + NeoForgeWorldEdit.inst.getWorld(this.player.serverLevel()), position, this.player.getYRot(), this.player.getXRot()); @@ -104,7 +102,7 @@ public Location getLocation() { @Override public boolean setLocation(Location location) { - ServerLevel level = ForgeAdapter.adapt((World) location.getExtent()); + ServerLevel level = NeoForgeAdapter.adapt((World) location.getExtent()); this.player.teleportTo( level, location.getX(), location.getY(), location.getZ(), @@ -116,12 +114,12 @@ public boolean setLocation(Location location) { @Override public World getWorld() { - return ForgeWorldEdit.inst.getWorld(this.player.serverLevel()); + return NeoForgeWorldEdit.inst.getWorld(this.player.serverLevel()); } @Override public void giveItem(BaseItemStack itemStack) { - this.player.getInventory().add(ForgeAdapter.adapt(itemStack)); + this.player.getInventory().add(NeoForgeAdapter.adapt(itemStack)); } @Override @@ -131,8 +129,7 @@ public void dispatchCUIEvent(CUIEvent event) { if (params.length > 0) { send = send + "|" + StringUtil.joinString(params, "|"); } - FriendlyByteBuf buffer = new FriendlyByteBuf(Unpooled.copiedBuffer(send, StandardCharsets.UTF_8)); - WECUIPacketHandler.send(this.player.connection.getConnection(), buffer); + PacketDistributor.sendToPlayer(this.player, new WECUIPacketHandler.CuiPacket(send)); } private void sendMessage(net.minecraft.network.chat.Component textComponent) { @@ -168,7 +165,8 @@ public void printError(String msg) { @Override public void print(Component component) { sendMessage(net.minecraft.network.chat.Component.Serializer.fromJson( - GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())) + GsonComponentSerializer.INSTANCE.serialize(WorldEditText.format(component, getLocale())), + this.player.registryAccess() )); } @@ -198,7 +196,7 @@ public BlockBag getInventoryBlockBag() { @Override public boolean hasPermission(String perm) { - return ForgeWorldEdit.inst.getPermissionsProvider().hasPermission(player, perm); + return NeoForgeWorldEdit.inst.getPermissionsProvider().hasPermission(player, perm); } @Nullable @@ -209,7 +207,7 @@ public T getFacet(Class cls) { @Override public boolean isAllowedToFly() { - return player.getAbilities().mayfly; + return player.mayFly(); } @Override @@ -228,19 +226,19 @@ public Locale getLocale() { @Override public > void sendFakeBlock(BlockVector3 pos, B block) { World world = getWorld(); - if (!(world instanceof ForgeWorld)) { + if (!(world instanceof NeoForgeWorld)) { return; } - BlockPos loc = ForgeAdapter.toBlockPos(pos); + BlockPos loc = NeoForgeAdapter.toBlockPos(pos); if (block == null) { final ClientboundBlockUpdatePacket packetOut = new ClientboundBlockUpdatePacket( - ((ForgeWorld) world).getWorld(), + ((NeoForgeWorld) world).getWorld(), loc ); player.connection.send(packetOut); } else { player.connection.send(new ClientboundBlockUpdatePacket( - loc, ForgeAdapter.adapt(block.toImmutableState()) + loc, NeoForgeAdapter.adapt(block.toImmutableState()) )); if (block instanceof BaseBlock baseBlock && block.getBlockType().equals(BlockTypes.STRUCTURE_BLOCK)) { final LinCompoundTag nbtData = baseBlock.getNbt(); diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeRegistries.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeRegistries.java similarity index 79% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeRegistries.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeRegistries.java index 55d77abf5b..2aa4bb7604 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeRegistries.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeRegistries.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.world.registry.BiomeRegistry; import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; @@ -29,14 +29,14 @@ /** * World data for the Forge platform. */ -class ForgeRegistries extends BundledRegistries { +class NeoForgeRegistries extends BundledRegistries { - private static final ForgeRegistries INSTANCE = new ForgeRegistries(); - private final BlockRegistry blockRegistry = new ForgeBlockRegistry(); - private final BiomeRegistry biomeRegistry = new ForgeBiomeRegistry(); - private final ItemRegistry itemRegistry = new ForgeItemRegistry(); - private final BlockCategoryRegistry blockCategoryRegistry = new ForgeBlockCategoryRegistry(); - private final ItemCategoryRegistry itemCategoryRegistry = new ForgeItemCategoryRegistry(); + private static final NeoForgeRegistries INSTANCE = new NeoForgeRegistries(); + private final BlockRegistry blockRegistry = new NeoForgeBlockRegistry(); + private final BiomeRegistry biomeRegistry = new NeoForgeBiomeRegistry(); + private final ItemRegistry itemRegistry = new NeoForgeItemRegistry(); + private final BlockCategoryRegistry blockCategoryRegistry = new NeoForgeBlockCategoryRegistry(); + private final ItemCategoryRegistry itemCategoryRegistry = new NeoForgeItemCategoryRegistry(); @Override public BlockRegistry getBlockRegistry() { @@ -68,7 +68,7 @@ public ItemCategoryRegistry getItemCategoryRegistry() { * * @return an instance */ - public static ForgeRegistries getInstance() { + public static NeoForgeRegistries getInstance() { return INSTANCE; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeResourceLoader.java similarity index 91% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeResourceLoader.java index cb480efdb2..57dda7565f 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeResourceLoader.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeResourceLoader.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.util.io.WorldEditResourceLoader; @@ -26,9 +26,9 @@ import java.net.URI; import java.net.URL; -public class ForgeResourceLoader extends WorldEditResourceLoader { +public class NeoForgeResourceLoader extends WorldEditResourceLoader { - public ForgeResourceLoader(WorldEdit worldEdit) { + public NeoForgeResourceLoader(WorldEdit worldEdit) { super(worldEdit); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWatchdog.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWatchdog.java similarity index 89% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWatchdog.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWatchdog.java index 5cf43d0254..daa1cbf029 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWatchdog.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWatchdog.java @@ -17,17 +17,17 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.sk89q.worldedit.extension.platform.Watchdog; import net.minecraft.Util; import net.minecraft.server.dedicated.DedicatedServer; -class ForgeWatchdog implements Watchdog { +class NeoForgeWatchdog implements Watchdog { private final DedicatedServer server; - ForgeWatchdog(DedicatedServer server) { + NeoForgeWatchdog(DedicatedServer server) { this.server = server; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorld.java similarity index 87% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorld.java index a704dfad78..f6a9569e42 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorld.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; @@ -34,18 +34,16 @@ import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.forge.internal.ForgeEntity; -import com.sk89q.worldedit.forge.internal.ForgeServerLevelDelegateProxy; -import com.sk89q.worldedit.forge.internal.ForgeWorldNativeAccess; -import com.sk89q.worldedit.forge.internal.NBTConverter; -import com.sk89q.worldedit.forge.internal.TileEntityUtils; import com.sk89q.worldedit.function.mask.AbstractExtentMask; import com.sk89q.worldedit.function.mask.Mask; -import com.sk89q.worldedit.function.mask.Mask2D; import com.sk89q.worldedit.internal.Constants; import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.neoforge.internal.NBTConverter; +import com.sk89q.worldedit.neoforge.internal.NeoForgeEntity; +import com.sk89q.worldedit.neoforge.internal.NeoForgeServerLevelDelegateProxy; +import com.sk89q.worldedit.neoforge.internal.NeoForgeWorldNativeAccess; import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.util.Direction; import com.sk89q.worldedit.util.Location; @@ -92,9 +90,9 @@ import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.PalettedContainer; +import net.minecraft.world.level.chunk.status.ChunkStatus; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.WorldOptions; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; @@ -133,7 +131,7 @@ /** * An adapter to Minecraft worlds for WorldEdit. */ -public class ForgeWorld extends AbstractWorld { +public class NeoForgeWorld extends AbstractWorld { private static final RandomSource random = RandomSource.create(); @@ -145,17 +143,17 @@ private static ResourceLocation getDimensionRegistryKey(ServerLevel world) { } private final WeakReference worldRef; - private final ForgeWorldNativeAccess nativeAccess; + private final NeoForgeWorldNativeAccess nativeAccess; /** * Construct a new world. * * @param world the world */ - ForgeWorld(ServerLevel world) { + NeoForgeWorld(ServerLevel world) { checkNotNull(world); this.worldRef = new WeakReference<>(world); - this.nativeAccess = new ForgeWorldNativeAccess(worldRef); + this.nativeAccess = new NeoForgeWorldNativeAccess(worldRef); } /** @@ -198,20 +196,20 @@ public > boolean setBlock(BlockVector3 position, B @Override public Set applySideEffects(BlockVector3 position, BlockState previousType, SideEffectSet sideEffectSet) { nativeAccess.applySideEffects(position, previousType, sideEffectSet); - return Sets.intersection(ForgeWorldEdit.inst.getPlatform().getSupportedSideEffects(), sideEffectSet.getSideEffectsToApply()); + return Sets.intersection(NeoForgeWorldEdit.inst.getPlatform().getSupportedSideEffects(), sideEffectSet.getSideEffectsToApply()); } @Override public int getBlockLightLevel(BlockVector3 position) { checkNotNull(position); - return getWorld().getLightEmission(ForgeAdapter.toBlockPos(position)); + return getWorld().getLightEmission(NeoForgeAdapter.toBlockPos(position)); } @Override public boolean clearContainerBlockContents(BlockVector3 position) { checkNotNull(position); - BlockEntity tile = getWorld().getBlockEntity(ForgeAdapter.toBlockPos(position)); + BlockEntity tile = getWorld().getBlockEntity(NeoForgeAdapter.toBlockPos(position)); if (tile instanceof Clearable) { ((Clearable) tile).clearContent(); return true; @@ -228,7 +226,7 @@ public BiomeType getBiome(BlockVector3 position) { } private BiomeType getBiomeInChunk(BlockVector3 position, ChunkAccess chunk) { - return ForgeAdapter.adapt( + return NeoForgeAdapter.adapt( chunk.getNoiseBiome(position.x() >> 2, position.y() >> 2, position.z() >> 2).value() ); } @@ -255,7 +253,7 @@ public boolean setBiome(BlockVector3 position, BiomeType biome) { @Override public boolean useItem(BlockVector3 position, BaseItem item, Direction face) { - ItemStack stack = ForgeAdapter.adapt(new BaseItemStack(item.getType(), item.getNbtReference(), 1)); + ItemStack stack = NeoForgeAdapter.adapt(new BaseItemStack(item.getType(), item.getNbtReference(), 1)); ServerLevel world = getWorld(); final WorldEditFakePlayer fakePlayer; try { @@ -266,15 +264,15 @@ public boolean useItem(BlockVector3 position, BaseItem item, Direction face) { fakePlayer.setItemInHand(InteractionHand.MAIN_HAND, stack); fakePlayer.absMoveTo(position.x(), position.y(), position.z(), (float) face.toVector().toYaw(), (float) face.toVector().toPitch()); - final BlockPos blockPos = ForgeAdapter.toBlockPos(position); - final BlockHitResult rayTraceResult = new BlockHitResult(ForgeAdapter.toVec3(position), - ForgeAdapter.adapt(face), blockPos, false); + final BlockPos blockPos = NeoForgeAdapter.toBlockPos(position); + final BlockHitResult rayTraceResult = new BlockHitResult(NeoForgeAdapter.toVec3(position), + NeoForgeAdapter.adapt(face), blockPos, false); UseOnContext itemUseContext = new UseOnContext(fakePlayer, InteractionHand.MAIN_HAND, rayTraceResult); InteractionResult used = stack.onItemUseFirst(itemUseContext); if (used != InteractionResult.SUCCESS) { // try activating the block - InteractionResult resultType = getWorld().getBlockState(blockPos) - .use(world, fakePlayer, InteractionHand.MAIN_HAND, rayTraceResult); + InteractionResult resultType = getWorld().getBlockState(blockPos).useItemOn(stack, world, fakePlayer, InteractionHand.MAIN_HAND, rayTraceResult) + .result(); if (resultType.consumesAction()) { used = resultType; } else { @@ -293,20 +291,20 @@ public void dropItem(Vector3 position, BaseItemStack item) { return; } - ItemEntity entity = new ItemEntity(getWorld(), position.x(), position.y(), position.z(), ForgeAdapter.adapt(item)); + ItemEntity entity = new ItemEntity(getWorld(), position.x(), position.y(), position.z(), NeoForgeAdapter.adapt(item)); entity.setPickUpDelay(10); getWorld().addFreshEntity(entity); } @Override public void simulateBlockMine(BlockVector3 position) { - BlockPos pos = ForgeAdapter.toBlockPos(position); + BlockPos pos = NeoForgeAdapter.toBlockPos(position); getWorld().destroyBlock(pos, true); } @Override public boolean canPlaceAt(BlockVector3 position, BlockState blockState) { - return ForgeAdapter.adapt(blockState).canSurvive(getWorld(), ForgeAdapter.toBlockPos(position)); + return NeoForgeAdapter.adapt(blockState).canSurvive(getWorld(), NeoForgeAdapter.toBlockPos(position)); } // For unmapped regen names, see Fabric! @@ -332,11 +330,11 @@ private void doRegen(Region region, Extent extent, RegenOptions options) throws WorldOptions originalOpts = levelProperties.worldGenOptions(); long seed = options.getSeed().orElse(originalWorld.getSeed()); - WorldOptions newOpts = options.getSeed().isPresent() + + levelProperties.worldOptions = options.getSeed().isPresent() ? originalOpts.withSeed(OptionalLong.of(seed)) : originalOpts; - levelProperties.worldOptions = newOpts; ResourceKey worldRegKey = originalWorld.dimension(); try (ServerLevel serverWorld = new ServerLevel( originalWorld.getServer(), Util.backgroundExecutor(), session, @@ -394,12 +392,13 @@ private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld } for (BlockVector3 vec : region) { - BlockPos pos = ForgeAdapter.toBlockPos(vec); + BlockPos pos = NeoForgeAdapter.toBlockPos(vec); ChunkAccess chunk = chunks.get(new ChunkPos(pos)); - BlockStateHolder state = ForgeAdapter.adapt(chunk.getBlockState(pos)); + BlockStateHolder state = NeoForgeAdapter.adapt(chunk.getBlockState(pos)); BlockEntity blockEntity = chunk.getBlockEntity(pos); if (blockEntity != null) { - state = state.toBaseBlock(LazyReference.from(() -> NBTConverter.fromNative(blockEntity.saveWithFullMetadata()))); + net.minecraft.nbt.CompoundTag tag = blockEntity.saveWithId(serverWorld.registryAccess()); + state = state.toBaseBlock(LazyReference.from(() -> NBTConverter.fromNative(tag))); } extent.setBlock(vec, state.toBaseBlock()); @@ -415,8 +414,8 @@ private List> submitChunkLoadTasks(Region region, // Pre-gen all the chunks for (BlockVector2 chunk : region.getChunks()) { chunkLoadings.add( - world.getChunkSource().getChunkFutureMainThread(chunk.x(), chunk.z(), ChunkStatus.FEATURES, true) - .thenApply(either -> either.left().orElse(null)) + world.getChunkSource().getChunkFuture(chunk.x(), chunk.z(), ChunkStatus.FEATURES, true) + .thenApply(either -> either.orElse(null)) ); } return chunkLoadings; @@ -462,9 +461,9 @@ public boolean generateTree(TreeType type, EditSession editSession, BlockVector3 if (type == TreeType.CHORUS_PLANT) { position = position.add(0, 1, 0); } - WorldGenLevel levelProxy = ForgeServerLevelDelegateProxy.newInstance(editSession, world); + WorldGenLevel levelProxy = NeoForgeServerLevelDelegateProxy.newInstance(editSession, world); return generator != null && generator.place( - levelProxy, chunkManager.getGenerator(), random, ForgeAdapter.toBlockPos(position) + levelProxy, chunkManager.getGenerator(), random, NeoForgeAdapter.toBlockPos(position) ); } @@ -472,8 +471,8 @@ public boolean generateFeature(ConfiguredFeatureType type, EditSession editSessi ServerLevel world = getWorld(); ConfiguredFeature k = world.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).get(ResourceLocation.tryParse(type.id())); ServerChunkCache chunkManager = world.getChunkSource(); - WorldGenLevel levelProxy = ForgeServerLevelDelegateProxy.newInstance(editSession, world); - return k != null && k.place(levelProxy, chunkManager.getGenerator(), random, ForgeAdapter.toBlockPos(position)); + WorldGenLevel levelProxy = NeoForgeServerLevelDelegateProxy.newInstance(editSession, world); + return k != null && k.place(levelProxy, chunkManager.getGenerator(), random, NeoForgeAdapter.toBlockPos(position)); } @Override @@ -485,7 +484,7 @@ public boolean generateStructure(StructureType type, EditSession editSession, Bl } ServerChunkCache chunkManager = world.getChunkSource(); - WorldGenLevel proxyLevel = ForgeServerLevelDelegateProxy.newInstance(editSession, world); + WorldGenLevel proxyLevel = NeoForgeServerLevelDelegateProxy.newInstance(editSession, world); ChunkPos chunkPos = new ChunkPos(new BlockPos(position.x(), position.y(), position.z())); StructureStart structureStart = k.generate(world.registryAccess(), chunkManager.getGenerator(), chunkManager.getGenerator().getBiomeSource(), chunkManager.randomState(), world.getStructureManager(), world.getSeed(), chunkPos, 0, proxyLevel, biome -> true); @@ -502,7 +501,7 @@ public boolean generateStructure(StructureType type, EditSession editSession, Bl @Override public void checkLoadedChunk(BlockVector3 pt) { - getWorld().getChunk(ForgeAdapter.toBlockPos(pt)); + getWorld().getChunk(NeoForgeAdapter.toBlockPos(pt)); } @Override @@ -534,7 +533,7 @@ public void fixLighting(Iterable chunks) { @Override public boolean playEffect(Vector3 position, int type, int data) { // TODO update sound API - // getWorld().play(type, ForgeAdapter.toBlockPos(position.toBlockPoint()), data); + // getWorld().play(type, NeoForgeAdapter.toBlockPos(position.toBlockPoint()), data); return true; } @@ -597,21 +596,16 @@ public int getMaxY() { @Override public BlockVector3 getSpawnPosition() { - LevelData worldInfo = getWorld().getLevelData(); - return BlockVector3.at( - worldInfo.getXSpawn(), - worldInfo.getYSpawn(), - worldInfo.getZSpawn() - ); + return NeoForgeAdapter.adapt(getWorld().getLevelData().getSpawnPos()); } @Override public BlockState getBlock(BlockVector3 position) { net.minecraft.world.level.block.state.BlockState mcState = getWorld() .getChunk(position.x() >> 4, position.z() >> 4) - .getBlockState(ForgeAdapter.toBlockPos(position)); + .getBlockState(NeoForgeAdapter.toBlockPos(position)); - return ForgeAdapter.adapt(mcState); + return NeoForgeAdapter.adapt(mcState); } @Override @@ -620,7 +614,7 @@ public BaseBlock getFullBlock(BlockVector3 position) { BlockEntity tile = getWorld().getChunk(pos).getBlockEntity(pos); if (tile != null) { - net.minecraft.nbt.CompoundTag tag = TileEntityUtils.copyNbtData(tile); + net.minecraft.nbt.CompoundTag tag = tile.saveWithId(getWorld().registryAccess()); return getBlock(position).toBaseBlock( LazyReference.from(() -> NBTConverter.fromNative(tag)) ); @@ -638,7 +632,7 @@ public int hashCode() { public boolean equals(Object o) { if (o == null) { return false; - } else if ((o instanceof ForgeWorld other)) { + } else if ((o instanceof NeoForgeWorld other)) { Level otherWorld = other.worldRef.get(); Level thisWorld = worldRef.get(); return otherWorld != null && otherWorld.equals(thisWorld); @@ -653,22 +647,22 @@ public boolean equals(Object o) { public List getEntities(Region region) { final ServerLevel world = getWorld(); AABB box = new AABB( - ForgeAdapter.toVec3(region.getMinimumPoint()), - ForgeAdapter.toVec3(region.getMaximumPoint().add(BlockVector3.ONE)) + NeoForgeAdapter.toVec3(region.getMinimumPoint()), + NeoForgeAdapter.toVec3(region.getMaximumPoint().add(BlockVector3.ONE)) ); List nmsEntities = world.getEntities( (net.minecraft.world.entity.Entity) null, box, - e -> region.contains(ForgeAdapter.adapt(e.blockPosition())) + e -> region.contains(NeoForgeAdapter.adapt(e.blockPosition())) ); - return nmsEntities.stream().map(ForgeEntity::new).collect(ImmutableList.toImmutableList()); + return nmsEntities.stream().map(NeoForgeEntity::new).collect(ImmutableList.toImmutableList()); } @Override public List getEntities() { final ServerLevel world = getWorld(); return Streams.stream(world.getAllEntities()) - .map(ForgeEntity::new) + .map(NeoForgeEntity::new) .collect(ImmutableList.toImmutableList()); } @@ -697,7 +691,7 @@ public Entity createEntity(Location location, BaseEntity entity) { }); if (createdEntity != null) { world.addFreshEntityWithPassengers(createdEntity); - return new ForgeEntity(createdEntity); + return new NeoForgeEntity(createdEntity); } return null; } @@ -722,13 +716,7 @@ public Mask createLiquidMask() { return new AbstractExtentMask(this) { @Override public boolean test(BlockVector3 vector) { - return ForgeAdapter.adapt(getExtent().getBlock(vector)).getBlock() instanceof LiquidBlock; - } - - @Nullable - @Override - public Mask2D toMask2D() { - return null; + return NeoForgeAdapter.adapt(getExtent().getBlock(vector)).getBlock() instanceof LiquidBlock; } }; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java similarity index 75% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java index 18fb444a5a..4cd46b2121 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgeWorldEdit.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.mojang.brigadier.ParseResults; import com.mojang.brigadier.exceptions.CommandSyntaxException; @@ -31,10 +31,10 @@ import com.sk89q.worldedit.extension.platform.Capability; import com.sk89q.worldedit.extension.platform.Platform; import com.sk89q.worldedit.extension.platform.PlatformManager; -import com.sk89q.worldedit.forge.net.handler.WECUIPacketHandler; import com.sk89q.worldedit.internal.anvil.ChunkDeleter; import com.sk89q.worldedit.internal.event.InteractionDebouncer; import com.sk89q.worldedit.internal.util.LogManagerCompat; +import com.sk89q.worldedit.neoforge.net.handler.WECUIPacketHandler; import com.sk89q.worldedit.util.Direction; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.world.biome.BiomeCategory; @@ -51,6 +51,7 @@ import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.Registry; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -60,90 +61,69 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.biome.Biome; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.CommandEvent; -import net.minecraftforge.event.RegisterCommandsEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.event.server.ServerAboutToStartEvent; -import net.minecraftforge.event.server.ServerStartedEvent; -import net.minecraftforge.event.server.ServerStoppingEvent; -import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.IExtensionPoint; -import net.minecraftforge.fml.ModContainer; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.fml.loading.FMLPaths; -import net.minecraftforge.registries.ForgeRegistries; +import net.neoforged.bus.api.Event; +import net.neoforged.bus.api.IEventBus; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.ModContainer; +import net.neoforged.fml.ModLoadingContext; +import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +import net.neoforged.fml.loading.FMLPaths; +import net.neoforged.neoforge.common.NeoForge; +import net.neoforged.neoforge.event.CommandEvent; +import net.neoforged.neoforge.event.RegisterCommandsEvent; +import net.neoforged.neoforge.event.entity.player.PlayerEvent; +import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent; +import net.neoforged.neoforge.event.server.ServerAboutToStartEvent; +import net.neoforged.neoforge.event.server.ServerStartedEvent; +import net.neoforged.neoforge.event.server.ServerStoppingEvent; import org.apache.logging.log4j.Logger; import org.enginehub.piston.Command; import java.io.IOException; import java.io.UncheckedIOException; -import java.lang.reflect.InvocationTargetException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.function.Supplier; import java.util.stream.Collectors; import static com.google.common.base.Preconditions.checkNotNull; -import static com.sk89q.worldedit.forge.ForgeAdapter.adaptCommandSource; -import static com.sk89q.worldedit.forge.ForgeAdapter.adaptPlayer; import static com.sk89q.worldedit.internal.anvil.ChunkDeleter.DELCHUNKS_FILE_NAME; +import static com.sk89q.worldedit.neoforge.NeoForgeAdapter.adaptCommandSource; +import static com.sk89q.worldedit.neoforge.NeoForgeAdapter.adaptPlayer; /** * The Forge implementation of WorldEdit. */ -@Mod(ForgeWorldEdit.MOD_ID) -public class ForgeWorldEdit { +@Mod(NeoForgeWorldEdit.MOD_ID) +public class NeoForgeWorldEdit { private static final Logger LOGGER = LogManagerCompat.getLogger(); public static final String MOD_ID = "worldedit"; public static final String CUI_PLUGIN_CHANNEL = "cui"; - private ForgePermissionsProvider provider; + private NeoForgePermissionsProvider provider; - public static ForgeWorldEdit inst; + public static NeoForgeWorldEdit inst; private InteractionDebouncer debouncer; - private ForgePlatform platform; - private ForgeConfiguration config; + private NeoForgePlatform platform; + private NeoForgeConfiguration config; private Path workingDir; private ModContainer container; - public ForgeWorldEdit() { + public NeoForgeWorldEdit(IEventBus modBus) { inst = this; - IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); modBus.addListener(this::init); + modBus.register(WECUIPacketHandler.class); - MinecraftForge.EVENT_BUS.register(ThreadSafeCache.getInstance()); - MinecraftForge.EVENT_BUS.register(this); - - // Mark WorldEdit as only required on the server - try { - // TODO compile under --release 16 and call this normally in 7.3.0 - ModLoadingContext.class.getDeclaredMethod("registerExtensionPoint", Class.class, Supplier.class) - .invoke( - ModLoadingContext.get(), - IExtensionPoint.DisplayTest.class, - (Supplier) () -> new IExtensionPoint.DisplayTest( - () -> IExtensionPoint.DisplayTest.IGNORESERVERONLY, - (a, b) -> true - ) - ); - } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { - throw new IllegalStateException(e); - } + NeoForge.EVENT_BUS.register(ThreadSafeCache.getInstance()); + NeoForge.EVENT_BUS.register(this); } private void init(FMLCommonSetupEvent event) { @@ -161,42 +141,36 @@ private void init(FMLCommonSetupEvent event) { setupPlatform(); - WECUIPacketHandler.init(); - - LOGGER.info("WorldEdit for Forge (version " + getInternalVersion() + ") is loaded"); + LOGGER.info("WorldEdit for NeoForge (version {}) is loaded", getInternalVersion()); } private void setupPlatform() { - this.platform = new ForgePlatform(this); + this.platform = new NeoForgePlatform(this); debouncer = new InteractionDebouncer(platform); WorldEdit.getInstance().getPlatformManager().register(platform); - config = new ForgeConfiguration(this); + config = new NeoForgeConfiguration(this); - // TODO if (ModList.get().isLoaded("sponge")) { - // this.provider = new ForgePermissionsProvider.SpongePermissionsProvider(); - // } else { - this.provider = new ForgePermissionsProvider.VanillaPermissionsProvider(platform); - // } + this.provider = new NeoForgePermissionsProvider.VanillaPermissionsProvider(platform); } private void setupRegistries(MinecraftServer server) { // Blocks - for (ResourceLocation name : ForgeRegistries.BLOCKS.getKeys()) { + for (ResourceLocation name : BuiltInRegistries.BLOCK.keySet()) { if (BlockType.REGISTRY.get(name.toString()) == null) { BlockType.REGISTRY.register(name.toString(), new BlockType(name.toString(), - input -> ForgeAdapter.adapt(ForgeAdapter.adapt(input.getBlockType()).defaultBlockState()))); + input -> NeoForgeAdapter.adapt(NeoForgeAdapter.adapt(input.getBlockType()).defaultBlockState()))); } } // Items - for (ResourceLocation name : ForgeRegistries.ITEMS.getKeys()) { + for (ResourceLocation name : BuiltInRegistries.ITEM.keySet()) { if (ItemType.REGISTRY.get(name.toString()) == null) { ItemType.REGISTRY.register(name.toString(), new ItemType(name.toString())); } } // Entities - for (ResourceLocation name : ForgeRegistries.ENTITY_TYPES.getKeys()) { + for (ResourceLocation name : BuiltInRegistries.ENTITY_TYPE.keySet()) { if (EntityType.REGISTRY.get(name.toString()) == null) { EntityType.REGISTRY.register(name.toString(), new EntityType(name.toString())); } @@ -228,19 +202,19 @@ private void setupRegistries(MinecraftServer server) { .stream() .flatMap(HolderSet.Named::stream) .map(Holder::value) - .map(ForgeAdapter::adapt) + .map(NeoForgeAdapter::adapt) .collect(Collectors.toSet())) ); } }); // Features - for (ResourceLocation name: server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { + for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { if (ConfiguredFeatureType.REGISTRY.get(name.toString()) == null) { ConfiguredFeatureType.REGISTRY.register(name.toString(), new ConfiguredFeatureType(name.toString())); } } // Structures - for (ResourceLocation name: server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { + for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { if (StructureType.REGISTRY.get(name.toString()) == null) { StructureType.REGISTRY.register(name.toString(), new StructureType(name.toString())); } @@ -310,9 +284,9 @@ public void onLeftClickBlock(PlayerInteractEvent.LeftClickBlock event) { ServerPlayer playerEntity = (ServerPlayer) event.getEntity(); WorldEdit we = WorldEdit.getInstance(); - ForgePlayer player = adaptPlayer(playerEntity); - ForgeWorld world = getWorld((ServerLevel) playerEntity.level()); - Direction direction = ForgeAdapter.adaptEnumFacing(event.getFace()); + NeoForgePlayer player = adaptPlayer(playerEntity); + NeoForgeWorld world = getWorld((ServerLevel) playerEntity.level()); + Direction direction = NeoForgeAdapter.adaptEnumFacing(event.getFace()); BlockPos blockPos = event.getPos(); Location pos = new Location(world, blockPos.getX(), blockPos.getY(), blockPos.getZ()); @@ -333,9 +307,9 @@ public void onRightClickBlock(PlayerInteractEvent.RightClickBlock event) { ServerPlayer playerEntity = (ServerPlayer) event.getEntity(); WorldEdit we = WorldEdit.getInstance(); - ForgePlayer player = adaptPlayer(playerEntity); - ForgeWorld world = getWorld((ServerLevel) playerEntity.level()); - Direction direction = ForgeAdapter.adaptEnumFacing(event.getFace()); + NeoForgePlayer player = adaptPlayer(playerEntity); + NeoForgeWorld world = getWorld((ServerLevel) playerEntity.level()); + Direction direction = NeoForgeAdapter.adaptEnumFacing(event.getFace()); BlockPos blockPos = event.getPos(); Location pos = new Location(world, blockPos.getX(), blockPos.getY(), blockPos.getZ()); @@ -354,7 +328,7 @@ public void onLeftClickAir(ServerPlayer playerEntity, InteractionHand hand) { } WorldEdit we = WorldEdit.getInstance(); - ForgePlayer player = adaptPlayer(playerEntity); + NeoForgePlayer player = adaptPlayer(playerEntity); Optional previousResult = debouncer.getDuplicateInteractionResult(player); if (previousResult.isPresent()) { @@ -373,7 +347,7 @@ public void onRightClickItem(PlayerInteractEvent.RightClickItem event) { ServerPlayer playerEntity = (ServerPlayer) event.getEntity(); WorldEdit we = WorldEdit.getInstance(); - ForgePlayer player = adaptPlayer(playerEntity); + NeoForgePlayer player = adaptPlayer(playerEntity); Optional previousResult = debouncer.getDuplicateInteractionResult(player); if (previousResult.isPresent()) { @@ -413,7 +387,7 @@ public void onPlayerLogOut(PlayerEvent.PlayerLoggedOutEvent event) { debouncer.clearInteraction(adaptPlayer(player)); WorldEdit.getInstance().getEventBus() - .post(new SessionIdleEvent(new ForgePlayer.SessionKeyImpl(player))); + .post(new SessionIdleEvent(new NeoForgePlayer.SessionKeyImpl(player))); } } @@ -422,7 +396,7 @@ public void onPlayerLogOut(PlayerEvent.PlayerLoggedOutEvent event) { * * @return the Forge configuration */ - ForgeConfiguration getConfig() { + NeoForgeConfiguration getConfig() { return this.config; } @@ -443,9 +417,9 @@ public LocalSession getSession(ServerPlayer player) { * @param world the world * @return the WorldEdit world */ - public ForgeWorld getWorld(ServerLevel world) { + public NeoForgeWorld getWorld(ServerLevel world) { checkNotNull(world); - return new ForgeWorld(world); + return new NeoForgeWorld(world); } /** @@ -475,11 +449,11 @@ String getInternalVersion() { return container.getModInfo().getVersion().toString(); } - public void setPermissionsProvider(ForgePermissionsProvider provider) { + public void setPermissionsProvider(NeoForgePermissionsProvider provider) { this.provider = provider; } - public ForgePermissionsProvider getPermissionsProvider() { + public NeoForgePermissionsProvider getPermissionsProvider() { return provider; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java similarity index 87% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java index da457b4b9a..9fae482670 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java @@ -17,13 +17,13 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.server.ServerLifecycleHooks; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.neoforge.event.TickEvent; +import net.neoforged.neoforge.server.ServerLifecycleHooks; import java.util.Collections; import java.util.HashSet; @@ -51,7 +51,11 @@ public Set getOnlineIds() { } @SubscribeEvent - public void tickStart(TickEvent event) { + public void tickStart(TickEvent.ServerTickEvent event) { + if (event.phase != TickEvent.Phase.END) { + return; + } + long now = System.currentTimeMillis(); if (now - lastRefresh > REFRESH_DELAY) { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WorldEditFakePlayer.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/WorldEditFakePlayer.java similarity index 98% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WorldEditFakePlayer.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/WorldEditFakePlayer.java index 277ffd28a5..3940f6198b 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WorldEditFakePlayer.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/WorldEditFakePlayer.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import com.mojang.authlib.GameProfile; import net.minecraft.network.chat.Component; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WorldEditGenListener.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/WorldEditGenListener.java similarity index 85% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WorldEditGenListener.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/WorldEditGenListener.java index 2904fea2f0..5051cc6ae4 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WorldEditGenListener.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/WorldEditGenListener.java @@ -17,13 +17,11 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge; +package com.sk89q.worldedit.neoforge; import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.chunk.ChunkStatus; - -import javax.annotation.Nullable; +import net.minecraft.world.level.chunk.status.ChunkStatus; // For now, this does nothing, but might be useful later for regen progress communication. class WorldEditGenListener implements ChunkProgressListener { @@ -32,7 +30,7 @@ public void updateSpawnPos(ChunkPos chunkPos) { } @Override - public void onStatusChange(ChunkPos chunkPos, @Nullable ChunkStatus chunkStatus) { + public void onStatusChange(ChunkPos chunkPos, @org.jetbrains.annotations.Nullable ChunkStatus chunkStatus) { } @Override diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/ExtendedChunk.java similarity index 97% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/ExtendedChunk.java index 7fb97026dc..25af031429 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ExtendedChunk.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/ExtendedChunk.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; import com.sk89q.worldedit.util.SideEffect; import net.minecraft.core.BlockPos; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/IPropertyAdapter.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/IPropertyAdapter.java similarity index 97% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/IPropertyAdapter.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/IPropertyAdapter.java index e17f673510..2d7d965cd1 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/IPropertyAdapter.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/IPropertyAdapter.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; import com.google.common.collect.ImmutableList; import com.sk89q.worldedit.registry.state.Property; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/NBTConverter.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NBTConverter.java similarity index 99% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/NBTConverter.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NBTConverter.java index e43058a4a5..25bc7930a9 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/NBTConverter.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NBTConverter.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; import org.enginehub.linbus.common.LinTagId; import org.enginehub.linbus.tree.LinByteArrayTag; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeEntity.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeEntity.java similarity index 82% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeEntity.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeEntity.java index 997994690f..837f6cff6b 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeEntity.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeEntity.java @@ -17,35 +17,34 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; import com.sk89q.worldedit.entity.metadata.EntityProperties; import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.forge.ForgeAdapter; -import com.sk89q.worldedit.forge.ForgeEntityProperties; -import com.sk89q.worldedit.forge.internal.NBTConverter; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.neoforge.NeoForgeAdapter; +import com.sk89q.worldedit.neoforge.NeoForgeEntityProperties; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.util.concurrency.LazyReference; import com.sk89q.worldedit.world.NullWorld; import com.sk89q.worldedit.world.entity.EntityTypes; +import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; -import net.minecraftforge.registries.ForgeRegistries; import java.lang.ref.WeakReference; import javax.annotation.Nullable; import static com.google.common.base.Preconditions.checkNotNull; -public class ForgeEntity implements Entity { +public class NeoForgeEntity implements Entity { private final WeakReference entityRef; - public ForgeEntity(net.minecraft.world.entity.Entity entity) { + public NeoForgeEntity(net.minecraft.world.entity.Entity entity) { checkNotNull(entity); this.entityRef = new WeakReference<>(entity); } @@ -56,10 +55,7 @@ public BaseEntity getState() { if (entity == null || entity.isPassenger()) { return null; } - ResourceLocation id = ForgeRegistries.ENTITY_TYPES.getKey(entity.getType()); - if (id == null) { - return null; - } + ResourceLocation id = BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()); CompoundTag tag = new CompoundTag(); entity.saveWithoutId(tag); return new BaseEntity(EntityTypes.get(id.toString()), LazyReference.from(() -> NBTConverter.fromNative(tag))); @@ -73,7 +69,7 @@ public Location getLocation() { float yaw = entity.getYRot(); float pitch = entity.getXRot(); - return new Location(ForgeAdapter.adapt((ServerLevel) entity.level()), position, yaw, pitch); + return new Location(NeoForgeAdapter.adapt((ServerLevel) entity.level()), position, yaw, pitch); } else { return new Location(NullWorld.getInstance()); } @@ -89,7 +85,7 @@ public boolean setLocation(Location location) { public Extent getExtent() { net.minecraft.world.entity.Entity entity = entityRef.get(); if (entity != null) { - return ForgeAdapter.adapt((ServerLevel) entity.level()); + return NeoForgeAdapter.adapt((ServerLevel) entity.level()); } else { return NullWorld.getInstance(); } @@ -111,7 +107,7 @@ public T getFacet(Class cls) { net.minecraft.world.entity.Entity entity = entityRef.get(); if (entity != null) { if (EntityProperties.class.isAssignableFrom(cls)) { - return (T) new ForgeEntityProperties(entity); + return (T) new NeoForgeEntityProperties(entity); } else { return null; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeServerLevelDelegateProxy.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeServerLevelDelegateProxy.java similarity index 78% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeServerLevelDelegateProxy.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeServerLevelDelegateProxy.java index 809570e1de..64266c1663 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeServerLevelDelegateProxy.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeServerLevelDelegateProxy.java @@ -17,13 +17,13 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.forge.ForgeAdapter; import com.sk89q.worldedit.math.Vector3; +import com.sk89q.worldedit.neoforge.NeoForgeAdapter; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.world.block.BlockTypes; import net.minecraft.core.BlockPos; @@ -38,12 +38,12 @@ import java.lang.reflect.Method; import java.lang.reflect.Proxy; -public class ForgeServerLevelDelegateProxy implements InvocationHandler { +public class NeoForgeServerLevelDelegateProxy implements InvocationHandler { private final EditSession editSession; private final ServerLevel serverLevel; - private ForgeServerLevelDelegateProxy(EditSession editSession, ServerLevel serverLevel) { + private NeoForgeServerLevelDelegateProxy(EditSession editSession, ServerLevel serverLevel) { this.editSession = editSession; this.serverLevel = serverLevel; } @@ -52,7 +52,7 @@ public static WorldGenLevel newInstance(EditSession editSession, ServerLevel ser return (WorldGenLevel) Proxy.newProxyInstance( serverLevel.getClass().getClassLoader(), serverLevel.getClass().getInterfaces(), - new ForgeServerLevelDelegateProxy(editSession, serverLevel) + new NeoForgeServerLevelDelegateProxy(editSession, serverLevel) ); } @@ -63,18 +63,23 @@ private BlockEntity getBlockEntity(BlockPos blockPos) { return null; } BlockEntity newEntity = tileEntity.getType().create(blockPos, getBlockState(blockPos)); - newEntity.load(NBTConverter.toNative(this.editSession.getFullBlock(ForgeAdapter.adapt(blockPos)).getNbtReference().getValue())); + newEntity.loadWithComponents( + NBTConverter.toNative( + this.editSession.getFullBlock(NeoForgeAdapter.adapt(blockPos)).getNbtReference().getValue() + ), + this.serverLevel.registryAccess() + ); return newEntity; } private BlockState getBlockState(BlockPos blockPos) { - return ForgeAdapter.adapt(this.editSession.getBlock(ForgeAdapter.adapt(blockPos))); + return NeoForgeAdapter.adapt(this.editSession.getBlock(NeoForgeAdapter.adapt(blockPos))); } private boolean setBlock(BlockPos blockPos, BlockState blockState) { try { - return editSession.setBlock(ForgeAdapter.adapt(blockPos), ForgeAdapter.adapt(blockState)); + return editSession.setBlock(NeoForgeAdapter.adapt(blockPos), NeoForgeAdapter.adapt(blockState)); } catch (MaxChangedBlocksException e) { throw new RuntimeException(e); } @@ -82,16 +87,16 @@ private boolean setBlock(BlockPos blockPos, BlockState blockState) { private boolean removeBlock(BlockPos blockPos, boolean bl) { try { - return editSession.setBlock(ForgeAdapter.adapt(blockPos), BlockTypes.AIR.getDefaultState()); + return editSession.setBlock(NeoForgeAdapter.adapt(blockPos), BlockTypes.AIR.getDefaultState()); } catch (MaxChangedBlocksException e) { throw new RuntimeException(e); } } private boolean addEntity(Entity entity) { - Vector3 pos = ForgeAdapter.adapt(entity.getPosition(0.0f)); - Location location = new Location(ForgeAdapter.adapt(serverLevel), pos.x(), pos.y(), pos.z()); - BaseEntity baseEntity = new ForgeEntity(entity).getState(); + Vector3 pos = NeoForgeAdapter.adapt(entity.getPosition(0.0f)); + Location location = new Location(NeoForgeAdapter.adapt(serverLevel), pos.x(), pos.y(), pos.z()); + BaseEntity baseEntity = new NeoForgeEntity(entity).getState(); return editSession.createEntity(location, baseEntity) != null; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeTransmogrifier.java similarity index 92% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeTransmogrifier.java index 38224711fd..c835ae1ae8 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeTransmogrifier.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeTransmogrifier.java @@ -17,13 +17,13 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; -import com.sk89q.worldedit.forge.ForgeAdapter; +import com.sk89q.worldedit.neoforge.NeoForgeAdapter; import com.sk89q.worldedit.registry.state.BooleanProperty; import com.sk89q.worldedit.registry.state.DirectionalProperty; import com.sk89q.worldedit.registry.state.EnumProperty; @@ -45,7 +45,7 @@ /** * Raw, un-cached transformations. */ -public class ForgeTransmogrifier { +public class NeoForgeTransmogrifier { private static final LoadingCache, Property> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader<>() { @Override @@ -58,7 +58,7 @@ public Property load(net.minecraft.world.level.block.state.properties.Propert } if (property instanceof DirectionProperty) { return new DirectionalProperty(property.getName(), ((DirectionProperty) property).getPossibleValues().stream() - .map(ForgeAdapter::adaptEnumFacing) + .map(NeoForgeAdapter::adaptEnumFacing) .collect(Collectors.toList())); } if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { @@ -82,7 +82,7 @@ public static Map, Object> transmogToWorldEditProperties(BlockType b for (Map.Entry, Comparable> prop : mcProps.entrySet()) { Object value = prop.getValue(); if (prop.getKey() instanceof DirectionProperty) { - value = ForgeAdapter.adaptEnumFacing((net.minecraft.core.Direction) value); + value = NeoForgeAdapter.adaptEnumFacing((net.minecraft.core.Direction) value); } else if (prop.getKey() instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { value = ((StringRepresentable) value).getSerializedName(); } @@ -99,7 +99,7 @@ private static net.minecraft.world.level.block.state.BlockState transmogToMinecr // we may need to adapt this value, depending on the source prop if (property instanceof DirectionProperty) { Direction dir = (Direction) value; - value = ForgeAdapter.adapt(dir); + value = NeoForgeAdapter.adapt(dir); } else if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { String enumName = (String) value; value = ((net.minecraft.world.level.block.state.properties.EnumProperty) property).getValue((String) value) @@ -112,17 +112,17 @@ private static net.minecraft.world.level.block.state.BlockState transmogToMinecr } public static net.minecraft.world.level.block.state.BlockState transmogToMinecraft(BlockState blockState) { - Block mcBlock = ForgeAdapter.adapt(blockState.getBlockType()); + Block mcBlock = NeoForgeAdapter.adapt(blockState.getBlockType()); net.minecraft.world.level.block.state.BlockState newState = mcBlock.defaultBlockState(); Map, Object> states = blockState.getStates(); return transmogToMinecraftProperties(mcBlock.getStateDefinition(), newState, states); } public static BlockState transmogToWorldEdit(net.minecraft.world.level.block.state.BlockState blockState) { - BlockType blockType = ForgeAdapter.adapt(blockState.getBlock()); + BlockType blockType = NeoForgeAdapter.adapt(blockState.getBlock()); return blockType.getState(transmogToWorldEditProperties(blockType, blockState.getValues())); } - private ForgeTransmogrifier() { + private NeoForgeTransmogrifier() { } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeWorldNativeAccess.java similarity index 88% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeWorldNativeAccess.java index 2eabc39a66..c1e98765bf 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/internal/ForgeWorldNativeAccess.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/internal/NeoForgeWorldNativeAccess.java @@ -17,17 +17,19 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.internal; +package com.sk89q.worldedit.neoforge.internal; -import com.sk89q.worldedit.forge.ForgeAdapter; import com.sk89q.worldedit.internal.block.BlockStateIdAccess; import com.sk89q.worldedit.internal.wna.WorldNativeAccess; +import com.sk89q.worldedit.neoforge.NeoForgeAdapter; import com.sk89q.worldedit.util.SideEffect; import com.sk89q.worldedit.util.SideEffectSet; import net.minecraft.core.BlockPos; import net.minecraft.server.level.FullChunkStatus; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.LevelChunk; import org.enginehub.linbus.tree.LinCompoundTag; @@ -36,14 +38,14 @@ import java.util.Objects; import javax.annotation.Nullable; -public class ForgeWorldNativeAccess implements WorldNativeAccess { +public class NeoForgeWorldNativeAccess implements WorldNativeAccess { private static final int UPDATE = 1; private static final int NOTIFY = 2; private final WeakReference world; private SideEffectSet sideEffectSet; - public ForgeWorldNativeAccess(WeakReference world) { + public NeoForgeWorldNativeAccess(WeakReference world) { this.world = world; } @@ -66,7 +68,7 @@ public BlockState toNative(com.sk89q.worldedit.world.block.BlockState state) { int stateId = BlockStateIdAccess.getBlockStateId(state); return BlockStateIdAccess.isValidInternalId(stateId) ? Block.stateById(stateId) - : ForgeAdapter.adapt(state); + : NeoForgeAdapter.adapt(state); } @Override @@ -103,7 +105,14 @@ public void updateLightingForBlock(BlockPos position) { @Override public boolean updateTileEntity(BlockPos position, LinCompoundTag tag) { net.minecraft.nbt.CompoundTag nativeTag = NBTConverter.toNative(tag); - return TileEntityUtils.setTileEntity(getWorld(), position, nativeTag); + Level level = getWorld(); + BlockEntity tileEntity = level.getChunkAt(position).getBlockEntity(position); + if (tileEntity == null) { + return false; + } + tileEntity.loadWithComponents(nativeTag, level.registryAccess()); + tileEntity.setChanged(); + return true; } @Override diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/AccessorServerPlayerGameMode.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/AccessorServerPlayerGameMode.java similarity index 96% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/AccessorServerPlayerGameMode.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/AccessorServerPlayerGameMode.java index 5bb01abe28..234799dc28 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/AccessorServerPlayerGameMode.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/AccessorServerPlayerGameMode.java @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.mixin; +package com.sk89q.worldedit.neoforge.mixin; import net.minecraft.server.level.ServerPlayerGameMode; import org.spongepowered.asm.mixin.Mixin; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/MixinLevelChunkSetBlockHook.java similarity index 97% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/MixinLevelChunkSetBlockHook.java index 4bfa690b3b..e4bb66b6bf 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinLevelChunkSetBlockHook.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/MixinLevelChunkSetBlockHook.java @@ -17,9 +17,9 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.mixin; +package com.sk89q.worldedit.neoforge.mixin; -import com.sk89q.worldedit.forge.internal.ExtendedChunk; +import com.sk89q.worldedit.neoforge.internal.ExtendedChunk; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.server.MinecraftServer; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinServerGamePacketListenerImpl.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/MixinServerGamePacketListenerImpl.java similarity index 87% rename from worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinServerGamePacketListenerImpl.java rename to worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/MixinServerGamePacketListenerImpl.java index de559a823e..fd9754373f 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/mixin/MixinServerGamePacketListenerImpl.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/mixin/MixinServerGamePacketListenerImpl.java @@ -17,15 +17,16 @@ * along with this program. If not, see . */ -package com.sk89q.worldedit.forge.mixin; +package com.sk89q.worldedit.neoforge.mixin; -import com.sk89q.worldedit.forge.ForgeWorldEdit; +import com.sk89q.worldedit.neoforge.NeoForgeWorldEdit; import net.minecraft.network.protocol.game.ServerboundPlayerActionPacket; import net.minecraft.network.protocol.game.ServerboundSwingPacket; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.ServerGamePacketListenerImpl; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -35,6 +36,7 @@ public class MixinServerGamePacketListenerImpl { @Shadow public ServerPlayer player; + @Unique private int ignoreSwingPackets; @Inject(method = "handleAnimate", at = @At("HEAD")) @@ -42,8 +44,8 @@ private void onAnimate(ServerboundSwingPacket packet, CallbackInfo ci) { if (!((AccessorServerPlayerGameMode) this.player.gameMode).isDestroyingBlock()) { if (this.ignoreSwingPackets > 0) { this.ignoreSwingPackets--; - } else if (ForgeWorldEdit.inst != null) { - ForgeWorldEdit.inst.onLeftClickAir(this.player, packet.getHand()); + } else if (NeoForgeWorldEdit.inst != null) { + NeoForgeWorldEdit.inst.onLeftClickAir(this.player, packet.getHand()); } } } diff --git a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java new file mode 100644 index 0000000000..4085bd5a8d --- /dev/null +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java @@ -0,0 +1,73 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.neoforge.net.handler; + +import com.sk89q.worldedit.LocalSession; +import com.sk89q.worldedit.neoforge.NeoForgeAdapter; +import com.sk89q.worldedit.neoforge.NeoForgePlayer; +import com.sk89q.worldedit.neoforge.NeoForgeWorldEdit; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.neoforged.bus.api.SubscribeEvent; +import net.neoforged.fml.common.EventBusSubscriber; +import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; + +import java.nio.charset.StandardCharsets; + +public final class WECUIPacketHandler { + private WECUIPacketHandler() { + } + + private static final String PROTOCOL_VERSION = "1"; + + public static final ResourceLocation CUI_IDENTIFIER = new ResourceLocation(NeoForgeWorldEdit.MOD_ID, NeoForgeWorldEdit.CUI_PLUGIN_CHANNEL); + + public record CuiPacket(String text) implements CustomPacketPayload { + public static final Type TYPE = new Type<>(CUI_IDENTIFIER); + + @Override + public Type type() { + return TYPE; + } + } + + @SubscribeEvent + public static void register(RegisterPayloadHandlersEvent event) { + event.registrar(PROTOCOL_VERSION) + .playBidirectional( + CuiPacket.TYPE, + CustomPacketPayload.codec( + (packet, buffer) -> buffer.writeCharSequence(packet.text(), StandardCharsets.UTF_8), + buffer -> new CuiPacket(buffer.toString(StandardCharsets.UTF_8)) + ), + (payload, context) -> { + if (!(context.player() instanceof ServerPlayer player)) { + // Client-side packet, ignore (this is for WECUI to handle) + return; + } + LocalSession session = NeoForgeWorldEdit.inst.getSession(player); + NeoForgePlayer actor = NeoForgeAdapter.adaptPlayer(player); + session.handleCUIInitializationMessage(payload.text(), actor); + } + ); + } + +} diff --git a/worldedit-neoforge/src/main/resources/META-INF/accesstransformer.cfg b/worldedit-neoforge/src/main/resources/META-INF/accesstransformer.cfg new file mode 100644 index 0000000000..08401db51c --- /dev/null +++ b/worldedit-neoforge/src/main/resources/META-INF/accesstransformer.cfg @@ -0,0 +1,10 @@ +public net.minecraft.server.MinecraftServer nextTickTimeNanos + +# For regen +public net.minecraft.server.MinecraftServer storageSource +public net.minecraft.server.level.ServerChunkCache mainThreadProcessor + +public net.minecraft.world.level.chunk.ChunkBiomeContainer biomes +public-f net.minecraft.world.level.storage.PrimaryLevelData worldOptions + +public net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket (Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/BlockEntityType;Lnet/minecraft/nbt/CompoundTag;)V diff --git a/worldedit-neoforge/src/main/resources/META-INF/neoforge.mods.toml b/worldedit-neoforge/src/main/resources/META-INF/neoforge.mods.toml new file mode 100644 index 0000000000..0f42fe20dd --- /dev/null +++ b/worldedit-neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -0,0 +1,36 @@ +modLoader = "javafml" +loaderVersion = "[3,)" +issueTrackerURL = "https://discord.gg/enginehub" +license = "GPLv3" + +[[mods]] +modId = "worldedit" +version = "${version}" +displayName = "WorldEdit" +displayURL = "https://enginehub.org/worldedit/" +description = ''' +WorldEdit is an easy-to-use in-game world editor for Minecraft, supporting both single- and multi-player. +''' +authors = "EngineHub" +logoFile = "worldedit-icon.png" +displayTest = "IGNORE_SERVER_VERSION" + +[[mixins]] +config = "worldedit-neoforge.mixins.json" + +[[accessTransformers]] +file = "META-INF/accesstransformer.cfg" + +[[dependencies.worldedit]] +modId = "minecraft" +type = "required" +versionRange = "[${minecraftVersion},${nextMajorMinecraftVersion})" +ordering = "NONE" +side = "BOTH" + +[[dependencies.worldedit]] +modId = "neoforge" +type = "required" +versionRange = "[${neoVersion},)" +ordering = "NONE" +side = "BOTH" diff --git a/worldedit-forge/src/main/resources/defaults/worldedit.properties b/worldedit-neoforge/src/main/resources/defaults/worldedit.properties similarity index 100% rename from worldedit-forge/src/main/resources/defaults/worldedit.properties rename to worldedit-neoforge/src/main/resources/defaults/worldedit.properties diff --git a/worldedit-forge/src/main/resources/pack.mcmeta b/worldedit-neoforge/src/main/resources/pack.mcmeta similarity index 100% rename from worldedit-forge/src/main/resources/pack.mcmeta rename to worldedit-neoforge/src/main/resources/pack.mcmeta diff --git a/worldedit-forge/src/main/resources/worldedit-icon.png b/worldedit-neoforge/src/main/resources/worldedit-icon.png similarity index 100% rename from worldedit-forge/src/main/resources/worldedit-icon.png rename to worldedit-neoforge/src/main/resources/worldedit-icon.png diff --git a/worldedit-forge/src/main/resources/worldedit-forge.mixins.json b/worldedit-neoforge/src/main/resources/worldedit-neoforge.mixins.json similarity index 72% rename from worldedit-forge/src/main/resources/worldedit-forge.mixins.json rename to worldedit-neoforge/src/main/resources/worldedit-neoforge.mixins.json index d7de4e1d3f..b807508229 100644 --- a/worldedit-forge/src/main/resources/worldedit-forge.mixins.json +++ b/worldedit-neoforge/src/main/resources/worldedit-neoforge.mixins.json @@ -1,6 +1,6 @@ { "required": true, - "package": "com.sk89q.worldedit.forge.mixin", + "package": "com.sk89q.worldedit.neoforge.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ "AccessorServerPlayerGameMode", @@ -12,5 +12,5 @@ "injectors": { "defaultRequire": 1 }, - "refmap": "worldedit-forge.mixins.refmap.json" + "refmap": "worldedit-neoforge.mixins.refmap.json" } From 6ea5c134505a7d91753872ff8e38e53220fb00d6 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 24 Apr 2024 01:20:02 -0700 Subject: [PATCH 09/23] [Fabric] Rename CuiPacket to make more sense --- .../sk89q/worldedit/fabric/FabricPlayer.java | 2 +- .../fabric/net/handler/WECUIPacketHandler.java | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java index 52f512756a..8820c5ad31 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricPlayer.java @@ -130,7 +130,7 @@ public void dispatchCUIEvent(CUIEvent event) { } ServerPlayNetworking.send( this.player, - new WECUIPacketHandler.CuiInitializationPacket(send) + new WECUIPacketHandler.CuiPacket(send) ); } diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java index 5a78b532d5..4fde51da81 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/net/handler/WECUIPacketHandler.java @@ -36,8 +36,8 @@ private WECUIPacketHandler() { public static final ResourceLocation CUI_IDENTIFIER = new ResourceLocation(FabricWorldEdit.MOD_ID, FabricWorldEdit.CUI_PLUGIN_CHANNEL); - public record CuiInitializationPacket(String text) implements CustomPacketPayload { - public static final Type TYPE = new Type<>(CUI_IDENTIFIER); + public record CuiPacket(String text) implements CustomPacketPayload { + public static final Type TYPE = new Type<>(CUI_IDENTIFIER); @Override public Type type() { @@ -47,13 +47,20 @@ public Type type() { public static void init() { PayloadTypeRegistry.playC2S().register( - CuiInitializationPacket.TYPE, + CuiPacket.TYPE, CustomPacketPayload.codec( (packet, buffer) -> buffer.writeCharSequence(packet.text(), StandardCharsets.UTF_8), - buffer -> new CuiInitializationPacket(buffer.toString(StandardCharsets.UTF_8)) + buffer -> new CuiPacket(buffer.toString(StandardCharsets.UTF_8)) ) ); - ServerPlayNetworking.registerGlobalReceiver(CuiInitializationPacket.TYPE, (payload, context) -> { + PayloadTypeRegistry.playS2C().register( + CuiPacket.TYPE, + CustomPacketPayload.codec( + (packet, buffer) -> buffer.writeCharSequence(packet.text(), StandardCharsets.UTF_8), + buffer -> new CuiPacket(buffer.toString(StandardCharsets.UTF_8)) + ) + ); + ServerPlayNetworking.registerGlobalReceiver(CuiPacket.TYPE, (payload, context) -> { LocalSession session = FabricWorldEdit.inst.getSession(context.player()); FabricPlayer actor = FabricAdapter.adaptPlayer(context.player()); session.handleCUIInitializationMessage(payload.text(), actor); From 99319e9ce78ef848746466d91a396f168b4a49b1 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 24 Apr 2024 02:09:36 -0700 Subject: [PATCH 10/23] Remove unused imports --- config/checkstyle/checkstyle.xml | 1 + .../impl/v1_20_R3/PaperweightServerLevelDelegateProxy.java | 2 -- .../com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java | 2 -- .../java/com/sk89q/worldedit/bukkit/CUIChannelListener.java | 1 - .../src/main/java/com/sk89q/worldedit/WorldEditManifest.java | 1 - .../java/com/sk89q/worldedit/command/util/PrintCommandHelp.java | 1 - .../com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java | 1 - .../java/com/sk89q/worldedit/fabric/internal/FabricEntity.java | 2 -- .../java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java | 2 -- .../worldedit/neoforge/net/handler/WECUIPacketHandler.java | 1 - 10 files changed, 1 insertion(+), 13 deletions(-) diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index 1a53714503..e3678ec6f4 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -140,6 +140,7 @@ Checks based on Google Checks, modified for EngineHub. + diff --git a/worldedit-bukkit/adapters/adapter-1.20.4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R3/PaperweightServerLevelDelegateProxy.java b/worldedit-bukkit/adapters/adapter-1.20.4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R3/PaperweightServerLevelDelegateProxy.java index 2c9bb5ef34..3cf442e016 100644 --- a/worldedit-bukkit/adapters/adapter-1.20.4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R3/PaperweightServerLevelDelegateProxy.java +++ b/worldedit-bukkit/adapters/adapter-1.20.4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R3/PaperweightServerLevelDelegateProxy.java @@ -44,8 +44,6 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; -import java.util.Arrays; -import java.util.stream.Collectors; public class PaperweightServerLevelDelegateProxy implements InvocationHandler { diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java index 20dede378e..b52b4a74c1 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitBlockCategoryRegistry.java @@ -30,8 +30,6 @@ import java.util.Set; import java.util.stream.Collectors; -import static com.google.common.base.Preconditions.checkNotNull; - public class BukkitBlockCategoryRegistry implements BlockCategoryRegistry { private Set getFromBukkitTag(Tag tag) { diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/CUIChannelListener.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/CUIChannelListener.java index 2c6b0f11f7..2488693e91 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/CUIChannelListener.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/CUIChannelListener.java @@ -23,7 +23,6 @@ import org.bukkit.entity.Player; import org.bukkit.plugin.messaging.PluginMessageListener; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; /** diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java b/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java index 2132f727e9..4c0769cbba 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/WorldEditManifest.java @@ -23,7 +23,6 @@ import java.io.UncheckedIOException; import java.net.JarURLConnection; import java.net.URI; -import java.net.URL; import java.util.function.Supplier; import java.util.jar.Attributes; import java.util.jar.Manifest; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/PrintCommandHelp.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/PrintCommandHelp.java index 72eca71bc2..5b4e12e9a6 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/PrintCommandHelp.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/util/PrintCommandHelp.java @@ -43,7 +43,6 @@ import static com.sk89q.worldedit.internal.command.CommandUtil.byCleanName; import static com.sk89q.worldedit.internal.command.CommandUtil.getSubCommands; -import static java.util.stream.Collectors.toList; /** * Implementation of the //help command. diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java index 5b50ce7400..d11fd82b99 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/FabricBlockCategoryRegistry.java @@ -23,7 +23,6 @@ import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; -import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; diff --git a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java index af8c858490..12db9ce716 100644 --- a/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java +++ b/worldedit-fabric/src/main/java/com/sk89q/worldedit/fabric/internal/FabricEntity.java @@ -33,9 +33,7 @@ import com.sk89q.worldedit.world.entity.EntityTypes; import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; -import org.enginehub.linbus.tree.LinCompoundTag; import java.lang.ref.WeakReference; import javax.annotation.Nullable; diff --git a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java index 5b8a57af1c..9e288e3eb9 100644 --- a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/NeoForgePlatform.java @@ -59,8 +59,6 @@ import java.util.Set; import javax.annotation.Nullable; -import static java.util.stream.Collectors.toList; - class NeoForgePlatform extends AbstractPlatform implements MultiUserPlatform { private final NeoForgeWorldEdit mod; diff --git a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java index 4085bd5a8d..1efa18ca8a 100644 --- a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/net/handler/WECUIPacketHandler.java @@ -27,7 +27,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent; import java.nio.charset.StandardCharsets; From 8ca4876eda17bc69307b444ac60cb8a22ede2ebc Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 24 Apr 2024 02:32:25 -0700 Subject: [PATCH 11/23] Try to tell NG not to go so hard on my CI machines --- worldedit-neoforge/build.gradle.kts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts index 1354e93514..f52c235e1e 100644 --- a/worldedit-neoforge/build.gradle.kts +++ b/worldedit-neoforge/build.gradle.kts @@ -75,6 +75,9 @@ subsystems { minecraftVersion = "1.20.4" mappingsVersion = "2024.04.14" } + decompiler { + maxMemory("2G") + } } configure { From ebb07de9211543cf22c6c3500b50eb971ef84cb4 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 24 Apr 2024 02:57:18 -0700 Subject: [PATCH 12/23] Adjust memory settings some more to try and make things work --- gradle.properties | 2 +- worldedit-neoforge/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8e0e3202bd..d0ac11716d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=com.sk89q.worldedit version=7.3.1-SNAPSHOT -org.gradle.jvmargs=-Xmx2G +org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true loom.version=1.6.9 diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts index f52c235e1e..8b3b1f76eb 100644 --- a/worldedit-neoforge/build.gradle.kts +++ b/worldedit-neoforge/build.gradle.kts @@ -76,7 +76,7 @@ subsystems { mappingsVersion = "2024.04.14" } decompiler { - maxMemory("2G") + maxMemory("3G") } } From 048cf5e64b6a8d72732f37e1b280d1444a0eba30 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Wed, 24 Apr 2024 20:18:55 +1000 Subject: [PATCH 13/23] Update data from MCUtils --- .../world/block/BlockCategories.java | 9 ++++ .../worldedit/world/block/BlockTypes.java | 2 + .../worldedit/world/entity/EntityTypes.java | 4 ++ .../worldedit/world/item/ItemCategories.java | 54 ++++++++++++++++++- .../sk89q/worldedit/world/item/ItemTypes.java | 21 +++++++- 5 files changed, 87 insertions(+), 3 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java index e8aa921299..648306c7bc 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockCategories.java @@ -32,9 +32,11 @@ public final class BlockCategories { public static final BlockCategory ANCIENT_CITY_REPLACEABLE = get("minecraft:ancient_city_replaceable"); public static final BlockCategory ANIMALS_SPAWNABLE_ON = get("minecraft:animals_spawnable_on"); public static final BlockCategory ANVIL = get("minecraft:anvil"); + public static final BlockCategory ARMADILLO_SPAWNABLE_ON = get("minecraft:armadillo_spawnable_on"); public static final BlockCategory AXOLOTLS_SPAWNABLE_ON = get("minecraft:axolotls_spawnable_on"); public static final BlockCategory AZALEA_GROWS_ON = get("minecraft:azalea_grows_on"); public static final BlockCategory AZALEA_ROOT_REPLACEABLE = get("minecraft:azalea_root_replaceable"); + public static final BlockCategory BADLANDS_TERRACOTTA = get("minecraft:badlands_terracotta"); public static final BlockCategory BAMBOO_BLOCKS = get("minecraft:bamboo_blocks"); public static final BlockCategory BAMBOO_PLANTABLE_ON = get("minecraft:bamboo_plantable_on"); public static final BlockCategory BANNERS = get("minecraft:banners"); @@ -76,6 +78,7 @@ public final class BlockCategories { public static final BlockCategory DIAMOND_ORES = get("minecraft:diamond_ores"); public static final BlockCategory DIRT = get("minecraft:dirt"); @Deprecated public static final BlockCategory DIRT_LIKE = get("minecraft:dirt_like"); + public static final BlockCategory DOES_NOT_BLOCK_HOPPERS = get("minecraft:does_not_block_hoppers"); public static final BlockCategory DOORS = get("minecraft:doors"); public static final BlockCategory DRAGON_IMMUNE = get("minecraft:dragon_immune"); public static final BlockCategory DRAGON_TRANSPARENT = get("minecraft:dragon_transparent"); @@ -101,6 +104,12 @@ public final class BlockCategories { public static final BlockCategory HOGLIN_REPELLENTS = get("minecraft:hoglin_repellents"); public static final BlockCategory ICE = get("minecraft:ice"); public static final BlockCategory IMPERMEABLE = get("minecraft:impermeable"); + public static final BlockCategory INCORRECT_FOR_DIAMOND_TOOL = get("minecraft:incorrect_for_diamond_tool"); + public static final BlockCategory INCORRECT_FOR_GOLD_TOOL = get("minecraft:incorrect_for_gold_tool"); + public static final BlockCategory INCORRECT_FOR_IRON_TOOL = get("minecraft:incorrect_for_iron_tool"); + public static final BlockCategory INCORRECT_FOR_NETHERITE_TOOL = get("minecraft:incorrect_for_netherite_tool"); + public static final BlockCategory INCORRECT_FOR_STONE_TOOL = get("minecraft:incorrect_for_stone_tool"); + public static final BlockCategory INCORRECT_FOR_WOODEN_TOOL = get("minecraft:incorrect_for_wooden_tool"); public static final BlockCategory INFINIBURN_END = get("minecraft:infiniburn_end"); public static final BlockCategory INFINIBURN_NETHER = get("minecraft:infiniburn_nether"); public static final BlockCategory INFINIBURN_OVERWORLD = get("minecraft:infiniburn_overworld"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java index 8f788953fa..ec2298632e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/block/BlockTypes.java @@ -458,6 +458,7 @@ public final class BlockTypes { @Nullable public static final BlockType GRINDSTONE = get("minecraft:grindstone"); @Nullable public static final BlockType HANGING_ROOTS = get("minecraft:hanging_roots"); @Nullable public static final BlockType HAY_BLOCK = get("minecraft:hay_block"); + @Nullable public static final BlockType HEAVY_CORE = get("minecraft:heavy_core"); @Nullable public static final BlockType HEAVY_WEIGHTED_PRESSURE_PLATE = get("minecraft:heavy_weighted_pressure_plate"); @Nullable public static final BlockType HONEY_BLOCK = get("minecraft:honey_block"); @Nullable public static final BlockType HONEYCOMB_BLOCK = get("minecraft:honeycomb_block"); @@ -981,6 +982,7 @@ public final class BlockTypes { @Nullable public static final BlockType TURTLE_EGG = get("minecraft:turtle_egg"); @Nullable public static final BlockType TWISTING_VINES = get("minecraft:twisting_vines"); @Nullable public static final BlockType TWISTING_VINES_PLANT = get("minecraft:twisting_vines_plant"); + @Nullable public static final BlockType VAULT = get("minecraft:vault"); @Nullable public static final BlockType VERDANT_FROGLIGHT = get("minecraft:verdant_froglight"); @Nullable public static final BlockType VINE = get("minecraft:vine"); @Nullable public static final BlockType VOID_AIR = get("minecraft:void_air"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java index a66d665f8e..cc22b0e6db 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/entity/EntityTypes.java @@ -30,6 +30,7 @@ public final class EntityTypes { @Nullable public static final EntityType ALLAY = get("minecraft:allay"); @Nullable public static final EntityType AREA_EFFECT_CLOUD = get("minecraft:area_effect_cloud"); + @Nullable public static final EntityType ARMADILLO = get("minecraft:armadillo"); @Nullable public static final EntityType ARMOR_STAND = get("minecraft:armor_stand"); @Nullable public static final EntityType ARROW = get("minecraft:arrow"); @Nullable public static final EntityType AXOLOTL = get("minecraft:axolotl"); @@ -38,7 +39,9 @@ public final class EntityTypes { @Nullable public static final EntityType BLAZE = get("minecraft:blaze"); @Nullable public static final EntityType BLOCK_DISPLAY = get("minecraft:block_display"); @Nullable public static final EntityType BOAT = get("minecraft:boat"); + @Nullable public static final EntityType BOGGED = get("minecraft:bogged"); @Nullable public static final EntityType BREEZE = get("minecraft:breeze"); + @Nullable public static final EntityType BREEZE_WIND_CHARGE = get("minecraft:breeze_wind_charge"); @Nullable public static final EntityType CAMEL = get("minecraft:camel"); @Nullable public static final EntityType CAT = get("minecraft:cat"); @Nullable public static final EntityType CAVE_SPIDER = get("minecraft:cave_spider"); @@ -98,6 +101,7 @@ public final class EntityTypes { @Nullable public static final EntityType MOOSHROOM = get("minecraft:mooshroom"); @Nullable public static final EntityType MULE = get("minecraft:mule"); @Nullable public static final EntityType OCELOT = get("minecraft:ocelot"); + @Nullable public static final EntityType OMINOUS_ITEM_SPAWNER = get("minecraft:ominous_item_spawner"); @Nullable public static final EntityType PAINTING = get("minecraft:painting"); @Nullable public static final EntityType PANDA = get("minecraft:panda"); @Nullable public static final EntityType PARROT = get("minecraft:parrot"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java index 91abe027f8..ac66c5c4f7 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemCategories.java @@ -28,28 +28,36 @@ public final class ItemCategories { public static final ItemCategory ACACIA_LOGS = get("minecraft:acacia_logs"); public static final ItemCategory ANVIL = get("minecraft:anvil"); + public static final ItemCategory ARMADILLO_FOOD = get("minecraft:armadillo_food"); public static final ItemCategory ARROWS = get("minecraft:arrows"); public static final ItemCategory AXES = get("minecraft:axes"); - public static final ItemCategory AXOLOTL_TEMPT_ITEMS = get("minecraft:axolotl_tempt_items"); + public static final ItemCategory AXOLOTL_FOOD = get("minecraft:axolotl_food"); + @Deprecated public static final ItemCategory AXOLOTL_TEMPT_ITEMS = get("minecraft:axolotl_tempt_items"); public static final ItemCategory BAMBOO_BLOCKS = get("minecraft:bamboo_blocks"); public static final ItemCategory BANNERS = get("minecraft:banners"); public static final ItemCategory BEACON_PAYMENT_ITEMS = get("minecraft:beacon_payment_items"); public static final ItemCategory BEDS = get("minecraft:beds"); + public static final ItemCategory BEE_FOOD = get("minecraft:bee_food"); public static final ItemCategory BIRCH_LOGS = get("minecraft:birch_logs"); public static final ItemCategory BOATS = get("minecraft:boats"); public static final ItemCategory BOOKSHELF_BOOKS = get("minecraft:bookshelf_books"); public static final ItemCategory BREAKS_DECORATED_POTS = get("minecraft:breaks_decorated_pots"); public static final ItemCategory BUTTONS = get("minecraft:buttons"); + public static final ItemCategory CAMEL_FOOD = get("minecraft:camel_food"); public static final ItemCategory CANDLES = get("minecraft:candles"); @Deprecated public static final ItemCategory CARPETS = get("minecraft:carpets"); + public static final ItemCategory CAT_FOOD = get("minecraft:cat_food"); public static final ItemCategory CHERRY_LOGS = get("minecraft:cherry_logs"); + public static final ItemCategory CHEST_ARMOR = get("minecraft:chest_armor"); public static final ItemCategory CHEST_BOATS = get("minecraft:chest_boats"); + public static final ItemCategory CHICKEN_FOOD = get("minecraft:chicken_food"); public static final ItemCategory CLUSTER_MAX_HARVESTABLES = get("minecraft:cluster_max_harvestables"); public static final ItemCategory COAL_ORES = get("minecraft:coal_ores"); public static final ItemCategory COALS = get("minecraft:coals"); public static final ItemCategory COMPASSES = get("minecraft:compasses"); public static final ItemCategory COMPLETES_FIND_TREE_TUTORIAL = get("minecraft:completes_find_tree_tutorial"); public static final ItemCategory COPPER_ORES = get("minecraft:copper_ores"); + public static final ItemCategory COW_FOOD = get("minecraft:cow_food"); public static final ItemCategory CREEPER_DROP_MUSIC_DISCS = get("minecraft:creeper_drop_music_discs"); public static final ItemCategory CREEPER_IGNITERS = get("minecraft:creeper_igniters"); public static final ItemCategory CRIMSON_STEMS = get("minecraft:crimson_stems"); @@ -60,43 +68,81 @@ public final class ItemCategories { public static final ItemCategory DIAMOND_ORES = get("minecraft:diamond_ores"); public static final ItemCategory DIRT = get("minecraft:dirt"); public static final ItemCategory DOORS = get("minecraft:doors"); + public static final ItemCategory DYEABLE = get("minecraft:dyeable"); public static final ItemCategory EMERALD_ORES = get("minecraft:emerald_ores"); + public static final ItemCategory ENCHANTABLE_ARMOR = get("minecraft:enchantable/armor"); + public static final ItemCategory ENCHANTABLE_BOW = get("minecraft:enchantable/bow"); + public static final ItemCategory ENCHANTABLE_CHEST_ARMOR = get("minecraft:enchantable/chest_armor"); + public static final ItemCategory ENCHANTABLE_CROSSBOW = get("minecraft:enchantable/crossbow"); + public static final ItemCategory ENCHANTABLE_DURABILITY = get("minecraft:enchantable/durability"); + public static final ItemCategory ENCHANTABLE_EQUIPPABLE = get("minecraft:enchantable/equippable"); + public static final ItemCategory ENCHANTABLE_FIRE_ASPECT = get("minecraft:enchantable/fire_aspect"); + public static final ItemCategory ENCHANTABLE_FISHING = get("minecraft:enchantable/fishing"); + public static final ItemCategory ENCHANTABLE_FOOT_ARMOR = get("minecraft:enchantable/foot_armor"); + public static final ItemCategory ENCHANTABLE_HEAD_ARMOR = get("minecraft:enchantable/head_armor"); + public static final ItemCategory ENCHANTABLE_LEG_ARMOR = get("minecraft:enchantable/leg_armor"); + public static final ItemCategory ENCHANTABLE_MINING = get("minecraft:enchantable/mining"); + public static final ItemCategory ENCHANTABLE_MINING_LOOT = get("minecraft:enchantable/mining_loot"); + public static final ItemCategory ENCHANTABLE_SHARP_WEAPON = get("minecraft:enchantable/sharp_weapon"); + public static final ItemCategory ENCHANTABLE_SWORD = get("minecraft:enchantable/sword"); + public static final ItemCategory ENCHANTABLE_TRIDENT = get("minecraft:enchantable/trident"); + public static final ItemCategory ENCHANTABLE_VANISHING = get("minecraft:enchantable/vanishing"); + public static final ItemCategory ENCHANTABLE_WEAPON = get("minecraft:enchantable/weapon"); public static final ItemCategory FENCE_GATES = get("minecraft:fence_gates"); public static final ItemCategory FENCES = get("minecraft:fences"); public static final ItemCategory FISHES = get("minecraft:fishes"); public static final ItemCategory FLOWERS = get("minecraft:flowers"); + public static final ItemCategory FOOT_ARMOR = get("minecraft:foot_armor"); public static final ItemCategory FOX_FOOD = get("minecraft:fox_food"); public static final ItemCategory FREEZE_IMMUNE_WEARABLES = get("minecraft:freeze_immune_wearables"); + public static final ItemCategory FROG_FOOD = get("minecraft:frog_food"); @Deprecated public static final ItemCategory FURNACE_MATERIALS = get("minecraft:furnace_materials"); + public static final ItemCategory GOAT_FOOD = get("minecraft:goat_food"); public static final ItemCategory GOLD_ORES = get("minecraft:gold_ores"); public static final ItemCategory HANGING_SIGNS = get("minecraft:hanging_signs"); + public static final ItemCategory HEAD_ARMOR = get("minecraft:head_armor"); public static final ItemCategory HOES = get("minecraft:hoes"); + public static final ItemCategory HOGLIN_FOOD = get("minecraft:hoglin_food"); + public static final ItemCategory HORSE_FOOD = get("minecraft:horse_food"); + public static final ItemCategory HORSE_TEMPT_ITEMS = get("minecraft:horse_tempt_items"); public static final ItemCategory IGNORED_BY_PIGLIN_BABIES = get("minecraft:ignored_by_piglin_babies"); public static final ItemCategory IRON_ORES = get("minecraft:iron_ores"); public static final ItemCategory JUNGLE_LOGS = get("minecraft:jungle_logs"); public static final ItemCategory LAPIS_ORES = get("minecraft:lapis_ores"); public static final ItemCategory LEAVES = get("minecraft:leaves"); public static final ItemCategory LECTERN_BOOKS = get("minecraft:lectern_books"); + public static final ItemCategory LEG_ARMOR = get("minecraft:leg_armor"); + public static final ItemCategory LLAMA_FOOD = get("minecraft:llama_food"); + public static final ItemCategory LLAMA_TEMPT_ITEMS = get("minecraft:llama_tempt_items"); public static final ItemCategory LOGS = get("minecraft:logs"); public static final ItemCategory LOGS_THAT_BURN = get("minecraft:logs_that_burn"); public static final ItemCategory MANGROVE_LOGS = get("minecraft:mangrove_logs"); + public static final ItemCategory MEAT = get("minecraft:meat"); public static final ItemCategory MUSIC_DISCS = get("minecraft:music_discs"); public static final ItemCategory NON_FLAMMABLE_WOOD = get("minecraft:non_flammable_wood"); public static final ItemCategory NOTEBLOCK_TOP_INSTRUMENTS = get("minecraft:noteblock_top_instruments"); public static final ItemCategory OAK_LOGS = get("minecraft:oak_logs"); @Deprecated public static final ItemCategory OCCLUDES_VIBRATION_SIGNALS = get("minecraft:occludes_vibration_signals"); + public static final ItemCategory OCELOT_FOOD = get("minecraft:ocelot_food"); @Deprecated public static final ItemCategory OVERWORLD_NATURAL_LOGS = get("minecraft:overworld_natural_logs"); + public static final ItemCategory PANDA_FOOD = get("minecraft:panda_food"); + public static final ItemCategory PARROT_FOOD = get("minecraft:parrot_food"); + public static final ItemCategory PARROT_POISONOUS_FOOD = get("minecraft:parrot_poisonous_food"); public static final ItemCategory PICKAXES = get("minecraft:pickaxes"); + public static final ItemCategory PIG_FOOD = get("minecraft:pig_food"); public static final ItemCategory PIGLIN_FOOD = get("minecraft:piglin_food"); public static final ItemCategory PIGLIN_LOVED = get("minecraft:piglin_loved"); public static final ItemCategory PIGLIN_REPELLENTS = get("minecraft:piglin_repellents"); public static final ItemCategory PLANKS = get("minecraft:planks"); + public static final ItemCategory RABBIT_FOOD = get("minecraft:rabbit_food"); public static final ItemCategory RAILS = get("minecraft:rails"); public static final ItemCategory REDSTONE_ORES = get("minecraft:redstone_ores"); public static final ItemCategory SAND = get("minecraft:sand"); public static final ItemCategory SAPLINGS = get("minecraft:saplings"); + public static final ItemCategory SHEEP_FOOD = get("minecraft:sheep_food"); public static final ItemCategory SHOVELS = get("minecraft:shovels"); public static final ItemCategory SIGNS = get("minecraft:signs"); + public static final ItemCategory SKULLS = get("minecraft:skulls"); public static final ItemCategory SLABS = get("minecraft:slabs"); public static final ItemCategory SMALL_FLOWERS = get("minecraft:small_flowers"); public static final ItemCategory SMELTS_TO_GLASS = get("minecraft:smelts_to_glass"); @@ -108,18 +154,22 @@ public final class ItemCategories { public static final ItemCategory STONE_BUTTONS = get("minecraft:stone_buttons"); public static final ItemCategory STONE_CRAFTING_MATERIALS = get("minecraft:stone_crafting_materials"); public static final ItemCategory STONE_TOOL_MATERIALS = get("minecraft:stone_tool_materials"); + public static final ItemCategory STRIDER_FOOD = get("minecraft:strider_food"); + public static final ItemCategory STRIDER_TEMPT_ITEMS = get("minecraft:strider_tempt_items"); public static final ItemCategory SWORDS = get("minecraft:swords"); public static final ItemCategory TALL_FLOWERS = get("minecraft:tall_flowers"); public static final ItemCategory TERRACOTTA = get("minecraft:terracotta"); - public static final ItemCategory TOOLS = get("minecraft:tools"); + @Deprecated public static final ItemCategory TOOLS = get("minecraft:tools"); public static final ItemCategory TRAPDOORS = get("minecraft:trapdoors"); public static final ItemCategory TRIM_MATERIALS = get("minecraft:trim_materials"); public static final ItemCategory TRIM_TEMPLATES = get("minecraft:trim_templates"); public static final ItemCategory TRIMMABLE_ARMOR = get("minecraft:trimmable_armor"); + public static final ItemCategory TURTLE_FOOD = get("minecraft:turtle_food"); public static final ItemCategory VILLAGER_PLANTABLE_SEEDS = get("minecraft:villager_plantable_seeds"); public static final ItemCategory WALLS = get("minecraft:walls"); public static final ItemCategory WARPED_STEMS = get("minecraft:warped_stems"); public static final ItemCategory WART_BLOCKS = get("minecraft:wart_blocks"); + public static final ItemCategory WOLF_FOOD = get("minecraft:wolf_food"); public static final ItemCategory WOODEN_BUTTONS = get("minecraft:wooden_buttons"); public static final ItemCategory WOODEN_DOORS = get("minecraft:wooden_doors"); public static final ItemCategory WOODEN_FENCES = get("minecraft:wooden_fences"); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java index ba0d0613fa..f9ef041c40 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/item/ItemTypes.java @@ -61,6 +61,8 @@ public final class ItemTypes { @Nullable public static final ItemType ANVIL = get("minecraft:anvil"); @Nullable public static final ItemType APPLE = get("minecraft:apple"); @Nullable public static final ItemType ARCHER_POTTERY_SHERD = get("minecraft:archer_pottery_sherd"); + @Nullable public static final ItemType ARMADILLO_SCUTE = get("minecraft:armadillo_scute"); + @Nullable public static final ItemType ARMADILLO_SPAWN_EGG = get("minecraft:armadillo_spawn_egg"); @Nullable public static final ItemType ARMOR_STAND = get("minecraft:armor_stand"); @Nullable public static final ItemType ARMS_UP_POTTERY_SHERD = get("minecraft:arms_up_pottery_sherd"); @Nullable public static final ItemType ARROW = get("minecraft:arrow"); @@ -157,6 +159,8 @@ public final class ItemTypes { @Nullable public static final ItemType BLUE_STAINED_GLASS_PANE = get("minecraft:blue_stained_glass_pane"); @Nullable public static final ItemType BLUE_TERRACOTTA = get("minecraft:blue_terracotta"); @Nullable public static final ItemType BLUE_WOOL = get("minecraft:blue_wool"); + @Nullable public static final ItemType BOGGED_SPAWN_EGG = get("minecraft:bogged_spawn_egg"); + @Nullable public static final ItemType BOLT_ARMOR_TRIM_SMITHING_TEMPLATE = get("minecraft:bolt_armor_trim_smithing_template"); @Nullable public static final ItemType BONE = get("minecraft:bone"); @Nullable public static final ItemType BONE_BLOCK = get("minecraft:bone_block"); @Nullable public static final ItemType BONE_MEAL = get("minecraft:bone_meal"); @@ -168,6 +172,7 @@ public final class ItemTypes { @Nullable public static final ItemType BRAIN_CORAL_BLOCK = get("minecraft:brain_coral_block"); @Nullable public static final ItemType BRAIN_CORAL_FAN = get("minecraft:brain_coral_fan"); @Nullable public static final ItemType BREAD = get("minecraft:bread"); + @Nullable public static final ItemType BREEZE_ROD = get("minecraft:breeze_rod"); @Nullable public static final ItemType BREEZE_SPAWN_EGG = get("minecraft:breeze_spawn_egg"); @Nullable public static final ItemType BREWER_POTTERY_SHERD = get("minecraft:brewer_pottery_sherd"); @Nullable public static final ItemType BREWING_STAND = get("minecraft:brewing_stand"); @@ -494,6 +499,9 @@ public final class ItemTypes { @Nullable public static final ItemType FLETCHING_TABLE = get("minecraft:fletching_table"); @Nullable public static final ItemType FLINT = get("minecraft:flint"); @Nullable public static final ItemType FLINT_AND_STEEL = get("minecraft:flint_and_steel"); + @Nullable public static final ItemType FLOW_ARMOR_TRIM_SMITHING_TEMPLATE = get("minecraft:flow_armor_trim_smithing_template"); + @Nullable public static final ItemType FLOW_BANNER_PATTERN = get("minecraft:flow_banner_pattern"); + @Nullable public static final ItemType FLOW_POTTERY_SHERD = get("minecraft:flow_pottery_sherd"); @Nullable public static final ItemType FLOWER_BANNER_PATTERN = get("minecraft:flower_banner_pattern"); @Nullable public static final ItemType FLOWER_POT = get("minecraft:flower_pot"); @Nullable public static final ItemType FLOWERING_AZALEA = get("minecraft:flowering_azalea"); @@ -574,11 +582,14 @@ public final class ItemTypes { @Nullable public static final ItemType GRINDSTONE = get("minecraft:grindstone"); @Nullable public static final ItemType GUARDIAN_SPAWN_EGG = get("minecraft:guardian_spawn_egg"); @Nullable public static final ItemType GUNPOWDER = get("minecraft:gunpowder"); + @Nullable public static final ItemType GUSTER_BANNER_PATTERN = get("minecraft:guster_banner_pattern"); + @Nullable public static final ItemType GUSTER_POTTERY_SHERD = get("minecraft:guster_pottery_sherd"); @Nullable public static final ItemType HANGING_ROOTS = get("minecraft:hanging_roots"); @Nullable public static final ItemType HAY_BLOCK = get("minecraft:hay_block"); @Nullable public static final ItemType HEART_OF_THE_SEA = get("minecraft:heart_of_the_sea"); @Nullable public static final ItemType HEART_POTTERY_SHERD = get("minecraft:heart_pottery_sherd"); @Nullable public static final ItemType HEARTBREAK_POTTERY_SHERD = get("minecraft:heartbreak_pottery_sherd"); + @Nullable public static final ItemType HEAVY_CORE = get("minecraft:heavy_core"); @Nullable public static final ItemType HEAVY_WEIGHTED_PRESSURE_PLATE = get("minecraft:heavy_weighted_pressure_plate"); @Nullable public static final ItemType HOGLIN_SPAWN_EGG = get("minecraft:hoglin_spawn_egg"); @Nullable public static final ItemType HONEY_BLOCK = get("minecraft:honey_block"); @@ -710,6 +721,7 @@ public final class ItemTypes { @Nullable public static final ItemType LLAMA_SPAWN_EGG = get("minecraft:llama_spawn_egg"); @Nullable public static final ItemType LODESTONE = get("minecraft:lodestone"); @Nullable public static final ItemType LOOM = get("minecraft:loom"); + @Nullable public static final ItemType MACE = get("minecraft:mace"); @Nullable public static final ItemType MAGENTA_BANNER = get("minecraft:magenta_banner"); @Nullable public static final ItemType MAGENTA_BED = get("minecraft:magenta_bed"); @Nullable public static final ItemType MAGENTA_CANDLE = get("minecraft:magenta_candle"); @@ -842,6 +854,8 @@ public final class ItemTypes { @Nullable public static final ItemType OBSIDIAN = get("minecraft:obsidian"); @Nullable public static final ItemType OCELOT_SPAWN_EGG = get("minecraft:ocelot_spawn_egg"); @Nullable public static final ItemType OCHRE_FROGLIGHT = get("minecraft:ochre_froglight"); + @Nullable public static final ItemType OMINOUS_BOTTLE = get("minecraft:ominous_bottle"); + @Nullable public static final ItemType OMINOUS_TRIAL_KEY = get("minecraft:ominous_trial_key"); @Nullable public static final ItemType ORANGE_BANNER = get("minecraft:orange_banner"); @Nullable public static final ItemType ORANGE_BED = get("minecraft:orange_bed"); @Nullable public static final ItemType ORANGE_CANDLE = get("minecraft:orange_candle"); @@ -1045,12 +1059,13 @@ public final class ItemTypes { @Nullable public static final ItemType SANDSTONE_STAIRS = get("minecraft:sandstone_stairs"); @Nullable public static final ItemType SANDSTONE_WALL = get("minecraft:sandstone_wall"); @Nullable public static final ItemType SCAFFOLDING = get("minecraft:scaffolding"); + @Nullable public static final ItemType SCRAPE_POTTERY_SHERD = get("minecraft:scrape_pottery_sherd"); @Nullable public static final ItemType SCULK = get("minecraft:sculk"); @Nullable public static final ItemType SCULK_CATALYST = get("minecraft:sculk_catalyst"); @Nullable public static final ItemType SCULK_SENSOR = get("minecraft:sculk_sensor"); @Nullable public static final ItemType SCULK_SHRIEKER = get("minecraft:sculk_shrieker"); @Nullable public static final ItemType SCULK_VEIN = get("minecraft:sculk_vein"); - @Nullable public static final ItemType SCUTE = get("minecraft:scute"); + @Deprecated @Nullable public static final ItemType SCUTE = get("minecraft:scute"); @Nullable public static final ItemType SEA_LANTERN = get("minecraft:sea_lantern"); @Nullable public static final ItemType SEA_PICKLE = get("minecraft:sea_pickle"); @Nullable public static final ItemType SEAGRASS = get("minecraft:seagrass"); @@ -1219,8 +1234,10 @@ public final class ItemTypes { @Nullable public static final ItemType TUFF_WALL = get("minecraft:tuff_wall"); @Nullable public static final ItemType TURTLE_EGG = get("minecraft:turtle_egg"); @Nullable public static final ItemType TURTLE_HELMET = get("minecraft:turtle_helmet"); + @Nullable public static final ItemType TURTLE_SCUTE = get("minecraft:turtle_scute"); @Nullable public static final ItemType TURTLE_SPAWN_EGG = get("minecraft:turtle_spawn_egg"); @Nullable public static final ItemType TWISTING_VINES = get("minecraft:twisting_vines"); + @Nullable public static final ItemType VAULT = get("minecraft:vault"); @Nullable public static final ItemType VERDANT_FROGLIGHT = get("minecraft:verdant_froglight"); @Nullable public static final ItemType VEX_ARMOR_TRIM_SMITHING_TEMPLATE = get("minecraft:vex_armor_trim_smithing_template"); @Nullable public static final ItemType VEX_SPAWN_EGG = get("minecraft:vex_spawn_egg"); @@ -1314,11 +1331,13 @@ public final class ItemTypes { @Nullable public static final ItemType WHITE_TULIP = get("minecraft:white_tulip"); @Nullable public static final ItemType WHITE_WOOL = get("minecraft:white_wool"); @Nullable public static final ItemType WILD_ARMOR_TRIM_SMITHING_TEMPLATE = get("minecraft:wild_armor_trim_smithing_template"); + @Nullable public static final ItemType WIND_CHARGE = get("minecraft:wind_charge"); @Nullable public static final ItemType WITCH_SPAWN_EGG = get("minecraft:witch_spawn_egg"); @Nullable public static final ItemType WITHER_ROSE = get("minecraft:wither_rose"); @Nullable public static final ItemType WITHER_SKELETON_SKULL = get("minecraft:wither_skeleton_skull"); @Nullable public static final ItemType WITHER_SKELETON_SPAWN_EGG = get("minecraft:wither_skeleton_spawn_egg"); @Nullable public static final ItemType WITHER_SPAWN_EGG = get("minecraft:wither_spawn_egg"); + @Nullable public static final ItemType WOLF_ARMOR = get("minecraft:wolf_armor"); @Nullable public static final ItemType WOLF_SPAWN_EGG = get("minecraft:wolf_spawn_egg"); @Nullable public static final ItemType WOODEN_AXE = get("minecraft:wooden_axe"); @Nullable public static final ItemType WOODEN_HOE = get("minecraft:wooden_hoe"); From 4606e700b466a39b1ebd96fa8aeb4a62ae0f2f30 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Sat, 27 Apr 2024 14:10:42 +1000 Subject: [PATCH 14/23] [Bukkit] Update for 1.20.5 --- buildSrc/build.gradle.kts | 2 +- settings.gradle.kts | 2 +- .../adapters/adapter-1.20.5/build.gradle.kts | 8 + .../impl/v1_20_R4/PaperweightAdapter.java | 1206 +++++++ .../v1_20_R4/PaperweightDataConverters.java | 2803 +++++++++++++++++ .../impl/v1_20_R4/PaperweightFakePlayer.java | 98 + .../PaperweightServerLevelDelegateProxy.java | 153 + .../PaperweightWorldNativeAccess.java | 186 ++ 8 files changed, 4456 insertions(+), 2 deletions(-) create mode 100644 worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts create mode 100644 worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java create mode 100644 worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightDataConverters.java create mode 100644 worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightFakePlayer.java create mode 100644 worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightServerLevelDelegateProxy.java create mode 100644 worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightWorldNativeAccess.java diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index e21b712529..3b4300289d 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -58,7 +58,7 @@ dependencies { implementation("net.fabricmc:fabric-loom:$loomVersion") implementation("net.fabricmc:sponge-mixin:$mixinVersion") implementation("org.enginehub.gradle:gradle-codecov-plugin:0.2.0") - implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.5.13") + implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.6.0") constraints { val asmVersion = "[9.7,)" implementation("org.ow2.asm:asm:$asmVersion") { diff --git a/settings.gradle.kts b/settings.gradle.kts index 883e10a287..b5dc755413 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,7 +16,7 @@ rootProject.name = "worldedit" include("worldedit-libs") -listOf("1.19.4", "1.20", "1.20.2", "1.20.4").forEach { +listOf("1.19.4", "1.20", "1.20.2", "1.20.4", "1.20.5").forEach { include("worldedit-bukkit:adapters:adapter-$it") } diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts new file mode 100644 index 0000000000..4cf500733a --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts @@ -0,0 +1,8 @@ +import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension + +applyPaperweightAdapterConfiguration() + +dependencies { + // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ + the().paperDevBundle("1.20.5-R0.1-20240426.233703-2") +} diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java new file mode 100644 index 0000000000..c20b5a9749 --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java @@ -0,0 +1,1206 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_20_R4; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import com.google.common.util.concurrent.Futures; +import com.mojang.serialization.Codec; +import com.mojang.serialization.Lifecycle; +import com.sk89q.worldedit.EditSession; +import com.sk89q.worldedit.WorldEditException; +import com.sk89q.worldedit.blocks.BaseItem; +import com.sk89q.worldedit.blocks.BaseItemStack; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; +import com.sk89q.worldedit.bukkit.adapter.Refraction; +import com.sk89q.worldedit.entity.BaseEntity; +import com.sk89q.worldedit.extension.platform.Watchdog; +import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.internal.Constants; +import com.sk89q.worldedit.internal.block.BlockStateIdAccess; +import com.sk89q.worldedit.internal.wna.WorldNativeAccess; +import com.sk89q.worldedit.math.BlockVector2; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.regions.Region; +import com.sk89q.worldedit.registry.state.BooleanProperty; +import com.sk89q.worldedit.registry.state.DirectionalProperty; +import com.sk89q.worldedit.registry.state.EnumProperty; +import com.sk89q.worldedit.registry.state.IntegerProperty; +import com.sk89q.worldedit.registry.state.Property; +import com.sk89q.worldedit.util.Direction; +import com.sk89q.worldedit.util.SideEffect; +import com.sk89q.worldedit.util.concurrency.LazyReference; +import com.sk89q.worldedit.util.formatting.text.Component; +import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; +import com.sk89q.worldedit.util.io.file.SafeFiles; +import com.sk89q.worldedit.world.DataFixer; +import com.sk89q.worldedit.world.RegenOptions; +import com.sk89q.worldedit.world.biome.BiomeCategory; +import com.sk89q.worldedit.world.biome.BiomeType; +import com.sk89q.worldedit.world.biome.BiomeTypes; +import com.sk89q.worldedit.world.block.BaseBlock; +import com.sk89q.worldedit.world.block.BlockState; +import com.sk89q.worldedit.world.block.BlockStateHolder; +import com.sk89q.worldedit.world.block.BlockType; +import com.sk89q.worldedit.world.block.BlockTypes; +import com.sk89q.worldedit.world.entity.EntityTypes; +import com.sk89q.worldedit.world.generation.ConfiguredFeatureType; +import com.sk89q.worldedit.world.generation.StructureType; +import com.sk89q.worldedit.world.item.ItemType; +import net.minecraft.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; +import net.minecraft.core.SectionPos; +import net.minecraft.core.component.DataComponentPatch; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.ByteArrayTag; +import net.minecraft.nbt.ByteTag; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.DoubleTag; +import net.minecraft.nbt.EndTag; +import net.minecraft.nbt.FloatTag; +import net.minecraft.nbt.IntArrayTag; +import net.minecraft.nbt.IntTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.LongArrayTag; +import net.minecraft.nbt.LongTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.ShortTag; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; +import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.ChunkResult; +import net.minecraft.server.level.ServerChunkCache; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.progress.ChunkProgressListener; +import net.minecraft.util.RandomSource; +import net.minecraft.util.StringRepresentable; +import net.minecraft.util.thread.BlockableEventLoop; +import net.minecraft.world.Clearable; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.context.UseOnContext; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.LevelSettings; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.StructureBlockEntity; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.chunk.ChunkAccess; +import net.minecraft.world.level.chunk.LevelChunk; +import net.minecraft.world.level.chunk.status.ChunkStatus; +import net.minecraft.world.level.dimension.LevelStem; +import net.minecraft.world.level.levelgen.WorldOptions; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureStart; +import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.PrimaryLevelData; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.Vec3; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.World.Environment; +import org.bukkit.block.data.BlockData; +import org.bukkit.craftbukkit.CraftServer; +import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.block.data.CraftBlockData; +import org.bukkit.craftbukkit.entity.CraftEntity; +import org.bukkit.craftbukkit.entity.CraftPlayer; +import org.bukkit.craftbukkit.inventory.CraftItemStack; +import org.bukkit.craftbukkit.util.CraftMagicNumbers; +import org.bukkit.entity.Player; +import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +import org.bukkit.generator.ChunkGenerator; +import org.enginehub.linbus.common.LinTagId; +import org.enginehub.linbus.tree.LinByteArrayTag; +import org.enginehub.linbus.tree.LinByteTag; +import org.enginehub.linbus.tree.LinCompoundTag; +import org.enginehub.linbus.tree.LinDoubleTag; +import org.enginehub.linbus.tree.LinEndTag; +import org.enginehub.linbus.tree.LinFloatTag; +import org.enginehub.linbus.tree.LinIntArrayTag; +import org.enginehub.linbus.tree.LinIntTag; +import org.enginehub.linbus.tree.LinListTag; +import org.enginehub.linbus.tree.LinLongArrayTag; +import org.enginehub.linbus.tree.LinLongTag; +import org.enginehub.linbus.tree.LinShortTag; +import org.enginehub.linbus.tree.LinStringTag; +import org.enginehub.linbus.tree.LinTag; +import org.enginehub.linbus.tree.LinTagType; +import org.spigotmc.SpigotConfig; +import org.spigotmc.WatchdogThread; + +import java.lang.ref.WeakReference; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Objects; +import java.util.OptionalInt; +import java.util.OptionalLong; +import java.util.Set; +import java.util.TreeMap; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; +import javax.annotation.Nullable; + +import static com.google.common.base.Preconditions.checkNotNull; +import static com.google.common.base.Preconditions.checkState; + +public final class PaperweightAdapter implements BukkitImplAdapter { + + private final Logger logger = Logger.getLogger(getClass().getCanonicalName()); + + private final Field serverWorldsField; + private final Method getChunkFutureMethod; + private final Field chunkProviderExecutorField; + private final Watchdog watchdog; + + private static final RandomSource random = RandomSource.create(); + + // ------------------------------------------------------------------------ + // Code that may break between versions of Minecraft + // ------------------------------------------------------------------------ + + public PaperweightAdapter() throws NoSuchFieldException, NoSuchMethodException { + // A simple test + CraftServer.class.cast(Bukkit.getServer()); + + int dataVersion = CraftMagicNumbers.INSTANCE.getDataVersion(); + if (dataVersion != 3837) { + throw new UnsupportedClassVersionError("Not 1.20.5!"); + } + + serverWorldsField = CraftServer.class.getDeclaredField("worlds"); + serverWorldsField.setAccessible(true); + + getChunkFutureMethod = ServerChunkCache.class.getDeclaredMethod( + Refraction.pickName("getChunkFutureMainThread", "c"), + int.class, int.class, ChunkStatus.class, boolean.class + ); + getChunkFutureMethod.setAccessible(true); + + chunkProviderExecutorField = ServerChunkCache.class.getDeclaredField( + Refraction.pickName("mainThreadProcessor", "g") + ); + chunkProviderExecutorField.setAccessible(true); + + new PaperweightDataConverters(CraftMagicNumbers.INSTANCE.getDataVersion(), this).buildUnoptimized(); + + Watchdog watchdog; + try { + Class.forName("org.spigotmc.WatchdogThread"); + watchdog = new SpigotWatchdog(); + } catch (ClassNotFoundException | NoSuchFieldException e) { + try { + watchdog = new MojangWatchdog(((CraftServer) Bukkit.getServer()).getServer()); + } catch (NoSuchFieldException ex) { + watchdog = null; + } + } + this.watchdog = watchdog; + + try { + Class.forName("org.spigotmc.SpigotConfig"); + SpigotConfig.config.set("world-settings.worldeditregentempworld.verbose", false); + } catch (ClassNotFoundException ignored) { + } + } + + @Override + public DataFixer getDataFixer() { + return PaperweightDataConverters.INSTANCE; + } + + /** + * Read the given NBT data into the given tile entity. + * + * @param tileEntity the tile entity + * @param tag the tag + */ + static void readTagIntoTileEntity(net.minecraft.nbt.CompoundTag tag, BlockEntity tileEntity) { + tileEntity.loadWithComponents(tag, MinecraftServer.getServer().registryAccess()); + tileEntity.setChanged(); + } + + /** + * Get the ID string of the given entity. + * + * @param entity the entity + * @return the entity ID + */ + private static String getEntityId(Entity entity) { + return EntityType.getKey(entity.getType()).toString(); + } + + /** + * Create an entity using the given entity ID. + * + * @param id the entity ID + * @param world the world + * @return an entity or null + */ + @Nullable + private static Entity createEntityFromId(String id, net.minecraft.world.level.Level world) { + return EntityType.byString(id).map(t -> t.create(world)).orElse(null); + } + + /** + * Write the given NBT data into the given entity. + * + * @param entity the entity + * @param tag the tag + */ + private static void readTagIntoEntity(net.minecraft.nbt.CompoundTag tag, Entity entity) { + entity.load(tag); + } + + /** + * Write the entity's NBT data to the given tag. + * + * @param entity the entity + * @param tag the tag + */ + private static void readEntityIntoTag(Entity entity, net.minecraft.nbt.CompoundTag tag) { + entity.save(tag); + } + + private static Block getBlockFromType(BlockType blockType) { + return DedicatedServer.getServer().registryAccess().registryOrThrow(Registries.BLOCK).get(ResourceLocation.tryParse(blockType.id())); + } + + private static Item getItemFromType(ItemType itemType) { + return DedicatedServer.getServer().registryAccess().registryOrThrow(Registries.ITEM).get(ResourceLocation.tryParse(itemType.id())); + } + + @Override + public OptionalInt getInternalBlockStateId(BlockData data) { + net.minecraft.world.level.block.state.BlockState state = ((CraftBlockData) data).getState(); + int combinedId = Block.getId(state); + return combinedId == 0 && state.getBlock() != Blocks.AIR ? OptionalInt.empty() : OptionalInt.of(combinedId); + } + + @Override + public OptionalInt getInternalBlockStateId(BlockState state) { + Block mcBlock = getBlockFromType(state.getBlockType()); + net.minecraft.world.level.block.state.BlockState newState = mcBlock.defaultBlockState(); + Map, Object> states = state.getStates(); + newState = applyProperties(mcBlock.getStateDefinition(), newState, states); + final int combinedId = Block.getId(newState); + return combinedId == 0 && state.getBlockType() != BlockTypes.AIR ? OptionalInt.empty() : OptionalInt.of(combinedId); + } + + public BlockState adapt(net.minecraft.world.level.block.state.BlockState blockState) { + int internalId = Block.getId(blockState); + BlockState state = BlockStateIdAccess.getBlockStateById(internalId); + if (state == null) { + state = BukkitAdapter.adapt(CraftBlockData.createData(blockState)); + } + + return state; + } + + public BiomeType adapt(Biome biome) { + var mcBiome = ((CraftServer) Bukkit.getServer()).getServer().registryAccess().registryOrThrow(Registries.BIOME).getKey(biome); + if (mcBiome == null) { + return null; + } + return BiomeType.REGISTRY.get(mcBiome.toString()); + } + + public net.minecraft.world.level.block.state.BlockState adapt(BlockState blockState) { + int internalId = BlockStateIdAccess.getBlockStateId(blockState); + return Block.stateById(internalId); + } + + @Override + public BlockState getBlock(Location location) { + checkNotNull(location); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + int x = location.getBlockX(); + int y = location.getBlockY(); + int z = location.getBlockZ(); + + final ServerLevel handle = craftWorld.getHandle(); + LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); + final BlockPos blockPos = new BlockPos(x, y, z); + final net.minecraft.world.level.block.state.BlockState blockData = chunk.getBlockState(blockPos); + return adapt(blockData); + } + + @Override + public BaseBlock getFullBlock(Location location) { + BlockState state = getBlock(location); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + int x = location.getBlockX(); + int y = location.getBlockY(); + int z = location.getBlockZ(); + + final ServerLevel handle = craftWorld.getHandle(); + LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); + final BlockPos blockPos = new BlockPos(x, y, z); + + // Read the NBT data + BlockEntity te = chunk.getBlockEntity(blockPos); + if (te != null) { + net.minecraft.nbt.CompoundTag tag = te.saveWithId(MinecraftServer.getServer().registryAccess()); + return state.toBaseBlock(LazyReference.from(() -> (LinCompoundTag) toNative(tag))); + } + + return state.toBaseBlock(); + } + + private static final HashMap> biomeTypeToNMSCache = new HashMap<>(); + private static final HashMap, BiomeType> biomeTypeFromNMSCache = new HashMap<>(); + + @Override + public BiomeType getBiome(Location location) { + checkNotNull(location); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + int x = location.getBlockX(); + int y = location.getBlockY(); + int z = location.getBlockZ(); + + final ServerLevel handle = craftWorld.getHandle(); + LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); + + return biomeTypeFromNMSCache.computeIfAbsent(chunk.getNoiseBiome(x >> 2, y >> 2, z >> 2), b -> BiomeType.REGISTRY.get(b.unwrapKey().get().location().toString())); + } + + @Override + public void setBiome(Location location, BiomeType biome) { + checkNotNull(location); + checkNotNull(biome); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + int x = location.getBlockX(); + int y = location.getBlockY(); + int z = location.getBlockZ(); + + final ServerLevel handle = craftWorld.getHandle(); + LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); + chunk.setBiome(x >> 2, y >> 2, z >> 2, biomeTypeToNMSCache.computeIfAbsent(biome, b -> ((CraftServer) Bukkit.getServer()).getServer().registryAccess().registryOrThrow(Registries.BIOME).getHolderOrThrow(ResourceKey.create(Registries.BIOME, new ResourceLocation(b.id()))))); + chunk.setUnsaved(true); + } + + @Override + public WorldNativeAccess createWorldNativeAccess(World world) { + return new PaperweightWorldNativeAccess(this, new WeakReference<>(((CraftWorld) world).getHandle())); + } + + private static net.minecraft.core.Direction adapt(Direction face) { + switch (face) { + case NORTH: + return net.minecraft.core.Direction.NORTH; + case SOUTH: + return net.minecraft.core.Direction.SOUTH; + case WEST: + return net.minecraft.core.Direction.WEST; + case EAST: + return net.minecraft.core.Direction.EAST; + case DOWN: + return net.minecraft.core.Direction.DOWN; + case UP: + default: + return net.minecraft.core.Direction.UP; + } + } + + @SuppressWarnings({"rawtypes", "unchecked"}) + private net.minecraft.world.level.block.state.BlockState applyProperties( + StateDefinition stateContainer, + net.minecraft.world.level.block.state.BlockState newState, + Map, Object> states + ) { + for (Map.Entry, Object> state : states.entrySet()) { + net.minecraft.world.level.block.state.properties.Property property = + stateContainer.getProperty(state.getKey().getName()); + Comparable value = (Comparable) state.getValue(); + // we may need to adapt this value, depending on the source prop + if (property instanceof DirectionProperty) { + Direction dir = (Direction) value; + value = adapt(dir); + } else if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { + String enumName = (String) value; + value = ((net.minecraft.world.level.block.state.properties.EnumProperty) property) + .getValue(enumName).orElseThrow(() -> + new IllegalStateException( + "Enum property " + property.getName() + " does not contain " + enumName + ) + ); + } + + newState = newState.setValue( + (net.minecraft.world.level.block.state.properties.Property) property, + (Comparable) value + ); + } + return newState; + } + + @Override + public BaseEntity getEntity(org.bukkit.entity.Entity entity) { + checkNotNull(entity); + + CraftEntity craftEntity = ((CraftEntity) entity); + Entity mcEntity = craftEntity.getHandle(); + + // Do not allow creating of passenger entity snapshots, passengers are included in the vehicle entity + if (mcEntity.isPassenger()) { + return null; + } + + String id = getEntityId(mcEntity); + + net.minecraft.nbt.CompoundTag tag = new net.minecraft.nbt.CompoundTag(); + readEntityIntoTag(mcEntity, tag); + return new BaseEntity( + EntityTypes.get(id), + LazyReference.from(() -> (LinCompoundTag) toNative(tag)) + ); + } + + @Nullable + @Override + public org.bukkit.entity.Entity createEntity(Location location, BaseEntity state) { + checkNotNull(location); + checkNotNull(state); + + CraftWorld craftWorld = ((CraftWorld) location.getWorld()); + ServerLevel worldServer = craftWorld.getHandle(); + + String entityId = state.getType().id(); + + LinCompoundTag nativeTag = state.getNbt(); + net.minecraft.nbt.CompoundTag tag; + if (nativeTag != null) { + tag = (net.minecraft.nbt.CompoundTag) fromNative(nativeTag); + removeUnwantedEntityTagsRecursively(tag); + } else { + tag = new net.minecraft.nbt.CompoundTag(); + } + + tag.putString("id", entityId); + + Entity createdEntity = EntityType.loadEntityRecursive(tag, craftWorld.getHandle(), (loadedEntity) -> { + loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); + return loadedEntity; + }); + + if (createdEntity != null) { + worldServer.addFreshEntityWithPassengers(createdEntity, SpawnReason.CUSTOM); + return createdEntity.getBukkitEntity(); + } else { + return null; + } + } + + // This removes all unwanted tags from the main entity and all its passengers + private void removeUnwantedEntityTagsRecursively(net.minecraft.nbt.CompoundTag tag) { + for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { + tag.remove(name); + } + + // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive + if (tag.contains("Passengers", LinTagId.LIST.id())) { + net.minecraft.nbt.ListTag nbttaglist = tag.getList("Passengers", LinTagId.COMPOUND.id()); + + for (int i = 0; i < nbttaglist.size(); ++i) { + removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); + } + } + } + + @Override + public Component getRichBlockName(BlockType blockType) { + return TranslatableComponent.of(getBlockFromType(blockType).getDescriptionId()); + } + + @Override + public Component getRichItemName(ItemType itemType) { + return TranslatableComponent.of(getItemFromType(itemType).getDescriptionId()); + } + + @Override + public Component getRichItemName(BaseItemStack itemStack) { + return TranslatableComponent.of(CraftItemStack.asNMSCopy(BukkitAdapter.adapt(itemStack)).getDescriptionId()); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + private static final LoadingCache> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { + @Override + public Property load(net.minecraft.world.level.block.state.properties.Property state) throws Exception { + if (state instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { + return new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + } else if (state instanceof DirectionProperty) { + return new DirectionalProperty(state.getName(), + (List) state.getPossibleValues().stream().map(e -> Direction.valueOf(((StringRepresentable) e).getSerializedName().toUpperCase(Locale.ROOT))).toList()); + } else if (state instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { + return new EnumProperty(state.getName(), + (List) state.getPossibleValues().stream().map(e -> ((StringRepresentable) e).getSerializedName()).toList()); + } else if (state instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { + return new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); + } else { + throw new IllegalArgumentException("WorldEdit needs an update to support " + state.getClass().getSimpleName()); + } + } + }); + + @SuppressWarnings({ "rawtypes" }) + @Override + public Map> getProperties(BlockType blockType) { + Map> properties = new TreeMap<>(); + Block block = getBlockFromType(blockType); + StateDefinition blockStateList = + block.getStateDefinition(); + for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { + Property property = PROPERTY_CACHE.getUnchecked(state); + properties.put(property.getName(), property); + } + return properties; + } + + @Override + public void sendFakeNBT(Player player, BlockVector3 pos, LinCompoundTag nbtData) { + var structureBlock = new StructureBlockEntity( + new BlockPos(pos.x(), pos.y(), pos.z()), + Blocks.STRUCTURE_BLOCK.defaultBlockState() + ); + structureBlock.setLevel(((CraftPlayer) player).getHandle().level()); + ((CraftPlayer) player).getHandle().connection.send(ClientboundBlockEntityDataPacket.create( + structureBlock, + (blockEntity, registryAccess) -> (net.minecraft.nbt.CompoundTag) fromNative(nbtData) + )); + } + + @Override + public void sendFakeOP(Player player) { + ((CraftPlayer) player).getHandle().connection.send(new ClientboundEntityEventPacket( + ((CraftPlayer) player).getHandle(), (byte) 28 + )); + } + + /** + * For serializing and deserializing components. + */ + private static final Codec COMPONENTS_CODEC = DataComponentPatch.CODEC.optionalFieldOf( + "components", DataComponentPatch.EMPTY + ).codec(); + + @Override + public org.bukkit.inventory.ItemStack adapt(BaseItemStack baseItemStack) { + var registryAccess = DedicatedServer.getServer().registryAccess(); + ItemStack stack = new ItemStack( + registryAccess.registryOrThrow(Registries.ITEM).get(ResourceLocation.tryParse(baseItemStack.getType().id())), + baseItemStack.getAmount() + ); + LinCompoundTag nbt = baseItemStack.getNbt(); + if (nbt != null) { + DataComponentPatch componentPatch = COMPONENTS_CODEC.parse( + registryAccess.createSerializationContext(NbtOps.INSTANCE), + fromNative(nbt) + ).getOrThrow(); + stack.applyComponents(componentPatch); + } + return CraftItemStack.asCraftMirror(stack); + } + + @Override + public BaseItemStack adapt(org.bukkit.inventory.ItemStack itemStack) { + var registryAccess = DedicatedServer.getServer().registryAccess(); + final ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack); + CompoundTag tag = (CompoundTag) COMPONENTS_CODEC.encodeStart( + registryAccess.createSerializationContext(NbtOps.INSTANCE), + nmsStack.getComponentsPatch() + ).getOrThrow(); + return new BaseItemStack(BukkitAdapter.asItemType(itemStack.getType()), LazyReference.from(() -> (LinCompoundTag) toNative(tag)), itemStack.getAmount()); + } + + private final LoadingCache fakePlayers + = CacheBuilder.newBuilder().weakKeys().softValues().build(CacheLoader.from(PaperweightFakePlayer::new)); + + @Override + public boolean simulateItemUse(World world, BlockVector3 position, BaseItem item, Direction face) { + CraftWorld craftWorld = (CraftWorld) world; + ServerLevel worldServer = craftWorld.getHandle(); + ItemStack stack = CraftItemStack.asNMSCopy(adapt( + item instanceof BaseItemStack + ? ((BaseItemStack) item) + : new BaseItemStack(item.getType(), item.getNbtReference(), 1) + )); + + PaperweightFakePlayer fakePlayer; + try { + fakePlayer = fakePlayers.get(worldServer); + } catch (ExecutionException ignored) { + return false; + } + fakePlayer.setItemInHand(InteractionHand.MAIN_HAND, stack); + fakePlayer.absMoveTo(position.x(), position.y(), position.z(), + (float) face.toVector().toYaw(), (float) face.toVector().toPitch()); + + final BlockPos blockPos = new BlockPos(position.x(), position.y(), position.z()); + final Vec3 blockVec = Vec3.atLowerCornerOf(blockPos); + final net.minecraft.core.Direction enumFacing = adapt(face); + BlockHitResult rayTrace = new BlockHitResult(blockVec, enumFacing, blockPos, false); + UseOnContext context = new UseOnContext(fakePlayer, InteractionHand.MAIN_HAND, rayTrace); + InteractionResult result = stack.useOn(context); + if (result != InteractionResult.SUCCESS) { + if (worldServer.getBlockState(blockPos).useItemOn(stack, worldServer, fakePlayer, InteractionHand.MAIN_HAND, rayTrace).consumesAction()) { + result = InteractionResult.SUCCESS; + } else { + result = stack.getItem().use(worldServer, fakePlayer, InteractionHand.MAIN_HAND).getResult(); + } + } + + return result == InteractionResult.SUCCESS; + } + + @Override + public boolean canPlaceAt(World world, BlockVector3 position, BlockState blockState) { + int internalId = BlockStateIdAccess.getBlockStateId(blockState); + net.minecraft.world.level.block.state.BlockState blockData = Block.stateById(internalId); + return blockData.canSurvive(((CraftWorld) world).getHandle(), new BlockPos(position.x(), position.y(), position.z())); + } + + @Override + public boolean regenerate(World bukkitWorld, Region region, Extent extent, RegenOptions options) { + try { + doRegen(bukkitWorld, region, extent, options); + } catch (Exception e) { + throw new IllegalStateException("Regen failed.", e); + } + + return true; + } + + private void doRegen(World bukkitWorld, Region region, Extent extent, RegenOptions options) throws Exception { + Environment env = bukkitWorld.getEnvironment(); + ChunkGenerator gen = bukkitWorld.getGenerator(); + + Path tempDir = Files.createTempDirectory("WorldEditWorldGen"); + LevelStorageSource levelStorage = LevelStorageSource.createDefault(tempDir); + ResourceKey worldDimKey = getWorldDimKey(env); + try (LevelStorageSource.LevelStorageAccess session = levelStorage.createAccess("worldeditregentempworld", worldDimKey)) { + ServerLevel originalWorld = ((CraftWorld) bukkitWorld).getHandle(); + PrimaryLevelData levelProperties = (PrimaryLevelData) originalWorld.getServer() + .getWorldData().overworldData(); + WorldOptions originalOpts = levelProperties.worldGenOptions(); + + long seed = options.getSeed().orElse(originalWorld.getSeed()); + WorldOptions newOpts = options.getSeed().isPresent() + ? originalOpts.withSeed(OptionalLong.of(seed)) + : originalOpts; + + LevelSettings newWorldSettings = new LevelSettings( + "worldeditregentempworld", + levelProperties.settings.gameType(), + levelProperties.settings.hardcore(), + levelProperties.settings.difficulty(), + levelProperties.settings.allowCommands(), + levelProperties.settings.gameRules(), + levelProperties.settings.getDataConfiguration() + ); + + @SuppressWarnings("deprecation") + PrimaryLevelData.SpecialWorldProperty specialWorldProperty = + levelProperties.isFlatWorld() + ? PrimaryLevelData.SpecialWorldProperty.FLAT + : levelProperties.isDebugWorld() + ? PrimaryLevelData.SpecialWorldProperty.DEBUG + : PrimaryLevelData.SpecialWorldProperty.NONE; + + PrimaryLevelData newWorldData = new PrimaryLevelData(newWorldSettings, newOpts, specialWorldProperty, Lifecycle.stable()); + + ServerLevel freshWorld = new ServerLevel( + originalWorld.getServer(), + originalWorld.getServer().executor, + session, newWorldData, + originalWorld.dimension(), + new LevelStem( + originalWorld.dimensionTypeRegistration(), + originalWorld.getChunkSource().getGenerator() + ), + new NoOpWorldLoadListener(), + originalWorld.isDebug(), + seed, + ImmutableList.of(), + false, + originalWorld.getRandomSequences(), + env, + gen, + bukkitWorld.getBiomeProvider() + ); + try { + regenForWorld(region, extent, freshWorld, options); + } finally { + freshWorld.getChunkSource().close(false); + } + } finally { + try { + @SuppressWarnings("unchecked") + Map map = (Map) serverWorldsField.get(Bukkit.getServer()); + map.remove("worldeditregentempworld"); + } catch (IllegalAccessException ignored) { + } + SafeFiles.tryHardToDeleteDir(tempDir); + } + } + + private BiomeType adapt(ServerLevel serverWorld, Biome origBiome) { + ResourceLocation key = serverWorld.registryAccess().registryOrThrow(Registries.BIOME).getKey(origBiome); + if (key == null) { + return null; + } + return BiomeTypes.get(key.toString()); + } + + @SuppressWarnings("unchecked") + private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld, RegenOptions options) throws WorldEditException { + List> chunkLoadings = submitChunkLoadTasks(region, serverWorld); + BlockableEventLoop executor; + try { + executor = (BlockableEventLoop) chunkProviderExecutorField.get(serverWorld.getChunkSource()); + } catch (IllegalAccessException e) { + throw new IllegalStateException("Couldn't get executor for chunk loading.", e); + } + executor.managedBlock(() -> { + // bail out early if a future fails + if (chunkLoadings.stream().anyMatch(ftr -> + ftr.isDone() && Futures.getUnchecked(ftr) == null + )) { + return false; + } + return chunkLoadings.stream().allMatch(CompletableFuture::isDone); + }); + Map chunks = new HashMap<>(); + for (CompletableFuture future : chunkLoadings) { + @Nullable + ChunkAccess chunk = future.getNow(null); + checkState(chunk != null, "Failed to generate a chunk, regen failed."); + chunks.put(chunk.getPos(), chunk); + } + + for (BlockVector3 vec : region) { + BlockPos pos = new BlockPos(vec.x(), vec.y(), vec.z()); + ChunkAccess chunk = chunks.get(new ChunkPos(pos)); + final net.minecraft.world.level.block.state.BlockState blockData = chunk.getBlockState(pos); + int internalId = Block.getId(blockData); + BlockStateHolder state = BlockStateIdAccess.getBlockStateById(internalId); + Objects.requireNonNull(state); + BlockEntity blockEntity = chunk.getBlockEntity(pos); + if (blockEntity != null) { + net.minecraft.nbt.CompoundTag tag = blockEntity.saveWithId(serverWorld.registryAccess()); + state = state.toBaseBlock(LazyReference.from(() -> (LinCompoundTag) toNative(tag))); + } + extent.setBlock(vec, state.toBaseBlock()); + if (options.shouldRegenBiomes()) { + Biome origBiome = chunk.getNoiseBiome(vec.x(), vec.y(), vec.z()).value(); + BiomeType adaptedBiome = adapt(serverWorld, origBiome); + if (adaptedBiome != null) { + extent.setBiome(vec, adaptedBiome); + } + } + } + } + + @SuppressWarnings("unchecked") + private List> submitChunkLoadTasks(Region region, ServerLevel serverWorld) { + ServerChunkCache chunkManager = serverWorld.getChunkSource(); + List> chunkLoadings = new ArrayList<>(); + // Pre-gen all the chunks + for (BlockVector2 chunk : region.getChunks()) { + try { + //noinspection unchecked + chunkLoadings.add( + ((CompletableFuture>) + getChunkFutureMethod.invoke(chunkManager, chunk.x(), chunk.z(), ChunkStatus.FEATURES, true)) + .thenApply(either -> either.orElse(null)) + ); + } catch (IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("Couldn't load chunk for regen.", e); + } + } + return chunkLoadings; + } + + private ResourceKey getWorldDimKey(Environment env) { + switch (env) { + case NETHER: + return LevelStem.NETHER; + case THE_END: + return LevelStem.END; + case NORMAL: + default: + return LevelStem.OVERWORLD; + } + } + + private static final Set SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet( + SideEffect.NEIGHBORS, + SideEffect.LIGHTING, + SideEffect.VALIDATION, + SideEffect.ENTITY_AI, + SideEffect.EVENTS, + SideEffect.UPDATE + ); + + @Override + public Set getSupportedSideEffects() { + return SUPPORTED_SIDE_EFFECTS; + } + + @Override + public boolean clearContainerBlockContents(World world, BlockVector3 pt) { + ServerLevel originalWorld = ((CraftWorld) world).getHandle(); + + BlockEntity entity = originalWorld.getBlockEntity(new BlockPos(pt.x(), pt.y(), pt.z())); + if (entity instanceof Clearable) { + ((Clearable) entity).clearContent(); + return true; + } + return false; + } + + @Override + public void initializeRegistries() { + DedicatedServer server = ((CraftServer) Bukkit.getServer()).getServer(); + // Biomes + for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.BIOME).keySet()) { + if (BiomeType.REGISTRY.get(name.toString()) == null) { + BiomeType.REGISTRY.register(name.toString(), new BiomeType(name.toString())); + } + } + + // Features + for (ResourceLocation name: server.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).keySet()) { + if (ConfiguredFeatureType.REGISTRY.get(name.toString()) == null) { + ConfiguredFeatureType.REGISTRY.register(name.toString(), new ConfiguredFeatureType(name.toString())); + } + } + + // Structures + for (ResourceLocation name : server.registryAccess().registryOrThrow(Registries.STRUCTURE).keySet()) { + if (StructureType.REGISTRY.get(name.toString()) == null) { + StructureType.REGISTRY.register(name.toString(), new StructureType(name.toString())); + } + } + + // BiomeCategories + Registry biomeRegistry = server.registryAccess().registryOrThrow(Registries.BIOME); + biomeRegistry.getTagNames().forEach(tagKey -> { + String key = tagKey.location().toString(); + if (BiomeCategory.REGISTRY.get(key) == null) { + BiomeCategory.REGISTRY.register(key, new BiomeCategory( + key, + () -> biomeRegistry.getTag(tagKey) + .stream() + .flatMap(HolderSet.Named::stream) + .map(Holder::value) + .map(this::adapt) + .collect(Collectors.toSet())) + ); + } + }); + } + + public boolean generateFeature(ConfiguredFeatureType type, World world, EditSession session, BlockVector3 pt) { + ServerLevel originalWorld = ((CraftWorld) world).getHandle(); + ConfiguredFeature k = originalWorld.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).get(ResourceLocation.tryParse(type.id())); + ServerChunkCache chunkManager = originalWorld.getChunkSource(); + WorldGenLevel proxyLevel = PaperweightServerLevelDelegateProxy.newInstance(session, originalWorld, this); + return k != null && k.place(proxyLevel, chunkManager.getGenerator(), random, new BlockPos(pt.x(), pt.y(), pt.z())); + } + + public boolean generateStructure(StructureType type, World world, EditSession session, BlockVector3 pt) { + ServerLevel originalWorld = ((CraftWorld) world).getHandle(); + Structure k = originalWorld.registryAccess().registryOrThrow(Registries.STRUCTURE).get(ResourceLocation.tryParse(type.id())); + if (k == null) { + return false; + } + + ServerChunkCache chunkManager = originalWorld.getChunkSource(); + WorldGenLevel proxyLevel = PaperweightServerLevelDelegateProxy.newInstance(session, originalWorld, this); + ChunkPos chunkPos = new ChunkPos(new BlockPos(pt.x(), pt.y(), pt.z())); + StructureStart structureStart = k.generate(originalWorld.registryAccess(), chunkManager.getGenerator(), chunkManager.getGenerator().getBiomeSource(), chunkManager.randomState(), originalWorld.getStructureManager(), originalWorld.getSeed(), chunkPos, 0, proxyLevel, biome -> true); + + if (!structureStart.isValid()) { + return false; + } else { + BoundingBox boundingBox = structureStart.getBoundingBox(); + ChunkPos min = new ChunkPos(SectionPos.blockToSectionCoord(boundingBox.minX()), SectionPos.blockToSectionCoord(boundingBox.minZ())); + ChunkPos max = new ChunkPos(SectionPos.blockToSectionCoord(boundingBox.maxX()), SectionPos.blockToSectionCoord(boundingBox.maxZ())); + ChunkPos.rangeClosed(min, max).forEach((chunkPosx) -> structureStart.placeInChunk(proxyLevel, originalWorld.structureManager(), chunkManager.getGenerator(), originalWorld.getRandom(), new BoundingBox(chunkPosx.getMinBlockX(), originalWorld.getMinBuildHeight(), chunkPosx.getMinBlockZ(), chunkPosx.getMaxBlockX(), originalWorld.getMaxBuildHeight(), chunkPosx.getMaxBlockZ()), chunkPosx)); + return true; + } + } + + @Override + public void sendBiomeUpdates(World world, Iterable chunks) { + ServerLevel originalWorld = ((CraftWorld) world).getHandle(); + + List nativeChunks = chunks instanceof Collection chunkCollection ? Lists.newArrayListWithCapacity(chunkCollection.size()) : Lists.newArrayList(); + for (BlockVector2 chunk : chunks) { + nativeChunks.add(originalWorld.getChunk(chunk.x(), chunk.z(), ChunkStatus.BIOMES, false)); + } + originalWorld.getChunkSource().chunkMap.resendBiomesForChunks(nativeChunks); + } + + // ------------------------------------------------------------------------ + // Code that is less likely to break + // ------------------------------------------------------------------------ + + /** + * Converts from a non-native NMS NBT structure to a native WorldEdit NBT + * structure. + * + * @param foreign non-native NMS NBT structure + * @return native WorldEdit NBT structure + */ + LinTag toNative(net.minecraft.nbt.Tag foreign) { + if (foreign == null) { + return null; + } + if (foreign instanceof net.minecraft.nbt.CompoundTag compoundTag) { + LinCompoundTag.Builder builder = LinCompoundTag.builder(); + for (var entry : compoundTag.getAllKeys()) { + builder.put(entry, toNative(compoundTag.get(entry))); + } + return builder.build(); + } else if (foreign instanceof net.minecraft.nbt.ByteTag byteTag) { + return LinByteTag.of(byteTag.getAsByte()); + } else if (foreign instanceof net.minecraft.nbt.ByteArrayTag byteArrayTag) { + return LinByteArrayTag.of(byteArrayTag.getAsByteArray()); + } else if (foreign instanceof net.minecraft.nbt.DoubleTag doubleTag) { + return LinDoubleTag.of(doubleTag.getAsDouble()); + } else if (foreign instanceof net.minecraft.nbt.FloatTag floatTag) { + return LinFloatTag.of(floatTag.getAsFloat()); + } else if (foreign instanceof net.minecraft.nbt.IntTag intTag) { + return LinIntTag.of(intTag.getAsInt()); + } else if (foreign instanceof net.minecraft.nbt.IntArrayTag intArrayTag) { + return LinIntArrayTag.of(intArrayTag.getAsIntArray()); + } else if (foreign instanceof net.minecraft.nbt.LongArrayTag longArrayTag) { + return LinLongArrayTag.of(longArrayTag.getAsLongArray()); + } else if (foreign instanceof net.minecraft.nbt.ListTag listTag) { + try { + return toNativeList(listTag); + } catch (Throwable e) { + logger.log(Level.WARNING, "Failed to convert net.minecraft.nbt.ListTag", e); + return LinListTag.empty(LinTagType.endTag()); + } + } else if (foreign instanceof net.minecraft.nbt.LongTag longTag) { + return LinLongTag.of(longTag.getAsLong()); + } else if (foreign instanceof net.minecraft.nbt.ShortTag shortTag) { + return LinShortTag.of(shortTag.getAsShort()); + } else if (foreign instanceof net.minecraft.nbt.StringTag stringTag) { + return LinStringTag.of(stringTag.getAsString()); + } else if (foreign instanceof net.minecraft.nbt.EndTag) { + return LinEndTag.instance(); + } else { + throw new IllegalArgumentException("Don't know how to make native " + foreign.getClass().getCanonicalName()); + } + } + + /** + * Convert a foreign NBT list tag into a native WorldEdit one. + * + * @param foreign the foreign tag + * @return the converted tag + * @throws SecurityException on error + * @throws IllegalArgumentException on error + */ + private LinListTag toNativeList(net.minecraft.nbt.ListTag foreign) throws SecurityException, IllegalArgumentException { + LinListTag.Builder> builder = LinListTag.builder( + LinTagType.fromId(LinTagId.fromId(foreign.getElementType())) + ); + + for (net.minecraft.nbt.Tag tag : foreign) { + builder.add(toNative(tag)); + } + + return builder.build(); + } + + /** + * Converts a WorldEdit-native NBT structure to a NMS structure. + * + * @param foreign structure to convert + * @return non-native structure + */ + Tag fromNative(LinTag foreign) { + if (foreign == null) { + return null; + } + if (foreign instanceof LinCompoundTag compoundTag) { + net.minecraft.nbt.CompoundTag tag = new CompoundTag(); + for (var entry : compoundTag.value().entrySet()) { + tag.put(entry.getKey(), fromNative(entry.getValue())); + } + return tag; + } else if (foreign instanceof LinByteTag byteTag) { + return ByteTag.valueOf(byteTag.valueAsByte()); + } else if (foreign instanceof LinByteArrayTag byteArrayTag) { + return new ByteArrayTag(byteArrayTag.value()); + } else if (foreign instanceof LinDoubleTag doubleTag) { + return DoubleTag.valueOf(doubleTag.valueAsDouble()); + } else if (foreign instanceof LinFloatTag floatTag) { + return FloatTag.valueOf(floatTag.valueAsFloat()); + } else if (foreign instanceof LinIntTag intTag) { + return IntTag.valueOf(intTag.valueAsInt()); + } else if (foreign instanceof LinIntArrayTag intArrayTag) { + return new IntArrayTag(intArrayTag.value()); + } else if (foreign instanceof LinLongArrayTag longArrayTag) { + return new LongArrayTag(longArrayTag.value()); + } else if (foreign instanceof LinListTag listTag) { + net.minecraft.nbt.ListTag tag = new ListTag(); + for (var t : listTag.value()) { + tag.add(fromNative(t)); + } + return tag; + } else if (foreign instanceof LinLongTag longTag) { + return LongTag.valueOf(longTag.valueAsLong()); + } else if (foreign instanceof LinShortTag shortTag) { + return ShortTag.valueOf(shortTag.valueAsShort()); + } else if (foreign instanceof LinStringTag stringTag) { + return StringTag.valueOf(stringTag.value()); + } else if (foreign instanceof LinEndTag) { + return EndTag.INSTANCE; + } else { + throw new IllegalArgumentException("Don't know how to make NMS " + foreign.getClass().getCanonicalName()); + } + } + + @Override + public boolean supportsWatchdog() { + return watchdog != null; + } + + @Override + public void tickWatchdog() { + watchdog.tick(); + } + + private class SpigotWatchdog implements Watchdog { + private final Field instanceField; + private final Field lastTickField; + + SpigotWatchdog() throws NoSuchFieldException { + Field instanceField = WatchdogThread.class.getDeclaredField("instance"); + instanceField.setAccessible(true); + this.instanceField = instanceField; + + Field lastTickField = WatchdogThread.class.getDeclaredField("lastTick"); + lastTickField.setAccessible(true); + this.lastTickField = lastTickField; + } + + @Override + public void tick() { + try { + WatchdogThread instance = (WatchdogThread) this.instanceField.get(null); + if ((long) lastTickField.get(instance) != 0) { + WatchdogThread.tick(); + } + } catch (IllegalAccessException e) { + logger.log(Level.WARNING, "Failed to tick watchdog", e); + } + } + } + + private static class MojangWatchdog implements Watchdog { + private final DedicatedServer server; + private final Field tickField; + + MojangWatchdog(DedicatedServer server) throws NoSuchFieldException { + this.server = server; + Field tickField = MinecraftServer.class.getDeclaredField( + Refraction.pickName("nextTickTime", "ag") + ); + if (tickField.getType() != long.class) { + throw new IllegalStateException("nextTickTime is not a long field, mapping is likely incorrect"); + } + tickField.setAccessible(true); + this.tickField = tickField; + } + + @Override + public void tick() { + try { + tickField.set(server, Util.getMillis()); + } catch (IllegalAccessException ignored) { + } + } + } + + private static class NoOpWorldLoadListener implements ChunkProgressListener { + @Override + public void updateSpawnPos(ChunkPos spawnPos) { + } + + @Override + public void onStatusChange(ChunkPos pos, @org.jetbrains.annotations.Nullable ChunkStatus status) { + } + + @Override + public void start() { + } + + @Override + public void stop() { + } + + } +} diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightDataConverters.java b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightDataConverters.java new file mode 100644 index 0000000000..4ad9244e2c --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightDataConverters.java @@ -0,0 +1,2803 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_20_R4; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonParseException; +import com.mojang.datafixers.DSL.TypeReference; +import com.mojang.datafixers.DataFixer; +import com.mojang.datafixers.DataFixerBuilder; +import com.mojang.datafixers.schemas.Schema; +import com.mojang.serialization.Dynamic; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.FloatTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.StringTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.GsonHelper; +import net.minecraft.util.StringUtil; +import net.minecraft.util.datafix.DataFixers; +import net.minecraft.util.datafix.fixes.References; +import net.minecraft.world.item.DyeColor; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.enginehub.linbus.tree.LinCompoundTag; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.UUID; +import java.util.concurrent.Executor; +import java.util.stream.Collectors; +import javax.annotation.Nullable; + +/** + * Handles converting all Pre 1.13.2 data using the Legacy DataFix System (ported to 1.13.2) + * + * We register a DFU Fixer per Legacy Data Version and apply the fixes using legacy strategy + * which is safer, faster and cleaner code. + * + * The pre DFU code did not fail when the Source version was unknown. + * + * This class also provides util methods for converting compounds to wrap the update call to + * receive the source version in the compound + */ +@SuppressWarnings({ "rawtypes", "unchecked" }) +class PaperweightDataConverters extends DataFixerBuilder implements com.sk89q.worldedit.world.DataFixer { + + @SuppressWarnings("unchecked") + @Override + public T fixUp(FixType type, T original, int srcVer) { + if (type == FixTypes.CHUNK) { + return (T) fixChunk((LinCompoundTag) original, srcVer); + } else if (type == FixTypes.BLOCK_ENTITY) { + return (T) fixBlockEntity((LinCompoundTag) original, srcVer); + } else if (type == FixTypes.ENTITY) { + return (T) fixEntity((LinCompoundTag) original, srcVer); + } else if (type == FixTypes.BLOCK_STATE) { + return (T) fixBlockState((String) original, srcVer); + } else if (type == FixTypes.ITEM_TYPE) { + return (T) fixItemType((String) original, srcVer); + } else if (type == FixTypes.BIOME) { + return (T) fixBiome((String) original, srcVer); + } + return original; + } + + private LinCompoundTag fixChunk(LinCompoundTag originalChunk, int srcVer) { + CompoundTag tag = (CompoundTag) adapter.fromNative(originalChunk); + CompoundTag fixed = convert(LegacyType.CHUNK, tag, srcVer); + return (LinCompoundTag) adapter.toNative(fixed); + } + + private LinCompoundTag fixBlockEntity(LinCompoundTag origTileEnt, int srcVer) { + CompoundTag tag = (CompoundTag) adapter.fromNative(origTileEnt); + CompoundTag fixed = convert(LegacyType.BLOCK_ENTITY, tag, srcVer); + return (LinCompoundTag) adapter.toNative(fixed); + } + + private LinCompoundTag fixEntity(LinCompoundTag origEnt, int srcVer) { + CompoundTag tag = (CompoundTag) adapter.fromNative(origEnt); + CompoundTag fixed = convert(LegacyType.ENTITY, tag, srcVer); + return (LinCompoundTag) adapter.toNative(fixed); + } + + private String fixBlockState(String blockState, int srcVer) { + CompoundTag stateNBT = stateToNBT(blockState); + Dynamic dynamic = new Dynamic<>(OPS_NBT, stateNBT); + CompoundTag fixed = (CompoundTag) INSTANCE.fixer.update(References.BLOCK_STATE, dynamic, srcVer, DATA_VERSION).getValue(); + return nbtToState(fixed); + } + + private String nbtToState(CompoundTag tagCompound) { + StringBuilder sb = new StringBuilder(); + sb.append(tagCompound.getString("Name")); + if (tagCompound.contains("Properties", 10)) { + sb.append('['); + CompoundTag props = tagCompound.getCompound("Properties"); + sb.append(props.getAllKeys().stream().map(k -> k + "=" + props.getString(k).replace("\"", "")).collect(Collectors.joining(","))); + sb.append(']'); + } + return sb.toString(); + } + + private static CompoundTag stateToNBT(String blockState) { + int propIdx = blockState.indexOf('['); + CompoundTag tag = new CompoundTag(); + if (propIdx < 0) { + tag.putString("Name", blockState); + } else { + tag.putString("Name", blockState.substring(0, propIdx)); + CompoundTag propTag = new CompoundTag(); + String props = blockState.substring(propIdx + 1, blockState.length() - 1); + String[] propArr = props.split(","); + for (String pair : propArr) { + final String[] split = pair.split("="); + propTag.putString(split[0], split[1]); + } + tag.put("Properties", propTag); + } + return tag; + } + + private String fixBiome(String key, int srcVer) { + return fixName(key, srcVer, References.BIOME); + } + + private String fixItemType(String key, int srcVer) { + return fixName(key, srcVer, References.ITEM_NAME); + } + + private static String fixName(String key, int srcVer, TypeReference type) { + return INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, StringTag.valueOf(key)), srcVer, DATA_VERSION) + .getValue().getAsString(); + } + + private final PaperweightAdapter adapter; + + private static final NbtOps OPS_NBT = NbtOps.INSTANCE; + private static final int LEGACY_VERSION = 1343; + private static int DATA_VERSION; + static PaperweightDataConverters INSTANCE; + + private final Map> converters = new EnumMap<>(LegacyType.class); + private final Map> inspectors = new EnumMap<>(LegacyType.class); + + // Set on build + private DataFixer fixer; + private static final Map DFU_TO_LEGACY = new HashMap<>(); + + public enum LegacyType { + LEVEL(References.LEVEL), + PLAYER(References.PLAYER), + CHUNK(References.CHUNK), + BLOCK_ENTITY(References.BLOCK_ENTITY), + ENTITY(References.ENTITY), + ITEM_INSTANCE(References.ITEM_STACK), + OPTIONS(References.OPTIONS), + STRUCTURE(References.STRUCTURE); + + private final TypeReference type; + + LegacyType(TypeReference type) { + this.type = type; + DFU_TO_LEGACY.put(type.typeName(), this); + } + + public TypeReference getDFUType() { + return type; + } + } + + PaperweightDataConverters(int dataVersion, PaperweightAdapter adapter) { + super(dataVersion); + DATA_VERSION = dataVersion; + INSTANCE = this; + this.adapter = adapter; + registerConverters(); + registerInspectors(); + } + + + // Called after fixers are built and ready for FIXING + @Override + public DataFixer buildUnoptimized() { + return this.fixer = new WrappedDataFixer(DataFixers.getDataFixer()); + } + + @Override + public DataFixer buildOptimized(final Set requiredTypes, Executor executor) { + return buildUnoptimized(); + } + + @SuppressWarnings("unchecked") + private class WrappedDataFixer implements DataFixer { + private final DataFixer realFixer; + + WrappedDataFixer(DataFixer realFixer) { + this.realFixer = realFixer; + } + + @Override + public Dynamic update(TypeReference type, Dynamic dynamic, int sourceVer, int targetVer) { + LegacyType legacyType = DFU_TO_LEGACY.get(type.typeName()); + if (sourceVer < LEGACY_VERSION && legacyType != null) { + CompoundTag cmp = (CompoundTag) dynamic.getValue(); + int desiredVersion = Math.min(targetVer, LEGACY_VERSION); + + cmp = convert(legacyType, cmp, sourceVer, desiredVersion); + sourceVer = desiredVersion; + dynamic = new Dynamic(OPS_NBT, cmp); + } + return realFixer.update(type, dynamic, sourceVer, targetVer); + } + + private CompoundTag convert(LegacyType type, CompoundTag cmp, int sourceVer, int desiredVersion) { + List converters = PaperweightDataConverters.this.converters.get(type); + if (converters != null && !converters.isEmpty()) { + for (DataConverter converter : converters) { + int dataVersion = converter.getDataVersion(); + if (dataVersion > sourceVer && dataVersion <= desiredVersion) { + cmp = converter.convert(cmp); + } + } + } + + List inspectors = PaperweightDataConverters.this.inspectors.get(type); + if (inspectors != null && !inspectors.isEmpty()) { + for (DataInspector inspector : inspectors) { + cmp = inspector.inspect(cmp, sourceVer, desiredVersion); + } + } + + return cmp; + } + + @Override + public Schema getSchema(int i) { + return realFixer.getSchema(i); + } + } + + public static CompoundTag convert(LegacyType type, CompoundTag cmp) { + return convert(type.getDFUType(), cmp); + } + + public static CompoundTag convert(LegacyType type, CompoundTag cmp, int sourceVer) { + return convert(type.getDFUType(), cmp, sourceVer); + } + + public static CompoundTag convert(LegacyType type, CompoundTag cmp, int sourceVer, int targetVer) { + return convert(type.getDFUType(), cmp, sourceVer, targetVer); + } + + public static CompoundTag convert(TypeReference type, CompoundTag cmp) { + int i = cmp.contains("DataVersion", 99) ? cmp.getInt("DataVersion") : -1; + return convert(type, cmp, i); + } + + public static CompoundTag convert(TypeReference type, CompoundTag cmp, int sourceVer) { + return convert(type, cmp, sourceVer, DATA_VERSION); + } + + public static CompoundTag convert(TypeReference type, CompoundTag cmp, int sourceVer, int targetVer) { + if (sourceVer >= targetVer) { + return cmp; + } + return (CompoundTag) INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, cmp), sourceVer, targetVer).getValue(); + } + + + public interface DataInspector { + CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer); + } + + public interface DataConverter { + + int getDataVersion(); + + CompoundTag convert(CompoundTag cmp); + } + + + private void registerInspector(LegacyType type, DataInspector inspector) { + this.inspectors.computeIfAbsent(type, k -> new ArrayList<>()).add(inspector); + } + + private void registerConverter(LegacyType type, DataConverter converter) { + int version = converter.getDataVersion(); + + List list = this.converters.computeIfAbsent(type, k -> new ArrayList<>()); + if (!list.isEmpty() && list.get(list.size() - 1).getDataVersion() > version) { + for (int j = 0; j < list.size(); ++j) { + if (list.get(j).getDataVersion() > version) { + list.add(j, converter); + break; + } + } + } else { + list.add(converter); + } + } + + private void registerInspectors() { + registerEntityItemList("EntityHorseDonkey", "SaddleItem", "Items"); + registerEntityItemList("EntityHorseMule", "Items"); + registerEntityItemList("EntityMinecartChest", "Items"); + registerEntityItemList("EntityMinecartHopper", "Items"); + registerEntityItemList("EntityVillager", "Inventory"); + registerEntityItemListEquipment("EntityArmorStand"); + registerEntityItemListEquipment("EntityBat"); + registerEntityItemListEquipment("EntityBlaze"); + registerEntityItemListEquipment("EntityCaveSpider"); + registerEntityItemListEquipment("EntityChicken"); + registerEntityItemListEquipment("EntityCow"); + registerEntityItemListEquipment("EntityCreeper"); + registerEntityItemListEquipment("EntityEnderDragon"); + registerEntityItemListEquipment("EntityEnderman"); + registerEntityItemListEquipment("EntityEndermite"); + registerEntityItemListEquipment("EntityEvoker"); + registerEntityItemListEquipment("EntityGhast"); + registerEntityItemListEquipment("EntityGiantZombie"); + registerEntityItemListEquipment("EntityGuardian"); + registerEntityItemListEquipment("EntityGuardianElder"); + registerEntityItemListEquipment("EntityHorse"); + registerEntityItemListEquipment("EntityHorseDonkey"); + registerEntityItemListEquipment("EntityHorseMule"); + registerEntityItemListEquipment("EntityHorseSkeleton"); + registerEntityItemListEquipment("EntityHorseZombie"); + registerEntityItemListEquipment("EntityIronGolem"); + registerEntityItemListEquipment("EntityMagmaCube"); + registerEntityItemListEquipment("EntityMushroomCow"); + registerEntityItemListEquipment("EntityOcelot"); + registerEntityItemListEquipment("EntityPig"); + registerEntityItemListEquipment("EntityPigZombie"); + registerEntityItemListEquipment("EntityRabbit"); + registerEntityItemListEquipment("EntitySheep"); + registerEntityItemListEquipment("EntityShulker"); + registerEntityItemListEquipment("EntitySilverfish"); + registerEntityItemListEquipment("EntitySkeleton"); + registerEntityItemListEquipment("EntitySkeletonStray"); + registerEntityItemListEquipment("EntitySkeletonWither"); + registerEntityItemListEquipment("EntitySlime"); + registerEntityItemListEquipment("EntitySnowman"); + registerEntityItemListEquipment("EntitySpider"); + registerEntityItemListEquipment("EntitySquid"); + registerEntityItemListEquipment("EntityVex"); + registerEntityItemListEquipment("EntityVillager"); + registerEntityItemListEquipment("EntityVindicator"); + registerEntityItemListEquipment("EntityWitch"); + registerEntityItemListEquipment("EntityWither"); + registerEntityItemListEquipment("EntityWolf"); + registerEntityItemListEquipment("EntityZombie"); + registerEntityItemListEquipment("EntityZombieHusk"); + registerEntityItemListEquipment("EntityZombieVillager"); + registerEntityItemSingle("EntityFireworks", "FireworksItem"); + registerEntityItemSingle("EntityHorse", "ArmorItem"); + registerEntityItemSingle("EntityHorse", "SaddleItem"); + registerEntityItemSingle("EntityHorseMule", "SaddleItem"); + registerEntityItemSingle("EntityHorseSkeleton", "SaddleItem"); + registerEntityItemSingle("EntityHorseZombie", "SaddleItem"); + registerEntityItemSingle("EntityItem", "Item"); + registerEntityItemSingle("EntityItemFrame", "Item"); + registerEntityItemSingle("EntityPotion", "Potion"); + + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItem("TileEntityRecordPlayer", "RecordItem")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityBrewingStand", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityChest", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityDispenser", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityDropper", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityFurnace", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityHopper", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityShulkerBox", "Items")); + registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorMobSpawnerMobs()); + registerInspector(LegacyType.CHUNK, new DataInspectorChunks()); + registerInspector(LegacyType.ENTITY, new DataInspectorCommandBlock()); + registerInspector(LegacyType.ENTITY, new DataInspectorEntityPassengers()); + registerInspector(LegacyType.ENTITY, new DataInspectorMobSpawnerMinecart()); + registerInspector(LegacyType.ENTITY, new DataInspectorVillagers()); + registerInspector(LegacyType.ITEM_INSTANCE, new DataInspectorBlockEntity()); + registerInspector(LegacyType.ITEM_INSTANCE, new DataInspectorEntity()); + registerInspector(LegacyType.LEVEL, new DataInspectorLevelPlayer()); + registerInspector(LegacyType.PLAYER, new DataInspectorPlayer()); + registerInspector(LegacyType.PLAYER, new DataInspectorPlayerVehicle()); + registerInspector(LegacyType.STRUCTURE, new DataInspectorStructure()); + } + + private void registerConverters() { + registerConverter(LegacyType.ENTITY, new DataConverterEquipment()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterSignText()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterMaterialId()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterPotionId()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterSpawnEgg()); + registerConverter(LegacyType.ENTITY, new DataConverterMinecart()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterMobSpawner()); + registerConverter(LegacyType.ENTITY, new DataConverterUUID()); + registerConverter(LegacyType.ENTITY, new DataConverterHealth()); + registerConverter(LegacyType.ENTITY, new DataConverterSaddle()); + registerConverter(LegacyType.ENTITY, new DataConverterHanging()); + registerConverter(LegacyType.ENTITY, new DataConverterDropChances()); + registerConverter(LegacyType.ENTITY, new DataConverterRiding()); + registerConverter(LegacyType.ENTITY, new DataConverterArmorStand()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBook()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterCookedFish()); + registerConverter(LegacyType.ENTITY, new DataConverterZombie()); + registerConverter(LegacyType.OPTIONS, new DataConverterVBO()); + registerConverter(LegacyType.ENTITY, new DataConverterGuardian()); + registerConverter(LegacyType.ENTITY, new DataConverterSkeleton()); + registerConverter(LegacyType.ENTITY, new DataConverterZombieType()); + registerConverter(LegacyType.ENTITY, new DataConverterHorse()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterTileEntity()); + registerConverter(LegacyType.ENTITY, new DataConverterEntity()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBanner()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterPotionWater()); + registerConverter(LegacyType.ENTITY, new DataConverterShulker()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterShulkerBoxItem()); + registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterShulkerBoxBlock()); + registerConverter(LegacyType.OPTIONS, new DataConverterLang()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterTotem()); + registerConverter(LegacyType.CHUNK, new DataConverterBedBlock()); + registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBedItem()); + } + + private void registerEntityItemList(String type, String... keys) { + registerInspector(LegacyType.ENTITY, new DataInspectorItemList(type, keys)); + } + + private void registerEntityItemSingle(String type, String key) { + registerInspector(LegacyType.ENTITY, new DataInspectorItem(type, key)); + } + + private void registerEntityItemListEquipment(String type) { + registerEntityItemList(type, "ArmorItems", "HandItems"); + } + + private static final Map OLD_ID_TO_KEY_MAP = new HashMap<>(); + + static { + final Map map = OLD_ID_TO_KEY_MAP; + map.put("EntityItem", new ResourceLocation("item")); + map.put("EntityExperienceOrb", new ResourceLocation("xp_orb")); + map.put("EntityAreaEffectCloud", new ResourceLocation("area_effect_cloud")); + map.put("EntityGuardianElder", new ResourceLocation("elder_guardian")); + map.put("EntitySkeletonWither", new ResourceLocation("wither_skeleton")); + map.put("EntitySkeletonStray", new ResourceLocation("stray")); + map.put("EntityEgg", new ResourceLocation("egg")); + map.put("EntityLeash", new ResourceLocation("leash_knot")); + map.put("EntityPainting", new ResourceLocation("painting")); + map.put("EntityTippedArrow", new ResourceLocation("arrow")); + map.put("EntitySnowball", new ResourceLocation("snowball")); + map.put("EntityLargeFireball", new ResourceLocation("fireball")); + map.put("EntitySmallFireball", new ResourceLocation("small_fireball")); + map.put("EntityEnderPearl", new ResourceLocation("ender_pearl")); + map.put("EntityEnderSignal", new ResourceLocation("eye_of_ender_signal")); + map.put("EntityPotion", new ResourceLocation("potion")); + map.put("EntityThrownExpBottle", new ResourceLocation("xp_bottle")); + map.put("EntityItemFrame", new ResourceLocation("item_frame")); + map.put("EntityWitherSkull", new ResourceLocation("wither_skull")); + map.put("EntityTNTPrimed", new ResourceLocation("tnt")); + map.put("EntityFallingBlock", new ResourceLocation("falling_block")); + map.put("EntityFireworks", new ResourceLocation("fireworks_rocket")); + map.put("EntityZombieHusk", new ResourceLocation("husk")); + map.put("EntitySpectralArrow", new ResourceLocation("spectral_arrow")); + map.put("EntityShulkerBullet", new ResourceLocation("shulker_bullet")); + map.put("EntityDragonFireball", new ResourceLocation("dragon_fireball")); + map.put("EntityZombieVillager", new ResourceLocation("zombie_villager")); + map.put("EntityHorseSkeleton", new ResourceLocation("skeleton_horse")); + map.put("EntityHorseZombie", new ResourceLocation("zombie_horse")); + map.put("EntityArmorStand", new ResourceLocation("armor_stand")); + map.put("EntityHorseDonkey", new ResourceLocation("donkey")); + map.put("EntityHorseMule", new ResourceLocation("mule")); + map.put("EntityEvokerFangs", new ResourceLocation("evocation_fangs")); + map.put("EntityEvoker", new ResourceLocation("evocation_illager")); + map.put("EntityVex", new ResourceLocation("vex")); + map.put("EntityVindicator", new ResourceLocation("vindication_illager")); + map.put("EntityIllagerIllusioner", new ResourceLocation("illusion_illager")); + map.put("EntityMinecartCommandBlock", new ResourceLocation("commandblock_minecart")); + map.put("EntityBoat", new ResourceLocation("boat")); + map.put("EntityMinecartRideable", new ResourceLocation("minecart")); + map.put("EntityMinecartChest", new ResourceLocation("chest_minecart")); + map.put("EntityMinecartFurnace", new ResourceLocation("furnace_minecart")); + map.put("EntityMinecartTNT", new ResourceLocation("tnt_minecart")); + map.put("EntityMinecartHopper", new ResourceLocation("hopper_minecart")); + map.put("EntityMinecartMobSpawner", new ResourceLocation("spawner_minecart")); + map.put("EntityCreeper", new ResourceLocation("creeper")); + map.put("EntitySkeleton", new ResourceLocation("skeleton")); + map.put("EntitySpider", new ResourceLocation("spider")); + map.put("EntityGiantZombie", new ResourceLocation("giant")); + map.put("EntityZombie", new ResourceLocation("zombie")); + map.put("EntitySlime", new ResourceLocation("slime")); + map.put("EntityGhast", new ResourceLocation("ghast")); + map.put("EntityPigZombie", new ResourceLocation("zombie_pigman")); + map.put("EntityEnderman", new ResourceLocation("enderman")); + map.put("EntityCaveSpider", new ResourceLocation("cave_spider")); + map.put("EntitySilverfish", new ResourceLocation("silverfish")); + map.put("EntityBlaze", new ResourceLocation("blaze")); + map.put("EntityMagmaCube", new ResourceLocation("magma_cube")); + map.put("EntityEnderDragon", new ResourceLocation("ender_dragon")); + map.put("EntityWither", new ResourceLocation("wither")); + map.put("EntityBat", new ResourceLocation("bat")); + map.put("EntityWitch", new ResourceLocation("witch")); + map.put("EntityEndermite", new ResourceLocation("endermite")); + map.put("EntityGuardian", new ResourceLocation("guardian")); + map.put("EntityShulker", new ResourceLocation("shulker")); + map.put("EntityPig", new ResourceLocation("pig")); + map.put("EntitySheep", new ResourceLocation("sheep")); + map.put("EntityCow", new ResourceLocation("cow")); + map.put("EntityChicken", new ResourceLocation("chicken")); + map.put("EntitySquid", new ResourceLocation("squid")); + map.put("EntityWolf", new ResourceLocation("wolf")); + map.put("EntityMushroomCow", new ResourceLocation("mooshroom")); + map.put("EntitySnowman", new ResourceLocation("snowman")); + map.put("EntityOcelot", new ResourceLocation("ocelot")); + map.put("EntityIronGolem", new ResourceLocation("villager_golem")); + map.put("EntityHorse", new ResourceLocation("horse")); + map.put("EntityRabbit", new ResourceLocation("rabbit")); + map.put("EntityPolarBear", new ResourceLocation("polar_bear")); + map.put("EntityLlama", new ResourceLocation("llama")); + map.put("EntityLlamaSpit", new ResourceLocation("llama_spit")); + map.put("EntityParrot", new ResourceLocation("parrot")); + map.put("EntityVillager", new ResourceLocation("villager")); + map.put("EntityEnderCrystal", new ResourceLocation("ender_crystal")); + map.put("TileEntityFurnace", new ResourceLocation("furnace")); + map.put("TileEntityChest", new ResourceLocation("chest")); + map.put("TileEntityEnderChest", new ResourceLocation("ender_chest")); + map.put("TileEntityRecordPlayer", new ResourceLocation("jukebox")); + map.put("TileEntityDispenser", new ResourceLocation("dispenser")); + map.put("TileEntityDropper", new ResourceLocation("dropper")); + map.put("TileEntitySign", new ResourceLocation("sign")); + map.put("TileEntityMobSpawner", new ResourceLocation("mob_spawner")); + map.put("TileEntityNote", new ResourceLocation("noteblock")); + map.put("TileEntityPiston", new ResourceLocation("piston")); + map.put("TileEntityBrewingStand", new ResourceLocation("brewing_stand")); + map.put("TileEntityEnchantTable", new ResourceLocation("enchanting_table")); + map.put("TileEntityEnderPortal", new ResourceLocation("end_portal")); + map.put("TileEntityBeacon", new ResourceLocation("beacon")); + map.put("TileEntitySkull", new ResourceLocation("skull")); + map.put("TileEntityLightDetector", new ResourceLocation("daylight_detector")); + map.put("TileEntityHopper", new ResourceLocation("hopper")); + map.put("TileEntityComparator", new ResourceLocation("comparator")); + map.put("TileEntityFlowerPot", new ResourceLocation("flower_pot")); + map.put("TileEntityBanner", new ResourceLocation("banner")); + map.put("TileEntityStructure", new ResourceLocation("structure_block")); + map.put("TileEntityEndGateway", new ResourceLocation("end_gateway")); + map.put("TileEntityCommand", new ResourceLocation("command_block")); + map.put("TileEntityShulkerBox", new ResourceLocation("shulker_box")); + map.put("TileEntityBed", new ResourceLocation("bed")); + } + + private static ResourceLocation getKey(String type) { + final ResourceLocation key = OLD_ID_TO_KEY_MAP.get(type); + if (key == null) { + throw new IllegalArgumentException("Unknown mapping for " + type); + } + return key; + } + + private static void convertCompound(LegacyType type, CompoundTag cmp, String key, int sourceVer, int targetVer) { + cmp.put(key, convert(type, cmp.getCompound(key), sourceVer, targetVer)); + } + + private static void convertItem(CompoundTag nbttagcompound, String key, int sourceVer, int targetVer) { + if (nbttagcompound.contains(key, 10)) { + convertCompound(LegacyType.ITEM_INSTANCE, nbttagcompound, key, sourceVer, targetVer); + } + } + + private static void convertItems(CompoundTag nbttagcompound, String key, int sourceVer, int targetVer) { + if (nbttagcompound.contains(key, 9)) { + ListTag nbttaglist = nbttagcompound.getList(key, 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.ITEM_INSTANCE, nbttaglist.getCompound(j), sourceVer, targetVer)); + } + } + + } + + private static class DataConverterEquipment implements DataConverter { + + DataConverterEquipment() { + } + + public int getDataVersion() { + return 100; + } + + public CompoundTag convert(CompoundTag cmp) { + ListTag nbttaglist = cmp.getList("Equipment", 10); + ListTag nbttaglist1; + + if (!nbttaglist.isEmpty() && !cmp.contains("HandItems", 10)) { + nbttaglist1 = new ListTag(); + nbttaglist1.add(nbttaglist.get(0)); + nbttaglist1.add(new CompoundTag()); + cmp.put("HandItems", nbttaglist1); + } + + if (nbttaglist.size() > 1 && !cmp.contains("ArmorItem", 10)) { + nbttaglist1 = new ListTag(); + nbttaglist1.add(nbttaglist.get(1)); + nbttaglist1.add(nbttaglist.get(2)); + nbttaglist1.add(nbttaglist.get(3)); + nbttaglist1.add(nbttaglist.get(4)); + cmp.put("ArmorItems", nbttaglist1); + } + + cmp.remove("Equipment"); + if (cmp.contains("DropChances", 9)) { + nbttaglist1 = cmp.getList("DropChances", 5); + ListTag nbttaglist2; + + if (!cmp.contains("HandDropChances", 10)) { + nbttaglist2 = new ListTag(); + nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(0))); + nbttaglist2.add(FloatTag.valueOf(0.0F)); + cmp.put("HandDropChances", nbttaglist2); + } + + if (!cmp.contains("ArmorDropChances", 10)) { + nbttaglist2 = new ListTag(); + nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(1))); + nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(2))); + nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(3))); + nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(4))); + cmp.put("ArmorDropChances", nbttaglist2); + } + + cmp.remove("DropChances"); + } + + return cmp; + } + } + + private static class DataInspectorBlockEntity implements DataInspector { + + private static final Map b = Maps.newHashMap(); + private static final Map c = Maps.newHashMap(); + + DataInspectorBlockEntity() { + } + + @Nullable + private static String convertEntityId(int i, String s) { + String key = new ResourceLocation(s).toString(); + if (i < 515 && DataInspectorBlockEntity.b.containsKey(key)) { + return DataInspectorBlockEntity.b.get(key); + } else { + return DataInspectorBlockEntity.c.get(key); + } + } + + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (!cmp.contains("tag", 10)) { + return cmp; + } else { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("BlockEntityTag", 10)) { + CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); + String s = cmp.getString("id"); + String s1 = convertEntityId(sourceVer, s); + boolean flag; + + if (s1 == null) { + // CraftBukkit - Remove unnecessary warning (occurs when deserializing a Shulker Box item) + // DataInspectorBlockEntity.a.warn("Unable to resolve BlockEntity for ItemInstance: {}", s); + flag = false; + } else { + flag = !nbttagcompound2.contains("id"); + nbttagcompound2.putString("id", s1); + } + + convert(LegacyType.BLOCK_ENTITY, nbttagcompound2, sourceVer, targetVer); + if (flag) { + nbttagcompound2.remove("id"); + } + } + + return cmp; + } + } + + static { + Map map = DataInspectorBlockEntity.b; + + map.put("minecraft:furnace", "Furnace"); + map.put("minecraft:lit_furnace", "Furnace"); + map.put("minecraft:chest", "Chest"); + map.put("minecraft:trapped_chest", "Chest"); + map.put("minecraft:ender_chest", "EnderChest"); + map.put("minecraft:jukebox", "RecordPlayer"); + map.put("minecraft:dispenser", "Trap"); + map.put("minecraft:dropper", "Dropper"); + map.put("minecraft:sign", "Sign"); + map.put("minecraft:mob_spawner", "MobSpawner"); + map.put("minecraft:noteblock", "Music"); + map.put("minecraft:brewing_stand", "Cauldron"); + map.put("minecraft:enhanting_table", "EnchantTable"); + map.put("minecraft:command_block", "CommandBlock"); + map.put("minecraft:beacon", "Beacon"); + map.put("minecraft:skull", "Skull"); + map.put("minecraft:daylight_detector", "DLDetector"); + map.put("minecraft:hopper", "Hopper"); + map.put("minecraft:banner", "Banner"); + map.put("minecraft:flower_pot", "FlowerPot"); + map.put("minecraft:repeating_command_block", "CommandBlock"); + map.put("minecraft:chain_command_block", "CommandBlock"); + map.put("minecraft:standing_sign", "Sign"); + map.put("minecraft:wall_sign", "Sign"); + map.put("minecraft:piston_head", "Piston"); + map.put("minecraft:daylight_detector_inverted", "DLDetector"); + map.put("minecraft:unpowered_comparator", "Comparator"); + map.put("minecraft:powered_comparator", "Comparator"); + map.put("minecraft:wall_banner", "Banner"); + map.put("minecraft:standing_banner", "Banner"); + map.put("minecraft:structure_block", "Structure"); + map.put("minecraft:end_portal", "Airportal"); + map.put("minecraft:end_gateway", "EndGateway"); + map.put("minecraft:shield", "Shield"); + map = DataInspectorBlockEntity.c; + map.put("minecraft:furnace", "minecraft:furnace"); + map.put("minecraft:lit_furnace", "minecraft:furnace"); + map.put("minecraft:chest", "minecraft:chest"); + map.put("minecraft:trapped_chest", "minecraft:chest"); + map.put("minecraft:ender_chest", "minecraft:enderchest"); + map.put("minecraft:jukebox", "minecraft:jukebox"); + map.put("minecraft:dispenser", "minecraft:dispenser"); + map.put("minecraft:dropper", "minecraft:dropper"); + map.put("minecraft:sign", "minecraft:sign"); + map.put("minecraft:mob_spawner", "minecraft:mob_spawner"); + map.put("minecraft:noteblock", "minecraft:noteblock"); + map.put("minecraft:brewing_stand", "minecraft:brewing_stand"); + map.put("minecraft:enhanting_table", "minecraft:enchanting_table"); + map.put("minecraft:command_block", "minecraft:command_block"); + map.put("minecraft:beacon", "minecraft:beacon"); + map.put("minecraft:skull", "minecraft:skull"); + map.put("minecraft:daylight_detector", "minecraft:daylight_detector"); + map.put("minecraft:hopper", "minecraft:hopper"); + map.put("minecraft:banner", "minecraft:banner"); + map.put("minecraft:flower_pot", "minecraft:flower_pot"); + map.put("minecraft:repeating_command_block", "minecraft:command_block"); + map.put("minecraft:chain_command_block", "minecraft:command_block"); + map.put("minecraft:shulker_box", "minecraft:shulker_box"); + map.put("minecraft:white_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:orange_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:magenta_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:light_blue_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:yellow_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:lime_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:pink_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:gray_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:silver_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:cyan_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:purple_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:blue_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:brown_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:green_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:red_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:black_shulker_box", "minecraft:shulker_box"); + map.put("minecraft:bed", "minecraft:bed"); + map.put("minecraft:standing_sign", "minecraft:sign"); + map.put("minecraft:wall_sign", "minecraft:sign"); + map.put("minecraft:piston_head", "minecraft:piston"); + map.put("minecraft:daylight_detector_inverted", "minecraft:daylight_detector"); + map.put("minecraft:unpowered_comparator", "minecraft:comparator"); + map.put("minecraft:powered_comparator", "minecraft:comparator"); + map.put("minecraft:wall_banner", "minecraft:banner"); + map.put("minecraft:standing_banner", "minecraft:banner"); + map.put("minecraft:structure_block", "minecraft:structure_block"); + map.put("minecraft:end_portal", "minecraft:end_portal"); + map.put("minecraft:end_gateway", "minecraft:end_gateway"); + map.put("minecraft:shield", "minecraft:shield"); + } + } + + private static class DataInspectorEntity implements DataInspector { + + DataInspectorEntity() { + } + + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("EntityTag", 10)) { + CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("EntityTag"); + String s = cmp.getString("id"); + String s1; + + if ("minecraft:armor_stand".equals(s)) { + s1 = sourceVer < 515 ? "ArmorStand" : "minecraft:armor_stand"; + } else { + if (!"minecraft:spawn_egg".equals(s)) { + return cmp; + } + + s1 = nbttagcompound2.getString("id"); + } + + boolean flag; + + flag = !nbttagcompound2.contains("id", 8); + nbttagcompound2.putString("id", s1); + + convert(LegacyType.ENTITY, nbttagcompound2, sourceVer, targetVer); + if (flag) { + nbttagcompound2.remove("id"); + } + } + + return cmp; + } + } + + + private abstract static class DataInspectorTagged implements DataInspector { + + private final ResourceLocation key; + + DataInspectorTagged(String type) { + this.key = getKey(type); + } + + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (this.key.equals(new ResourceLocation(cmp.getString("id")))) { + cmp = this.inspectChecked(cmp, sourceVer, targetVer); + } + + return cmp; + } + + abstract CompoundTag inspectChecked(CompoundTag nbttagcompound, int sourceVer, int targetVer); + } + + private static class DataInspectorItemList extends DataInspectorTagged { + + private final String[] keys; + + DataInspectorItemList(String oclass, String... astring) { + super(oclass); + this.keys = astring; + } + + CompoundTag inspectChecked(CompoundTag nbttagcompound, int sourceVer, int targetVer) { + for (String s : this.keys) { + PaperweightDataConverters.convertItems(nbttagcompound, s, sourceVer, targetVer); + } + + return nbttagcompound; + } + } + + private static class DataInspectorItem extends DataInspectorTagged { + + private final String[] keys; + + DataInspectorItem(String oclass, String... astring) { + super(oclass); + this.keys = astring; + } + + CompoundTag inspectChecked(CompoundTag nbttagcompound, int sourceVer, int targetVer) { + for (String key : this.keys) { + PaperweightDataConverters.convertItem(nbttagcompound, key, sourceVer, targetVer); + } + + return nbttagcompound; + } + } + + private static class DataConverterMaterialId implements DataConverter { + + private static final String[] materials = new String[2268]; + + DataConverterMaterialId() { + } + + public int getDataVersion() { + return 102; + } + + public CompoundTag convert(CompoundTag cmp) { + if (cmp.contains("id", 99)) { + short short0 = cmp.getShort("id"); + + if (short0 > 0 && short0 < materials.length && materials[short0] != null) { + cmp.putString("id", materials[short0]); + } + } + + return cmp; + } + + static { + materials[1] = "minecraft:stone"; + materials[2] = "minecraft:grass"; + materials[3] = "minecraft:dirt"; + materials[4] = "minecraft:cobblestone"; + materials[5] = "minecraft:planks"; + materials[6] = "minecraft:sapling"; + materials[7] = "minecraft:bedrock"; + materials[8] = "minecraft:flowing_water"; + materials[9] = "minecraft:water"; + materials[10] = "minecraft:flowing_lava"; + materials[11] = "minecraft:lava"; + materials[12] = "minecraft:sand"; + materials[13] = "minecraft:gravel"; + materials[14] = "minecraft:gold_ore"; + materials[15] = "minecraft:iron_ore"; + materials[16] = "minecraft:coal_ore"; + materials[17] = "minecraft:log"; + materials[18] = "minecraft:leaves"; + materials[19] = "minecraft:sponge"; + materials[20] = "minecraft:glass"; + materials[21] = "minecraft:lapis_ore"; + materials[22] = "minecraft:lapis_block"; + materials[23] = "minecraft:dispenser"; + materials[24] = "minecraft:sandstone"; + materials[25] = "minecraft:noteblock"; + materials[27] = "minecraft:golden_rail"; + materials[28] = "minecraft:detector_rail"; + materials[29] = "minecraft:sticky_piston"; + materials[30] = "minecraft:web"; + materials[31] = "minecraft:tallgrass"; + materials[32] = "minecraft:deadbush"; + materials[33] = "minecraft:piston"; + materials[35] = "minecraft:wool"; + materials[37] = "minecraft:yellow_flower"; + materials[38] = "minecraft:red_flower"; + materials[39] = "minecraft:brown_mushroom"; + materials[40] = "minecraft:red_mushroom"; + materials[41] = "minecraft:gold_block"; + materials[42] = "minecraft:iron_block"; + materials[43] = "minecraft:double_stone_slab"; + materials[44] = "minecraft:stone_slab"; + materials[45] = "minecraft:brick_block"; + materials[46] = "minecraft:tnt"; + materials[47] = "minecraft:bookshelf"; + materials[48] = "minecraft:mossy_cobblestone"; + materials[49] = "minecraft:obsidian"; + materials[50] = "minecraft:torch"; + materials[51] = "minecraft:fire"; + materials[52] = "minecraft:mob_spawner"; + materials[53] = "minecraft:oak_stairs"; + materials[54] = "minecraft:chest"; + materials[56] = "minecraft:diamond_ore"; + materials[57] = "minecraft:diamond_block"; + materials[58] = "minecraft:crafting_table"; + materials[60] = "minecraft:farmland"; + materials[61] = "minecraft:furnace"; + materials[62] = "minecraft:lit_furnace"; + materials[65] = "minecraft:ladder"; + materials[66] = "minecraft:rail"; + materials[67] = "minecraft:stone_stairs"; + materials[69] = "minecraft:lever"; + materials[70] = "minecraft:stone_pressure_plate"; + materials[72] = "minecraft:wooden_pressure_plate"; + materials[73] = "minecraft:redstone_ore"; + materials[76] = "minecraft:redstone_torch"; + materials[77] = "minecraft:stone_button"; + materials[78] = "minecraft:snow_layer"; + materials[79] = "minecraft:ice"; + materials[80] = "minecraft:snow"; + materials[81] = "minecraft:cactus"; + materials[82] = "minecraft:clay"; + materials[84] = "minecraft:jukebox"; + materials[85] = "minecraft:fence"; + materials[86] = "minecraft:pumpkin"; + materials[87] = "minecraft:netherrack"; + materials[88] = "minecraft:soul_sand"; + materials[89] = "minecraft:glowstone"; + materials[90] = "minecraft:portal"; + materials[91] = "minecraft:lit_pumpkin"; + materials[95] = "minecraft:stained_glass"; + materials[96] = "minecraft:trapdoor"; + materials[97] = "minecraft:monster_egg"; + materials[98] = "minecraft:stonebrick"; + materials[99] = "minecraft:brown_mushroom_block"; + materials[100] = "minecraft:red_mushroom_block"; + materials[101] = "minecraft:iron_bars"; + materials[102] = "minecraft:glass_pane"; + materials[103] = "minecraft:melon_block"; + materials[106] = "minecraft:vine"; + materials[107] = "minecraft:fence_gate"; + materials[108] = "minecraft:brick_stairs"; + materials[109] = "minecraft:stone_brick_stairs"; + materials[110] = "minecraft:mycelium"; + materials[111] = "minecraft:waterlily"; + materials[112] = "minecraft:nether_brick"; + materials[113] = "minecraft:nether_brick_fence"; + materials[114] = "minecraft:nether_brick_stairs"; + materials[116] = "minecraft:enchanting_table"; + materials[119] = "minecraft:end_portal"; + materials[120] = "minecraft:end_portal_frame"; + materials[121] = "minecraft:end_stone"; + materials[122] = "minecraft:dragon_egg"; + materials[123] = "minecraft:redstone_lamp"; + materials[125] = "minecraft:double_wooden_slab"; + materials[126] = "minecraft:wooden_slab"; + materials[127] = "minecraft:cocoa"; + materials[128] = "minecraft:sandstone_stairs"; + materials[129] = "minecraft:emerald_ore"; + materials[130] = "minecraft:ender_chest"; + materials[131] = "minecraft:tripwire_hook"; + materials[133] = "minecraft:emerald_block"; + materials[134] = "minecraft:spruce_stairs"; + materials[135] = "minecraft:birch_stairs"; + materials[136] = "minecraft:jungle_stairs"; + materials[137] = "minecraft:command_block"; + materials[138] = "minecraft:beacon"; + materials[139] = "minecraft:cobblestone_wall"; + materials[141] = "minecraft:carrots"; + materials[142] = "minecraft:potatoes"; + materials[143] = "minecraft:wooden_button"; + materials[145] = "minecraft:anvil"; + materials[146] = "minecraft:trapped_chest"; + materials[147] = "minecraft:light_weighted_pressure_plate"; + materials[148] = "minecraft:heavy_weighted_pressure_plate"; + materials[151] = "minecraft:daylight_detector"; + materials[152] = "minecraft:redstone_block"; + materials[153] = "minecraft:quartz_ore"; + materials[154] = "minecraft:hopper"; + materials[155] = "minecraft:quartz_block"; + materials[156] = "minecraft:quartz_stairs"; + materials[157] = "minecraft:activator_rail"; + materials[158] = "minecraft:dropper"; + materials[159] = "minecraft:stained_hardened_clay"; + materials[160] = "minecraft:stained_glass_pane"; + materials[161] = "minecraft:leaves2"; + materials[162] = "minecraft:log2"; + materials[163] = "minecraft:acacia_stairs"; + materials[164] = "minecraft:dark_oak_stairs"; + materials[170] = "minecraft:hay_block"; + materials[171] = "minecraft:carpet"; + materials[172] = "minecraft:hardened_clay"; + materials[173] = "minecraft:coal_block"; + materials[174] = "minecraft:packed_ice"; + materials[175] = "minecraft:double_plant"; + materials[256] = "minecraft:iron_shovel"; + materials[257] = "minecraft:iron_pickaxe"; + materials[258] = "minecraft:iron_axe"; + materials[259] = "minecraft:flint_and_steel"; + materials[260] = "minecraft:apple"; + materials[261] = "minecraft:bow"; + materials[262] = "minecraft:arrow"; + materials[263] = "minecraft:coal"; + materials[264] = "minecraft:diamond"; + materials[265] = "minecraft:iron_ingot"; + materials[266] = "minecraft:gold_ingot"; + materials[267] = "minecraft:iron_sword"; + materials[268] = "minecraft:wooden_sword"; + materials[269] = "minecraft:wooden_shovel"; + materials[270] = "minecraft:wooden_pickaxe"; + materials[271] = "minecraft:wooden_axe"; + materials[272] = "minecraft:stone_sword"; + materials[273] = "minecraft:stone_shovel"; + materials[274] = "minecraft:stone_pickaxe"; + materials[275] = "minecraft:stone_axe"; + materials[276] = "minecraft:diamond_sword"; + materials[277] = "minecraft:diamond_shovel"; + materials[278] = "minecraft:diamond_pickaxe"; + materials[279] = "minecraft:diamond_axe"; + materials[280] = "minecraft:stick"; + materials[281] = "minecraft:bowl"; + materials[282] = "minecraft:mushroom_stew"; + materials[283] = "minecraft:golden_sword"; + materials[284] = "minecraft:golden_shovel"; + materials[285] = "minecraft:golden_pickaxe"; + materials[286] = "minecraft:golden_axe"; + materials[287] = "minecraft:string"; + materials[288] = "minecraft:feather"; + materials[289] = "minecraft:gunpowder"; + materials[290] = "minecraft:wooden_hoe"; + materials[291] = "minecraft:stone_hoe"; + materials[292] = "minecraft:iron_hoe"; + materials[293] = "minecraft:diamond_hoe"; + materials[294] = "minecraft:golden_hoe"; + materials[295] = "minecraft:wheat_seeds"; + materials[296] = "minecraft:wheat"; + materials[297] = "minecraft:bread"; + materials[298] = "minecraft:leather_helmet"; + materials[299] = "minecraft:leather_chestplate"; + materials[300] = "minecraft:leather_leggings"; + materials[301] = "minecraft:leather_boots"; + materials[302] = "minecraft:chainmail_helmet"; + materials[303] = "minecraft:chainmail_chestplate"; + materials[304] = "minecraft:chainmail_leggings"; + materials[305] = "minecraft:chainmail_boots"; + materials[306] = "minecraft:iron_helmet"; + materials[307] = "minecraft:iron_chestplate"; + materials[308] = "minecraft:iron_leggings"; + materials[309] = "minecraft:iron_boots"; + materials[310] = "minecraft:diamond_helmet"; + materials[311] = "minecraft:diamond_chestplate"; + materials[312] = "minecraft:diamond_leggings"; + materials[313] = "minecraft:diamond_boots"; + materials[314] = "minecraft:golden_helmet"; + materials[315] = "minecraft:golden_chestplate"; + materials[316] = "minecraft:golden_leggings"; + materials[317] = "minecraft:golden_boots"; + materials[318] = "minecraft:flint"; + materials[319] = "minecraft:porkchop"; + materials[320] = "minecraft:cooked_porkchop"; + materials[321] = "minecraft:painting"; + materials[322] = "minecraft:golden_apple"; + materials[323] = "minecraft:sign"; + materials[324] = "minecraft:wooden_door"; + materials[325] = "minecraft:bucket"; + materials[326] = "minecraft:water_bucket"; + materials[327] = "minecraft:lava_bucket"; + materials[328] = "minecraft:minecart"; + materials[329] = "minecraft:saddle"; + materials[330] = "minecraft:iron_door"; + materials[331] = "minecraft:redstone"; + materials[332] = "minecraft:snowball"; + materials[333] = "minecraft:boat"; + materials[334] = "minecraft:leather"; + materials[335] = "minecraft:milk_bucket"; + materials[336] = "minecraft:brick"; + materials[337] = "minecraft:clay_ball"; + materials[338] = "minecraft:reeds"; + materials[339] = "minecraft:paper"; + materials[340] = "minecraft:book"; + materials[341] = "minecraft:slime_ball"; + materials[342] = "minecraft:chest_minecart"; + materials[343] = "minecraft:furnace_minecart"; + materials[344] = "minecraft:egg"; + materials[345] = "minecraft:compass"; + materials[346] = "minecraft:fishing_rod"; + materials[347] = "minecraft:clock"; + materials[348] = "minecraft:glowstone_dust"; + materials[349] = "minecraft:fish"; + materials[350] = "minecraft:cooked_fish"; // Paper - cooked_fished -> cooked_fish + materials[351] = "minecraft:dye"; + materials[352] = "minecraft:bone"; + materials[353] = "minecraft:sugar"; + materials[354] = "minecraft:cake"; + materials[355] = "minecraft:bed"; + materials[356] = "minecraft:repeater"; + materials[357] = "minecraft:cookie"; + materials[358] = "minecraft:filled_map"; + materials[359] = "minecraft:shears"; + materials[360] = "minecraft:melon"; + materials[361] = "minecraft:pumpkin_seeds"; + materials[362] = "minecraft:melon_seeds"; + materials[363] = "minecraft:beef"; + materials[364] = "minecraft:cooked_beef"; + materials[365] = "minecraft:chicken"; + materials[366] = "minecraft:cooked_chicken"; + materials[367] = "minecraft:rotten_flesh"; + materials[368] = "minecraft:ender_pearl"; + materials[369] = "minecraft:blaze_rod"; + materials[370] = "minecraft:ghast_tear"; + materials[371] = "minecraft:gold_nugget"; + materials[372] = "minecraft:nether_wart"; + materials[373] = "minecraft:potion"; + materials[374] = "minecraft:glass_bottle"; + materials[375] = "minecraft:spider_eye"; + materials[376] = "minecraft:fermented_spider_eye"; + materials[377] = "minecraft:blaze_powder"; + materials[378] = "minecraft:magma_cream"; + materials[379] = "minecraft:brewing_stand"; + materials[380] = "minecraft:cauldron"; + materials[381] = "minecraft:ender_eye"; + materials[382] = "minecraft:speckled_melon"; + materials[383] = "minecraft:spawn_egg"; + materials[384] = "minecraft:experience_bottle"; + materials[385] = "minecraft:fire_charge"; + materials[386] = "minecraft:writable_book"; + materials[387] = "minecraft:written_book"; + materials[388] = "minecraft:emerald"; + materials[389] = "minecraft:item_frame"; + materials[390] = "minecraft:flower_pot"; + materials[391] = "minecraft:carrot"; + materials[392] = "minecraft:potato"; + materials[393] = "minecraft:baked_potato"; + materials[394] = "minecraft:poisonous_potato"; + materials[395] = "minecraft:map"; + materials[396] = "minecraft:golden_carrot"; + materials[397] = "minecraft:skull"; + materials[398] = "minecraft:carrot_on_a_stick"; + materials[399] = "minecraft:nether_star"; + materials[400] = "minecraft:pumpkin_pie"; + materials[401] = "minecraft:fireworks"; + materials[402] = "minecraft:firework_charge"; + materials[403] = "minecraft:enchanted_book"; + materials[404] = "minecraft:comparator"; + materials[405] = "minecraft:netherbrick"; + materials[406] = "minecraft:quartz"; + materials[407] = "minecraft:tnt_minecart"; + materials[408] = "minecraft:hopper_minecart"; + materials[417] = "minecraft:iron_horse_armor"; + materials[418] = "minecraft:golden_horse_armor"; + materials[419] = "minecraft:diamond_horse_armor"; + materials[420] = "minecraft:lead"; + materials[421] = "minecraft:name_tag"; + materials[422] = "minecraft:command_block_minecart"; + materials[2256] = "minecraft:record_13"; + materials[2257] = "minecraft:record_cat"; + materials[2258] = "minecraft:record_blocks"; + materials[2259] = "minecraft:record_chirp"; + materials[2260] = "minecraft:record_far"; + materials[2261] = "minecraft:record_mall"; + materials[2262] = "minecraft:record_mellohi"; + materials[2263] = "minecraft:record_stal"; + materials[2264] = "minecraft:record_strad"; + materials[2265] = "minecraft:record_ward"; + materials[2266] = "minecraft:record_11"; + materials[2267] = "minecraft:record_wait"; + // Paper start + materials[409] = "minecraft:prismarine_shard"; + materials[410] = "minecraft:prismarine_crystals"; + materials[411] = "minecraft:rabbit"; + materials[412] = "minecraft:cooked_rabbit"; + materials[413] = "minecraft:rabbit_stew"; + materials[414] = "minecraft:rabbit_foot"; + materials[415] = "minecraft:rabbit_hide"; + materials[416] = "minecraft:armor_stand"; + materials[423] = "minecraft:mutton"; + materials[424] = "minecraft:cooked_mutton"; + materials[425] = "minecraft:banner"; + materials[426] = "minecraft:end_crystal"; + materials[427] = "minecraft:spruce_door"; + materials[428] = "minecraft:birch_door"; + materials[429] = "minecraft:jungle_door"; + materials[430] = "minecraft:acacia_door"; + materials[431] = "minecraft:dark_oak_door"; + materials[432] = "minecraft:chorus_fruit"; + materials[433] = "minecraft:chorus_fruit_popped"; + materials[434] = "minecraft:beetroot"; + materials[435] = "minecraft:beetroot_seeds"; + materials[436] = "minecraft:beetroot_soup"; + materials[437] = "minecraft:dragon_breath"; + materials[438] = "minecraft:splash_potion"; + materials[439] = "minecraft:spectral_arrow"; + materials[440] = "minecraft:tipped_arrow"; + materials[441] = "minecraft:lingering_potion"; + materials[442] = "minecraft:shield"; + materials[443] = "minecraft:elytra"; + materials[444] = "minecraft:spruce_boat"; + materials[445] = "minecraft:birch_boat"; + materials[446] = "minecraft:jungle_boat"; + materials[447] = "minecraft:acacia_boat"; + materials[448] = "minecraft:dark_oak_boat"; + materials[449] = "minecraft:totem_of_undying"; + materials[450] = "minecraft:shulker_shell"; + materials[452] = "minecraft:iron_nugget"; + materials[453] = "minecraft:knowledge_book"; + // Paper end + } + } + + private static class DataConverterArmorStand implements DataConverter { + + DataConverterArmorStand() { + } + + public int getDataVersion() { + return 147; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("ArmorStand".equals(cmp.getString("id")) && cmp.getBoolean("Silent") && !cmp.getBoolean("Marker")) { + cmp.remove("Silent"); + } + + return cmp; + } + } + + private static class DataConverterBanner implements DataConverter { + + DataConverterBanner() { + } + + public int getDataVersion() { + return 804; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:banner".equals(cmp.getString("id")) && cmp.contains("tag", 10)) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("BlockEntityTag", 10)) { + CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); + + if (nbttagcompound2.contains("Base", 99)) { + cmp.putShort("Damage", (short) (nbttagcompound2.getShort("Base") & 15)); + if (nbttagcompound1.contains("display", 10)) { + CompoundTag nbttagcompound3 = nbttagcompound1.getCompound("display"); + + if (nbttagcompound3.contains("Lore", 9)) { + ListTag nbttaglist = nbttagcompound3.getList("Lore", 8); + + if (nbttaglist.size() == 1 && "(+NBT)".equals(nbttaglist.getString(0))) { + return cmp; + } + } + } + + nbttagcompound2.remove("Base"); + if (nbttagcompound2.isEmpty()) { + nbttagcompound1.remove("BlockEntityTag"); + } + + if (nbttagcompound1.isEmpty()) { + cmp.remove("tag"); + } + } + } + } + + return cmp; + } + } + + private static class DataConverterPotionId implements DataConverter { + + private static final String[] potions = new String[128]; + + DataConverterPotionId() { + } + + public int getDataVersion() { + return 102; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:potion".equals(cmp.getString("id"))) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + short short0 = cmp.getShort("Damage"); + + if (!nbttagcompound1.contains("Potion", 8)) { + String s = DataConverterPotionId.potions[short0 & 127]; + + nbttagcompound1.putString("Potion", s == null ? "minecraft:water" : s); + cmp.put("tag", nbttagcompound1); + if ((short0 & 16384) == 16384) { + cmp.putString("id", "minecraft:splash_potion"); + } + } + + if (short0 != 0) { + cmp.putShort("Damage", (short) 0); + } + } + + return cmp; + } + + static { + DataConverterPotionId.potions[0] = "minecraft:water"; + DataConverterPotionId.potions[1] = "minecraft:regeneration"; + DataConverterPotionId.potions[2] = "minecraft:swiftness"; + DataConverterPotionId.potions[3] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[4] = "minecraft:poison"; + DataConverterPotionId.potions[5] = "minecraft:healing"; + DataConverterPotionId.potions[6] = "minecraft:night_vision"; + DataConverterPotionId.potions[7] = null; + DataConverterPotionId.potions[8] = "minecraft:weakness"; + DataConverterPotionId.potions[9] = "minecraft:strength"; + DataConverterPotionId.potions[10] = "minecraft:slowness"; + DataConverterPotionId.potions[11] = "minecraft:leaping"; + DataConverterPotionId.potions[12] = "minecraft:harming"; + DataConverterPotionId.potions[13] = "minecraft:water_breathing"; + DataConverterPotionId.potions[14] = "minecraft:invisibility"; + DataConverterPotionId.potions[15] = null; + DataConverterPotionId.potions[16] = "minecraft:awkward"; + DataConverterPotionId.potions[17] = "minecraft:regeneration"; + DataConverterPotionId.potions[18] = "minecraft:swiftness"; + DataConverterPotionId.potions[19] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[20] = "minecraft:poison"; + DataConverterPotionId.potions[21] = "minecraft:healing"; + DataConverterPotionId.potions[22] = "minecraft:night_vision"; + DataConverterPotionId.potions[23] = null; + DataConverterPotionId.potions[24] = "minecraft:weakness"; + DataConverterPotionId.potions[25] = "minecraft:strength"; + DataConverterPotionId.potions[26] = "minecraft:slowness"; + DataConverterPotionId.potions[27] = "minecraft:leaping"; + DataConverterPotionId.potions[28] = "minecraft:harming"; + DataConverterPotionId.potions[29] = "minecraft:water_breathing"; + DataConverterPotionId.potions[30] = "minecraft:invisibility"; + DataConverterPotionId.potions[31] = null; + DataConverterPotionId.potions[32] = "minecraft:thick"; + DataConverterPotionId.potions[33] = "minecraft:strong_regeneration"; + DataConverterPotionId.potions[34] = "minecraft:strong_swiftness"; + DataConverterPotionId.potions[35] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[36] = "minecraft:strong_poison"; + DataConverterPotionId.potions[37] = "minecraft:strong_healing"; + DataConverterPotionId.potions[38] = "minecraft:night_vision"; + DataConverterPotionId.potions[39] = null; + DataConverterPotionId.potions[40] = "minecraft:weakness"; + DataConverterPotionId.potions[41] = "minecraft:strong_strength"; + DataConverterPotionId.potions[42] = "minecraft:slowness"; + DataConverterPotionId.potions[43] = "minecraft:strong_leaping"; + DataConverterPotionId.potions[44] = "minecraft:strong_harming"; + DataConverterPotionId.potions[45] = "minecraft:water_breathing"; + DataConverterPotionId.potions[46] = "minecraft:invisibility"; + DataConverterPotionId.potions[47] = null; + DataConverterPotionId.potions[48] = null; + DataConverterPotionId.potions[49] = "minecraft:strong_regeneration"; + DataConverterPotionId.potions[50] = "minecraft:strong_swiftness"; + DataConverterPotionId.potions[51] = "minecraft:fire_resistance"; + DataConverterPotionId.potions[52] = "minecraft:strong_poison"; + DataConverterPotionId.potions[53] = "minecraft:strong_healing"; + DataConverterPotionId.potions[54] = "minecraft:night_vision"; + DataConverterPotionId.potions[55] = null; + DataConverterPotionId.potions[56] = "minecraft:weakness"; + DataConverterPotionId.potions[57] = "minecraft:strong_strength"; + DataConverterPotionId.potions[58] = "minecraft:slowness"; + DataConverterPotionId.potions[59] = "minecraft:strong_leaping"; + DataConverterPotionId.potions[60] = "minecraft:strong_harming"; + DataConverterPotionId.potions[61] = "minecraft:water_breathing"; + DataConverterPotionId.potions[62] = "minecraft:invisibility"; + DataConverterPotionId.potions[63] = null; + DataConverterPotionId.potions[64] = "minecraft:mundane"; + DataConverterPotionId.potions[65] = "minecraft:long_regeneration"; + DataConverterPotionId.potions[66] = "minecraft:long_swiftness"; + DataConverterPotionId.potions[67] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[68] = "minecraft:long_poison"; + DataConverterPotionId.potions[69] = "minecraft:healing"; + DataConverterPotionId.potions[70] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[71] = null; + DataConverterPotionId.potions[72] = "minecraft:long_weakness"; + DataConverterPotionId.potions[73] = "minecraft:long_strength"; + DataConverterPotionId.potions[74] = "minecraft:long_slowness"; + DataConverterPotionId.potions[75] = "minecraft:long_leaping"; + DataConverterPotionId.potions[76] = "minecraft:harming"; + DataConverterPotionId.potions[77] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[78] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[79] = null; + DataConverterPotionId.potions[80] = "minecraft:awkward"; + DataConverterPotionId.potions[81] = "minecraft:long_regeneration"; + DataConverterPotionId.potions[82] = "minecraft:long_swiftness"; + DataConverterPotionId.potions[83] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[84] = "minecraft:long_poison"; + DataConverterPotionId.potions[85] = "minecraft:healing"; + DataConverterPotionId.potions[86] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[87] = null; + DataConverterPotionId.potions[88] = "minecraft:long_weakness"; + DataConverterPotionId.potions[89] = "minecraft:long_strength"; + DataConverterPotionId.potions[90] = "minecraft:long_slowness"; + DataConverterPotionId.potions[91] = "minecraft:long_leaping"; + DataConverterPotionId.potions[92] = "minecraft:harming"; + DataConverterPotionId.potions[93] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[94] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[95] = null; + DataConverterPotionId.potions[96] = "minecraft:thick"; + DataConverterPotionId.potions[97] = "minecraft:regeneration"; + DataConverterPotionId.potions[98] = "minecraft:swiftness"; + DataConverterPotionId.potions[99] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[100] = "minecraft:poison"; + DataConverterPotionId.potions[101] = "minecraft:strong_healing"; + DataConverterPotionId.potions[102] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[103] = null; + DataConverterPotionId.potions[104] = "minecraft:long_weakness"; + DataConverterPotionId.potions[105] = "minecraft:strength"; + DataConverterPotionId.potions[106] = "minecraft:long_slowness"; + DataConverterPotionId.potions[107] = "minecraft:leaping"; + DataConverterPotionId.potions[108] = "minecraft:strong_harming"; + DataConverterPotionId.potions[109] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[110] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[111] = null; + DataConverterPotionId.potions[112] = null; + DataConverterPotionId.potions[113] = "minecraft:regeneration"; + DataConverterPotionId.potions[114] = "minecraft:swiftness"; + DataConverterPotionId.potions[115] = "minecraft:long_fire_resistance"; + DataConverterPotionId.potions[116] = "minecraft:poison"; + DataConverterPotionId.potions[117] = "minecraft:strong_healing"; + DataConverterPotionId.potions[118] = "minecraft:long_night_vision"; + DataConverterPotionId.potions[119] = null; + DataConverterPotionId.potions[120] = "minecraft:long_weakness"; + DataConverterPotionId.potions[121] = "minecraft:strength"; + DataConverterPotionId.potions[122] = "minecraft:long_slowness"; + DataConverterPotionId.potions[123] = "minecraft:leaping"; + DataConverterPotionId.potions[124] = "minecraft:strong_harming"; + DataConverterPotionId.potions[125] = "minecraft:long_water_breathing"; + DataConverterPotionId.potions[126] = "minecraft:long_invisibility"; + DataConverterPotionId.potions[127] = null; + } + } + + private static class DataConverterSpawnEgg implements DataConverter { + + private static final String[] eggs = new String[256]; + + DataConverterSpawnEgg() { + } + + public int getDataVersion() { + return 105; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:spawn_egg".equals(cmp.getString("id"))) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("EntityTag"); + short short0 = cmp.getShort("Damage"); + + if (!nbttagcompound2.contains("id", 8)) { + String s = DataConverterSpawnEgg.eggs[short0 & 255]; + + if (s != null) { + nbttagcompound2.putString("id", s); + nbttagcompound1.put("EntityTag", nbttagcompound2); + cmp.put("tag", nbttagcompound1); + } + } + + if (short0 != 0) { + cmp.putShort("Damage", (short) 0); + } + } + + return cmp; + } + + static { + + DataConverterSpawnEgg.eggs[1] = "Item"; + DataConverterSpawnEgg.eggs[2] = "XPOrb"; + DataConverterSpawnEgg.eggs[7] = "ThrownEgg"; + DataConverterSpawnEgg.eggs[8] = "LeashKnot"; + DataConverterSpawnEgg.eggs[9] = "Painting"; + DataConverterSpawnEgg.eggs[10] = "Arrow"; + DataConverterSpawnEgg.eggs[11] = "Snowball"; + DataConverterSpawnEgg.eggs[12] = "Fireball"; + DataConverterSpawnEgg.eggs[13] = "SmallFireball"; + DataConverterSpawnEgg.eggs[14] = "ThrownEnderpearl"; + DataConverterSpawnEgg.eggs[15] = "EyeOfEnderSignal"; + DataConverterSpawnEgg.eggs[16] = "ThrownPotion"; + DataConverterSpawnEgg.eggs[17] = "ThrownExpBottle"; + DataConverterSpawnEgg.eggs[18] = "ItemFrame"; + DataConverterSpawnEgg.eggs[19] = "WitherSkull"; + DataConverterSpawnEgg.eggs[20] = "PrimedTnt"; + DataConverterSpawnEgg.eggs[21] = "FallingSand"; + DataConverterSpawnEgg.eggs[22] = "FireworksRocketEntity"; + DataConverterSpawnEgg.eggs[23] = "TippedArrow"; + DataConverterSpawnEgg.eggs[24] = "SpectralArrow"; + DataConverterSpawnEgg.eggs[25] = "ShulkerBullet"; + DataConverterSpawnEgg.eggs[26] = "DragonFireball"; + DataConverterSpawnEgg.eggs[30] = "ArmorStand"; + DataConverterSpawnEgg.eggs[41] = "Boat"; + DataConverterSpawnEgg.eggs[42] = "MinecartRideable"; + DataConverterSpawnEgg.eggs[43] = "MinecartChest"; + DataConverterSpawnEgg.eggs[44] = "MinecartFurnace"; + DataConverterSpawnEgg.eggs[45] = "MinecartTNT"; + DataConverterSpawnEgg.eggs[46] = "MinecartHopper"; + DataConverterSpawnEgg.eggs[47] = "MinecartSpawner"; + DataConverterSpawnEgg.eggs[40] = "MinecartCommandBlock"; + DataConverterSpawnEgg.eggs[48] = "Mob"; + DataConverterSpawnEgg.eggs[49] = "Monster"; + DataConverterSpawnEgg.eggs[50] = "Creeper"; + DataConverterSpawnEgg.eggs[51] = "Skeleton"; + DataConverterSpawnEgg.eggs[52] = "Spider"; + DataConverterSpawnEgg.eggs[53] = "Giant"; + DataConverterSpawnEgg.eggs[54] = "Zombie"; + DataConverterSpawnEgg.eggs[55] = "Slime"; + DataConverterSpawnEgg.eggs[56] = "Ghast"; + DataConverterSpawnEgg.eggs[57] = "PigZombie"; + DataConverterSpawnEgg.eggs[58] = "Enderman"; + DataConverterSpawnEgg.eggs[59] = "CaveSpider"; + DataConverterSpawnEgg.eggs[60] = "Silverfish"; + DataConverterSpawnEgg.eggs[61] = "Blaze"; + DataConverterSpawnEgg.eggs[62] = "LavaSlime"; + DataConverterSpawnEgg.eggs[63] = "EnderDragon"; + DataConverterSpawnEgg.eggs[64] = "WitherBoss"; + DataConverterSpawnEgg.eggs[65] = "Bat"; + DataConverterSpawnEgg.eggs[66] = "Witch"; + DataConverterSpawnEgg.eggs[67] = "Endermite"; + DataConverterSpawnEgg.eggs[68] = "Guardian"; + DataConverterSpawnEgg.eggs[69] = "Shulker"; + DataConverterSpawnEgg.eggs[90] = "Pig"; + DataConverterSpawnEgg.eggs[91] = "Sheep"; + DataConverterSpawnEgg.eggs[92] = "Cow"; + DataConverterSpawnEgg.eggs[93] = "Chicken"; + DataConverterSpawnEgg.eggs[94] = "Squid"; + DataConverterSpawnEgg.eggs[95] = "Wolf"; + DataConverterSpawnEgg.eggs[96] = "MushroomCow"; + DataConverterSpawnEgg.eggs[97] = "SnowMan"; + DataConverterSpawnEgg.eggs[98] = "Ozelot"; + DataConverterSpawnEgg.eggs[99] = "VillagerGolem"; + DataConverterSpawnEgg.eggs[100] = "EntityHorse"; + DataConverterSpawnEgg.eggs[101] = "Rabbit"; + DataConverterSpawnEgg.eggs[120] = "Villager"; + DataConverterSpawnEgg.eggs[200] = "EnderCrystal"; + } + } + + private static class DataConverterMinecart implements DataConverter { + + private static final List a = Lists.newArrayList("MinecartRideable", "MinecartChest", "MinecartFurnace", "MinecartTNT", "MinecartSpawner", "MinecartHopper", "MinecartCommandBlock"); + + DataConverterMinecart() { + } + + public int getDataVersion() { + return 106; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("Minecart".equals(cmp.getString("id"))) { + String s = "MinecartRideable"; + int i = cmp.getInt("Type"); + + if (i > 0 && i < DataConverterMinecart.a.size()) { + s = DataConverterMinecart.a.get(i); + } + + cmp.putString("id", s); + cmp.remove("Type"); + } + + return cmp; + } + } + + private static class DataConverterMobSpawner implements DataConverter { + + DataConverterMobSpawner() { + } + + public int getDataVersion() { + return 107; + } + + public CompoundTag convert(CompoundTag cmp) { + if (!"MobSpawner".equals(cmp.getString("id"))) { + return cmp; + } else { + if (cmp.contains("EntityId", 8)) { + String s = cmp.getString("EntityId"); + CompoundTag nbttagcompound1 = cmp.getCompound("SpawnData"); + + nbttagcompound1.putString("id", s.isEmpty() ? "Pig" : s); + cmp.put("SpawnData", nbttagcompound1); + cmp.remove("EntityId"); + } + + if (cmp.contains("SpawnPotentials", 9)) { + ListTag nbttaglist = cmp.getList("SpawnPotentials", 10); + + for (int i = 0; i < nbttaglist.size(); ++i) { + CompoundTag nbttagcompound2 = nbttaglist.getCompound(i); + + if (nbttagcompound2.contains("Type", 8)) { + CompoundTag nbttagcompound3 = nbttagcompound2.getCompound("Properties"); + + nbttagcompound3.putString("id", nbttagcompound2.getString("Type")); + nbttagcompound2.put("Entity", nbttagcompound3); + nbttagcompound2.remove("Type"); + nbttagcompound2.remove("Properties"); + } + } + } + + return cmp; + } + } + } + + private static class DataConverterUUID implements DataConverter { + + DataConverterUUID() { + } + + public int getDataVersion() { + return 108; + } + + public CompoundTag convert(CompoundTag cmp) { + if (cmp.contains("UUID", 8)) { + cmp.putUUID("UUID", UUID.fromString(cmp.getString("UUID"))); + } + + return cmp; + } + } + + private static class DataConverterHealth implements DataConverter { + + private static final Set a = Sets.newHashSet("ArmorStand", "Bat", "Blaze", "CaveSpider", "Chicken", "Cow", "Creeper", "EnderDragon", "Enderman", "Endermite", "EntityHorse", "Ghast", "Giant", "Guardian", "LavaSlime", "MushroomCow", "Ozelot", "Pig", "PigZombie", "Rabbit", "Sheep", "Shulker", "Silverfish", "Skeleton", "Slime", "SnowMan", "Spider", "Squid", "Villager", "VillagerGolem", "Witch", "WitherBoss", "Wolf", "Zombie"); + + DataConverterHealth() { + } + + public int getDataVersion() { + return 109; + } + + public CompoundTag convert(CompoundTag cmp) { + if (DataConverterHealth.a.contains(cmp.getString("id"))) { + float f; + + if (cmp.contains("HealF", 99)) { + f = cmp.getFloat("HealF"); + cmp.remove("HealF"); + } else { + if (!cmp.contains("Health", 99)) { + return cmp; + } + + f = cmp.getFloat("Health"); + } + + cmp.putFloat("Health", f); + } + + return cmp; + } + } + + private static class DataConverterSaddle implements DataConverter { + + DataConverterSaddle() { + } + + public int getDataVersion() { + return 110; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("EntityHorse".equals(cmp.getString("id")) && !cmp.contains("SaddleItem", 10) && cmp.getBoolean("Saddle")) { + CompoundTag nbttagcompound1 = new CompoundTag(); + + nbttagcompound1.putString("id", "minecraft:saddle"); + nbttagcompound1.putByte("Count", (byte) 1); + nbttagcompound1.putShort("Damage", (short) 0); + cmp.put("SaddleItem", nbttagcompound1); + cmp.remove("Saddle"); + } + + return cmp; + } + } + + private static class DataConverterHanging implements DataConverter { + + DataConverterHanging() { + } + + public int getDataVersion() { + return 111; + } + + public CompoundTag convert(CompoundTag cmp) { + String s = cmp.getString("id"); + boolean flag = "Painting".equals(s); + boolean flag1 = "ItemFrame".equals(s); + + if ((flag || flag1) && !cmp.contains("Facing", 99)) { + Direction enumdirection; + + if (cmp.contains("Direction", 99)) { + enumdirection = Direction.from2DDataValue(cmp.getByte("Direction")); + cmp.putInt("TileX", cmp.getInt("TileX") + enumdirection.getStepX()); + cmp.putInt("TileY", cmp.getInt("TileY") + enumdirection.getStepY()); + cmp.putInt("TileZ", cmp.getInt("TileZ") + enumdirection.getStepZ()); + cmp.remove("Direction"); + if (flag1 && cmp.contains("ItemRotation", 99)) { + cmp.putByte("ItemRotation", (byte) (cmp.getByte("ItemRotation") * 2)); + } + } else { + enumdirection = Direction.from2DDataValue(cmp.getByte("Dir")); + cmp.remove("Dir"); + } + + cmp.putByte("Facing", (byte) enumdirection.get2DDataValue()); + } + + return cmp; + } + } + + private static class DataConverterDropChances implements DataConverter { + + DataConverterDropChances() { + } + + public int getDataVersion() { + return 113; + } + + public CompoundTag convert(CompoundTag cmp) { + ListTag nbttaglist; + + if (cmp.contains("HandDropChances", 9)) { + nbttaglist = cmp.getList("HandDropChances", 5); + if (nbttaglist.size() == 2 && nbttaglist.getFloat(0) == 0.0F && nbttaglist.getFloat(1) == 0.0F) { + cmp.remove("HandDropChances"); + } + } + + if (cmp.contains("ArmorDropChances", 9)) { + nbttaglist = cmp.getList("ArmorDropChances", 5); + if (nbttaglist.size() == 4 && nbttaglist.getFloat(0) == 0.0F && nbttaglist.getFloat(1) == 0.0F && nbttaglist.getFloat(2) == 0.0F && nbttaglist.getFloat(3) == 0.0F) { + cmp.remove("ArmorDropChances"); + } + } + + return cmp; + } + } + + private static class DataConverterRiding implements DataConverter { + + DataConverterRiding() { + } + + public int getDataVersion() { + return 135; + } + + public CompoundTag convert(CompoundTag cmp) { + while (cmp.contains("Riding", 10)) { + CompoundTag nbttagcompound1 = this.b(cmp); + + this.convert(cmp, nbttagcompound1); + cmp = nbttagcompound1; + } + + return cmp; + } + + protected void convert(CompoundTag nbttagcompound, CompoundTag nbttagcompound1) { + ListTag nbttaglist = new ListTag(); + + nbttaglist.add(nbttagcompound); + nbttagcompound1.put("Passengers", nbttaglist); + } + + protected CompoundTag b(CompoundTag nbttagcompound) { + CompoundTag nbttagcompound1 = nbttagcompound.getCompound("Riding"); + + nbttagcompound.remove("Riding"); + return nbttagcompound1; + } + } + + private static class DataConverterBook implements DataConverter { + + DataConverterBook() { + } + + public int getDataVersion() { + return 165; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:written_book".equals(cmp.getString("id"))) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("pages", 9)) { + ListTag nbttaglist = nbttagcompound1.getList("pages", 8); + + for (int i = 0; i < nbttaglist.size(); ++i) { + String s = nbttaglist.getString(i); + Component object = null; + + if (!"null".equals(s) && !StringUtil.isNullOrEmpty(s)) { + if ((s.charAt(0) != 34 || s.charAt(s.length() - 1) != 34) && (s.charAt(0) != 123 || s.charAt(s.length() - 1) != 125)) { + object = Component.literal(s); + } else { + try { + object = GsonHelper.fromJson(DataConverterSignText.a, s, Component.class, true); + if (object == null) { + object = Component.literal(""); + } + } catch (JsonParseException jsonparseexception) { + ; + } + + if (object == null) { + try { + object = Component.Serializer.fromJson(s, MinecraftServer.getServer().registryAccess()); + } catch (JsonParseException jsonparseexception1) { + ; + } + } + + if (object == null) { + try { + object = Component.Serializer.fromJsonLenient(s, MinecraftServer.getServer().registryAccess()); + } catch (JsonParseException jsonparseexception2) { + ; + } + } + + if (object == null) { + object = Component.literal(s); + } + } + } else { + object = Component.literal(""); + } + + nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson(object, MinecraftServer.getServer().registryAccess()))); + } + + nbttagcompound1.put("pages", nbttaglist); + } + } + + return cmp; + } + } + + private static class DataConverterCookedFish implements DataConverter { + + private static final ResourceLocation a = new ResourceLocation("cooked_fished"); + + DataConverterCookedFish() { + } + + public int getDataVersion() { + return 502; + } + + public CompoundTag convert(CompoundTag cmp) { + if (cmp.contains("id", 8) && DataConverterCookedFish.a.equals(new ResourceLocation(cmp.getString("id")))) { + cmp.putString("id", "minecraft:cooked_fish"); + } + + return cmp; + } + } + + private static class DataConverterZombie implements DataConverter { + + private static final Random a = new Random(); + + DataConverterZombie() { + } + + public int getDataVersion() { + return 502; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("Zombie".equals(cmp.getString("id")) && cmp.getBoolean("IsVillager")) { + if (!cmp.contains("ZombieType", 99)) { + int i = -1; + + if (cmp.contains("VillagerProfession", 99)) { + try { + i = this.convert(cmp.getInt("VillagerProfession")); + } catch (RuntimeException runtimeexception) { + ; + } + } + + if (i == -1) { + i = this.convert(DataConverterZombie.a.nextInt(6)); + } + + cmp.putInt("ZombieType", i); + } + + cmp.remove("IsVillager"); + } + + return cmp; + } + + private int convert(int i) { + return i >= 0 && i < 6 ? i : -1; + } + } + + private static class DataConverterVBO implements DataConverter { + + DataConverterVBO() { + } + + public int getDataVersion() { + return 505; + } + + public CompoundTag convert(CompoundTag cmp) { + cmp.putString("useVbo", "true"); + return cmp; + } + } + + private static class DataConverterGuardian implements DataConverter { + + DataConverterGuardian() { + } + + public int getDataVersion() { + return 700; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("Guardian".equals(cmp.getString("id"))) { + if (cmp.getBoolean("Elder")) { + cmp.putString("id", "ElderGuardian"); + } + + cmp.remove("Elder"); + } + + return cmp; + } + } + + private static class DataConverterSkeleton implements DataConverter { + + DataConverterSkeleton() { + } + + public int getDataVersion() { + return 701; + } + + public CompoundTag convert(CompoundTag cmp) { + String s = cmp.getString("id"); + + if ("Skeleton".equals(s)) { + int i = cmp.getInt("SkeletonType"); + + if (i == 1) { + cmp.putString("id", "WitherSkeleton"); + } else if (i == 2) { + cmp.putString("id", "Stray"); + } + + cmp.remove("SkeletonType"); + } + + return cmp; + } + } + + private static class DataConverterZombieType implements DataConverter { + + DataConverterZombieType() { + } + + public int getDataVersion() { + return 702; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("Zombie".equals(cmp.getString("id"))) { + int i = cmp.getInt("ZombieType"); + + switch (i) { + case 0: + default: + break; + + case 1: + case 2: + case 3: + case 4: + case 5: + cmp.putString("id", "ZombieVillager"); + cmp.putInt("Profession", i - 1); + break; + + case 6: + cmp.putString("id", "Husk"); + } + + cmp.remove("ZombieType"); + } + + return cmp; + } + } + + private static class DataConverterHorse implements DataConverter { + + DataConverterHorse() { + } + + public int getDataVersion() { + return 703; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("EntityHorse".equals(cmp.getString("id"))) { + int i = cmp.getInt("Type"); + + switch (i) { + case 0: + default: + cmp.putString("id", "Horse"); + break; + + case 1: + cmp.putString("id", "Donkey"); + break; + + case 2: + cmp.putString("id", "Mule"); + break; + + case 3: + cmp.putString("id", "ZombieHorse"); + break; + + case 4: + cmp.putString("id", "SkeletonHorse"); + } + + cmp.remove("Type"); + } + + return cmp; + } + } + + private static class DataConverterTileEntity implements DataConverter { + + private static final Map a = Maps.newHashMap(); + + DataConverterTileEntity() { + } + + public int getDataVersion() { + return 704; + } + + public CompoundTag convert(CompoundTag cmp) { + String s = DataConverterTileEntity.a.get(cmp.getString("id")); + + if (s != null) { + cmp.putString("id", s); + } + + return cmp; + } + + static { + DataConverterTileEntity.a.put("Airportal", "minecraft:end_portal"); + DataConverterTileEntity.a.put("Banner", "minecraft:banner"); + DataConverterTileEntity.a.put("Beacon", "minecraft:beacon"); + DataConverterTileEntity.a.put("Cauldron", "minecraft:brewing_stand"); + DataConverterTileEntity.a.put("Chest", "minecraft:chest"); + DataConverterTileEntity.a.put("Comparator", "minecraft:comparator"); + DataConverterTileEntity.a.put("Control", "minecraft:command_block"); + DataConverterTileEntity.a.put("DLDetector", "minecraft:daylight_detector"); + DataConverterTileEntity.a.put("Dropper", "minecraft:dropper"); + DataConverterTileEntity.a.put("EnchantTable", "minecraft:enchanting_table"); + DataConverterTileEntity.a.put("EndGateway", "minecraft:end_gateway"); + DataConverterTileEntity.a.put("EnderChest", "minecraft:ender_chest"); + DataConverterTileEntity.a.put("FlowerPot", "minecraft:flower_pot"); + DataConverterTileEntity.a.put("Furnace", "minecraft:furnace"); + DataConverterTileEntity.a.put("Hopper", "minecraft:hopper"); + DataConverterTileEntity.a.put("MobSpawner", "minecraft:mob_spawner"); + DataConverterTileEntity.a.put("Music", "minecraft:noteblock"); + DataConverterTileEntity.a.put("Piston", "minecraft:piston"); + DataConverterTileEntity.a.put("RecordPlayer", "minecraft:jukebox"); + DataConverterTileEntity.a.put("Sign", "minecraft:sign"); + DataConverterTileEntity.a.put("Skull", "minecraft:skull"); + DataConverterTileEntity.a.put("Structure", "minecraft:structure_block"); + DataConverterTileEntity.a.put("Trap", "minecraft:dispenser"); + } + } + + private static class DataConverterEntity implements DataConverter { + + private static final Map a = Maps.newHashMap(); + + DataConverterEntity() { + } + + public int getDataVersion() { + return 704; + } + + public CompoundTag convert(CompoundTag cmp) { + String s = DataConverterEntity.a.get(cmp.getString("id")); + + if (s != null) { + cmp.putString("id", s); + } + + return cmp; + } + + static { + DataConverterEntity.a.put("AreaEffectCloud", "minecraft:area_effect_cloud"); + DataConverterEntity.a.put("ArmorStand", "minecraft:armor_stand"); + DataConverterEntity.a.put("Arrow", "minecraft:arrow"); + DataConverterEntity.a.put("Bat", "minecraft:bat"); + DataConverterEntity.a.put("Blaze", "minecraft:blaze"); + DataConverterEntity.a.put("Boat", "minecraft:boat"); + DataConverterEntity.a.put("CaveSpider", "minecraft:cave_spider"); + DataConverterEntity.a.put("Chicken", "minecraft:chicken"); + DataConverterEntity.a.put("Cow", "minecraft:cow"); + DataConverterEntity.a.put("Creeper", "minecraft:creeper"); + DataConverterEntity.a.put("Donkey", "minecraft:donkey"); + DataConverterEntity.a.put("DragonFireball", "minecraft:dragon_fireball"); + DataConverterEntity.a.put("ElderGuardian", "minecraft:elder_guardian"); + DataConverterEntity.a.put("EnderCrystal", "minecraft:ender_crystal"); + DataConverterEntity.a.put("EnderDragon", "minecraft:ender_dragon"); + DataConverterEntity.a.put("Enderman", "minecraft:enderman"); + DataConverterEntity.a.put("Endermite", "minecraft:endermite"); + DataConverterEntity.a.put("EyeOfEnderSignal", "minecraft:eye_of_ender_signal"); + DataConverterEntity.a.put("FallingSand", "minecraft:falling_block"); + DataConverterEntity.a.put("Fireball", "minecraft:fireball"); + DataConverterEntity.a.put("FireworksRocketEntity", "minecraft:fireworks_rocket"); + DataConverterEntity.a.put("Ghast", "minecraft:ghast"); + DataConverterEntity.a.put("Giant", "minecraft:giant"); + DataConverterEntity.a.put("Guardian", "minecraft:guardian"); + DataConverterEntity.a.put("Horse", "minecraft:horse"); + DataConverterEntity.a.put("Husk", "minecraft:husk"); + DataConverterEntity.a.put("Item", "minecraft:item"); + DataConverterEntity.a.put("ItemFrame", "minecraft:item_frame"); + DataConverterEntity.a.put("LavaSlime", "minecraft:magma_cube"); + DataConverterEntity.a.put("LeashKnot", "minecraft:leash_knot"); + DataConverterEntity.a.put("MinecartChest", "minecraft:chest_minecart"); + DataConverterEntity.a.put("MinecartCommandBlock", "minecraft:commandblock_minecart"); + DataConverterEntity.a.put("MinecartFurnace", "minecraft:furnace_minecart"); + DataConverterEntity.a.put("MinecartHopper", "minecraft:hopper_minecart"); + DataConverterEntity.a.put("MinecartRideable", "minecraft:minecart"); + DataConverterEntity.a.put("MinecartSpawner", "minecraft:spawner_minecart"); + DataConverterEntity.a.put("MinecartTNT", "minecraft:tnt_minecart"); + DataConverterEntity.a.put("Mule", "minecraft:mule"); + DataConverterEntity.a.put("MushroomCow", "minecraft:mooshroom"); + DataConverterEntity.a.put("Ozelot", "minecraft:ocelot"); + DataConverterEntity.a.put("Painting", "minecraft:painting"); + DataConverterEntity.a.put("Pig", "minecraft:pig"); + DataConverterEntity.a.put("PigZombie", "minecraft:zombie_pigman"); + DataConverterEntity.a.put("PolarBear", "minecraft:polar_bear"); + DataConverterEntity.a.put("PrimedTnt", "minecraft:tnt"); + DataConverterEntity.a.put("Rabbit", "minecraft:rabbit"); + DataConverterEntity.a.put("Sheep", "minecraft:sheep"); + DataConverterEntity.a.put("Shulker", "minecraft:shulker"); + DataConverterEntity.a.put("ShulkerBullet", "minecraft:shulker_bullet"); + DataConverterEntity.a.put("Silverfish", "minecraft:silverfish"); + DataConverterEntity.a.put("Skeleton", "minecraft:skeleton"); + DataConverterEntity.a.put("SkeletonHorse", "minecraft:skeleton_horse"); + DataConverterEntity.a.put("Slime", "minecraft:slime"); + DataConverterEntity.a.put("SmallFireball", "minecraft:small_fireball"); + DataConverterEntity.a.put("SnowMan", "minecraft:snowman"); + DataConverterEntity.a.put("Snowball", "minecraft:snowball"); + DataConverterEntity.a.put("SpectralArrow", "minecraft:spectral_arrow"); + DataConverterEntity.a.put("Spider", "minecraft:spider"); + DataConverterEntity.a.put("Squid", "minecraft:squid"); + DataConverterEntity.a.put("Stray", "minecraft:stray"); + DataConverterEntity.a.put("ThrownEgg", "minecraft:egg"); + DataConverterEntity.a.put("ThrownEnderpearl", "minecraft:ender_pearl"); + DataConverterEntity.a.put("ThrownExpBottle", "minecraft:xp_bottle"); + DataConverterEntity.a.put("ThrownPotion", "minecraft:potion"); + DataConverterEntity.a.put("Villager", "minecraft:villager"); + DataConverterEntity.a.put("VillagerGolem", "minecraft:villager_golem"); + DataConverterEntity.a.put("Witch", "minecraft:witch"); + DataConverterEntity.a.put("WitherBoss", "minecraft:wither"); + DataConverterEntity.a.put("WitherSkeleton", "minecraft:wither_skeleton"); + DataConverterEntity.a.put("WitherSkull", "minecraft:wither_skull"); + DataConverterEntity.a.put("Wolf", "minecraft:wolf"); + DataConverterEntity.a.put("XPOrb", "minecraft:xp_orb"); + DataConverterEntity.a.put("Zombie", "minecraft:zombie"); + DataConverterEntity.a.put("ZombieHorse", "minecraft:zombie_horse"); + DataConverterEntity.a.put("ZombieVillager", "minecraft:zombie_villager"); + } + } + + private static class DataConverterPotionWater implements DataConverter { + + DataConverterPotionWater() { + } + + public int getDataVersion() { + return 806; + } + + public CompoundTag convert(CompoundTag cmp) { + String s = cmp.getString("id"); + + if ("minecraft:potion".equals(s) || "minecraft:splash_potion".equals(s) || "minecraft:lingering_potion".equals(s) || "minecraft:tipped_arrow".equals(s)) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (!nbttagcompound1.contains("Potion", 8)) { + nbttagcompound1.putString("Potion", "minecraft:water"); + } + + if (!cmp.contains("tag", 10)) { + cmp.put("tag", nbttagcompound1); + } + } + + return cmp; + } + } + + private static class DataConverterShulker implements DataConverter { + + DataConverterShulker() { + } + + public int getDataVersion() { + return 808; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:shulker".equals(cmp.getString("id")) && !cmp.contains("Color", 99)) { + cmp.putByte("Color", (byte) 10); + } + + return cmp; + } + } + + private static class DataConverterShulkerBoxItem implements DataConverter { + + public static final String[] a = new String[] { "minecraft:white_shulker_box", "minecraft:orange_shulker_box", "minecraft:magenta_shulker_box", "minecraft:light_blue_shulker_box", "minecraft:yellow_shulker_box", "minecraft:lime_shulker_box", "minecraft:pink_shulker_box", "minecraft:gray_shulker_box", "minecraft:silver_shulker_box", "minecraft:cyan_shulker_box", "minecraft:purple_shulker_box", "minecraft:blue_shulker_box", "minecraft:brown_shulker_box", "minecraft:green_shulker_box", "minecraft:red_shulker_box", "minecraft:black_shulker_box" }; + + DataConverterShulkerBoxItem() { + } + + public int getDataVersion() { + return 813; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:shulker_box".equals(cmp.getString("id")) && cmp.contains("tag", 10)) { + CompoundTag nbttagcompound1 = cmp.getCompound("tag"); + + if (nbttagcompound1.contains("BlockEntityTag", 10)) { + CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); + + if (nbttagcompound2.getList("Items", 10).isEmpty()) { + nbttagcompound2.remove("Items"); + } + + int i = nbttagcompound2.getInt("Color"); + + nbttagcompound2.remove("Color"); + if (nbttagcompound2.isEmpty()) { + nbttagcompound1.remove("BlockEntityTag"); + } + + if (nbttagcompound1.isEmpty()) { + cmp.remove("tag"); + } + + cmp.putString("id", DataConverterShulkerBoxItem.a[i % 16]); + } + } + + return cmp; + } + } + + private static class DataConverterShulkerBoxBlock implements DataConverter { + + DataConverterShulkerBoxBlock() { + } + + public int getDataVersion() { + return 813; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:shulker".equals(cmp.getString("id"))) { + cmp.remove("Color"); + } + + return cmp; + } + } + + private static class DataConverterLang implements DataConverter { + + DataConverterLang() { + } + + public int getDataVersion() { + return 816; + } + + public CompoundTag convert(CompoundTag cmp) { + if (cmp.contains("lang", 8)) { + cmp.putString("lang", cmp.getString("lang").toLowerCase(Locale.ROOT)); + } + + return cmp; + } + } + + private static class DataConverterTotem implements DataConverter { + + DataConverterTotem() { + } + + public int getDataVersion() { + return 820; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:totem".equals(cmp.getString("id"))) { + cmp.putString("id", "minecraft:totem_of_undying"); + } + + return cmp; + } + } + + private static class DataConverterBedBlock implements DataConverter { + + private static final Logger a = LogManager.getLogger(PaperweightDataConverters.class); + + DataConverterBedBlock() { + } + + public int getDataVersion() { + return 1125; + } + + public CompoundTag convert(CompoundTag cmp) { + try { + CompoundTag nbttagcompound1 = cmp.getCompound("Level"); + int i = nbttagcompound1.getInt("xPos"); + int j = nbttagcompound1.getInt("zPos"); + ListTag nbttaglist = nbttagcompound1.getList("TileEntities", 10); + ListTag nbttaglist1 = nbttagcompound1.getList("Sections", 10); + + for (int k = 0; k < nbttaglist1.size(); ++k) { + CompoundTag nbttagcompound2 = nbttaglist1.getCompound(k); + byte b0 = nbttagcompound2.getByte("Y"); + byte[] abyte = nbttagcompound2.getByteArray("Blocks"); + + for (int l = 0; l < abyte.length; ++l) { + if (416 == (abyte[l] & 255) << 4) { + int i1 = l & 15; + int j1 = l >> 8 & 15; + int k1 = l >> 4 & 15; + CompoundTag nbttagcompound3 = new CompoundTag(); + + nbttagcompound3.putString("id", "bed"); + nbttagcompound3.putInt("x", i1 + (i << 4)); + nbttagcompound3.putInt("y", j1 + (b0 << 4)); + nbttagcompound3.putInt("z", k1 + (j << 4)); + nbttaglist.add(nbttagcompound3); + } + } + } + } catch (Exception exception) { + DataConverterBedBlock.a.warn("Unable to datafix Bed blocks, level format may be missing tags."); + } + + return cmp; + } + } + + private static class DataConverterBedItem implements DataConverter { + + DataConverterBedItem() { + } + + public int getDataVersion() { + return 1125; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("minecraft:bed".equals(cmp.getString("id")) && cmp.getShort("Damage") == 0) { + cmp.putShort("Damage", (short) DyeColor.RED.getId()); + } + + return cmp; + } + } + + private static class DataConverterSignText implements DataConverter { + + public static final Gson a = new GsonBuilder().registerTypeAdapter(Component.class, new JsonDeserializer() { + MutableComponent a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + if (jsonelement.isJsonPrimitive()) { + return Component.literal(jsonelement.getAsString()); + } else if (jsonelement.isJsonArray()) { + JsonArray jsonarray = jsonelement.getAsJsonArray(); + MutableComponent ichatbasecomponent = null; + Iterator iterator = jsonarray.iterator(); + + while (iterator.hasNext()) { + JsonElement jsonelement1 = (JsonElement) iterator.next(); + MutableComponent ichatbasecomponent1 = this.a(jsonelement1, jsonelement1.getClass(), jsondeserializationcontext); + + if (ichatbasecomponent == null) { + ichatbasecomponent = ichatbasecomponent1; + } else { + ichatbasecomponent.append(ichatbasecomponent1); + } + } + + return ichatbasecomponent; + } else { + throw new JsonParseException("Don't know how to turn " + jsonelement + " into a Component"); + } + } + + public Object deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { + return this.a(jsonelement, type, jsondeserializationcontext); + } + }).create(); + + DataConverterSignText() { + } + + public int getDataVersion() { + return 101; + } + + public CompoundTag convert(CompoundTag cmp) { + if ("Sign".equals(cmp.getString("id"))) { + this.convert(cmp, "Text1"); + this.convert(cmp, "Text2"); + this.convert(cmp, "Text3"); + this.convert(cmp, "Text4"); + } + + return cmp; + } + + private void convert(CompoundTag nbttagcompound, String s) { + String s1 = nbttagcompound.getString(s); + Component object = null; + + if (!"null".equals(s1) && !StringUtil.isNullOrEmpty(s1)) { + if ((s1.charAt(0) != 34 || s1.charAt(s1.length() - 1) != 34) && (s1.charAt(0) != 123 || s1.charAt(s1.length() - 1) != 125)) { + object = Component.literal(s1); + } else { + try { + object = GsonHelper.fromJson(DataConverterSignText.a, s1, Component.class, true); + if (object == null) { + object = Component.literal(""); + } + } catch (JsonParseException jsonparseexception) { + ; + } + + if (object == null) { + try { + object = Component.Serializer.fromJson(s1, MinecraftServer.getServer().registryAccess()); + } catch (JsonParseException jsonparseexception1) { + ; + } + } + + if (object == null) { + try { + object = Component.Serializer.fromJsonLenient(s1, MinecraftServer.getServer().registryAccess()); + } catch (JsonParseException jsonparseexception2) { + ; + } + } + + if (object == null) { + object = Component.literal(s1); + } + } + } else { + object = Component.literal(""); + } + + nbttagcompound.putString(s, Component.Serializer.toJson(object, MinecraftServer.getServer().registryAccess())); + } + } + + private static class DataInspectorPlayerVehicle implements DataInspector { + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("RootVehicle", 10)) { + CompoundTag nbttagcompound1 = cmp.getCompound("RootVehicle"); + + if (nbttagcompound1.contains("Entity", 10)) { + convertCompound(LegacyType.ENTITY, nbttagcompound1, "Entity", sourceVer, targetVer); + } + } + + return cmp; + } + } + + private static class DataInspectorLevelPlayer implements DataInspector { + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("Player", 10)) { + convertCompound(LegacyType.PLAYER, cmp, "Player", sourceVer, targetVer); + } + + return cmp; + } + } + + private static class DataInspectorStructure implements DataInspector { + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + ListTag nbttaglist; + int j; + CompoundTag nbttagcompound1; + + if (cmp.contains("entities", 9)) { + nbttaglist = cmp.getList("entities", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttagcompound1 = (CompoundTag) nbttaglist.get(j); + if (nbttagcompound1.contains("nbt", 10)) { + convertCompound(LegacyType.ENTITY, nbttagcompound1, "nbt", sourceVer, targetVer); + } + } + } + + if (cmp.contains("blocks", 9)) { + nbttaglist = cmp.getList("blocks", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttagcompound1 = (CompoundTag) nbttaglist.get(j); + if (nbttagcompound1.contains("nbt", 10)) { + convertCompound(LegacyType.BLOCK_ENTITY, nbttagcompound1, "nbt", sourceVer, targetVer); + } + } + } + + return cmp; + } + } + + private static class DataInspectorChunks implements DataInspector { + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("Level", 10)) { + CompoundTag nbttagcompound1 = cmp.getCompound("Level"); + ListTag nbttaglist; + int j; + + if (nbttagcompound1.contains("Entities", 9)) { + nbttaglist = nbttagcompound1.getList("Entities", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.ENTITY, (CompoundTag) nbttaglist.get(j), sourceVer, targetVer)); + } + } + + if (nbttagcompound1.contains("TileEntities", 9)) { + nbttaglist = nbttagcompound1.getList("TileEntities", 10); + + for (j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.BLOCK_ENTITY, (CompoundTag) nbttaglist.get(j), sourceVer, targetVer)); + } + } + } + + return cmp; + } + } + + private static class DataInspectorEntityPassengers implements DataInspector { + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (cmp.contains("Passengers", 9)) { + ListTag nbttaglist = cmp.getList("Passengers", 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + nbttaglist.set(j, convert(LegacyType.ENTITY, nbttaglist.getCompound(j), sourceVer, targetVer)); + } + } + + return cmp; + } + } + + private static class DataInspectorPlayer implements DataInspector { + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + convertItems(cmp, "Inventory", sourceVer, targetVer); + convertItems(cmp, "EnderItems", sourceVer, targetVer); + if (cmp.contains("ShoulderEntityLeft", 10)) { + convertCompound(LegacyType.ENTITY, cmp, "ShoulderEntityLeft", sourceVer, targetVer); + } + + if (cmp.contains("ShoulderEntityRight", 10)) { + convertCompound(LegacyType.ENTITY, cmp, "ShoulderEntityRight", sourceVer, targetVer); + } + + return cmp; + } + } + + private static class DataInspectorVillagers implements DataInspector { + ResourceLocation entityVillager = getKey("EntityVillager"); + + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (entityVillager.equals(new ResourceLocation(cmp.getString("id"))) && cmp.contains("Offers", 10)) { + CompoundTag nbttagcompound1 = cmp.getCompound("Offers"); + + if (nbttagcompound1.contains("Recipes", 9)) { + ListTag nbttaglist = nbttagcompound1.getList("Recipes", 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + CompoundTag nbttagcompound2 = nbttaglist.getCompound(j); + + convertItem(nbttagcompound2, "buy", sourceVer, targetVer); + convertItem(nbttagcompound2, "buyB", sourceVer, targetVer); + convertItem(nbttagcompound2, "sell", sourceVer, targetVer); + nbttaglist.set(j, nbttagcompound2); + } + } + } + + return cmp; + } + } + + private static class DataInspectorMobSpawnerMinecart implements DataInspector { + ResourceLocation entityMinecartMobSpawner = getKey("EntityMinecartMobSpawner"); + ResourceLocation tileEntityMobSpawner = getKey("TileEntityMobSpawner"); + + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + String s = cmp.getString("id"); + if (entityMinecartMobSpawner.equals(new ResourceLocation(s))) { + cmp.putString("id", tileEntityMobSpawner.toString()); + convert(LegacyType.BLOCK_ENTITY, cmp, sourceVer, targetVer); + cmp.putString("id", s); + } + + return cmp; + } + } + + private static class DataInspectorMobSpawnerMobs implements DataInspector { + ResourceLocation tileEntityMobSpawner = getKey("TileEntityMobSpawner"); + + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (tileEntityMobSpawner.equals(new ResourceLocation(cmp.getString("id")))) { + if (cmp.contains("SpawnPotentials", 9)) { + ListTag nbttaglist = cmp.getList("SpawnPotentials", 10); + + for (int j = 0; j < nbttaglist.size(); ++j) { + CompoundTag nbttagcompound1 = nbttaglist.getCompound(j); + + convertCompound(LegacyType.ENTITY, nbttagcompound1, "Entity", sourceVer, targetVer); + } + } + + convertCompound(LegacyType.ENTITY, cmp, "SpawnData", sourceVer, targetVer); + } + + return cmp; + } + } + + private static class DataInspectorCommandBlock implements DataInspector { + ResourceLocation tileEntityCommand = getKey("TileEntityCommand"); + + @Override + public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { + if (tileEntityCommand.equals(new ResourceLocation(cmp.getString("id")))) { + cmp.putString("id", "Control"); + convert(LegacyType.BLOCK_ENTITY, cmp, sourceVer, targetVer); + cmp.putString("id", "MinecartCommandBlock"); + } + + return cmp; + } + } +} diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightFakePlayer.java b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightFakePlayer.java new file mode 100644 index 0000000000..2875db4240 --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightFakePlayer.java @@ -0,0 +1,98 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_20_R4; + +import com.mojang.authlib.GameProfile; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ClientInformation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.stats.Stat; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraft.world.entity.player.ChatVisiblity; +import net.minecraft.world.level.block.entity.SignBlockEntity; +import net.minecraft.world.phys.Vec3; +import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; + +import java.util.OptionalInt; +import java.util.UUID; + +class PaperweightFakePlayer extends ServerPlayer { + private static final GameProfile FAKE_WORLDEDIT_PROFILE = new GameProfile(UUID.nameUUIDFromBytes("worldedit".getBytes()), "[WorldEdit]"); + private static final Vec3 ORIGIN = new Vec3(0.0D, 0.0D, 0.0D); + private static final ClientInformation FAKE_CLIENT_INFO = new ClientInformation( + "en_US", 16, ChatVisiblity.FULL, true, 0, HumanoidArm.LEFT, false, false + ); + + PaperweightFakePlayer(ServerLevel world) { + super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE, FAKE_CLIENT_INFO); + } + + @Override + public Vec3 position() { + return ORIGIN; + } + + @Override + public void tick() { + } + + @Override + public void die(DamageSource damagesource) { + } + + @Override + public Entity changeDimension(ServerLevel worldserver, TeleportCause cause) { + return this; + } + + @Override + public OptionalInt openMenu(MenuProvider factory) { + return OptionalInt.empty(); + } + + @Override + public void updateOptions(ClientInformation clientOptions) { + } + + @Override + public void displayClientMessage(Component message, boolean actionBar) { + } + + @Override + public void awardStat(Stat stat, int amount) { + } + + @Override + public void awardStat(Stat stat) { + } + + @Override + public boolean isInvulnerableTo(DamageSource damageSource) { + return true; + } + + @Override + public void openTextEdit(SignBlockEntity sign, boolean front) { + } +} diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightServerLevelDelegateProxy.java b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightServerLevelDelegateProxy.java new file mode 100644 index 0000000000..b567aacf64 --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightServerLevelDelegateProxy.java @@ -0,0 +1,153 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_20_R4; + +import com.sk89q.worldedit.EditSession; +import com.sk89q.worldedit.MaxChangedBlocksException; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.entity.BaseEntity; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.util.Location; +import com.sk89q.worldedit.util.concurrency.LazyReference; +import com.sk89q.worldedit.world.block.BlockTypes; +import com.sk89q.worldedit.world.entity.EntityTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.enginehub.linbus.tree.LinCompoundTag; +import org.jetbrains.annotations.Nullable; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +public class PaperweightServerLevelDelegateProxy implements InvocationHandler { + + private final EditSession editSession; + private final ServerLevel serverLevel; + private final PaperweightAdapter adapter; + + private PaperweightServerLevelDelegateProxy(EditSession editSession, ServerLevel serverLevel, PaperweightAdapter adapter) { + this.editSession = editSession; + this.serverLevel = serverLevel; + this.adapter = adapter; + } + + public static WorldGenLevel newInstance(EditSession editSession, ServerLevel serverLevel, PaperweightAdapter adapter) { + return (WorldGenLevel) Proxy.newProxyInstance( + serverLevel.getClass().getClassLoader(), + serverLevel.getClass().getInterfaces(), + new PaperweightServerLevelDelegateProxy(editSession, serverLevel, adapter) + ); + } + + @Nullable + private BlockEntity getBlockEntity(BlockPos blockPos) { + BlockEntity tileEntity = this.serverLevel.getChunkAt(blockPos).getBlockEntity(blockPos); + if (tileEntity == null) { + return null; + } + BlockEntity newEntity = tileEntity.getType().create(blockPos, getBlockState(blockPos)); + newEntity.loadWithComponents( + (CompoundTag) adapter.fromNative(this.editSession.getFullBlock(BlockVector3.at(blockPos.getX(), blockPos.getY(), blockPos.getZ())).getNbtReference().getValue()), + this.serverLevel.registryAccess() + ); + + return newEntity; + } + + private BlockState getBlockState(BlockPos blockPos) { + return adapter.adapt(this.editSession.getBlock(BlockVector3.at(blockPos.getX(), blockPos.getY(), blockPos.getZ()))); + } + + private boolean setBlock(BlockPos blockPos, BlockState blockState) { + try { + return editSession.setBlock(BlockVector3.at(blockPos.getX(), blockPos.getY(), blockPos.getZ()), adapter.adapt(blockState)); + } catch (MaxChangedBlocksException e) { + throw new RuntimeException(e); + } + } + + private boolean removeBlock(BlockPos blockPos, boolean bl) { + try { + return editSession.setBlock(BlockVector3.at(blockPos.getX(), blockPos.getY(), blockPos.getZ()), BlockTypes.AIR.getDefaultState()); + } catch (MaxChangedBlocksException e) { + throw new RuntimeException(e); + } + } + + private boolean addEntity(Entity entity) { + Vec3 pos = entity.getPosition(0.0f); + Location location = new Location(BukkitAdapter.adapt(serverLevel.getWorld()), pos.x(), pos.y(), pos.z()); + + ResourceLocation id = serverLevel.registryAccess().registryOrThrow(Registries.ENTITY_TYPE).getKey(entity.getType()); + CompoundTag tag = new CompoundTag(); + entity.saveWithoutId(tag); + BaseEntity baseEntity = new BaseEntity(EntityTypes.get(id.toString()), LazyReference.from(() -> (LinCompoundTag) adapter.toNative(tag))); + + return editSession.createEntity(location, baseEntity) != null; + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + switch (method.getName()) { + case "a_", "getBlockState", "addFreshEntityWithPassengers" -> { + if (args.length == 1 && args[0] instanceof BlockPos blockPos) { + // getBlockState + return getBlockState(blockPos); + } else if (args.length >= 1 && args[0] instanceof Entity entity) { + // addFreshEntityWithPassengers + return addEntity(entity); + } + } + case "c_", "getBlockEntity" -> { + if (args.length == 1 && args[0] instanceof BlockPos blockPos) { + // getBlockEntity + return getBlockEntity(blockPos); + } + } + case "a", "setBlock", "removeBlock", "destroyBlock" -> { + if (args.length >= 2 && args[0] instanceof BlockPos blockPos && args[1] instanceof BlockState blockState) { + // setBlock + return setBlock(blockPos, blockState); + } else if (args.length >= 2 && args[0] instanceof BlockPos blockPos && args[1] instanceof Boolean bl) { + // removeBlock (and also matches destroyBlock) + return removeBlock(blockPos, bl); + } + } + case "j", "addEntity", "addFreshEntity" -> { + if (args.length >= 1 && args[0] instanceof Entity entity) { + return addEntity(entity); + } + } + default -> { } + } + + return method.invoke(this.serverLevel, args); + } + +} diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightWorldNativeAccess.java new file mode 100644 index 0000000000..33096e005d --- /dev/null +++ b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightWorldNativeAccess.java @@ -0,0 +1,186 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.sk89q.worldedit.bukkit.adapter.impl.v1_20_R4; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.internal.block.BlockStateIdAccess; +import com.sk89q.worldedit.internal.wna.WorldNativeAccess; +import com.sk89q.worldedit.util.SideEffect; +import com.sk89q.worldedit.util.SideEffectSet; +import com.sk89q.worldedit.world.block.BlockState; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.Tag; +import net.minecraft.server.level.FullChunkStatus; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.chunk.LevelChunk; +import org.bukkit.craftbukkit.CraftWorld; +import org.bukkit.craftbukkit.block.data.CraftBlockData; +import org.bukkit.event.block.BlockPhysicsEvent; +import org.enginehub.linbus.tree.LinCompoundTag; + +import java.lang.ref.WeakReference; +import java.util.Objects; +import javax.annotation.Nullable; + +public class PaperweightWorldNativeAccess implements WorldNativeAccess { + private static final int UPDATE = 1; + private static final int NOTIFY = 2; + + private final PaperweightAdapter adapter; + private final WeakReference world; + private SideEffectSet sideEffectSet; + + public PaperweightWorldNativeAccess(PaperweightAdapter adapter, WeakReference world) { + this.adapter = adapter; + this.world = world; + } + + private ServerLevel getWorld() { + return Objects.requireNonNull(world.get(), "The reference to the world was lost"); + } + + @Override + public void setCurrentSideEffectSet(SideEffectSet sideEffectSet) { + this.sideEffectSet = sideEffectSet; + } + + @Override + public LevelChunk getChunk(int x, int z) { + return getWorld().getChunk(x, z); + } + + @Override + public net.minecraft.world.level.block.state.BlockState toNative(BlockState state) { + int stateId = BlockStateIdAccess.getBlockStateId(state); + return BlockStateIdAccess.isValidInternalId(stateId) + ? Block.stateById(stateId) + : ((CraftBlockData) BukkitAdapter.adapt(state)).getState(); + } + + @Override + public net.minecraft.world.level.block.state.BlockState getBlockState(LevelChunk chunk, BlockPos position) { + return chunk.getBlockState(position); + } + + @Nullable + @Override + public net.minecraft.world.level.block.state.BlockState setBlockState(LevelChunk chunk, BlockPos position, net.minecraft.world.level.block.state.BlockState state) { + return chunk.setBlockState(position, state, false, this.sideEffectSet.shouldApply(SideEffect.UPDATE)); + } + + @Override + public net.minecraft.world.level.block.state.BlockState getValidBlockForPosition(net.minecraft.world.level.block.state.BlockState block, BlockPos position) { + return Block.updateFromNeighbourShapes(block, getWorld(), position); + } + + @Override + public BlockPos getPosition(int x, int y, int z) { + return new BlockPos(x, y, z); + } + + @Override + public void updateLightingForBlock(BlockPos position) { + getWorld().getChunkSource().getLightEngine().checkBlock(position); + } + + @Override + public boolean updateTileEntity(BlockPos position, LinCompoundTag tag) { + // We will assume that the tile entity was created for us + BlockEntity tileEntity = getWorld().getBlockEntity(position); + if (tileEntity == null) { + return false; + } + Tag nativeTag = adapter.fromNative(tag); + PaperweightAdapter.readTagIntoTileEntity((net.minecraft.nbt.CompoundTag) nativeTag, tileEntity); + return true; + } + + @Override + public void notifyBlockUpdate(LevelChunk chunk, BlockPos position, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + if (chunk.getSections()[getWorld().getSectionIndex(position.getY())] != null) { + getWorld().sendBlockUpdated(position, oldState, newState, UPDATE | NOTIFY); + } + } + + @Override + public boolean isChunkTicking(LevelChunk chunk) { + return chunk.getFullStatus().isOrAfter(FullChunkStatus.BLOCK_TICKING); + } + + @Override + public void markBlockChanged(LevelChunk chunk, BlockPos position) { + if (chunk.getSections()[getWorld().getSectionIndex(position.getY())] != null) { + getWorld().getChunkSource().blockChanged(position); + } + } + + @Override + public void notifyNeighbors(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + ServerLevel world = getWorld(); + if (sideEffectSet.shouldApply(SideEffect.EVENTS)) { + world.updateNeighborsAt(pos, oldState.getBlock()); + } else { + // When we don't want events, manually run the physics without them. + Block block = oldState.getBlock(); + fireNeighborChanged(pos, world, block, pos.west()); + fireNeighborChanged(pos, world, block, pos.east()); + fireNeighborChanged(pos, world, block, pos.below()); + fireNeighborChanged(pos, world, block, pos.above()); + fireNeighborChanged(pos, world, block, pos.north()); + fireNeighborChanged(pos, world, block, pos.south()); + } + if (newState.hasAnalogOutputSignal()) { + world.updateNeighbourForOutputSignal(pos, newState.getBlock()); + } + } + + @Override + public void updateBlock(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + ServerLevel world = getWorld(); + newState.onPlace(world, pos, oldState, false); + } + + private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { + world.getBlockState(neighborPos).handleNeighborChanged(world, neighborPos, block, pos, false); + } + + @Override + public void updateNeighbors(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState, int recursionLimit) { + ServerLevel world = getWorld(); + oldState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); + if (sideEffectSet.shouldApply(SideEffect.EVENTS)) { + CraftWorld craftWorld = world.getWorld(); + BlockPhysicsEvent event = new BlockPhysicsEvent(craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), CraftBlockData.fromData(newState)); + world.getCraftServer().getPluginManager().callEvent(event); + if (event.isCancelled()) { + return; + } + } + newState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); + newState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); + } + + @Override + public void onBlockStateChange(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { + getWorld().onBlockStateChange(pos, oldState, newState); + } +} From 53b182fecf53e7ca0c18004fd0e8d854e871feae Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Sun, 28 Apr 2024 14:27:03 +1000 Subject: [PATCH 15/23] Update for NeoForge tick event refactor --- worldedit-neoforge/build.gradle.kts | 2 +- .../com/sk89q/worldedit/neoforge/ThreadSafeCache.java | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts index 8b3b1f76eb..4460a66889 100644 --- a/worldedit-neoforge/build.gradle.kts +++ b/worldedit-neoforge/build.gradle.kts @@ -13,7 +13,7 @@ val minecraftVersion = "1.20.5" val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val neoVersion = "20.5.0-beta" +val neoVersion = "20.5.16-beta" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true diff --git a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java index 9fae482670..a61c281a33 100644 --- a/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java +++ b/worldedit-neoforge/src/main/java/com/sk89q/worldedit/neoforge/ThreadSafeCache.java @@ -22,7 +22,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.neoforged.bus.api.SubscribeEvent; -import net.neoforged.neoforge.event.TickEvent; +import net.neoforged.neoforge.event.tick.ServerTickEvent; import net.neoforged.neoforge.server.ServerLifecycleHooks; import java.util.Collections; @@ -51,11 +51,7 @@ public Set getOnlineIds() { } @SubscribeEvent - public void tickStart(TickEvent.ServerTickEvent event) { - if (event.phase != TickEvent.Phase.END) { - return; - } - + public void onEndTick(ServerTickEvent.Post event) { long now = System.currentTimeMillis(); if (now - lastRefresh > REFRESH_DELAY) { From e5fe510126e5ff261faf459ffdee7eef56941455 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Sun, 28 Apr 2024 18:00:33 -0700 Subject: [PATCH 16/23] Clean up leftover Forge verification --- verification/build.gradle.kts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/verification/build.gradle.kts b/verification/build.gradle.kts index 54872941cc..0024ee1b16 100644 --- a/verification/build.gradle.kts +++ b/verification/build.gradle.kts @@ -134,8 +134,3 @@ tasks.named("checkFabricApiCompatibility") { // Need to check against the reobf JAR newClasspath.setFrom(project(":worldedit-fabric").tasks.named("remapJar")) } -//tasks.named("checkForgeApiCompatibility") { -// // Need to check against the reobf JAR -// newClasspath.builtBy(project(":worldedit-neoforge").tasks.named("reobfJar")) -//} -"" From b6aabb03fbbd265ff51b4b2289015a2aa35e9b64 Mon Sep 17 00:00:00 2001 From: Madeline Miller Date: Tue, 30 Apr 2024 22:13:01 +1000 Subject: [PATCH 17/23] [Bukkit] Allow loading on 1.20.6 --- .../bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java index c20b5a9749..ca3ec0d9b2 100644 --- a/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1.20.5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_20_R4/PaperweightAdapter.java @@ -217,8 +217,8 @@ public PaperweightAdapter() throws NoSuchFieldException, NoSuchMethodException { CraftServer.class.cast(Bukkit.getServer()); int dataVersion = CraftMagicNumbers.INSTANCE.getDataVersion(); - if (dataVersion != 3837) { - throw new UnsupportedClassVersionError("Not 1.20.5!"); + if (dataVersion != 3837 && dataVersion != 3839) { + throw new UnsupportedClassVersionError("Not 1.20.(5/6)!"); } serverWorldsField = CraftServer.class.getDeclaredField("worlds"); From 4a48dcb3940415e5a04ed0f4f95207ca492270ca Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 29 Apr 2024 01:23:07 -0700 Subject: [PATCH 18/23] Move all versions to version catalogs --- build.gradle.kts | 2 +- buildSrc/build.gradle.kts | 42 ++---- buildSrc/settings.gradle.kts | 9 ++ buildSrc/src/main/kotlin/AdapterConfig.kt | 2 +- buildSrc/src/main/kotlin/CommonConfig.kt | 37 ++--- buildSrc/src/main/kotlin/CommonJavaConfig.kt | 14 +- buildSrc/src/main/kotlin/GradleExtras.kt | 16 ++ buildSrc/src/main/kotlin/LibsConfig.kt | 18 ++- buildSrc/src/main/kotlin/Versions.kt | 24 --- gradle.properties | 3 - gradle/libs.versions.toml | 149 +++++++++++++++++++ worldedit-bukkit/build.gradle.kts | 26 ++-- worldedit-cli/build.gradle.kts | 16 +- worldedit-core/build.gradle.kts | 58 ++++---- worldedit-core/doctools/build.gradle.kts | 2 +- worldedit-fabric/build.gradle.kts | 23 ++- worldedit-libs/bukkit/build.gradle.kts | 2 +- worldedit-libs/core/ap/build.gradle.kts | 4 +- worldedit-libs/core/build.gradle.kts | 23 +-- worldedit-neoforge/build.gradle.kts | 15 +- worldedit-sponge/build.gradle.kts | 4 - 21 files changed, 309 insertions(+), 180 deletions(-) create mode 100644 buildSrc/settings.gradle.kts delete mode 100644 buildSrc/src/main/kotlin/Versions.kt create mode 100644 gradle/libs.versions.toml diff --git a/build.gradle.kts b/build.gradle.kts index f273c9701e..939ab60971 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,7 +10,7 @@ buildscript { } } dependencies { - classpath("net.fabricmc:fabric-loom:${versions.loom}") + classpath(libs.fabric.loom) } } plugins { diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 3b4300289d..f277a4f592 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -1,5 +1,3 @@ -import java.util.Properties - plugins { `kotlin-dsl` } @@ -25,49 +23,33 @@ repositories { name = "Fabric" url = uri("https://maven.fabricmc.net/") } - maven { - name = "sponge" - url = uri("https://repo.spongepowered.org/maven") - } maven { name = "EngineHub Repository" url = uri("https://maven.enginehub.org/repo/") } } -val properties = Properties().also { props -> - project.projectDir.resolveSibling("gradle.properties").bufferedReader().use { - props.load(it) - } -} -val loomVersion: String = properties.getProperty("loom.version") -val mixinVersion: String = properties.getProperty("mixin.version") - dependencies { implementation(gradleApi()) - implementation("gradle.plugin.org.cadixdev.gradle:licenser:0.6.1") - implementation("org.ajoberstar.grgit:grgit-gradle:5.2.2") - implementation("me.champeau.gradle:japicmp-gradle-plugin:0.4.2") - implementation("com.github.johnrengelman:shadow:8.1.1") - implementation("org.jfrog.buildinfo:build-info-extractor-gradle:5.2.0") - implementation("org.spongepowered:spongegradle-plugin-development:2.2.0") - implementation("org.spongepowered:vanillagradle:0.2.1-20231105.223944-69") - val neoGradleVersion = "7.0.107" - implementation("net.neoforged.gradle:userdev:$neoGradleVersion") - implementation("net.neoforged.gradle:mixin:$neoGradleVersion") - implementation("net.fabricmc:fabric-loom:$loomVersion") - implementation("net.fabricmc:sponge-mixin:$mixinVersion") - implementation("org.enginehub.gradle:gradle-codecov-plugin:0.2.0") - implementation("io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.6.0") + implementation(libs.licenser) + implementation(libs.grgit) + implementation(libs.japicmp) + implementation(libs.shadow) + implementation(libs.jfrog.buildinfo) + implementation(libs.neoGradle.userdev) + implementation(libs.fabric.loom) + implementation(libs.fabric.mixin) + implementation(libs.codecov) + implementation(libs.paperweight) constraints { - val asmVersion = "[9.7,)" + val asmVersion = "[${libs.versions.minimumAsm.get()},)" implementation("org.ow2.asm:asm:$asmVersion") { because("Need Java 21 support in shadow") } implementation("org.ow2.asm:asm-commons:$asmVersion") { because("Need Java 21 support in shadow") } - implementation("org.vafer:jdependency:[2.10,)") { + implementation("org.vafer:jdependency:[${libs.versions.minimumJdependency.get()},)") { because("Need Java 21 support in shadow") } } diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts new file mode 100644 index 0000000000..aa5e146f1c --- /dev/null +++ b/buildSrc/settings.gradle.kts @@ -0,0 +1,9 @@ +dependencyResolutionManagement { + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" diff --git a/buildSrc/src/main/kotlin/AdapterConfig.kt b/buildSrc/src/main/kotlin/AdapterConfig.kt index c940cb51d4..240a623d29 100644 --- a/buildSrc/src/main/kotlin/AdapterConfig.kt +++ b/buildSrc/src/main/kotlin/AdapterConfig.kt @@ -17,7 +17,7 @@ fun Project.applyPaperweightAdapterConfiguration(javaRelease: Int = 21) { dependencies { "implementation"(project(":worldedit-bukkit")) constraints { - "remapper"("net.fabricmc:tiny-remapper:[0.8.11,)") { + "remapper"("net.fabricmc:tiny-remapper:[${stringyLibs.getVersion("minimumTinyRemapper")},)") { because("Need remapper to support Java 21") } } diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index 6f3faa8018..176ac48389 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -1,13 +1,13 @@ +import groovy.lang.Closure import org.cadixdev.gradle.licenser.LicenseExtension import org.gradle.api.Project +import org.gradle.api.artifacts.Dependency +import org.gradle.api.artifacts.ExternalModuleDependency import org.gradle.api.plugins.JavaPluginExtension import org.gradle.jvm.toolchain.JavaLanguageVersion -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.repositories -import org.gradle.kotlin.dsl.the +import org.gradle.kotlin.dsl.* import org.gradle.plugins.ide.idea.model.IdeaModel +import java.util.concurrent.TimeUnit fun Project.applyCommonConfiguration() { group = rootProject.group @@ -30,7 +30,7 @@ fun Project.applyCommonConfiguration() { configurations.all { resolutionStrategy { - cacheChangingModulesFor(5, "MINUTES") + cacheChangingModulesFor(1, TimeUnit.DAYS) } } @@ -41,22 +41,23 @@ fun Project.applyCommonConfiguration() { } dependencies { - constraints { - for (conf in configurations) { - if (conf.isCanBeConsumed || conf.isCanBeResolved) { - // dependencies don't get declared in these - continue - } - add(conf.name, "com.google.guava:guava") { - version { require(Versions.GUAVA) } + for (conf in listOf("implementation", "api")) { + if (!configurations.names.contains(conf)) { + continue + } + add(conf, enforcedPlatform(stringyLibs.getLibrary("log4j-bom")).map { + val dep = create(it) + dep.because("Mojang provides Log4j") + dep + }) + constraints { + add(conf, stringyLibs.getLibrary("guava")) { because("Mojang provides Guava") } - add(conf.name, "com.google.code.gson:gson") { - version { require(Versions.GSON) } + add(conf, stringyLibs.getLibrary("gson")) { because("Mojang provides Gson") } - add(conf.name, "it.unimi.dsi:fastutil") { - version { require(Versions.FAST_UTIL) } + add(conf, stringyLibs.getLibrary("fastutil")) { because("Mojang provides FastUtil") } } diff --git a/buildSrc/src/main/kotlin/CommonJavaConfig.kt b/buildSrc/src/main/kotlin/CommonJavaConfig.kt index 5df3fb4f20..3c58b86ead 100644 --- a/buildSrc/src/main/kotlin/CommonJavaConfig.kt +++ b/buildSrc/src/main/kotlin/CommonJavaConfig.kt @@ -43,12 +43,14 @@ fun Project.applyCommonJavaConfiguration(sourcesJar: Boolean, javaRelease: Int = } dependencies { - "compileOnly"("com.google.code.findbugs:jsr305:3.0.2") - "testImplementation"("org.junit.jupiter:junit-jupiter-api:${Versions.JUNIT}") - "testImplementation"("org.junit.jupiter:junit-jupiter-params:${Versions.JUNIT}") - "testImplementation"("org.mockito:mockito-core:${Versions.MOCKITO}") - "testImplementation"("org.mockito:mockito-junit-jupiter:${Versions.MOCKITO}") - "testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:${Versions.JUNIT}") + "compileOnly"(stringyLibs.getLibrary("jsr305")) + "testImplementation"(platform(stringyLibs.getLibrary("junit-bom"))) + "testImplementation"(stringyLibs.getLibrary("junit-jupiter-api")) + "testImplementation"(stringyLibs.getLibrary("junit-jupiter-params")) + "testImplementation"(platform(stringyLibs.getLibrary("mockito-bom"))) + "testImplementation"(stringyLibs.getLibrary("mockito-core")) + "testImplementation"(stringyLibs.getLibrary("mockito-junit-jupiter")) + "testRuntimeOnly"(stringyLibs.getLibrary("junit-jupiter-engine")) } // Java 8 turns on doclint which we fail diff --git a/buildSrc/src/main/kotlin/GradleExtras.kt b/buildSrc/src/main/kotlin/GradleExtras.kt index beedf16078..e6d1fa3c66 100644 --- a/buildSrc/src/main/kotlin/GradleExtras.kt +++ b/buildSrc/src/main/kotlin/GradleExtras.kt @@ -1,6 +1,11 @@ import org.gradle.api.Project +import org.gradle.api.artifacts.MinimalExternalModuleDependency +import org.gradle.api.artifacts.VersionCatalog +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.api.artifacts.VersionConstraint import org.gradle.api.plugins.ExtraPropertiesExtension import org.gradle.api.plugins.JavaPluginExtension +import org.gradle.api.provider.Provider import org.gradle.api.tasks.SourceSetContainer import org.gradle.kotlin.dsl.getByType import org.gradle.kotlin.dsl.the @@ -10,3 +15,14 @@ val Project.ext: ExtraPropertiesExtension val Project.sourceSets: SourceSetContainer get() = the().sourceSets + +val Project.stringyLibs: VersionCatalog + get() = extensions.getByType().named("libs") + +fun VersionCatalog.getLibrary(name: String): Provider = findLibrary(name).orElseThrow { + error("Library $name not found in version catalog") +} + +fun VersionCatalog.getVersion(name: String): VersionConstraint = findVersion(name).orElseThrow { + error("Version $name not found in version catalog") +} diff --git a/buildSrc/src/main/kotlin/LibsConfig.kt b/buildSrc/src/main/kotlin/LibsConfig.kt index 9c112d3a47..90caecaba8 100644 --- a/buildSrc/src/main/kotlin/LibsConfig.kt +++ b/buildSrc/src/main/kotlin/LibsConfig.kt @@ -71,11 +71,19 @@ fun Project.applyLibrariesConfiguration() { .filterIsInstance() .map { it.copy() } .map { dependency -> - dependency.artifact { - name = dependency.name - type = artifactType - extension = "jar" - classifier = artifactType + val category = dependency.attributes.getAttribute(Category.CATEGORY_ATTRIBUTE)?.name + if (category == Category.REGULAR_PLATFORM || category == Category.ENFORCED_PLATFORM) { + return@map dependency + } + try { + dependency.artifact { + name = dependency.name + type = artifactType + extension = "jar" + classifier = artifactType + } + } catch (e: Exception) { + throw RuntimeException("Failed to add artifact to dependency: $dependency", e) } dependency } diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt deleted file mode 100644 index c17780708c..0000000000 --- a/buildSrc/src/main/kotlin/Versions.kt +++ /dev/null @@ -1,24 +0,0 @@ -import org.gradle.api.Project - -object Versions { - const val TEXT = "3.0.4" - const val TEXT_EXTRAS = "3.0.6" - const val PISTON = "0.5.10" - const val AUTO_VALUE = "1.10.4" - const val JUNIT = "5.10.2" - const val MOCKITO = "5.11.0" - const val FAST_UTIL = "8.5.12" - const val GUAVA = "32.1.3-jre" - const val GSON = "2.10.1" - const val LOG4J = "2.22.1" - const val LIN_BUS = "0.1.0-SNAPSHOT" -} - -// Properties that need a project reference to resolve: -class ProjectVersions(project: Project) { - val loom = project.rootProject.property("loom.version") - val mixin = project.rootProject.property("mixin.version") -} - -val Project.versions - get() = ProjectVersions(this) diff --git a/gradle.properties b/gradle.properties index d0ac11716d..b0002ffc26 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,6 +3,3 @@ version=7.3.1-SNAPSHOT org.gradle.jvmargs=-Xmx1G org.gradle.parallel=true - -loom.version=1.6.9 -mixin.version=0.13.3+mixin.0.8.5 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000000..d5400084c6 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,149 @@ +[versions] +neoGradle = "7.0.107" + +kyoriText = "3.0.4" +piston = "0.5.10" +autoValue = "1.10.4" +antlr = "4.13.1" + +fabric-api = "0.97.6+1.20.5" + +neoforge-minecraft = "1.20.5" + +# https://parchmentmc.org/docs/getting-started; note that we use older MC versions some times which is OK +parchment-minecraft = "1.20.4" +parchment-mappings = "2024.04.14" + +# Minimum versions we apply to make dependencies support newer Java +minimumAsm = "9.7" +minimumJdependency = "2.10" +minimumTinyRemapper = "0.8.11" + +lang-worldeditBase = "7.3.1" +lang-version = "1309" + +[libraries] +licenser = "gradle.plugin.org.cadixdev.gradle:licenser:0.6.1" +grgit = "org.ajoberstar.grgit:grgit-gradle:5.2.2" +japicmp = "me.champeau.gradle:japicmp-gradle-plugin:0.4.2" +shadow = "com.github.johnrengelman:shadow:8.1.1" +jfrog-buildinfo = "org.jfrog.buildinfo:build-info-extractor-gradle:5.2.0" + +fabric-loom = "net.fabricmc:fabric-loom:1.6.9" +fabric-mixin = "net.fabricmc:sponge-mixin:0.13.3+mixin.0.8.5" + +codecov = "org.enginehub.gradle:gradle-codecov-plugin:0.2.0" +paperweight = "io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.6.0" + +linBus-bom = "org.enginehub.lin-bus:lin-bus-bom:0.1.0-SNAPSHOT" +linBus-common.module = "org.enginehub.lin-bus:lin-bus-common" +linBus-stream.module = "org.enginehub.lin-bus:lin-bus-stream" +linBus-tree.module = "org.enginehub.lin-bus:lin-bus-tree" +linBus-format-snbt.module = "org.enginehub.lin-bus.format:lin-bus-format-snbt" + +autoService = "com.google.auto.service:auto-service:1.1.1" + +jsr305 = "com.google.code.findbugs:jsr305:3.0.2" +jetbrains-annotations = "org.jetbrains:annotations:24.1.0" +errorprone-annotations = "com.google.errorprone:error_prone_annotations:2.11.0" + +junit-bom = "org.junit:junit-bom:5.10.2" +junit-jupiter-api.module = "org.junit.jupiter:junit-jupiter-api" +junit-jupiter-params.module = "org.junit.jupiter:junit-jupiter-params" +junit-jupiter-engine.module = "org.junit.jupiter:junit-jupiter-engine" + +mockito-bom = "org.mockito:mockito-bom:5.11.0" +mockito-core.module = "org.mockito:mockito-core" +mockito-junit-jupiter.module = "org.mockito:mockito-junit-jupiter" + +commonsCli = "commons-cli:commons-cli:1.4" + +spigot = "org.spigotmc:spigot-api:1.20.1-R0.1-20230921.163938-66" +paperApi = "io.papermc.paper:paper-api:1.20.1-R0.1-20230921.165944-178" +paperLib = "io.papermc:paperlib:1.0.7" + +dummypermscompat = "com.sk89q:dummypermscompat:1.10" +bstats-bukkit = "org.bstats:bstats-bukkit:2.2.1" + +trueZip = "de.schlichtherle:truezip:6.8.4" +rhino = "org.mozilla:rhino-runtime:1.7.13" +jchronic = "com.sk89q:jchronic:0.2.4a" +jlibnoise = "com.sk89q.lib:jlibnoise:1.0.0" + +fabric-minecraft = "com.mojang:minecraft:1.20.5" +fabric-loader = "net.fabricmc:fabric-loader:0.15.10" +fabric-permissions-api = "me.lucko:fabric-permissions-api:0.1-SNAPSHOT" + +neoforge = "net.neoforged:neoforge:20.5.16-beta" + +# Mojang-provided libraries, CHECK AGAINST MINECRAFT for versions +guava = "com.google.guava:guava:32.1.3-jre!!" +log4j-bom = "org.apache.logging.log4j:log4j-bom:2.22.1!!" +log4j-api.module = "org.apache.logging.log4j:log4j-api" +log4j-core.module = "org.apache.logging.log4j:log4j-core" +gson = "com.google.code.gson:gson:2.10.1!!" +fastutil = "it.unimi.dsi:fastutil:8.5.12!!" + +# Bukkit-provided libraries, CHECK AGAINST SPIGOT for versions +# Note that we need to balance support for older MC versus working at all on newer ones, so the exact versions here +# may not be the same as the ones in the latest Bukkit API. +snakeyaml = "org.yaml:snakeyaml:2.0" + +[libraries.neoGradle-userdev] +module = "net.neoforged.gradle:userdev" +version.ref = "neoGradle" + +[libraries.kyoriText-api] +module = "net.kyori:text-api" +version.ref = "kyoriText" + +[libraries.kyoriText-serializer-gson] +module = "net.kyori:text-serializer-gson" +version.ref = "kyoriText" + +[libraries.kyoriText-serializer-legacy] +module = "net.kyori:text-serializer-legacy" +version.ref = "kyoriText" + +[libraries.kyoriText-serializer-plain] +module = "net.kyori:text-serializer-plain" +version.ref = "kyoriText" + +[libraries.kyoriText-adapter-bukkit] +module = "net.kyori:text-adapter-bukkit" +version = "3.0.6" + +[libraries.piston-core] +module = "org.enginehub.piston:core" +version.ref = "piston" + +[libraries.piston-defaultImpl] +module = "org.enginehub.piston:default-impl" +version.ref = "piston" + +[libraries.piston-coreAp-annotations] +module = "org.enginehub.piston.core-ap:annotations" +version.ref = "piston" + +[libraries.piston-coreAp-processor] +module = "org.enginehub.piston.core-ap:processor" +version.ref = "piston" + +[libraries.piston-coreAp-runtime] +module = "org.enginehub.piston.core-ap:runtime" +version.ref = "piston" + +[libraries.autoValue] +module = "com.google.auto.value:auto-value" +version.ref = "autoValue" + +[libraries.autoValue-annotations] +module = "com.google.auto.value:auto-value-annotations" +version.ref = "autoValue" + +[libraries.antlr4] +module = "org.antlr:antlr4" +version.ref = "antlr" + +[libraries.antlr4-runtime] +module = "org.antlr:antlr4-runtime" diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index 9f8a9dc15a..b2ac1b362f 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -42,25 +42,29 @@ dependencies { "api"(project(":worldedit-libs:bukkit")) // Technically this is api, but everyone should already have some form of the bukkit API // Avoid pulling in another one, especially one so outdated. - "localImplementation"("org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT") { + "localImplementation"(libs.spigot) { exclude("junit", "junit") } - "localImplementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { + "localImplementation"(platform(libs.log4j.bom)) { because("Spigot provides Log4J (sort of, not in API, implicitly part of server)") - }) - "localImplementation"("org.apache.logging.log4j:log4j-api") + } + "localImplementation"(libs.log4j.api) - "compileOnly"("org.jetbrains:annotations:20.1.0") - "compileOnly"("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT") { + "compileOnly"(libs.jetbrains.annotations) { + because("Resolving Spigot annotations") + } + "testCompileOnly"(libs.jetbrains.annotations) { + because("Resolving Spigot annotations") + } + "compileOnly"(libs.paperApi) { exclude("org.slf4j", "slf4j-api") exclude("junit", "junit") } - "implementation"("io.papermc:paperlib:1.0.7") - "compileOnly"("com.sk89q:dummypermscompat:1.10") - "implementation"("org.bstats:bstats-bukkit:2.2.1") - "implementation"("it.unimi.dsi:fastutil") - "testImplementation"("org.mockito:mockito-core:1.9.0-rc1") + "implementation"(libs.paperLib) + "compileOnly"(libs.dummypermscompat) + "implementation"(libs.bstats.bukkit) + "implementation"(libs.fastutil) project.project(":worldedit-bukkit:adapters").subprojects.forEach { "adapters"(project(it.path)) diff --git a/worldedit-cli/build.gradle.kts b/worldedit-cli/build.gradle.kts index 718bc608aa..d830726ba9 100644 --- a/worldedit-cli/build.gradle.kts +++ b/worldedit-cli/build.gradle.kts @@ -17,16 +17,14 @@ addJarManifest( dependencies { "compileOnly"(project(":worldedit-libs:core:ap")) "annotationProcessor"(project(":worldedit-libs:core:ap")) - "annotationProcessor"("com.google.guava:guava:${Versions.GUAVA}") + "annotationProcessor"(libs.guava) "api"(project(":worldedit-core")) - "implementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { - because("We control Log4J on this platform") - }) - "implementation"("org.apache.logging.log4j:log4j-api") - "implementation"("org.apache.logging.log4j:log4j-core") - "implementation"("commons-cli:commons-cli:1.4") - "implementation"("com.google.guava:guava") - "implementation"("com.google.code.gson:gson") + "implementation"(platform(libs.log4j.bom)) + "implementation"(libs.log4j.api) + "implementation"(libs.log4j.core) + "implementation"(libs.commonsCli) + "implementation"(libs.guava) + "implementation"(libs.gson) } tasks.named("shadowJar") { diff --git a/worldedit-core/build.gradle.kts b/worldedit-core/build.gradle.kts index 96f859cba5..4d03138672 100644 --- a/worldedit-core/build.gradle.kts +++ b/worldedit-core/build.gradle.kts @@ -28,53 +28,53 @@ configurations { dependencies { constraints { - "implementation"( "org.yaml:snakeyaml") { - version { require("2.0") } + "implementation"(libs.snakeyaml) { because("Bukkit provides SnakeYaml") } } "api"(project(":worldedit-libs:core")) - "compileOnly"("de.schlichtherle:truezip:6.8.4") - "implementation"("org.mozilla:rhino-runtime:1.7.13") - "implementation"("org.yaml:snakeyaml:2.0") - "implementation"("com.google.guava:guava") - "compileOnlyApi"("com.google.code.findbugs:jsr305:1.3.9") - "implementation"("com.google.code.gson:gson") - - "implementation"("com.sk89q:jchronic:0.2.4a") { + "compileOnly"(libs.trueZip) + "implementation"(libs.rhino) + "implementation"(libs.snakeyaml) + "implementation"(libs.guava) + "compileOnlyApi"(libs.jsr305) + "implementation"(libs.gson) + + "implementation"(libs.jchronic) { exclude(group = "junit", module = "junit") } - "implementation"("com.thoughtworks.paranamer:paranamer:2.6") - "implementation"("com.sk89q.lib:jlibnoise:1.0.0") - "api"(platform("org.enginehub.lin-bus:lin-bus-bom:${Versions.LIN_BUS}")) - "api"("org.enginehub.lin-bus:lin-bus-tree") - "api"("org.enginehub.lin-bus.format:lin-bus-format-snbt") - - "implementation"("org.apache.logging.log4j:log4j-api:${Versions.LOG4J}") { - because("Mojang provides Log4J") - } + "implementation"(libs.jlibnoise) + + "implementation"(libs.log4j.api) - "implementation"("it.unimi.dsi:fastutil") + "implementation"(libs.fastutil) - val antlrVersion = "4.13.1" - "antlr"("org.antlr:antlr4:$antlrVersion") - "implementation"("org.antlr:antlr4-runtime:$antlrVersion") + "antlr"(libs.antlr4) + "implementation"(libs.antlr4.runtime) "compileOnly"(project(":worldedit-libs:core:ap")) "annotationProcessor"(project(":worldedit-libs:core:ap")) // ensure this is on the classpath for the AP - "annotationProcessor"("com.google.guava:guava:${Versions.GUAVA}") - "compileOnly"("com.google.auto.value:auto-value-annotations:${Versions.AUTO_VALUE}") - "annotationProcessor"("com.google.auto.value:auto-value:${Versions.AUTO_VALUE}") + "annotationProcessor"(libs.guava) + "compileOnly"(libs.autoValue.annotations) + "annotationProcessor"(libs.autoValue) - "compileOnly"("com.google.auto.service:auto-service:1.1.1") { + "compileOnly"(libs.autoService) { because("Needed to resolve annotations in Piston") } + "compileOnly"(libs.jetbrains.annotations) { + because("Needed to resolve annotations in lin-bus") + } + "testCompileOnly"(libs.jetbrains.annotations) { + because("Needed to resolve annotations in lin-bus") + } - "languageFiles"("${project.group}:worldedit-lang:7.3.1:1309@zip") + "languageFiles"( + "${project.group}:worldedit-lang:${libs.versions.lang.worldeditBase.get()}:${libs.versions.lang.version.get()}@zip" + ) - "testRuntimeOnly"("org.apache.logging.log4j:log4j-core:${Versions.LOG4J}") + "testRuntimeOnly"(libs.log4j.core) } tasks.test { diff --git a/worldedit-core/doctools/build.gradle.kts b/worldedit-core/doctools/build.gradle.kts index f51cc415ea..b921ebc72f 100644 --- a/worldedit-core/doctools/build.gradle.kts +++ b/worldedit-core/doctools/build.gradle.kts @@ -15,5 +15,5 @@ dependencies { "implementation"(project(":worldedit-core")) "implementation"(kotlin("stdlib-jdk8")) "implementation"(kotlin("reflect")) - "implementation"("com.google.guava:guava") + "implementation"(libs.guava) } diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index d472aa9e28..28c1dbc83a 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -12,8 +12,6 @@ plugins { applyPlatformAndCoreConfiguration() applyShadowConfiguration() -val minecraftVersion = "1.20.5" - val fabricApiConfiguration: Configuration = configurations.create("fabricApi") configure { @@ -38,13 +36,10 @@ repositories { dependencies { "api"(project(":worldedit-core")) - "implementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { - because("Mojang provides Log4J") - }) - "minecraft"("com.mojang:minecraft:$minecraftVersion") + "minecraft"(libs.fabric.minecraft) "mappings"(project.the().officialMojangMappings()) - "modImplementation"("net.fabricmc:fabric-loader:0.15.10") + "modImplementation"(libs.fabric.loader) // [1] Load the API dependencies from the fabric mod json... @@ -57,25 +52,25 @@ dependencies { .toSet() // [2] Request the matching dependency from fabric-loom for (wantedDependency in wantedDependencies) { - val dep = project.the().module(wantedDependency, "0.97.6+1.20.5") + val dep = project.the().module(wantedDependency, libs.versions.fabric.api.get()) "include"(dep) "modImplementation"(dep) } // No need for this at runtime - "modCompileOnly"("me.lucko:fabric-permissions-api:0.1-SNAPSHOT") + "modCompileOnly"(libs.fabric.permissions.api) // Hook these up manually, because Fabric doesn't seem to quite do it properly. - "compileOnly"("net.fabricmc:sponge-mixin:${project.versions.mixin}") - "annotationProcessor"("net.fabricmc:sponge-mixin:${project.versions.mixin}") - "annotationProcessor"("net.fabricmc:fabric-loom:${project.versions.loom}") + "compileOnly"(libs.fabric.mixin) + "annotationProcessor"(libs.fabric.mixin) + "annotationProcessor"(libs.fabric.loom) // Silence some warnings, since apparently this isn't on the compile classpath like it should be. - "compileOnly"("com.google.errorprone:error_prone_annotations:2.11.0") + "compileOnly"(libs.errorprone.annotations) } configure { - archivesName.set("${project.name}-mc$minecraftVersion") + archivesName.set("${project.name}-mc${libs.fabric.minecraft.get().version}") } configure { diff --git a/worldedit-libs/bukkit/build.gradle.kts b/worldedit-libs/bukkit/build.gradle.kts index a9d1c255e1..d8fb8a56f7 100644 --- a/worldedit-libs/bukkit/build.gradle.kts +++ b/worldedit-libs/bukkit/build.gradle.kts @@ -9,5 +9,5 @@ repositories { } dependencies { - "shade"("net.kyori:text-adapter-bukkit:${Versions.TEXT_EXTRAS}") + "shade"(libs.kyoriText.adapter.bukkit) } diff --git a/worldedit-libs/core/ap/build.gradle.kts b/worldedit-libs/core/ap/build.gradle.kts index a213eec78d..f610613073 100644 --- a/worldedit-libs/core/ap/build.gradle.kts +++ b/worldedit-libs/core/ap/build.gradle.kts @@ -2,6 +2,6 @@ applyLibrariesConfiguration() dependencies { // These are here because they use net.kyori:text-api -- so they need to be relocated too - "shade"("org.enginehub.piston.core-ap:annotations:${Versions.PISTON}") - "shade"("org.enginehub.piston.core-ap:processor:${Versions.PISTON}") + "shade"(libs.piston.coreAp.annotations) + "shade"(libs.piston.coreAp.processor) } diff --git a/worldedit-libs/core/build.gradle.kts b/worldedit-libs/core/build.gradle.kts index a52f840423..abfd84c7ba 100644 --- a/worldedit-libs/core/build.gradle.kts +++ b/worldedit-libs/core/build.gradle.kts @@ -1,17 +1,18 @@ applyLibrariesConfiguration() dependencies { - "shade"("net.kyori:text-api:${Versions.TEXT}") - "shade"("net.kyori:text-serializer-gson:${Versions.TEXT}") - "shade"("net.kyori:text-serializer-legacy:${Versions.TEXT}") - "shade"("net.kyori:text-serializer-plain:${Versions.TEXT}") + "shade"(libs.kyoriText.api) + "shade"(libs.kyoriText.serializer.gson) + "shade"(libs.kyoriText.serializer.legacy) + "shade"(libs.kyoriText.serializer.plain) // These are here because they use net.kyori:text-api -- so they need to be relocated too - "shade"("org.enginehub.piston:core:${Versions.PISTON}") - "shade"("org.enginehub.piston.core-ap:runtime:${Versions.PISTON}") - "shade"("org.enginehub.piston:default-impl:${Versions.PISTON}") + "shade"(libs.piston.core) + "shade"(libs.piston.coreAp.runtime) + "shade"(libs.piston.defaultImpl) // Linbus - "shade"("org.enginehub.lin-bus:lin-bus-common:${Versions.LIN_BUS}") - "shade"("org.enginehub.lin-bus:lin-bus-stream:${Versions.LIN_BUS}") - "shade"("org.enginehub.lin-bus:lin-bus-tree:${Versions.LIN_BUS}") - "shade"("org.enginehub.lin-bus.format:lin-bus-format-snbt:${Versions.LIN_BUS}") + "shade"(platform(libs.linBus.bom)) + "shade"(libs.linBus.common) + "shade"(libs.linBus.stream) + "shade"(libs.linBus.tree) + "shade"(libs.linBus.format.snbt) } diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts index 4460a66889..61213ef54e 100644 --- a/worldedit-neoforge/build.gradle.kts +++ b/worldedit-neoforge/build.gradle.kts @@ -9,11 +9,10 @@ plugins { applyPlatformAndCoreConfiguration() applyShadowConfiguration() -val minecraftVersion = "1.20.5" +val minecraftVersion = libs.versions.neoforge.minecraft.get() val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> "$useless.${major.toInt() + 1}" } -val neoVersion = "20.5.16-beta" val apiClasspath = configurations.create("apiClasspath") { isCanBeResolved = true @@ -40,11 +39,8 @@ repositories { dependencies { "api"(project(":worldedit-core")) - "implementation"(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { - because("Mojang provides Log4J") - }) - "implementation"("net.neoforged:neoforge:$neoVersion") + "implementation"(libs.neoforge) } minecraft { @@ -71,9 +67,8 @@ runs { subsystems { parchment { - // https://parchmentmc.org/docs/getting-started; note that we use older MC versions some times which is OK - minecraftVersion = "1.20.4" - mappingsVersion = "2024.04.14" + minecraftVersion = libs.versions.parchment.minecraft.get() + mappingsVersion = libs.versions.parchment.mappings.get() } decompiler { maxMemory("3G") @@ -95,7 +90,7 @@ tasks.named("processResources") { // this will ensure that this task is redone when the versions change. val properties = mapOf( "version" to project.ext["internalVersion"], - "neoVersion" to neoVersion, + "neoVersion" to libs.neoforge.get().version, "minecraftVersion" to minecraftVersion, "nextMajorMinecraftVersion" to nextMajorMinecraftVersion ) diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts index 3debe99bad..9da479e093 100644 --- a/worldedit-sponge/build.gradle.kts +++ b/worldedit-sponge/build.gradle.kts @@ -51,13 +51,9 @@ dependencies { api(project(":worldedit-core")) api(project(":worldedit-libs:sponge")) - implementation(platform("org.apache.logging.log4j:log4j-bom:${Versions.LOG4J}") { - because("Sponge 8 (will?) provides Log4J") - }) api("org.apache.logging.log4j:log4j-api") implementation("org.bstats:bstats-sponge:3.0.0") implementation("it.unimi.dsi:fastutil") - testImplementation("org.mockito:mockito-core:${Versions.MOCKITO}") // Silence some warnings, since apparently this isn't on the compile classpath like it should be. compileOnly("com.google.errorprone:error_prone_annotations:2.11.0") From ada0a80faae4dfcf67daff189d81d3726045f1d9 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 29 Apr 2024 01:32:12 -0700 Subject: [PATCH 19/23] Use a normal platform for log4j-bom --- buildSrc/src/main/kotlin/CommonConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index 176ac48389..f3354f170f 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -45,7 +45,7 @@ fun Project.applyCommonConfiguration() { if (!configurations.names.contains(conf)) { continue } - add(conf, enforcedPlatform(stringyLibs.getLibrary("log4j-bom")).map { + add(conf, platform(stringyLibs.getLibrary("log4j-bom")).map { val dep = create(it) dep.because("Mojang provides Log4j") dep From 28ca2e6b961179f1c40040af75354dd2d2e81279 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 29 Apr 2024 17:29:02 -0700 Subject: [PATCH 20/23] Clean up Gradle configuration --- {buildSrc => build-logic}/build.gradle.kts | 24 +- {buildSrc => build-logic}/settings.gradle.kts | 0 .../main/kotlin/buildlogic.adapter.gradle.kts | 26 + .../buildlogic.artifactory-root.gradle.kts | 35 + .../buildlogic.artifactory-sub.gradle.kts | 10 + .../kotlin/buildlogic.common-java.gradle.kts | 82 + .../main/kotlin/buildlogic.common.gradle.kts | 68 + .../buildlogic.core-and-platform.gradle.kts | 23 + .../main/kotlin/buildlogic.libs.gradle.kts | 180 ++ .../kotlin/buildlogic.platform.gradle.kts | 53 + .../kotlin/buildlogic/CommonJavaExtension.kt | 7 + .../main/kotlin/buildlogic}/GradleExtras.kt | 2 + .../kotlin/buildlogic/PlatformExtension.kt | 19 + .../japicmp/accept/AbstractAcceptingRule.kt | 0 .../AcceptedRegressionsRulePostProcess.kt | 0 .../japicmp/accept/AcceptingSetupRule.kt | 0 .../kotlin/japicmp/accept/BinaryCompatRule.kt | 0 .../kotlin/japicmp/accept/ChangeParams.kt | 0 .../src/main/kotlin/japicmp/accept/LICENSE.md | 0 .../main/kotlin/japicmp/accept/apichanges.kt | 0 .../main/kotlin/japicmp/accept/userdata.kt | 0 build.gradle.kts | 29 +- buildSrc/src/main/kotlin/AdapterConfig.kt | 29 - buildSrc/src/main/kotlin/ArtifactoryConfig.kt | 43 - buildSrc/src/main/kotlin/CommonConfig.kt | 82 - buildSrc/src/main/kotlin/CommonJavaConfig.kt | 91 - buildSrc/src/main/kotlin/LibsConfig.kt | 214 -- buildSrc/src/main/kotlin/PlatformConfig.kt | 98 - gradle/libs.versions.toml | 13 +- settings.gradle.kts | 21 +- verification/build.gradle.kts | 27 +- .../adapters/adapter-1.18.2/build.gradle.kts | 8 - .../impl/v1_18_R2/PaperweightAdapter.java | 1061 ------- .../v1_18_R2/PaperweightDataConverters.java | 2800 ----------------- .../impl/v1_18_R2/PaperweightFakePlayer.java | 98 - .../PaperweightWorldNativeAccess.java | 189 -- .../adapters/adapter-1.19.4/build.gradle.kts | 4 +- .../adapters/adapter-1.20.2/build.gradle.kts | 4 +- .../adapters/adapter-1.20.4/build.gradle.kts | 4 +- .../adapters/adapter-1.20.5/build.gradle.kts | 4 +- .../adapters/adapter-1.20/build.gradle.kts | 4 +- worldedit-bukkit/build.gradle.kts | 15 +- worldedit-cli/build.gradle.kts | 11 +- worldedit-core/build.gradle.kts | 3 +- worldedit-core/doctools/build.gradle.kts | 3 +- worldedit-fabric/build.gradle.kts | 27 +- worldedit-libs/bukkit/build.gradle.kts | 10 +- worldedit-libs/cli/build.gradle.kts | 4 +- worldedit-libs/core/ap/build.gradle.kts | 4 +- worldedit-libs/core/build.gradle.kts | 4 +- worldedit-libs/fabric/build.gradle.kts | 4 +- worldedit-libs/neoforge/build.gradle.kts | 4 +- worldedit-libs/sponge/build.gradle.kts | 11 - worldedit-mod/build.gradle.kts | 4 +- worldedit-neoforge/build.gradle.kts | 29 +- worldedit-sponge/build.gradle.kts | 81 - .../worldedit/sponge/CUIChannelHandler.java | 67 - .../worldedit/sponge/CommandAdapter.java | 81 - .../com/sk89q/worldedit/sponge/Constants.java | 39 - .../sk89q/worldedit/sponge/SpongeAdapter.java | 249 -- .../worldedit/sponge/SpongeBiomeRegistry.java | 71 - .../sponge/SpongeBlockCategoryRegistry.java | 44 - .../sponge/SpongeBlockCommandSender.java | 183 -- .../worldedit/sponge/SpongeBlockMaterial.java | 96 - .../worldedit/sponge/SpongeBlockRegistry.java | 91 - .../worldedit/sponge/SpongeCommandSender.java | 172 - .../sk89q/worldedit/sponge/SpongeEntity.java | 125 - .../sponge/SpongeEntityProperties.java | 155 - .../sponge/SpongeItemCategoryRegistry.java | 46 - .../worldedit/sponge/SpongeItemRegistry.java | 47 - .../sponge/SpongePermissionsProvider.java | 47 - .../worldedit/sponge/SpongePlatform.java | 200 -- .../sk89q/worldedit/sponge/SpongePlayer.java | 308 -- .../worldedit/sponge/SpongeRegistries.java | 70 - .../worldedit/sponge/SpongeTextAdapter.java | 45 - .../sk89q/worldedit/sponge/SpongeWorld.java | 507 --- .../worldedit/sponge/SpongeWorldEdit.java | 485 --- .../worldedit/sponge/ThreadSafeCache.java | 63 - .../config/ConfigurateConfiguration.java | 149 - .../sponge/config/SpongeConfiguration.java | 62 - .../sponge/internal/ExtendedChunk.java | 43 - .../sponge/internal/LocaleResolver.java | 35 - .../worldedit/sponge/internal/NbtAdapter.java | 272 -- .../sponge/internal/SpongeTransmogrifier.java | 210 -- .../internal/SpongeWorldNativeAccess.java | 159 - 85 files changed, 631 insertions(+), 9056 deletions(-) rename {buildSrc => build-logic}/build.gradle.kts (59%) rename {buildSrc => build-logic}/settings.gradle.kts (100%) create mode 100644 build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.artifactory-root.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.artifactory-sub.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.common.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.core-and-platform.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.libs.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic.platform.gradle.kts create mode 100644 build-logic/src/main/kotlin/buildlogic/CommonJavaExtension.kt rename {buildSrc/src/main/kotlin => build-logic/src/main/kotlin/buildlogic}/GradleExtras.kt (98%) create mode 100644 build-logic/src/main/kotlin/buildlogic/PlatformExtension.kt rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/AbstractAcceptingRule.kt (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/AcceptedRegressionsRulePostProcess.kt (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/AcceptingSetupRule.kt (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/BinaryCompatRule.kt (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/ChangeParams.kt (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/LICENSE.md (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/apichanges.kt (100%) rename {buildSrc => build-logic}/src/main/kotlin/japicmp/accept/userdata.kt (100%) delete mode 100644 buildSrc/src/main/kotlin/AdapterConfig.kt delete mode 100644 buildSrc/src/main/kotlin/ArtifactoryConfig.kt delete mode 100644 buildSrc/src/main/kotlin/CommonConfig.kt delete mode 100644 buildSrc/src/main/kotlin/CommonJavaConfig.kt delete mode 100644 buildSrc/src/main/kotlin/LibsConfig.kt delete mode 100644 buildSrc/src/main/kotlin/PlatformConfig.kt delete mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts delete mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java delete mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java delete mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java delete mode 100644 worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java delete mode 100644 worldedit-libs/sponge/build.gradle.kts delete mode 100644 worldedit-sponge/build.gradle.kts delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCommandSender.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java delete mode 100644 worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java diff --git a/buildSrc/build.gradle.kts b/build-logic/build.gradle.kts similarity index 59% rename from buildSrc/build.gradle.kts rename to build-logic/build.gradle.kts index f277a4f592..7ded3026ea 100644 --- a/buildSrc/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -3,26 +3,7 @@ plugins { } repositories { - maven { - name = "PaperMC" - url = uri("https://repo.papermc.io/repository/maven-public/") - content { - includeGroupAndSubgroups("io.papermc") - } - } - maven { - name = "NeoForged Maven" - url = uri("https://maven.neoforged.net/releases") - content { - includeGroupAndSubgroups("net.neoforged") - } - } - mavenCentral() gradlePluginPortal() - maven { - name = "Fabric" - url = uri("https://maven.fabricmc.net/") - } maven { name = "EngineHub Repository" url = uri("https://maven.enginehub.org/repo/") @@ -36,11 +17,8 @@ dependencies { implementation(libs.japicmp) implementation(libs.shadow) implementation(libs.jfrog.buildinfo) - implementation(libs.neoGradle.userdev) - implementation(libs.fabric.loom) - implementation(libs.fabric.mixin) - implementation(libs.codecov) implementation(libs.paperweight) + implementation(libs.gson) constraints { val asmVersion = "[${libs.versions.minimumAsm.get()},)" implementation("org.ow2.asm:asm:$asmVersion") { diff --git a/buildSrc/settings.gradle.kts b/build-logic/settings.gradle.kts similarity index 100% rename from buildSrc/settings.gradle.kts rename to build-logic/settings.gradle.kts diff --git a/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts b/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts new file mode 100644 index 0000000000..58fce0a239 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.adapter.gradle.kts @@ -0,0 +1,26 @@ +import buildlogic.stringyLibs +import buildlogic.getVersion + +plugins { + `java-library` + id("buildlogic.common") + id("buildlogic.common-java") + id("io.papermc.paperweight.userdev") +} + +configure { + banSlf4j = false +} + +dependencies { + "implementation"(project(":worldedit-bukkit")) + constraints { + "remapper"("net.fabricmc:tiny-remapper:[${stringyLibs.getVersion("minimumTinyRemapper")},)") { + because("Need remapper to support Java 21") + } + } +} + +tasks.named("assemble") { + dependsOn("reobfJar") +} diff --git a/build-logic/src/main/kotlin/buildlogic.artifactory-root.gradle.kts b/build-logic/src/main/kotlin/buildlogic.artifactory-root.gradle.kts new file mode 100644 index 0000000000..c3b4f8310d --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.artifactory-root.gradle.kts @@ -0,0 +1,35 @@ +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.named +import org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention +import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask + +plugins { + id("com.jfrog.artifactory") +} + +val ARTIFACTORY_CONTEXT_URL = "artifactory_contextUrl" +val ARTIFACTORY_USER = "artifactory_user" +val ARTIFACTORY_PASSWORD = "artifactory_password" + +if (!project.hasProperty(ARTIFACTORY_CONTEXT_URL)) ext[ARTIFACTORY_CONTEXT_URL] = "http://localhost" +if (!project.hasProperty(ARTIFACTORY_USER)) ext[ARTIFACTORY_USER] = "guest" +if (!project.hasProperty(ARTIFACTORY_PASSWORD)) ext[ARTIFACTORY_PASSWORD] = "" + +configure { + setContextUrl("${project.property(ARTIFACTORY_CONTEXT_URL)}") + clientConfig.publisher.run { + repoKey = when { + "${project.version}".contains("SNAPSHOT") -> "libs-snapshot-local" + else -> "libs-release-local" + } + username = "${project.property(ARTIFACTORY_USER)}" + password = "${project.property(ARTIFACTORY_PASSWORD)}" + isMaven = true + isIvy = false + } +} + +tasks.named("artifactoryPublish") { + isSkip = true +} diff --git a/build-logic/src/main/kotlin/buildlogic.artifactory-sub.gradle.kts b/build-logic/src/main/kotlin/buildlogic.artifactory-sub.gradle.kts new file mode 100644 index 0000000000..966409761f --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.artifactory-sub.gradle.kts @@ -0,0 +1,10 @@ +plugins { + id("com.jfrog.artifactory") +} + +// Artifactory eagerly evaluates publications, so this must run after all changes to artifacts are done +afterEvaluate { + tasks.named("artifactoryPublish") { + publications("maven") + } +} diff --git a/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts b/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts new file mode 100644 index 0000000000..48387042f5 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts @@ -0,0 +1,82 @@ +import buildlogic.stringyLibs +import buildlogic.getLibrary + +plugins { + id("eclipse") + id("idea") + id("checkstyle") + id("buildlogic.common") +} + +val commonJava = extensions.create("commonJava") +commonJava.banSlf4j.convention(true) + +tasks + .withType() + .matching { it.name == "compileJava" || it.name == "compileTestJava" } + .configureEach { + // TODO: re-enable this-escape when ANTLR suppresses it properly + val disabledLint = listOf( + "processing", "path", "fallthrough", "serial", "overloads", "this-escape", + ) + options.release.set(21) + options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" }) + options.isDeprecation = true + options.encoding = "UTF-8" + options.compilerArgs.add("-parameters") + options.compilerArgs.add("-Werror") + } + +configure { + configFile = rootProject.file("config/checkstyle/checkstyle.xml") + toolVersion = "9.1" +} + +tasks.withType().configureEach { + useJUnitPlatform() +} + +dependencies { + "compileOnly"(stringyLibs.getLibrary("jsr305")) + "testImplementation"(platform(stringyLibs.getLibrary("junit-bom"))) + "testImplementation"(stringyLibs.getLibrary("junit-jupiter-api")) + "testImplementation"(stringyLibs.getLibrary("junit-jupiter-params")) + "testImplementation"(platform(stringyLibs.getLibrary("mockito-bom"))) + "testImplementation"(stringyLibs.getLibrary("mockito-core")) + "testImplementation"(stringyLibs.getLibrary("mockito-junit-jupiter")) + "testRuntimeOnly"(stringyLibs.getLibrary("junit-jupiter-engine")) +} + +// Java 8 turns on doclint which we fail +tasks.withType().configureEach { + options.encoding = "UTF-8" + (options as StandardJavadocDocletOptions).apply { + addBooleanOption("Werror", true) + addBooleanOption("Xdoclint:all", true) + addBooleanOption("Xdoclint:-missing", true) + tags( + "apiNote:a:API Note:", + "implSpec:a:Implementation Requirements:", + "implNote:a:Implementation Note:" + ) + } +} + +configure { + withJavadocJar() + withSourcesJar() +} + +configurations["compileClasspath"].apply { + resolutionStrategy.componentSelection { + withModule("org.slf4j:slf4j-api") { + if (commonJava.banSlf4j.get()) { + reject("No SLF4J allowed on compile classpath") + } + } + } +} + +tasks.named("check").configure { + dependsOn("checkstyleMain", "checkstyleTest") +} diff --git a/build-logic/src/main/kotlin/buildlogic.common.gradle.kts b/build-logic/src/main/kotlin/buildlogic.common.gradle.kts new file mode 100644 index 0000000000..91006dfea0 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.common.gradle.kts @@ -0,0 +1,68 @@ +import buildlogic.getLibrary +import buildlogic.stringyLibs +import org.gradle.plugins.ide.idea.model.IdeaModel + +plugins { + id("org.cadixdev.licenser") +} + +group = rootProject.group +version = rootProject.version + +repositories { + maven { + name = "EngineHub" + url = uri("https://maven.enginehub.org/repo/") + } +} + +configurations.all { + resolutionStrategy { + cacheChangingModulesFor(1, TimeUnit.DAYS) + } +} + +plugins.withId("java") { + the().toolchain { + languageVersion.set(JavaLanguageVersion.of(21)) + } +} + +dependencies { + for (conf in listOf("implementation", "api")) { + if (!configurations.names.contains(conf)) { + continue + } + add(conf, platform(stringyLibs.getLibrary("log4j-bom")).map { + val dep = create(it) + dep.because("Mojang provides Log4j") + dep + }) + constraints { + add(conf, stringyLibs.getLibrary("guava")) { + because("Mojang provides Guava") + } + add(conf, stringyLibs.getLibrary("gson")) { + because("Mojang provides Gson") + } + add(conf, stringyLibs.getLibrary("fastutil")) { + because("Mojang provides FastUtil") + } + } + } +} + +license { + header(rootProject.file("HEADER.txt")) + include("**/*.java") + include("**/*.kt") +} + +plugins.withId("idea") { + configure { + module { + isDownloadSources = true + isDownloadJavadoc = true + } + } +} diff --git a/build-logic/src/main/kotlin/buildlogic.core-and-platform.gradle.kts b/build-logic/src/main/kotlin/buildlogic.core-and-platform.gradle.kts new file mode 100644 index 0000000000..ce369ccec0 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.core-and-platform.gradle.kts @@ -0,0 +1,23 @@ +plugins { + id("java") + id("maven-publish") + id("buildlogic.common-java") + id("buildlogic.artifactory-sub") +} + +ext["internalVersion"] = "$version+${rootProject.ext["gitCommitHash"]}" + +publishing { + publications { + register("maven") { + versionMapping { + usage("java-api") { + fromResolutionOf("runtimeClasspath") + } + usage("java-runtime") { + fromResolutionResult() + } + } + } + } +} diff --git a/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts b/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts new file mode 100644 index 0000000000..653c7d09c2 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.libs.gradle.kts @@ -0,0 +1,180 @@ +plugins { + id("java-base") + id("maven-publish") + id("com.github.johnrengelman.shadow") + id("com.jfrog.artifactory") + id("buildlogic.common") + id("buildlogic.artifactory-sub") +} + +// A horrible hack because `softwareComponentFactory` has to be gotten via plugin +// gradle why +internal open class LibsConfigPluginHack @Inject constructor( + private val softwareComponentFactory: SoftwareComponentFactory +) : Plugin { + override fun apply(project: Project) { + val libsComponents = softwareComponentFactory.adhoc("libs") + project.components.add(libsComponents) + } +} + +configurations { + create("shade") +} + +group = "${rootProject.group}.worldedit-libs" + +val relocations = mapOf( + "net.kyori.text" to "com.sk89q.worldedit.util.formatting.text", + "net.kyori.minecraft" to "com.sk89q.worldedit.util.kyori", +) + +tasks.register("jar") { + configurations = listOf(project.configurations["shade"]) + archiveClassifier.set("") + + // Yeet module-info's + exclude("module-info.class") + + dependencies { + exclude(dependency("com.google.guava:guava")) + exclude(dependency("com.google.code.gson:gson")) + exclude(dependency("com.google.errorprone:error_prone_annotations")) + exclude(dependency("com.google.guava:failureaccess")) + exclude(dependency("org.checkerframework:checker-qual")) + exclude(dependency("org.jetbrains:annotations")) + exclude(dependency("org.apache.logging.log4j:log4j-api")) + exclude(dependency("com.google.code.findbugs:jsr305")) + exclude { + it.moduleGroup == "org.jetbrains.kotlin" + } + } + + relocations.forEach { (from, to) -> + relocate(from, to) + } +} +val altConfigFiles = { artifactType: String -> + val deps = configurations["shade"].incoming.dependencies + .filterIsInstance() + .map { it.copy() } + .map { dependency -> + val category = dependency.attributes.getAttribute(Category.CATEGORY_ATTRIBUTE)?.name + if (category == Category.REGULAR_PLATFORM || category == Category.ENFORCED_PLATFORM) { + return@map dependency + } + try { + dependency.artifact { + name = dependency.name + type = artifactType + extension = "jar" + classifier = artifactType + } + } catch (e: Exception) { + throw RuntimeException("Failed to add artifact to dependency: $dependency", e) + } + dependency + } + + files(configurations.detachedConfiguration(*deps.toTypedArray()) + .resolvedConfiguration.lenientConfiguration.artifacts + .filter { it.classifier == artifactType } + .map { zipTree(it.file) }) +} +tasks.register("sourcesJar") { + from({ + altConfigFiles("sources") + }) + + // Yeet module-info's + exclude("module-info.java") + + relocations.forEach { (from, to) -> + val filePattern = Regex("(.*)${from.replace('.', '/')}((?:/|$).*)") + val textPattern = Regex.fromLiteral(from) + eachFile { + filter { + it.replaceFirst(textPattern, to) + } + path = path.replaceFirst(filePattern, "$1${to.replace('.', '/')}$2") + } + } + archiveClassifier.set("sources") +} + +tasks.named("assemble").configure { + dependsOn("jar", "sourcesJar") +} + +project.apply() + +val libsComponent = project.components["libs"] as AdhocComponentWithVariants + +val apiElements = project.configurations.register("apiElements") { + isVisible = false + description = "API elements for libs" + isCanBeResolved = false + isCanBeConsumed = true + attributes { + attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_API)) + attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) + attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) + attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 16) + } + outgoing.artifact(tasks.named("jar")) +} + +val runtimeElements = project.configurations.register("runtimeElements") { + isVisible = false + description = "Runtime elements for libs" + isCanBeResolved = false + isCanBeConsumed = true + attributes { + attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_RUNTIME)) + attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) + attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) + attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 16) + } + outgoing.artifact(tasks.named("jar")) +} + +val sourcesElements = project.configurations.register("sourcesElements") { + isVisible = false + description = "Source elements for libs" + isCanBeResolved = false + isCanBeConsumed = true + attributes { + attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_RUNTIME)) + attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.DOCUMENTATION)) + attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) + attribute(DocsType.DOCS_TYPE_ATTRIBUTE, project.objects.named(DocsType.SOURCES)) + } + outgoing.artifact(tasks.named("sourcesJar")) +} + +libsComponent.addVariantsFromConfiguration(apiElements.get()) { + mapToMavenScope("compile") +} + +libsComponent.addVariantsFromConfiguration(runtimeElements.get()) { + mapToMavenScope("runtime") +} + +libsComponent.addVariantsFromConfiguration(sourcesElements.get()) { + mapToMavenScope("runtime") +} + +configure { + publications { + register("maven") { + from(libsComponent) + } + } +} + +if (project != project(":worldedit-libs:core")) { + evaluationDependsOn(":worldedit-libs:core") + configurations["shade"].shouldResolveConsistentlyWith(project(":worldedit-libs:core").configurations["shade"]) +} diff --git a/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts b/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts new file mode 100644 index 0000000000..2597947718 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic.platform.gradle.kts @@ -0,0 +1,53 @@ +plugins { + id("com.github.johnrengelman.shadow") + id("buildlogic.core-and-platform") +} + +val platform = extensions.create("platform") +platform.includeClasspath.convention(false) +platform.extraAttributes.convention(mapOf()) + +tasks.named("shadowJar") { + archiveClassifier.set("dist") + dependencies { + include(project(":worldedit-libs:core")) + include(project(":worldedit-libs:${project.name.replace("worldedit-", "")}")) + include(project(":worldedit-core")) + exclude("com.google.code.findbugs:jsr305") + } + exclude("GradleStart**") + exclude(".cache") + exclude("LICENSE*") + exclude("META-INF/maven/**") + minimize() +} +val javaComponent = components["java"] as AdhocComponentWithVariants +// I don't think we want this published (it's the shadow jar) +javaComponent.withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) { + skip() +} + +afterEvaluate { + tasks.named("jar") { + val kind = platform.kind.get() + val includeClasspath = platform.includeClasspath.get() + val extraAttributes = platform.extraAttributes.get() + + val version = project(":worldedit-core").version + inputs.property("version", version) + val attributes = mutableMapOf( + "Implementation-Version" to version, + "WorldEdit-Version" to version, + "WorldEdit-Kind" to kind.name, + "Main-Class" to kind.mainClass + ) + if (includeClasspath) { + attributes["Class-Path"] = listOf("truezip", "truevfs", "js") + .map { "$it.jar" } + .flatMap { listOf(it, "WorldEdit/$it") } + .joinToString(separator = " ") + } + attributes.putAll(extraAttributes) + manifest.attributes(attributes) + } +} diff --git a/build-logic/src/main/kotlin/buildlogic/CommonJavaExtension.kt b/build-logic/src/main/kotlin/buildlogic/CommonJavaExtension.kt new file mode 100644 index 0000000000..8631f53794 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic/CommonJavaExtension.kt @@ -0,0 +1,7 @@ +package buildlogic + +import org.gradle.api.provider.Property + +interface CommonJavaExtension { + val banSlf4j: Property +} diff --git a/buildSrc/src/main/kotlin/GradleExtras.kt b/build-logic/src/main/kotlin/buildlogic/GradleExtras.kt similarity index 98% rename from buildSrc/src/main/kotlin/GradleExtras.kt rename to build-logic/src/main/kotlin/buildlogic/GradleExtras.kt index e6d1fa3c66..77b0059dbc 100644 --- a/buildSrc/src/main/kotlin/GradleExtras.kt +++ b/build-logic/src/main/kotlin/buildlogic/GradleExtras.kt @@ -1,3 +1,5 @@ +package buildlogic + import org.gradle.api.Project import org.gradle.api.artifacts.MinimalExternalModuleDependency import org.gradle.api.artifacts.VersionCatalog diff --git a/build-logic/src/main/kotlin/buildlogic/PlatformExtension.kt b/build-logic/src/main/kotlin/buildlogic/PlatformExtension.kt new file mode 100644 index 0000000000..d27a3e4955 --- /dev/null +++ b/build-logic/src/main/kotlin/buildlogic/PlatformExtension.kt @@ -0,0 +1,19 @@ +package buildlogic + +import org.gradle.api.provider.MapProperty +import org.gradle.api.provider.Property + +interface PlatformExtension { + val kind: Property + val includeClasspath: Property + val extraAttributes: MapProperty +} + +sealed class WorldEditKind( + val name: String, + val mainClass: String = "com.sk89q.worldedit.internal.util.InfoEntryPoint" +) { + class Standalone(mainClass: String) : WorldEditKind("STANDALONE", mainClass) + object Mod : WorldEditKind("MOD") + object Plugin : WorldEditKind("PLUGIN") +} diff --git a/buildSrc/src/main/kotlin/japicmp/accept/AbstractAcceptingRule.kt b/build-logic/src/main/kotlin/japicmp/accept/AbstractAcceptingRule.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/AbstractAcceptingRule.kt rename to build-logic/src/main/kotlin/japicmp/accept/AbstractAcceptingRule.kt diff --git a/buildSrc/src/main/kotlin/japicmp/accept/AcceptedRegressionsRulePostProcess.kt b/build-logic/src/main/kotlin/japicmp/accept/AcceptedRegressionsRulePostProcess.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/AcceptedRegressionsRulePostProcess.kt rename to build-logic/src/main/kotlin/japicmp/accept/AcceptedRegressionsRulePostProcess.kt diff --git a/buildSrc/src/main/kotlin/japicmp/accept/AcceptingSetupRule.kt b/build-logic/src/main/kotlin/japicmp/accept/AcceptingSetupRule.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/AcceptingSetupRule.kt rename to build-logic/src/main/kotlin/japicmp/accept/AcceptingSetupRule.kt diff --git a/buildSrc/src/main/kotlin/japicmp/accept/BinaryCompatRule.kt b/build-logic/src/main/kotlin/japicmp/accept/BinaryCompatRule.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/BinaryCompatRule.kt rename to build-logic/src/main/kotlin/japicmp/accept/BinaryCompatRule.kt diff --git a/buildSrc/src/main/kotlin/japicmp/accept/ChangeParams.kt b/build-logic/src/main/kotlin/japicmp/accept/ChangeParams.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/ChangeParams.kt rename to build-logic/src/main/kotlin/japicmp/accept/ChangeParams.kt diff --git a/buildSrc/src/main/kotlin/japicmp/accept/LICENSE.md b/build-logic/src/main/kotlin/japicmp/accept/LICENSE.md similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/LICENSE.md rename to build-logic/src/main/kotlin/japicmp/accept/LICENSE.md diff --git a/buildSrc/src/main/kotlin/japicmp/accept/apichanges.kt b/build-logic/src/main/kotlin/japicmp/accept/apichanges.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/apichanges.kt rename to build-logic/src/main/kotlin/japicmp/accept/apichanges.kt diff --git a/buildSrc/src/main/kotlin/japicmp/accept/userdata.kt b/build-logic/src/main/kotlin/japicmp/accept/userdata.kt similarity index 100% rename from buildSrc/src/main/kotlin/japicmp/accept/userdata.kt rename to build-logic/src/main/kotlin/japicmp/accept/userdata.kt diff --git a/build.gradle.kts b/build.gradle.kts index 939ab60971..0f5d6e5649 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,21 +1,25 @@ import org.ajoberstar.grgit.Grgit -// needed for fabric to know where FF executor is.... buildscript { repositories { - mavenCentral() + maven { + name = "EngineHub" + url = uri("https://maven.enginehub.org/repo/") + } maven { name = "Fabric" url = uri("https://maven.fabricmc.net/") } } dependencies { - classpath(libs.fabric.loom) + // needed for fabric to know where FF executor is.... } } plugins { - id("org.enginehub.codecov") + alias(libs.plugins.codecov) jacoco + id("buildlogic.common") + id("buildlogic.artifactory-root") } if (!project.hasProperty("gitCommitHash")) { @@ -29,23 +33,6 @@ if (!project.hasProperty("gitCommitHash")) { } } -logger.lifecycle(""" -******************************************* - You are building WorldEdit! - - If you encounter trouble: - 1) Read COMPILING.md if you haven't yet - 2) Try running 'build' in a separate Gradle run - 3) Use gradlew and not gradle - 4) If you still need help, ask on Discord! https://discord.gg/enginehub - - Output files will be in [subproject]/build/libs -******************************************* -""") - -applyCommonConfiguration() -applyRootArtifactoryConfig() - val totalReport = tasks.register("jacocoTotalReport") { for (proj in subprojects) { proj.apply(plugin = "jacoco") diff --git a/buildSrc/src/main/kotlin/AdapterConfig.kt b/buildSrc/src/main/kotlin/AdapterConfig.kt deleted file mode 100644 index 240a623d29..0000000000 --- a/buildSrc/src/main/kotlin/AdapterConfig.kt +++ /dev/null @@ -1,29 +0,0 @@ -import org.gradle.api.Project -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.dependencies - -// For specific version pinning, see -// https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ -fun Project.applyPaperweightAdapterConfiguration(javaRelease: Int = 21) { - applyCommonConfiguration() - apply(plugin = "java-library") - applyCommonJavaConfiguration( - sourcesJar = true, - javaRelease = javaRelease, - banSlf4j = false, - ) - apply(plugin = "io.papermc.paperweight.userdev") - - dependencies { - "implementation"(project(":worldedit-bukkit")) - constraints { - "remapper"("net.fabricmc:tiny-remapper:[${stringyLibs.getVersion("minimumTinyRemapper")},)") { - because("Need remapper to support Java 21") - } - } - } - - tasks.named("assemble") { - dependsOn("reobfJar") - } -} diff --git a/buildSrc/src/main/kotlin/ArtifactoryConfig.kt b/buildSrc/src/main/kotlin/ArtifactoryConfig.kt deleted file mode 100644 index fade874543..0000000000 --- a/buildSrc/src/main/kotlin/ArtifactoryConfig.kt +++ /dev/null @@ -1,43 +0,0 @@ -import org.gradle.api.Project -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.named -import org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention -import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask - -private const val ARTIFACTORY_CONTEXT_URL = "artifactory_contextUrl" -private const val ARTIFACTORY_USER = "artifactory_user" -private const val ARTIFACTORY_PASSWORD = "artifactory_password" - -fun Project.applyRootArtifactoryConfig() { - if (!project.hasProperty(ARTIFACTORY_CONTEXT_URL)) ext[ARTIFACTORY_CONTEXT_URL] = "http://localhost" - if (!project.hasProperty(ARTIFACTORY_USER)) ext[ARTIFACTORY_USER] = "guest" - if (!project.hasProperty(ARTIFACTORY_PASSWORD)) ext[ARTIFACTORY_PASSWORD] = "" - - apply(plugin = "com.jfrog.artifactory") - configure { - setContextUrl("${project.property(ARTIFACTORY_CONTEXT_URL)}") - clientConfig.publisher.run { - repoKey = when { - "${project.version}".contains("SNAPSHOT") -> "libs-snapshot-local" - else -> "libs-release-local" - } - username = "${project.property(ARTIFACTORY_USER)}" - password = "${project.property(ARTIFACTORY_PASSWORD)}" - isMaven = true - isIvy = false - } - } - tasks.named("artifactoryPublish") { - isSkip = true - } -} - -fun Project.applyCommonArtifactoryConfig() { - // Artifactory eagerly evaluates publications, so this must run after all changes to artifacts are done - afterEvaluate { - tasks.named("artifactoryPublish") { - publications("maven") - } - } -} diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt deleted file mode 100644 index f3354f170f..0000000000 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ /dev/null @@ -1,82 +0,0 @@ -import groovy.lang.Closure -import org.cadixdev.gradle.licenser.LicenseExtension -import org.gradle.api.Project -import org.gradle.api.artifacts.Dependency -import org.gradle.api.artifacts.ExternalModuleDependency -import org.gradle.api.plugins.JavaPluginExtension -import org.gradle.jvm.toolchain.JavaLanguageVersion -import org.gradle.kotlin.dsl.* -import org.gradle.plugins.ide.idea.model.IdeaModel -import java.util.concurrent.TimeUnit - -fun Project.applyCommonConfiguration() { - group = rootProject.group - version = rootProject.version - - repositories { - mavenCentral { - mavenContent { - releasesOnly() - } - } - maven { url = uri("https://maven.enginehub.org/repo/") } - maven { - url = uri("https://oss.sonatype.org/content/repositories/snapshots/") - mavenContent { - snapshotsOnly() - } - } - } - - configurations.all { - resolutionStrategy { - cacheChangingModulesFor(1, TimeUnit.DAYS) - } - } - - plugins.withId("java") { - the().toolchain { - languageVersion.set(JavaLanguageVersion.of(21)) - } - } - - dependencies { - for (conf in listOf("implementation", "api")) { - if (!configurations.names.contains(conf)) { - continue - } - add(conf, platform(stringyLibs.getLibrary("log4j-bom")).map { - val dep = create(it) - dep.because("Mojang provides Log4j") - dep - }) - constraints { - add(conf, stringyLibs.getLibrary("guava")) { - because("Mojang provides Guava") - } - add(conf, stringyLibs.getLibrary("gson")) { - because("Mojang provides Gson") - } - add(conf, stringyLibs.getLibrary("fastutil")) { - because("Mojang provides FastUtil") - } - } - } - } - - apply(plugin = "org.cadixdev.licenser") - configure { - header(rootProject.file("HEADER.txt")) - include("**/*.java") - include("**/*.kt") - } - - plugins.withId("idea") { - configure { - module { - isDownloadSources = true - isDownloadJavadoc = true - } - } - } -} diff --git a/buildSrc/src/main/kotlin/CommonJavaConfig.kt b/buildSrc/src/main/kotlin/CommonJavaConfig.kt deleted file mode 100644 index 3c58b86ead..0000000000 --- a/buildSrc/src/main/kotlin/CommonJavaConfig.kt +++ /dev/null @@ -1,91 +0,0 @@ -import org.gradle.api.Project -import org.gradle.api.plugins.JavaPluginExtension -import org.gradle.api.plugins.quality.CheckstyleExtension -import org.gradle.api.tasks.compile.JavaCompile -import org.gradle.api.tasks.javadoc.Javadoc -import org.gradle.api.tasks.testing.Test -import org.gradle.external.javadoc.StandardJavadocDocletOptions -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.dependencies -import org.gradle.kotlin.dsl.get -import org.gradle.kotlin.dsl.withType - -fun Project.applyCommonJavaConfiguration(sourcesJar: Boolean, javaRelease: Int = 17, banSlf4j: Boolean = true) { - applyCommonConfiguration() - apply(plugin = "eclipse") - apply(plugin = "idea") - apply(plugin = "checkstyle") - - tasks - .withType() - .matching { it.name == "compileJava" || it.name == "compileTestJava" } - .configureEach { - // TODO: re-enable this-escape when ANTLR suppresses it properly - val disabledLint = listOf( - "processing", "path", "fallthrough", "serial", "overloads", "this-escape", - ) - options.release.set(javaRelease) - options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" }) - options.isDeprecation = true - options.encoding = "UTF-8" - options.compilerArgs.add("-parameters") - options.compilerArgs.add("-Werror") - } - - configure { - configFile = rootProject.file("config/checkstyle/checkstyle.xml") - toolVersion = "9.1" - } - - tasks.withType().configureEach { - useJUnitPlatform() - } - - dependencies { - "compileOnly"(stringyLibs.getLibrary("jsr305")) - "testImplementation"(platform(stringyLibs.getLibrary("junit-bom"))) - "testImplementation"(stringyLibs.getLibrary("junit-jupiter-api")) - "testImplementation"(stringyLibs.getLibrary("junit-jupiter-params")) - "testImplementation"(platform(stringyLibs.getLibrary("mockito-bom"))) - "testImplementation"(stringyLibs.getLibrary("mockito-core")) - "testImplementation"(stringyLibs.getLibrary("mockito-junit-jupiter")) - "testRuntimeOnly"(stringyLibs.getLibrary("junit-jupiter-engine")) - } - - // Java 8 turns on doclint which we fail - tasks.withType().configureEach { - options.encoding = "UTF-8" - (options as StandardJavadocDocletOptions).apply { - addBooleanOption("Werror", true) - addBooleanOption("Xdoclint:all", true) - addBooleanOption("Xdoclint:-missing", true) - tags( - "apiNote:a:API Note:", - "implSpec:a:Implementation Requirements:", - "implNote:a:Implementation Note:" - ) - } - } - - configure { - withJavadocJar() - if (sourcesJar) { - withSourcesJar() - } - } - - if (banSlf4j) { - configurations["compileClasspath"].apply { - resolutionStrategy.componentSelection { - withModule("org.slf4j:slf4j-api") { - reject("No SLF4J allowed on compile classpath") - } - } - } - } - - tasks.named("check").configure { - dependsOn("checkstyleMain", "checkstyleTest") - } -} diff --git a/buildSrc/src/main/kotlin/LibsConfig.kt b/buildSrc/src/main/kotlin/LibsConfig.kt deleted file mode 100644 index 90caecaba8..0000000000 --- a/buildSrc/src/main/kotlin/LibsConfig.kt +++ /dev/null @@ -1,214 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.artifacts.ExternalModuleDependency -import org.gradle.api.artifacts.ModuleDependency -import org.gradle.api.attributes.Bundling -import org.gradle.api.attributes.Category -import org.gradle.api.attributes.DocsType -import org.gradle.api.attributes.LibraryElements -import org.gradle.api.attributes.Usage -import org.gradle.api.attributes.java.TargetJvmVersion -import org.gradle.api.component.AdhocComponentWithVariants -import org.gradle.api.component.SoftwareComponentFactory -import org.gradle.api.publish.PublishingExtension -import org.gradle.api.publish.maven.MavenPublication -import org.gradle.api.tasks.bundling.Jar -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.exclude -import org.gradle.kotlin.dsl.get -import org.gradle.kotlin.dsl.invoke -import org.gradle.kotlin.dsl.named -import org.gradle.kotlin.dsl.register -import javax.inject.Inject - -fun Project.applyLibrariesConfiguration() { - applyCommonConfiguration() - apply(plugin = "java-base") - apply(plugin = "maven-publish") - apply(plugin = "com.github.johnrengelman.shadow") - apply(plugin = "com.jfrog.artifactory") - - configurations { - create("shade") - } - - group = "${rootProject.group}.worldedit-libs" - - val relocations = mapOf( - "net.kyori.text" to "com.sk89q.worldedit.util.formatting.text", - "net.kyori.minecraft" to "com.sk89q.worldedit.util.kyori", - ) - - tasks.register("jar") { - configurations = listOf(project.configurations["shade"]) - archiveClassifier.set("") - - // Yeet module-info's - exclude("module-info.class") - - dependencies { - exclude(dependency("com.google.guava:guava")) - exclude(dependency("com.google.code.gson:gson")) - exclude(dependency("com.google.errorprone:error_prone_annotations")) - exclude(dependency("com.google.guava:failureaccess")) - exclude(dependency("org.checkerframework:checker-qual")) - exclude(dependency("org.jetbrains:annotations")) - exclude(dependency("org.apache.logging.log4j:log4j-api")) - exclude(dependency("com.google.code.findbugs:jsr305")) - exclude { - it.moduleGroup == "org.jetbrains.kotlin" - } - } - - relocations.forEach { (from, to) -> - relocate(from, to) - } - } - val altConfigFiles = { artifactType: String -> - val deps = configurations["shade"].incoming.dependencies - .filterIsInstance() - .map { it.copy() } - .map { dependency -> - val category = dependency.attributes.getAttribute(Category.CATEGORY_ATTRIBUTE)?.name - if (category == Category.REGULAR_PLATFORM || category == Category.ENFORCED_PLATFORM) { - return@map dependency - } - try { - dependency.artifact { - name = dependency.name - type = artifactType - extension = "jar" - classifier = artifactType - } - } catch (e: Exception) { - throw RuntimeException("Failed to add artifact to dependency: $dependency", e) - } - dependency - } - - files(configurations.detachedConfiguration(*deps.toTypedArray()) - .resolvedConfiguration.lenientConfiguration.artifacts - .filter { it.classifier == artifactType } - .map { zipTree(it.file) }) - } - tasks.register("sourcesJar") { - from({ - altConfigFiles("sources") - }) - - // Yeet module-info's - exclude("module-info.java") - - relocations.forEach { (from, to) -> - val filePattern = Regex("(.*)${from.replace('.', '/')}((?:/|$).*)") - val textPattern = Regex.fromLiteral(from) - eachFile { - filter { - it.replaceFirst(textPattern, to) - } - path = path.replaceFirst(filePattern, "$1${to.replace('.', '/')}$2") - } - } - archiveClassifier.set("sources") - } - - tasks.named("assemble").configure { - dependsOn("jar", "sourcesJar") - } - - project.apply() - - val libsComponent = project.components["libs"] as AdhocComponentWithVariants - - val apiElements = project.configurations.register("apiElements") { - isVisible = false - description = "API elements for libs" - isCanBeResolved = false - isCanBeConsumed = true - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_API)) - attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) - attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 16) - } - outgoing.artifact(tasks.named("jar")) - } - - val runtimeElements = project.configurations.register("runtimeElements") { - isVisible = false - description = "Runtime elements for libs" - isCanBeResolved = false - isCanBeConsumed = true - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_RUNTIME)) - attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) - attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) - attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 16) - } - outgoing.artifact(tasks.named("jar")) - } - - val sourcesElements = project.configurations.register("sourcesElements") { - isVisible = false - description = "Source elements for libs" - isCanBeResolved = false - isCanBeConsumed = true - attributes { - attribute(Usage.USAGE_ATTRIBUTE, project.objects.named(Usage.JAVA_RUNTIME)) - attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.DOCUMENTATION)) - attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) - attribute(DocsType.DOCS_TYPE_ATTRIBUTE, project.objects.named(DocsType.SOURCES)) - } - outgoing.artifact(tasks.named("sourcesJar")) - } - - libsComponent.addVariantsFromConfiguration(apiElements.get()) { - mapToMavenScope("compile") - } - - libsComponent.addVariantsFromConfiguration(runtimeElements.get()) { - mapToMavenScope("runtime") - } - - libsComponent.addVariantsFromConfiguration(sourcesElements.get()) { - mapToMavenScope("runtime") - } - - configure { - publications { - register("maven") { - from(libsComponent) - } - } - } - - applyCommonArtifactoryConfig() -} - -// A horrible hack because `softwareComponentFactory` has to be gotten via plugin -// gradle why -internal open class LibsConfigPluginHack @Inject constructor( - private val softwareComponentFactory: SoftwareComponentFactory -) : Plugin { - override fun apply(project: Project) { - val libsComponents = softwareComponentFactory.adhoc("libs") - project.components.add(libsComponents) - } -} - -fun Project.constrainDependenciesToLibsCore() { - evaluationDependsOn(":worldedit-libs:core") - val coreDeps = project(":worldedit-libs:core").configurations["shade"].dependencies - .filterIsInstance() - dependencies.constraints { - for (coreDep in coreDeps) { - add("shade", "${coreDep.group}:${coreDep.name}:${coreDep.version}") { - because("libs should align with libs:core") - } - } - } -} diff --git a/buildSrc/src/main/kotlin/PlatformConfig.kt b/buildSrc/src/main/kotlin/PlatformConfig.kt deleted file mode 100644 index 38f68d0101..0000000000 --- a/buildSrc/src/main/kotlin/PlatformConfig.kt +++ /dev/null @@ -1,98 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import org.gradle.api.Project -import org.gradle.api.component.AdhocComponentWithVariants -import org.gradle.api.publish.PublishingExtension -import org.gradle.api.publish.maven.MavenPublication -import org.gradle.api.tasks.bundling.Jar -import org.gradle.kotlin.dsl.apply -import org.gradle.kotlin.dsl.configure -import org.gradle.kotlin.dsl.get -import org.gradle.kotlin.dsl.named -import org.gradle.kotlin.dsl.register -import kotlin.collections.set - -fun Project.applyPlatformAndCoreConfiguration(javaRelease: Int = 21) { - applyCommonConfiguration() - apply(plugin = "java") - apply(plugin = "maven-publish") - apply(plugin = "com.jfrog.artifactory") - applyCommonJavaConfiguration( - sourcesJar = name in setOf("worldedit-core", "worldedit-bukkit", "worldedit-fabric"), - javaRelease = javaRelease, - banSlf4j = name !in setOf("worldedit-fabric", "worldedit-neoforge", "worldedit-sponge"), - ) - - ext["internalVersion"] = "$version+${rootProject.ext["gitCommitHash"]}" - - configure { - publications { - register("maven") { - versionMapping { - usage("java-api") { - fromResolutionOf("runtimeClasspath") - } - usage("java-runtime") { - fromResolutionResult() - } - } - } - } - } - - applyCommonArtifactoryConfig() -} - -fun Project.applyShadowConfiguration() { - apply(plugin = "com.github.johnrengelman.shadow") - tasks.named("shadowJar") { - archiveClassifier.set("dist") - dependencies { - include(project(":worldedit-libs:core")) - include(project(":worldedit-libs:${project.name.replace("worldedit-", "")}")) - include(project(":worldedit-core")) - exclude("com.google.code.findbugs:jsr305") - } - exclude("GradleStart**") - exclude(".cache") - exclude("LICENSE*") - exclude("META-INF/maven/**") - minimize() - } - val javaComponent = components["java"] as AdhocComponentWithVariants - // I don't think we want this published (it's the shadow jar) - javaComponent.withVariantsFromConfiguration(configurations["shadowRuntimeElements"]) { - skip() - } -} - -private val CLASSPATH = listOf("truezip", "truevfs", "js") - .map { "$it.jar" } - .flatMap { listOf(it, "WorldEdit/$it") } - .joinToString(separator = " ") - -sealed class WorldEditKind( - val name: String, - val mainClass: String = "com.sk89q.worldedit.internal.util.InfoEntryPoint" -) { - class Standalone(mainClass: String) : WorldEditKind("STANDALONE", mainClass) - object Mod : WorldEditKind("MOD") - object Plugin : WorldEditKind("PLUGIN") -} - -fun Project.addJarManifest(kind: WorldEditKind, includeClasspath: Boolean = false, extraAttributes: Map = mapOf()) { - tasks.named("jar") { - val version = project(":worldedit-core").version - inputs.property("version", version) - val attributes = mutableMapOf( - "Implementation-Version" to version, - "WorldEdit-Version" to version, - "WorldEdit-Kind" to kind.name, - "Main-Class" to kind.mainClass - ) - if (includeClasspath) { - attributes["Class-Path"] = CLASSPATH - } - attributes.putAll(extraAttributes) - manifest.attributes(attributes) - } -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d5400084c6..561dc42365 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,9 @@ -[versions] -neoGradle = "7.0.107" +[plugins] +codecov = "org.enginehub.codecov:0.2.0" +neogradle-userdev = "net.neoforged.gradle.userdev:7.0.107" +fabric-loom = "fabric-loom:1.6.9" +[versions] kyoriText = "3.0.4" piston = "0.5.10" autoValue = "1.10.4" @@ -29,10 +32,8 @@ japicmp = "me.champeau.gradle:japicmp-gradle-plugin:0.4.2" shadow = "com.github.johnrengelman:shadow:8.1.1" jfrog-buildinfo = "org.jfrog.buildinfo:build-info-extractor-gradle:5.2.0" -fabric-loom = "net.fabricmc:fabric-loom:1.6.9" fabric-mixin = "net.fabricmc:sponge-mixin:0.13.3+mixin.0.8.5" -codecov = "org.enginehub.gradle:gradle-codecov-plugin:0.2.0" paperweight = "io.papermc.paperweight.userdev:io.papermc.paperweight.userdev.gradle.plugin:1.6.0" linBus-bom = "org.enginehub.lin-bus:lin-bus-bom:0.1.0-SNAPSHOT" @@ -89,10 +90,6 @@ fastutil = "it.unimi.dsi:fastutil:8.5.12!!" # may not be the same as the ones in the latest Bukkit API. snakeyaml = "org.yaml:snakeyaml:2.0" -[libraries.neoGradle-userdev] -module = "net.neoforged.gradle:userdev" -version.ref = "neoGradle" - [libraries.kyoriText-api] module = "net.kyori:text-api" version.ref = "kyoriText" diff --git a/settings.gradle.kts b/settings.gradle.kts index b5dc755413..4929a2ddfb 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,10 +1,9 @@ pluginManagement { repositories { - mavenCentral() gradlePluginPortal() maven { - name = "Fabric" - url = uri("https://maven.fabricmc.net/") + name = "EngineHub" + url = uri("https://maven.enginehub.org/repo/") } } } @@ -12,8 +11,24 @@ plugins { id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" } +logger.lifecycle(""" +******************************************* + You are building WorldEdit! + + If you encounter trouble: + 1) Read COMPILING.md if you haven't yet + 2) Try running 'build' in a separate Gradle run + 3) Use gradlew and not gradle + 4) If you still need help, ask on Discord! https://discord.gg/enginehub + + Output files will be in [subproject]/build/libs +******************************************* +""") + rootProject.name = "worldedit" +includeBuild("build-logic") + include("worldedit-libs") listOf("1.19.4", "1.20", "1.20.2", "1.20.4", "1.20.5").forEach { diff --git a/verification/build.gradle.kts b/verification/build.gradle.kts index 0024ee1b16..e17ef62c81 100644 --- a/verification/build.gradle.kts +++ b/verification/build.gradle.kts @@ -74,6 +74,19 @@ for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "neoforge")) { (this as? ModuleDependency)?.isTransitive = false } ) + val resolvedOldJar = files({ + try { + conf.resolvedConfiguration.rethrowFailure() + conf + } catch (e: ResolveException) { + if (e.cause is ModuleVersionNotFoundException) { + logger.warn("Skipping check for $projectFragment API compatibility because there is no jar to compare against") + setOf() + } else { + throw e + } + } + }) val checkApi = tasks.register("check${capitalizedFragment}ApiCompatibility") { group = "API Compatibility" description = "Check API compatibility for $capitalizedFragment API" @@ -89,20 +102,10 @@ for (projectFragment in listOf("bukkit", "cli", "core", "fabric", "neoforge")) { onlyIf { // Only check if we have a jar to compare against - try { - conf.resolvedConfiguration.rethrowFailure() - true - } catch (e: ResolveException) { - if (e.cause is ModuleVersionNotFoundException) { - it.logger.warn("Skipping check for $projectFragment API compatibility because there is no jar to compare against") - false - } else { - throw e - } - } + !resolvedOldJar.isEmpty } - oldClasspath.from(conf) + oldClasspath.from(resolvedOldJar) newClasspath.from(proj.tasks.named("jar")) onlyModified.set(false) failOnModification.set(false) // report does the failing (so we can accept) diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts deleted file mode 100644 index 7bb1cc7e95..0000000000 --- a/worldedit-bukkit/adapters/adapter-1.18.2/build.gradle.kts +++ /dev/null @@ -1,8 +0,0 @@ -import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension - -applyPaperweightAdapterConfiguration() - -dependencies { - // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ - the().paperDevBundle("1.18.2-R0.1-20220920.010157-167") -} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java deleted file mode 100644 index da5fc9c5d7..0000000000 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightAdapter.java +++ /dev/null @@ -1,1061 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import com.google.common.util.concurrent.Futures; -import com.mojang.datafixers.util.Either; -import com.mojang.serialization.Lifecycle; -import com.sk89q.worldedit.WorldEditException; -import com.sk89q.worldedit.blocks.BaseItem; -import com.sk89q.worldedit.blocks.BaseItemStack; -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.bukkit.adapter.BukkitImplAdapter; -import com.sk89q.worldedit.bukkit.adapter.Refraction; -import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.extension.platform.Watchdog; -import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.internal.Constants; -import com.sk89q.worldedit.internal.block.BlockStateIdAccess; -import com.sk89q.worldedit.internal.wna.WorldNativeAccess; -import com.sk89q.worldedit.math.BlockVector2; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.regions.Region; -import com.sk89q.worldedit.registry.state.BooleanProperty; -import com.sk89q.worldedit.registry.state.DirectionalProperty; -import com.sk89q.worldedit.registry.state.EnumProperty; -import com.sk89q.worldedit.registry.state.IntegerProperty; -import com.sk89q.worldedit.registry.state.Property; -import com.sk89q.worldedit.util.Direction; -import com.sk89q.worldedit.util.SideEffect; -import com.sk89q.worldedit.util.concurrency.LazyReference; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; -import com.sk89q.worldedit.util.io.file.SafeFiles; -import com.sk89q.worldedit.world.DataFixer; -import com.sk89q.worldedit.world.RegenOptions; -import com.sk89q.worldedit.world.biome.BiomeType; -import com.sk89q.worldedit.world.biome.BiomeTypes; -import com.sk89q.worldedit.world.block.BaseBlock; -import com.sk89q.worldedit.world.block.BlockState; -import com.sk89q.worldedit.world.block.BlockStateHolder; -import com.sk89q.worldedit.world.block.BlockType; -import com.sk89q.worldedit.world.block.BlockTypes; -import com.sk89q.worldedit.world.entity.EntityTypes; -import com.sk89q.worldedit.world.item.ItemType; -import net.minecraft.Util; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Holder; -import net.minecraft.core.Registry; -import net.minecraft.nbt.ByteArrayTag; -import net.minecraft.nbt.ByteTag; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.DoubleTag; -import net.minecraft.nbt.EndTag; -import net.minecraft.nbt.FloatTag; -import net.minecraft.nbt.IntArrayTag; -import net.minecraft.nbt.IntTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.LongArrayTag; -import net.minecraft.nbt.LongTag; -import net.minecraft.nbt.ShortTag; -import net.minecraft.nbt.StringTag; -import net.minecraft.nbt.Tag; -import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; -import net.minecraft.network.protocol.game.ClientboundEntityEventPacket; -import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.dedicated.DedicatedServer; -import net.minecraft.server.level.ChunkHolder; -import net.minecraft.server.level.ServerChunkCache; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.progress.ChunkProgressListener; -import net.minecraft.util.StringRepresentable; -import net.minecraft.util.thread.BlockableEventLoop; -import net.minecraft.world.Clearable; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.ChunkPos; -import net.minecraft.world.level.LevelSettings; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.StructureBlockEntity; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.chunk.ChunkAccess; -import net.minecraft.world.level.chunk.ChunkStatus; -import net.minecraft.world.level.chunk.LevelChunk; -import net.minecraft.world.level.dimension.LevelStem; -import net.minecraft.world.level.levelgen.WorldGenSettings; -import net.minecraft.world.level.storage.LevelStorageSource; -import net.minecraft.world.level.storage.PrimaryLevelData; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.Vec3; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.World.Environment; -import org.bukkit.block.data.BlockData; -import org.bukkit.craftbukkit.v1_18_R2.CraftServer; -import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; -import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; -import org.bukkit.craftbukkit.v1_18_R2.entity.CraftEntity; -import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack; -import org.bukkit.craftbukkit.v1_18_R2.util.CraftMagicNumbers; -import org.bukkit.entity.Player; -import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -import org.bukkit.generator.ChunkGenerator; -import org.enginehub.linbus.common.LinTagId; -import org.enginehub.linbus.tree.LinByteArrayTag; -import org.enginehub.linbus.tree.LinByteTag; -import org.enginehub.linbus.tree.LinCompoundTag; -import org.enginehub.linbus.tree.LinDoubleTag; -import org.enginehub.linbus.tree.LinEndTag; -import org.enginehub.linbus.tree.LinFloatTag; -import org.enginehub.linbus.tree.LinIntArrayTag; -import org.enginehub.linbus.tree.LinIntTag; -import org.enginehub.linbus.tree.LinListTag; -import org.enginehub.linbus.tree.LinLongArrayTag; -import org.enginehub.linbus.tree.LinLongTag; -import org.enginehub.linbus.tree.LinShortTag; -import org.enginehub.linbus.tree.LinStringTag; -import org.enginehub.linbus.tree.LinTag; -import org.enginehub.linbus.tree.LinTagType; -import org.spigotmc.SpigotConfig; -import org.spigotmc.WatchdogThread; - -import java.lang.ref.WeakReference; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Objects; -import java.util.OptionalInt; -import java.util.OptionalLong; -import java.util.Set; -import java.util.TreeMap; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ForkJoinPool; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.annotation.Nullable; - -import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; - -public final class PaperweightAdapter implements BukkitImplAdapter { - - private final Logger logger = Logger.getLogger(getClass().getCanonicalName()); - - private final Field serverWorldsField; - private final Method getChunkFutureMethod; - private final Field chunkProviderExecutorField; - private final Watchdog watchdog; - - // ------------------------------------------------------------------------ - // Code that may break between versions of Minecraft - // ------------------------------------------------------------------------ - - public PaperweightAdapter() throws NoSuchFieldException, NoSuchMethodException { - // A simple test - CraftServer.class.cast(Bukkit.getServer()); - - int dataVersion = CraftMagicNumbers.INSTANCE.getDataVersion(); - if (dataVersion != 2975) { - throw new UnsupportedClassVersionError("Not 1.18.2!"); - } - - serverWorldsField = CraftServer.class.getDeclaredField("worlds"); - serverWorldsField.setAccessible(true); - - getChunkFutureMethod = ServerChunkCache.class.getDeclaredMethod( - Refraction.pickName("getChunkFutureMainThread", "c"), - int.class, int.class, ChunkStatus.class, boolean.class - ); - getChunkFutureMethod.setAccessible(true); - - chunkProviderExecutorField = ServerChunkCache.class.getDeclaredField( - Refraction.pickName("mainThreadProcessor", "g") - ); - chunkProviderExecutorField.setAccessible(true); - - new PaperweightDataConverters(CraftMagicNumbers.INSTANCE.getDataVersion(), this).build(ForkJoinPool.commonPool()); - - Watchdog watchdog; - try { - Class.forName("org.spigotmc.WatchdogThread"); - watchdog = new SpigotWatchdog(); - } catch (ClassNotFoundException | NoSuchFieldException e) { - try { - watchdog = new MojangWatchdog(((CraftServer) Bukkit.getServer()).getServer()); - } catch (NoSuchFieldException ex) { - watchdog = null; - } - } - this.watchdog = watchdog; - - try { - Class.forName("org.spigotmc.SpigotConfig"); - SpigotConfig.config.set("world-settings.worldeditregentempworld.verbose", false); - } catch (ClassNotFoundException ignored) { - } - } - - @Override - public DataFixer getDataFixer() { - return PaperweightDataConverters.INSTANCE; - } - - /** - * Read the given NBT data into the given tile entity. - * - * @param tileEntity the tile entity - * @param tag the tag - */ - static void readTagIntoTileEntity(CompoundTag tag, BlockEntity tileEntity) { - tileEntity.load(tag); - tileEntity.setChanged(); - } - - /** - * Get the ID string of the given entity. - * - * @param entity the entity - * @return the entity ID - */ - private static String getEntityId(Entity entity) { - return EntityType.getKey(entity.getType()).toString(); - } - - /** - * Create an entity using the given entity ID. - * - * @param id the entity ID - * @param world the world - * @return an entity or null - */ - @Nullable - private static Entity createEntityFromId(String id, net.minecraft.world.level.Level world) { - return EntityType.byString(id).map(t -> t.create(world)).orElse(null); - } - - /** - * Write the given NBT data into the given entity. - * - * @param entity the entity - * @param tag the tag - */ - private static void readTagIntoEntity(CompoundTag tag, Entity entity) { - entity.load(tag); - } - - /** - * Write the entity's NBT data to the given tag. - * - * @param entity the entity - * @param tag the tag - */ - private static void readEntityIntoTag(Entity entity, CompoundTag tag) { - entity.save(tag); - } - - private static Block getBlockFromType(BlockType blockType) { - return Registry.BLOCK.get(ResourceLocation.tryParse(blockType.id())); - } - - private static Item getItemFromType(ItemType itemType) { - return Registry.ITEM.get(ResourceLocation.tryParse(itemType.id())); - } - - @Override - public OptionalInt getInternalBlockStateId(BlockData data) { - net.minecraft.world.level.block.state.BlockState state = ((CraftBlockData) data).getState(); - int combinedId = Block.getId(state); - return combinedId == 0 && state.getBlock() != Blocks.AIR ? OptionalInt.empty() : OptionalInt.of(combinedId); - } - - @Override - public OptionalInt getInternalBlockStateId(BlockState state) { - Block mcBlock = getBlockFromType(state.getBlockType()); - net.minecraft.world.level.block.state.BlockState newState = mcBlock.defaultBlockState(); - Map, Object> states = state.getStates(); - newState = applyProperties(mcBlock.getStateDefinition(), newState, states); - final int combinedId = Block.getId(newState); - return combinedId == 0 && state.getBlockType() != BlockTypes.AIR ? OptionalInt.empty() : OptionalInt.of(combinedId); - } - - @Override - public BlockState getBlock(Location location) { - checkNotNull(location); - - CraftWorld craftWorld = ((CraftWorld) location.getWorld()); - int x = location.getBlockX(); - int y = location.getBlockY(); - int z = location.getBlockZ(); - - final ServerLevel handle = craftWorld.getHandle(); - LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); - final BlockPos blockPos = new BlockPos(x, y, z); - final net.minecraft.world.level.block.state.BlockState blockData = chunk.getBlockState(blockPos); - int internalId = Block.getId(blockData); - BlockState state = BlockStateIdAccess.getBlockStateById(internalId); - if (state == null) { - org.bukkit.block.Block bukkitBlock = location.getBlock(); - state = BukkitAdapter.adapt(bukkitBlock.getBlockData()); - } - - return state; - } - - @Override - public BaseBlock getFullBlock(Location location) { - BlockState state = getBlock(location); - - CraftWorld craftWorld = ((CraftWorld) location.getWorld()); - int x = location.getBlockX(); - int y = location.getBlockY(); - int z = location.getBlockZ(); - - final ServerLevel handle = craftWorld.getHandle(); - LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); - final BlockPos blockPos = new BlockPos(x, y, z); - - // Read the NBT data - BlockEntity te = chunk.getBlockEntity(blockPos); - if (te != null) { - CompoundTag tag = te.saveWithId(); - return state.toBaseBlock(LazyReference.from(() -> (LinCompoundTag) toNative(tag))); - } - - return state.toBaseBlock(); - } - - private static final HashMap> biomeTypeToNMSCache = new HashMap<>(); - private static final HashMap, BiomeType> biomeTypeFromNMSCache = new HashMap<>(); - - @Override - public BiomeType getBiome(Location location) { - checkNotNull(location); - - CraftWorld craftWorld = ((CraftWorld) location.getWorld()); - int x = location.getBlockX(); - int y = location.getBlockY(); - int z = location.getBlockZ(); - - final ServerLevel handle = craftWorld.getHandle(); - LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); - - return biomeTypeFromNMSCache.computeIfAbsent(chunk.getNoiseBiome(x >> 2, y >> 2, z >> 2), b -> BiomeType.REGISTRY.get(b.unwrapKey().get().location().toString())); - } - - @Override - public void setBiome(Location location, BiomeType biome) { - checkNotNull(location); - checkNotNull(biome); - - CraftWorld craftWorld = ((CraftWorld) location.getWorld()); - int x = location.getBlockX(); - int y = location.getBlockY(); - int z = location.getBlockZ(); - - final ServerLevel handle = craftWorld.getHandle(); - LevelChunk chunk = handle.getChunk(x >> 4, z >> 4); - chunk.setBiome(x >> 2, y >> 2, z >> 2, biomeTypeToNMSCache.computeIfAbsent(biome, b -> ((CraftServer) Bukkit.getServer()).getServer().registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getHolderOrThrow(ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(b.id()))))); - chunk.setUnsaved(true); - } - - @Override - public WorldNativeAccess createWorldNativeAccess(World world) { - return new PaperweightWorldNativeAccess(this, - new WeakReference<>(((CraftWorld) world).getHandle())); - } - - private static net.minecraft.core.Direction adapt(Direction face) { - switch (face) { - case NORTH: - return net.minecraft.core.Direction.NORTH; - case SOUTH: - return net.minecraft.core.Direction.SOUTH; - case WEST: - return net.minecraft.core.Direction.WEST; - case EAST: - return net.minecraft.core.Direction.EAST; - case DOWN: - return net.minecraft.core.Direction.DOWN; - case UP: - default: - return net.minecraft.core.Direction.UP; - } - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - private net.minecraft.world.level.block.state.BlockState applyProperties( - StateDefinition stateContainer, - net.minecraft.world.level.block.state.BlockState newState, - Map, Object> states - ) { - for (Map.Entry, Object> state : states.entrySet()) { - net.minecraft.world.level.block.state.properties.Property property = - stateContainer.getProperty(state.getKey().getName()); - Comparable value = (Comparable) state.getValue(); - // we may need to adapt this value, depending on the source prop - if (property instanceof DirectionProperty) { - Direction dir = (Direction) value; - value = adapt(dir); - } else if (property instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - String enumName = (String) value; - value = ((net.minecraft.world.level.block.state.properties.EnumProperty) property) - .getValue(enumName).orElseThrow(() -> - new IllegalStateException( - "Enum property " + property.getName() + " does not contain " + enumName - ) - ); - } - - newState = newState.setValue( - (net.minecraft.world.level.block.state.properties.Property) property, - (Comparable) value - ); - } - return newState; - } - - @Override - public BaseEntity getEntity(org.bukkit.entity.Entity entity) { - checkNotNull(entity); - - CraftEntity craftEntity = ((CraftEntity) entity); - Entity mcEntity = craftEntity.getHandle(); - - // Do not allow creating of passenger entity snapshots, passengers are included in the vehicle entity - if (mcEntity.isPassenger()) { - return null; - } - - String id = getEntityId(mcEntity); - - CompoundTag tag = new CompoundTag(); - readEntityIntoTag(mcEntity, tag); - return new BaseEntity( - EntityTypes.get(id), - LazyReference.from(() -> (LinCompoundTag) toNative(tag)) - ); - } - - @Nullable - @Override - public org.bukkit.entity.Entity createEntity(Location location, BaseEntity state) { - checkNotNull(location); - checkNotNull(state); - - CraftWorld craftWorld = ((CraftWorld) location.getWorld()); - ServerLevel worldServer = craftWorld.getHandle(); - - String entityId = state.getType().id(); - - LinCompoundTag nativeTag = state.getNbt(); - CompoundTag tag; - if (nativeTag != null) { - tag = (CompoundTag) fromNative(nativeTag); - removeUnwantedEntityTagsRecursively(tag); - } else { - tag = new CompoundTag(); - } - - tag.putString("id", entityId); - - Entity createdEntity = EntityType.loadEntityRecursive(tag, craftWorld.getHandle(), (loadedEntity) -> { - loadedEntity.absMoveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch()); - return loadedEntity; - }); - - if (createdEntity != null) { - worldServer.addFreshEntityWithPassengers(createdEntity, SpawnReason.CUSTOM); - return createdEntity.getBukkitEntity(); - } else { - return null; - } - } - - // This removes all unwanted tags from the main entity and all its passengers - private void removeUnwantedEntityTagsRecursively(CompoundTag tag) { - for (String name : Constants.NO_COPY_ENTITY_NBT_FIELDS) { - tag.remove(name); - } - - // Adapted from net.minecraft.world.entity.EntityType#loadEntityRecursive - if (tag.contains("Passengers", LinTagId.LIST.id())) { - ListTag nbttaglist = tag.getList("Passengers", LinTagId.COMPOUND.id()); - - for (int i = 0; i < nbttaglist.size(); ++i) { - removeUnwantedEntityTagsRecursively(nbttaglist.getCompound(i)); - } - } - } - - @Override - public Component getRichBlockName(BlockType blockType) { - return TranslatableComponent.of(getBlockFromType(blockType).getDescriptionId()); - } - - @Override - public Component getRichItemName(ItemType itemType) { - return TranslatableComponent.of(getItemFromType(itemType).getDescriptionId()); - } - - @Override - public Component getRichItemName(BaseItemStack itemStack) { - return TranslatableComponent.of(CraftItemStack.asNMSCopy(BukkitAdapter.adapt(itemStack)).getDescriptionId()); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private static final LoadingCache> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader>() { - @Override - public Property load(net.minecraft.world.level.block.state.properties.Property state) throws Exception { - if (state instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - return new BooleanProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); - } else if (state instanceof DirectionProperty) { - return new DirectionalProperty(state.getName(), - (List) state.getPossibleValues().stream().map(e -> Direction.valueOf(((StringRepresentable) e).getSerializedName().toUpperCase(Locale.ROOT))).toList()); - } else if (state instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - return new EnumProperty(state.getName(), - (List) state.getPossibleValues().stream().map(e -> ((StringRepresentable) e).getSerializedName()).toList()); - } else if (state instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - return new IntegerProperty(state.getName(), ImmutableList.copyOf(state.getPossibleValues())); - } else { - throw new IllegalArgumentException("WorldEdit needs an update to support " + state.getClass().getSimpleName()); - } - } - }); - - @SuppressWarnings({ "rawtypes" }) - @Override - public Map> getProperties(BlockType blockType) { - Map> properties = new TreeMap<>(); - Block block = getBlockFromType(blockType); - StateDefinition blockStateList = - block.getStateDefinition(); - for (net.minecraft.world.level.block.state.properties.Property state : blockStateList.getProperties()) { - Property property = PROPERTY_CACHE.getUnchecked(state); - properties.put(property.getName(), property); - } - return properties; - } - - @Override - public void sendFakeNBT(Player player, BlockVector3 pos, LinCompoundTag nbtData) { - ((CraftPlayer) player).getHandle().networkManager.send(ClientboundBlockEntityDataPacket.create( - new StructureBlockEntity( - new BlockPos(pos.x(), pos.y(), pos.z()), - Blocks.STRUCTURE_BLOCK.defaultBlockState() - ), - __ -> (CompoundTag) fromNative(nbtData) - )); - } - - @Override - public void sendFakeOP(Player player) { - ((CraftPlayer) player).getHandle().networkManager.send(new ClientboundEntityEventPacket( - ((CraftPlayer) player).getHandle(), (byte) 28 - )); - } - - @Override - public org.bukkit.inventory.ItemStack adapt(BaseItemStack item) { - ItemStack stack = new ItemStack(Registry.ITEM.get(ResourceLocation.tryParse(item.getType().id())), item.getAmount()); - stack.setTag(((CompoundTag) fromNative(item.getNbt()))); - return CraftItemStack.asCraftMirror(stack); - } - - @Override - public BaseItemStack adapt(org.bukkit.inventory.ItemStack itemStack) { - final ItemStack nmsStack = CraftItemStack.asNMSCopy(itemStack); - final BaseItemStack weStack = new BaseItemStack(BukkitAdapter.asItemType(itemStack.getType()), itemStack.getAmount()); - weStack.setNbtReference(LazyReference.from(() -> (LinCompoundTag) toNative(nmsStack.getTag()))); - return weStack; - } - - private final LoadingCache fakePlayers - = CacheBuilder.newBuilder().weakKeys().softValues().build(CacheLoader.from(PaperweightFakePlayer::new)); - - @Override - public boolean simulateItemUse(World world, BlockVector3 position, BaseItem item, Direction face) { - CraftWorld craftWorld = (CraftWorld) world; - ServerLevel worldServer = craftWorld.getHandle(); - ItemStack stack = CraftItemStack.asNMSCopy(BukkitAdapter.adapt(item instanceof BaseItemStack - ? ((BaseItemStack) item) : new BaseItemStack(item.getType(), item.getNbtReference(), 1))); - stack.setTag((CompoundTag) fromNative(item.getNbt())); - - PaperweightFakePlayer fakePlayer; - try { - fakePlayer = fakePlayers.get(worldServer); - } catch (ExecutionException ignored) { - return false; - } - fakePlayer.setItemInHand(InteractionHand.MAIN_HAND, stack); - fakePlayer.absMoveTo(position.x(), position.y(), position.z(), - (float) face.toVector().toYaw(), (float) face.toVector().toPitch()); - - final BlockPos blockPos = new BlockPos(position.x(), position.y(), position.z()); - final Vec3 blockVec = Vec3.atLowerCornerOf(blockPos); - final net.minecraft.core.Direction enumFacing = adapt(face); - BlockHitResult rayTrace = new BlockHitResult(blockVec, enumFacing, blockPos, false); - UseOnContext context = new UseOnContext(fakePlayer, InteractionHand.MAIN_HAND, rayTrace); - InteractionResult result = stack.useOn(context, InteractionHand.MAIN_HAND); - if (result != InteractionResult.SUCCESS) { - if (worldServer.getBlockState(blockPos).use(worldServer, fakePlayer, InteractionHand.MAIN_HAND, rayTrace).consumesAction()) { - result = InteractionResult.SUCCESS; - } else { - result = stack.getItem().use(worldServer, fakePlayer, InteractionHand.MAIN_HAND).getResult(); - } - } - - return result == InteractionResult.SUCCESS; - } - - @Override - public boolean canPlaceAt(World world, BlockVector3 position, BlockState blockState) { - int internalId = BlockStateIdAccess.getBlockStateId(blockState); - net.minecraft.world.level.block.state.BlockState blockData = Block.stateById(internalId); - return blockData.canSurvive(((CraftWorld) world).getHandle(), new BlockPos(position.x(), position.y(), position.z())); - } - - @Override - public boolean regenerate(World bukkitWorld, Region region, Extent extent, RegenOptions options) { - try { - doRegen(bukkitWorld, region, extent, options); - } catch (Exception e) { - throw new IllegalStateException("Regen failed.", e); - } - - return true; - } - - private void doRegen(World bukkitWorld, Region region, Extent extent, RegenOptions options) throws Exception { - Environment env = bukkitWorld.getEnvironment(); - ChunkGenerator gen = bukkitWorld.getGenerator(); - - Path tempDir = Files.createTempDirectory("WorldEditWorldGen"); - LevelStorageSource levelStorage = LevelStorageSource.createDefault(tempDir); - ResourceKey worldDimKey = getWorldDimKey(env); - try (LevelStorageSource.LevelStorageAccess session = levelStorage.createAccess("worldeditregentempworld", worldDimKey)) { - ServerLevel originalWorld = ((CraftWorld) bukkitWorld).getHandle(); - PrimaryLevelData levelProperties = (PrimaryLevelData) originalWorld.getServer() - .getWorldData().overworldData(); - WorldGenSettings originalOpts = levelProperties.worldGenSettings(); - - long seed = options.getSeed().orElse(originalWorld.getSeed()); - WorldGenSettings newOpts = options.getSeed().isPresent() - ? originalOpts.withSeed(levelProperties.isHardcore(), OptionalLong.of(seed)) - : originalOpts; - - LevelSettings newWorldSettings = new LevelSettings( - "worldeditregentempworld", - levelProperties.settings.gameType(), - levelProperties.settings.hardcore(), - levelProperties.settings.difficulty(), - levelProperties.settings.allowCommands(), - levelProperties.settings.gameRules(), - levelProperties.settings.getDataPackConfig() - ); - PrimaryLevelData newWorldData = new PrimaryLevelData(newWorldSettings, newOpts, Lifecycle.stable()); - - ServerLevel freshWorld = new ServerLevel( - originalWorld.getServer(), - originalWorld.getServer().executor, - session, newWorldData, - originalWorld.dimension(), - originalWorld.dimensionTypeRegistration(), - new NoOpWorldLoadListener(), - newOpts.dimensions().get(worldDimKey).generator(), - originalWorld.isDebug(), - seed, - ImmutableList.of(), - false, - env, gen, - bukkitWorld.getBiomeProvider() - ); - try { - regenForWorld(region, extent, freshWorld, options); - } finally { - freshWorld.getChunkSource().close(false); - } - } finally { - try { - @SuppressWarnings("unchecked") - Map map = (Map) serverWorldsField.get(Bukkit.getServer()); - map.remove("worldeditregentempworld"); - } catch (IllegalAccessException ignored) { - } - SafeFiles.tryHardToDeleteDir(tempDir); - } - } - - private BiomeType adapt(ServerLevel serverWorld, Biome origBiome) { - ResourceLocation key = serverWorld.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).getKey(origBiome); - if (key == null) { - return null; - } - return BiomeTypes.get(key.toString()); - } - - @SuppressWarnings("unchecked") - private void regenForWorld(Region region, Extent extent, ServerLevel serverWorld, RegenOptions options) throws WorldEditException { - List> chunkLoadings = submitChunkLoadTasks(region, serverWorld); - BlockableEventLoop executor; - try { - executor = (BlockableEventLoop) chunkProviderExecutorField.get(serverWorld.getChunkSource()); - } catch (IllegalAccessException e) { - throw new IllegalStateException("Couldn't get executor for chunk loading.", e); - } - executor.managedBlock(() -> { - // bail out early if a future fails - if (chunkLoadings.stream().anyMatch(ftr -> - ftr.isDone() && Futures.getUnchecked(ftr) == null - )) { - return false; - } - return chunkLoadings.stream().allMatch(CompletableFuture::isDone); - }); - Map chunks = new HashMap<>(); - for (CompletableFuture future : chunkLoadings) { - @Nullable - ChunkAccess chunk = future.getNow(null); - checkState(chunk != null, "Failed to generate a chunk, regen failed."); - chunks.put(chunk.getPos(), chunk); - } - - for (BlockVector3 vec : region) { - BlockPos pos = new BlockPos(vec.x(), vec.y(), vec.z()); - ChunkAccess chunk = chunks.get(new ChunkPos(pos)); - final net.minecraft.world.level.block.state.BlockState blockData = chunk.getBlockState(pos); - int internalId = Block.getId(blockData); - BlockStateHolder state = BlockStateIdAccess.getBlockStateById(internalId); - Objects.requireNonNull(state); - BlockEntity blockEntity = chunk.getBlockEntity(pos); - if (blockEntity != null) { - CompoundTag tag = blockEntity.saveWithId(); - state = state.toBaseBlock(LazyReference.from(() -> (LinCompoundTag) toNative(tag))); - } - extent.setBlock(vec, state.toBaseBlock()); - if (options.shouldRegenBiomes()) { - Biome origBiome = chunk.getNoiseBiome(vec.x(), vec.y(), vec.z()).value(); - BiomeType adaptedBiome = adapt(serverWorld, origBiome); - if (adaptedBiome != null) { - extent.setBiome(vec, adaptedBiome); - } - } - } - } - - @SuppressWarnings("unchecked") - private List> submitChunkLoadTasks(Region region, ServerLevel serverWorld) { - ServerChunkCache chunkManager = serverWorld.getChunkSource(); - List> chunkLoadings = new ArrayList<>(); - // Pre-gen all the chunks - for (BlockVector2 chunk : region.getChunks()) { - try { - //noinspection unchecked - chunkLoadings.add( - ((CompletableFuture>) - getChunkFutureMethod.invoke(chunkManager, chunk.x(), chunk.z(), ChunkStatus.FEATURES, true)) - .thenApply(either -> either.left().orElse(null)) - ); - } catch (IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Couldn't load chunk for regen.", e); - } - } - return chunkLoadings; - } - - private ResourceKey getWorldDimKey(Environment env) { - switch (env) { - case NETHER: - return LevelStem.NETHER; - case THE_END: - return LevelStem.END; - case NORMAL: - default: - return LevelStem.OVERWORLD; - } - } - - private static final Set SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet( - SideEffect.NEIGHBORS, - SideEffect.LIGHTING, - SideEffect.VALIDATION, - SideEffect.ENTITY_AI, - SideEffect.EVENTS, - SideEffect.UPDATE - ); - - @Override - public Set getSupportedSideEffects() { - return SUPPORTED_SIDE_EFFECTS; - } - - @Override - public boolean clearContainerBlockContents(World world, BlockVector3 pt) { - ServerLevel originalWorld = ((CraftWorld) world).getHandle(); - - BlockEntity entity = originalWorld.getBlockEntity(new BlockPos(pt.x(), pt.y(), pt.z())); - if (entity instanceof Clearable) { - ((Clearable) entity).clearContent(); - return true; - } - return false; - } - - @Override - public void initializeRegistries() { - DedicatedServer server = ((CraftServer) Bukkit.getServer()).getServer(); - // Biomes - for (ResourceLocation name : server.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).keySet()) { - if (BiomeType.REGISTRY.get(name.toString()) == null) { - BiomeType.REGISTRY.register(name.toString(), new BiomeType(name.toString())); - } - } - } - - // ------------------------------------------------------------------------ - // Code that is less likely to break - // ------------------------------------------------------------------------ - - /** - * Converts from a non-native NMS NBT structure to a native WorldEdit NBT - * structure. - * - * @param foreign non-native NMS NBT structure - * @return native WorldEdit NBT structure - */ - LinTag toNative(Tag foreign) { - if (foreign == null) { - return null; - } - if (foreign instanceof CompoundTag compoundTag) { - LinCompoundTag.Builder builder = LinCompoundTag.builder(); - for (var entry : compoundTag.tags.entrySet()) { - builder.put(entry.getKey(), toNative(entry.getValue())); - } - return builder.build(); - } else if (foreign instanceof ByteTag byteTag) { - return LinByteTag.of(byteTag.getAsByte()); - } else if (foreign instanceof ByteArrayTag byteArrayTag) { - return LinByteArrayTag.of(byteArrayTag.getAsByteArray()); - } else if (foreign instanceof DoubleTag doubleTag) { - return LinDoubleTag.of(doubleTag.getAsDouble()); - } else if (foreign instanceof FloatTag floatTag) { - return LinFloatTag.of(floatTag.getAsFloat()); - } else if (foreign instanceof IntTag intTag) { - return LinIntTag.of(intTag.getAsInt()); - } else if (foreign instanceof IntArrayTag intArrayTag) { - return LinIntArrayTag.of(intArrayTag.getAsIntArray()); - } else if (foreign instanceof LongArrayTag longArrayTag) { - return LinLongArrayTag.of(longArrayTag.getAsLongArray()); - } else if (foreign instanceof ListTag listTag) { - try { - return toNativeList(listTag); - } catch (Throwable e) { - logger.log(Level.WARNING, "Failed to convert net.minecraft.nbt.ListTag", e); - return LinListTag.empty(LinTagType.endTag()); - } - } else if (foreign instanceof LongTag longTag) { - return LinLongTag.of(longTag.getAsLong()); - } else if (foreign instanceof ShortTag shortTag) { - return LinShortTag.of(shortTag.getAsShort()); - } else if (foreign instanceof StringTag stringTag) { - return LinStringTag.of(stringTag.getAsString()); - } else if (foreign instanceof EndTag) { - return LinEndTag.instance(); - } else { - throw new IllegalArgumentException("Don't know how to make native " + foreign.getClass().getCanonicalName()); - } - } - - /** - * Convert a foreign NBT list tag into a native WorldEdit one. - * - * @param foreign the foreign tag - * @return the converted tag - * @throws SecurityException on error - * @throws IllegalArgumentException on error - */ - private LinListTag toNativeList(ListTag foreign) throws SecurityException, IllegalArgumentException { - LinListTag.Builder> builder = LinListTag.builder( - LinTagType.fromId(LinTagId.fromId(foreign.getElementType())) - ); - - for (Tag tag : foreign) { - builder.add(toNative(tag)); - } - - return builder.build(); - } - - /** - * Converts a WorldEdit-native NBT structure to a NMS structure. - * - * @param foreign structure to convert - * @return non-native structure - */ - Tag fromNative(LinTag foreign) { - if (foreign == null) { - return null; - } - if (foreign instanceof LinCompoundTag compoundTag) { - CompoundTag tag = new CompoundTag(); - for (var entry : compoundTag.value().entrySet()) { - tag.put(entry.getKey(), fromNative(entry.getValue())); - } - return tag; - } else if (foreign instanceof LinByteTag byteTag) { - return ByteTag.valueOf(byteTag.valueAsByte()); - } else if (foreign instanceof LinByteArrayTag byteArrayTag) { - return new ByteArrayTag(byteArrayTag.value()); - } else if (foreign instanceof LinDoubleTag doubleTag) { - return DoubleTag.valueOf(doubleTag.valueAsDouble()); - } else if (foreign instanceof LinFloatTag floatTag) { - return FloatTag.valueOf(floatTag.valueAsFloat()); - } else if (foreign instanceof LinIntTag intTag) { - return IntTag.valueOf(intTag.valueAsInt()); - } else if (foreign instanceof LinIntArrayTag intArrayTag) { - return new IntArrayTag(intArrayTag.value()); - } else if (foreign instanceof LinLongArrayTag longArrayTag) { - return new LongArrayTag(longArrayTag.value()); - } else if (foreign instanceof LinListTag listTag) { - ListTag tag = new ListTag(); - for (var t : listTag.value()) { - tag.add(fromNative(t)); - } - return tag; - } else if (foreign instanceof LinLongTag longTag) { - return LongTag.valueOf(longTag.valueAsLong()); - } else if (foreign instanceof LinShortTag shortTag) { - return ShortTag.valueOf(shortTag.valueAsShort()); - } else if (foreign instanceof LinStringTag stringTag) { - return StringTag.valueOf(stringTag.value()); - } else if (foreign instanceof LinEndTag) { - return EndTag.INSTANCE; - } else { - throw new IllegalArgumentException("Don't know how to make NMS " + foreign.getClass().getCanonicalName()); - } - } - - @Override - public boolean supportsWatchdog() { - return watchdog != null; - } - - @Override - public void tickWatchdog() { - watchdog.tick(); - } - - private class SpigotWatchdog implements Watchdog { - private final Field instanceField; - private final Field lastTickField; - - SpigotWatchdog() throws NoSuchFieldException { - Field instanceField = WatchdogThread.class.getDeclaredField("instance"); - instanceField.setAccessible(true); - this.instanceField = instanceField; - - Field lastTickField = WatchdogThread.class.getDeclaredField("lastTick"); - lastTickField.setAccessible(true); - this.lastTickField = lastTickField; - } - - @Override - public void tick() { - try { - WatchdogThread instance = (WatchdogThread) this.instanceField.get(null); - if ((long) lastTickField.get(instance) != 0) { - WatchdogThread.tick(); - } - } catch (IllegalAccessException e) { - logger.log(Level.WARNING, "Failed to tick watchdog", e); - } - } - } - - private static class MojangWatchdog implements Watchdog { - private final DedicatedServer server; - private final Field tickField; - - MojangWatchdog(DedicatedServer server) throws NoSuchFieldException { - this.server = server; - Field tickField = MinecraftServer.class.getDeclaredField( - Refraction.pickName("nextTickTime", "ao") - ); - tickField.setAccessible(true); - this.tickField = tickField; - } - - @Override - public void tick() { - try { - tickField.set(server, Util.getMillis()); - } catch (IllegalAccessException ignored) { - } - } - } - - private static class NoOpWorldLoadListener implements ChunkProgressListener { - @Override - public void updateSpawnPos(ChunkPos spawnPos) { - } - - @Override - public void onStatusChange(ChunkPos pos, @org.jetbrains.annotations.Nullable ChunkStatus status) { - } - - @Override - public void start() { - } - - @Override - public void stop() { - } - - @Override - public void setChunkRadius(int radius) { - } - } -} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java deleted file mode 100644 index 78d4e2fa45..0000000000 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightDataConverters.java +++ /dev/null @@ -1,2800 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; -import com.google.gson.JsonParseException; -import com.mojang.datafixers.DSL.TypeReference; -import com.mojang.datafixers.DataFixer; -import com.mojang.datafixers.DataFixerBuilder; -import com.mojang.datafixers.schemas.Schema; -import com.mojang.serialization.Dynamic; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.FloatTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.NbtOps; -import net.minecraft.nbt.StringTag; -import net.minecraft.nbt.Tag; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; -import net.minecraft.util.StringUtil; -import net.minecraft.util.datafix.DataFixers; -import net.minecraft.util.datafix.fixes.References; -import net.minecraft.world.item.DyeColor; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.enginehub.linbus.tree.LinCompoundTag; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.EnumMap; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Random; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.Executor; -import java.util.stream.Collectors; -import javax.annotation.Nullable; - -/** - * Handles converting all Pre 1.13.2 data using the Legacy DataFix System (ported to 1.13.2) - * - * We register a DFU Fixer per Legacy Data Version and apply the fixes using legacy strategy - * which is safer, faster and cleaner code. - * - * The pre DFU code did not fail when the Source version was unknown. - * - * This class also provides util methods for converting compounds to wrap the update call to - * receive the source version in the compound - */ -@SuppressWarnings({ "rawtypes", "unchecked" }) -class PaperweightDataConverters extends DataFixerBuilder implements com.sk89q.worldedit.world.DataFixer { - - @SuppressWarnings("unchecked") - @Override - public T fixUp(FixType type, T original, int srcVer) { - if (type == FixTypes.CHUNK) { - return (T) fixChunk((LinCompoundTag) original, srcVer); - } else if (type == FixTypes.BLOCK_ENTITY) { - return (T) fixBlockEntity((LinCompoundTag) original, srcVer); - } else if (type == FixTypes.ENTITY) { - return (T) fixEntity((LinCompoundTag) original, srcVer); - } else if (type == FixTypes.BLOCK_STATE) { - return (T) fixBlockState((String) original, srcVer); - } else if (type == FixTypes.ITEM_TYPE) { - return (T) fixItemType((String) original, srcVer); - } else if (type == FixTypes.BIOME) { - return (T) fixBiome((String) original, srcVer); - } - return original; - } - - private LinCompoundTag fixChunk(LinCompoundTag originalChunk, int srcVer) { - CompoundTag tag = (CompoundTag) adapter.fromNative(originalChunk); - CompoundTag fixed = convert(LegacyType.CHUNK, tag, srcVer); - return (LinCompoundTag) adapter.toNative(fixed); - } - - private LinCompoundTag fixBlockEntity(LinCompoundTag origTileEnt, int srcVer) { - CompoundTag tag = (CompoundTag) adapter.fromNative(origTileEnt); - CompoundTag fixed = convert(LegacyType.BLOCK_ENTITY, tag, srcVer); - return (LinCompoundTag) adapter.toNative(fixed); - } - - private LinCompoundTag fixEntity(LinCompoundTag origEnt, int srcVer) { - CompoundTag tag = (CompoundTag) adapter.fromNative(origEnt); - CompoundTag fixed = convert(LegacyType.ENTITY, tag, srcVer); - return (LinCompoundTag) adapter.toNative(fixed); - } - - private String fixBlockState(String blockState, int srcVer) { - CompoundTag stateNBT = stateToNBT(blockState); - Dynamic dynamic = new Dynamic<>(OPS_NBT, stateNBT); - CompoundTag fixed = (CompoundTag) INSTANCE.fixer.update(References.BLOCK_STATE, dynamic, srcVer, DATA_VERSION).getValue(); - return nbtToState(fixed); - } - - private String nbtToState(CompoundTag tagCompound) { - StringBuilder sb = new StringBuilder(); - sb.append(tagCompound.getString("Name")); - if (tagCompound.contains("Properties", 10)) { - sb.append('['); - CompoundTag props = tagCompound.getCompound("Properties"); - sb.append(props.getAllKeys().stream().map(k -> k + "=" + props.getString(k).replace("\"", "")).collect(Collectors.joining(","))); - sb.append(']'); - } - return sb.toString(); - } - - private static CompoundTag stateToNBT(String blockState) { - int propIdx = blockState.indexOf('['); - CompoundTag tag = new CompoundTag(); - if (propIdx < 0) { - tag.putString("Name", blockState); - } else { - tag.putString("Name", blockState.substring(0, propIdx)); - CompoundTag propTag = new CompoundTag(); - String props = blockState.substring(propIdx + 1, blockState.length() - 1); - String[] propArr = props.split(","); - for (String pair : propArr) { - final String[] split = pair.split("="); - propTag.putString(split[0], split[1]); - } - tag.put("Properties", propTag); - } - return tag; - } - - private String fixBiome(String key, int srcVer) { - return fixName(key, srcVer, References.BIOME); - } - - private String fixItemType(String key, int srcVer) { - return fixName(key, srcVer, References.ITEM_NAME); - } - - private static String fixName(String key, int srcVer, TypeReference type) { - return INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, StringTag.valueOf(key)), srcVer, DATA_VERSION) - .getValue().getAsString(); - } - - private final PaperweightAdapter adapter; - - private static final NbtOps OPS_NBT = NbtOps.INSTANCE; - private static final int LEGACY_VERSION = 1343; - private static int DATA_VERSION; - static PaperweightDataConverters INSTANCE; - - private final Map> converters = new EnumMap<>(LegacyType.class); - private final Map> inspectors = new EnumMap<>(LegacyType.class); - - // Set on build - private DataFixer fixer; - private static final Map DFU_TO_LEGACY = new HashMap<>(); - - public enum LegacyType { - LEVEL(References.LEVEL), - PLAYER(References.PLAYER), - CHUNK(References.CHUNK), - BLOCK_ENTITY(References.BLOCK_ENTITY), - ENTITY(References.ENTITY), - ITEM_INSTANCE(References.ITEM_STACK), - OPTIONS(References.OPTIONS), - STRUCTURE(References.STRUCTURE); - - private final TypeReference type; - - LegacyType(TypeReference type) { - this.type = type; - DFU_TO_LEGACY.put(type.typeName(), this); - } - - public TypeReference getDFUType() { - return type; - } - } - - PaperweightDataConverters(int dataVersion, PaperweightAdapter adapter) { - super(dataVersion); - DATA_VERSION = dataVersion; - INSTANCE = this; - this.adapter = adapter; - registerConverters(); - registerInspectors(); - } - - - // Called after fixers are built and ready for FIXING - @Override - public DataFixer build(final Executor executor) { - return this.fixer = new WrappedDataFixer(DataFixers.getDataFixer()); - } - - @SuppressWarnings("unchecked") - private class WrappedDataFixer implements DataFixer { - private final DataFixer realFixer; - - WrappedDataFixer(DataFixer realFixer) { - this.realFixer = realFixer; - } - - @Override - public Dynamic update(TypeReference type, Dynamic dynamic, int sourceVer, int targetVer) { - LegacyType legacyType = DFU_TO_LEGACY.get(type.typeName()); - if (sourceVer < LEGACY_VERSION && legacyType != null) { - CompoundTag cmp = (CompoundTag) dynamic.getValue(); - int desiredVersion = Math.min(targetVer, LEGACY_VERSION); - - cmp = convert(legacyType, cmp, sourceVer, desiredVersion); - sourceVer = desiredVersion; - dynamic = new Dynamic(OPS_NBT, cmp); - } - return realFixer.update(type, dynamic, sourceVer, targetVer); - } - - private CompoundTag convert(LegacyType type, CompoundTag cmp, int sourceVer, int desiredVersion) { - List converters = PaperweightDataConverters.this.converters.get(type); - if (converters != null && !converters.isEmpty()) { - for (DataConverter converter : converters) { - int dataVersion = converter.getDataVersion(); - if (dataVersion > sourceVer && dataVersion <= desiredVersion) { - cmp = converter.convert(cmp); - } - } - } - - List inspectors = PaperweightDataConverters.this.inspectors.get(type); - if (inspectors != null && !inspectors.isEmpty()) { - for (DataInspector inspector : inspectors) { - cmp = inspector.inspect(cmp, sourceVer, desiredVersion); - } - } - - return cmp; - } - - @Override - public Schema getSchema(int i) { - return realFixer.getSchema(i); - } - } - - public static CompoundTag convert(LegacyType type, CompoundTag cmp) { - return convert(type.getDFUType(), cmp); - } - - public static CompoundTag convert(LegacyType type, CompoundTag cmp, int sourceVer) { - return convert(type.getDFUType(), cmp, sourceVer); - } - - public static CompoundTag convert(LegacyType type, CompoundTag cmp, int sourceVer, int targetVer) { - return convert(type.getDFUType(), cmp, sourceVer, targetVer); - } - - public static CompoundTag convert(TypeReference type, CompoundTag cmp) { - int i = cmp.contains("DataVersion", 99) ? cmp.getInt("DataVersion") : -1; - return convert(type, cmp, i); - } - - public static CompoundTag convert(TypeReference type, CompoundTag cmp, int sourceVer) { - return convert(type, cmp, sourceVer, DATA_VERSION); - } - - public static CompoundTag convert(TypeReference type, CompoundTag cmp, int sourceVer, int targetVer) { - if (sourceVer >= targetVer) { - return cmp; - } - return (CompoundTag) INSTANCE.fixer.update(type, new Dynamic<>(OPS_NBT, cmp), sourceVer, targetVer).getValue(); - } - - - public interface DataInspector { - CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer); - } - - public interface DataConverter { - - int getDataVersion(); - - CompoundTag convert(CompoundTag cmp); - } - - - private void registerInspector(LegacyType type, DataInspector inspector) { - this.inspectors.computeIfAbsent(type, k -> new ArrayList<>()).add(inspector); - } - - private void registerConverter(LegacyType type, DataConverter converter) { - int version = converter.getDataVersion(); - - List list = this.converters.computeIfAbsent(type, k -> new ArrayList<>()); - if (!list.isEmpty() && list.get(list.size() - 1).getDataVersion() > version) { - for (int j = 0; j < list.size(); ++j) { - if (list.get(j).getDataVersion() > version) { - list.add(j, converter); - break; - } - } - } else { - list.add(converter); - } - } - - private void registerInspectors() { - registerEntityItemList("EntityHorseDonkey", "SaddleItem", "Items"); - registerEntityItemList("EntityHorseMule", "Items"); - registerEntityItemList("EntityMinecartChest", "Items"); - registerEntityItemList("EntityMinecartHopper", "Items"); - registerEntityItemList("EntityVillager", "Inventory"); - registerEntityItemListEquipment("EntityArmorStand"); - registerEntityItemListEquipment("EntityBat"); - registerEntityItemListEquipment("EntityBlaze"); - registerEntityItemListEquipment("EntityCaveSpider"); - registerEntityItemListEquipment("EntityChicken"); - registerEntityItemListEquipment("EntityCow"); - registerEntityItemListEquipment("EntityCreeper"); - registerEntityItemListEquipment("EntityEnderDragon"); - registerEntityItemListEquipment("EntityEnderman"); - registerEntityItemListEquipment("EntityEndermite"); - registerEntityItemListEquipment("EntityEvoker"); - registerEntityItemListEquipment("EntityGhast"); - registerEntityItemListEquipment("EntityGiantZombie"); - registerEntityItemListEquipment("EntityGuardian"); - registerEntityItemListEquipment("EntityGuardianElder"); - registerEntityItemListEquipment("EntityHorse"); - registerEntityItemListEquipment("EntityHorseDonkey"); - registerEntityItemListEquipment("EntityHorseMule"); - registerEntityItemListEquipment("EntityHorseSkeleton"); - registerEntityItemListEquipment("EntityHorseZombie"); - registerEntityItemListEquipment("EntityIronGolem"); - registerEntityItemListEquipment("EntityMagmaCube"); - registerEntityItemListEquipment("EntityMushroomCow"); - registerEntityItemListEquipment("EntityOcelot"); - registerEntityItemListEquipment("EntityPig"); - registerEntityItemListEquipment("EntityPigZombie"); - registerEntityItemListEquipment("EntityRabbit"); - registerEntityItemListEquipment("EntitySheep"); - registerEntityItemListEquipment("EntityShulker"); - registerEntityItemListEquipment("EntitySilverfish"); - registerEntityItemListEquipment("EntitySkeleton"); - registerEntityItemListEquipment("EntitySkeletonStray"); - registerEntityItemListEquipment("EntitySkeletonWither"); - registerEntityItemListEquipment("EntitySlime"); - registerEntityItemListEquipment("EntitySnowman"); - registerEntityItemListEquipment("EntitySpider"); - registerEntityItemListEquipment("EntitySquid"); - registerEntityItemListEquipment("EntityVex"); - registerEntityItemListEquipment("EntityVillager"); - registerEntityItemListEquipment("EntityVindicator"); - registerEntityItemListEquipment("EntityWitch"); - registerEntityItemListEquipment("EntityWither"); - registerEntityItemListEquipment("EntityWolf"); - registerEntityItemListEquipment("EntityZombie"); - registerEntityItemListEquipment("EntityZombieHusk"); - registerEntityItemListEquipment("EntityZombieVillager"); - registerEntityItemSingle("EntityFireworks", "FireworksItem"); - registerEntityItemSingle("EntityHorse", "ArmorItem"); - registerEntityItemSingle("EntityHorse", "SaddleItem"); - registerEntityItemSingle("EntityHorseMule", "SaddleItem"); - registerEntityItemSingle("EntityHorseSkeleton", "SaddleItem"); - registerEntityItemSingle("EntityHorseZombie", "SaddleItem"); - registerEntityItemSingle("EntityItem", "Item"); - registerEntityItemSingle("EntityItemFrame", "Item"); - registerEntityItemSingle("EntityPotion", "Potion"); - - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItem("TileEntityRecordPlayer", "RecordItem")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityBrewingStand", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityChest", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityDispenser", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityDropper", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityFurnace", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityHopper", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorItemList("TileEntityShulkerBox", "Items")); - registerInspector(LegacyType.BLOCK_ENTITY, new DataInspectorMobSpawnerMobs()); - registerInspector(LegacyType.CHUNK, new DataInspectorChunks()); - registerInspector(LegacyType.ENTITY, new DataInspectorCommandBlock()); - registerInspector(LegacyType.ENTITY, new DataInspectorEntityPassengers()); - registerInspector(LegacyType.ENTITY, new DataInspectorMobSpawnerMinecart()); - registerInspector(LegacyType.ENTITY, new DataInspectorVillagers()); - registerInspector(LegacyType.ITEM_INSTANCE, new DataInspectorBlockEntity()); - registerInspector(LegacyType.ITEM_INSTANCE, new DataInspectorEntity()); - registerInspector(LegacyType.LEVEL, new DataInspectorLevelPlayer()); - registerInspector(LegacyType.PLAYER, new DataInspectorPlayer()); - registerInspector(LegacyType.PLAYER, new DataInspectorPlayerVehicle()); - registerInspector(LegacyType.STRUCTURE, new DataInspectorStructure()); - } - - private void registerConverters() { - registerConverter(LegacyType.ENTITY, new DataConverterEquipment()); - registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterSignText()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterMaterialId()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterPotionId()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterSpawnEgg()); - registerConverter(LegacyType.ENTITY, new DataConverterMinecart()); - registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterMobSpawner()); - registerConverter(LegacyType.ENTITY, new DataConverterUUID()); - registerConverter(LegacyType.ENTITY, new DataConverterHealth()); - registerConverter(LegacyType.ENTITY, new DataConverterSaddle()); - registerConverter(LegacyType.ENTITY, new DataConverterHanging()); - registerConverter(LegacyType.ENTITY, new DataConverterDropChances()); - registerConverter(LegacyType.ENTITY, new DataConverterRiding()); - registerConverter(LegacyType.ENTITY, new DataConverterArmorStand()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBook()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterCookedFish()); - registerConverter(LegacyType.ENTITY, new DataConverterZombie()); - registerConverter(LegacyType.OPTIONS, new DataConverterVBO()); - registerConverter(LegacyType.ENTITY, new DataConverterGuardian()); - registerConverter(LegacyType.ENTITY, new DataConverterSkeleton()); - registerConverter(LegacyType.ENTITY, new DataConverterZombieType()); - registerConverter(LegacyType.ENTITY, new DataConverterHorse()); - registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterTileEntity()); - registerConverter(LegacyType.ENTITY, new DataConverterEntity()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBanner()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterPotionWater()); - registerConverter(LegacyType.ENTITY, new DataConverterShulker()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterShulkerBoxItem()); - registerConverter(LegacyType.BLOCK_ENTITY, new DataConverterShulkerBoxBlock()); - registerConverter(LegacyType.OPTIONS, new DataConverterLang()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterTotem()); - registerConverter(LegacyType.CHUNK, new DataConverterBedBlock()); - registerConverter(LegacyType.ITEM_INSTANCE, new DataConverterBedItem()); - } - - private void registerEntityItemList(String type, String... keys) { - registerInspector(LegacyType.ENTITY, new DataInspectorItemList(type, keys)); - } - - private void registerEntityItemSingle(String type, String key) { - registerInspector(LegacyType.ENTITY, new DataInspectorItem(type, key)); - } - - private void registerEntityItemListEquipment(String type) { - registerEntityItemList(type, "ArmorItems", "HandItems"); - } - - private static final Map OLD_ID_TO_KEY_MAP = new HashMap<>(); - - static { - final Map map = OLD_ID_TO_KEY_MAP; - map.put("EntityItem", new ResourceLocation("item")); - map.put("EntityExperienceOrb", new ResourceLocation("xp_orb")); - map.put("EntityAreaEffectCloud", new ResourceLocation("area_effect_cloud")); - map.put("EntityGuardianElder", new ResourceLocation("elder_guardian")); - map.put("EntitySkeletonWither", new ResourceLocation("wither_skeleton")); - map.put("EntitySkeletonStray", new ResourceLocation("stray")); - map.put("EntityEgg", new ResourceLocation("egg")); - map.put("EntityLeash", new ResourceLocation("leash_knot")); - map.put("EntityPainting", new ResourceLocation("painting")); - map.put("EntityTippedArrow", new ResourceLocation("arrow")); - map.put("EntitySnowball", new ResourceLocation("snowball")); - map.put("EntityLargeFireball", new ResourceLocation("fireball")); - map.put("EntitySmallFireball", new ResourceLocation("small_fireball")); - map.put("EntityEnderPearl", new ResourceLocation("ender_pearl")); - map.put("EntityEnderSignal", new ResourceLocation("eye_of_ender_signal")); - map.put("EntityPotion", new ResourceLocation("potion")); - map.put("EntityThrownExpBottle", new ResourceLocation("xp_bottle")); - map.put("EntityItemFrame", new ResourceLocation("item_frame")); - map.put("EntityWitherSkull", new ResourceLocation("wither_skull")); - map.put("EntityTNTPrimed", new ResourceLocation("tnt")); - map.put("EntityFallingBlock", new ResourceLocation("falling_block")); - map.put("EntityFireworks", new ResourceLocation("fireworks_rocket")); - map.put("EntityZombieHusk", new ResourceLocation("husk")); - map.put("EntitySpectralArrow", new ResourceLocation("spectral_arrow")); - map.put("EntityShulkerBullet", new ResourceLocation("shulker_bullet")); - map.put("EntityDragonFireball", new ResourceLocation("dragon_fireball")); - map.put("EntityZombieVillager", new ResourceLocation("zombie_villager")); - map.put("EntityHorseSkeleton", new ResourceLocation("skeleton_horse")); - map.put("EntityHorseZombie", new ResourceLocation("zombie_horse")); - map.put("EntityArmorStand", new ResourceLocation("armor_stand")); - map.put("EntityHorseDonkey", new ResourceLocation("donkey")); - map.put("EntityHorseMule", new ResourceLocation("mule")); - map.put("EntityEvokerFangs", new ResourceLocation("evocation_fangs")); - map.put("EntityEvoker", new ResourceLocation("evocation_illager")); - map.put("EntityVex", new ResourceLocation("vex")); - map.put("EntityVindicator", new ResourceLocation("vindication_illager")); - map.put("EntityIllagerIllusioner", new ResourceLocation("illusion_illager")); - map.put("EntityMinecartCommandBlock", new ResourceLocation("commandblock_minecart")); - map.put("EntityBoat", new ResourceLocation("boat")); - map.put("EntityMinecartRideable", new ResourceLocation("minecart")); - map.put("EntityMinecartChest", new ResourceLocation("chest_minecart")); - map.put("EntityMinecartFurnace", new ResourceLocation("furnace_minecart")); - map.put("EntityMinecartTNT", new ResourceLocation("tnt_minecart")); - map.put("EntityMinecartHopper", new ResourceLocation("hopper_minecart")); - map.put("EntityMinecartMobSpawner", new ResourceLocation("spawner_minecart")); - map.put("EntityCreeper", new ResourceLocation("creeper")); - map.put("EntitySkeleton", new ResourceLocation("skeleton")); - map.put("EntitySpider", new ResourceLocation("spider")); - map.put("EntityGiantZombie", new ResourceLocation("giant")); - map.put("EntityZombie", new ResourceLocation("zombie")); - map.put("EntitySlime", new ResourceLocation("slime")); - map.put("EntityGhast", new ResourceLocation("ghast")); - map.put("EntityPigZombie", new ResourceLocation("zombie_pigman")); - map.put("EntityEnderman", new ResourceLocation("enderman")); - map.put("EntityCaveSpider", new ResourceLocation("cave_spider")); - map.put("EntitySilverfish", new ResourceLocation("silverfish")); - map.put("EntityBlaze", new ResourceLocation("blaze")); - map.put("EntityMagmaCube", new ResourceLocation("magma_cube")); - map.put("EntityEnderDragon", new ResourceLocation("ender_dragon")); - map.put("EntityWither", new ResourceLocation("wither")); - map.put("EntityBat", new ResourceLocation("bat")); - map.put("EntityWitch", new ResourceLocation("witch")); - map.put("EntityEndermite", new ResourceLocation("endermite")); - map.put("EntityGuardian", new ResourceLocation("guardian")); - map.put("EntityShulker", new ResourceLocation("shulker")); - map.put("EntityPig", new ResourceLocation("pig")); - map.put("EntitySheep", new ResourceLocation("sheep")); - map.put("EntityCow", new ResourceLocation("cow")); - map.put("EntityChicken", new ResourceLocation("chicken")); - map.put("EntitySquid", new ResourceLocation("squid")); - map.put("EntityWolf", new ResourceLocation("wolf")); - map.put("EntityMushroomCow", new ResourceLocation("mooshroom")); - map.put("EntitySnowman", new ResourceLocation("snowman")); - map.put("EntityOcelot", new ResourceLocation("ocelot")); - map.put("EntityIronGolem", new ResourceLocation("villager_golem")); - map.put("EntityHorse", new ResourceLocation("horse")); - map.put("EntityRabbit", new ResourceLocation("rabbit")); - map.put("EntityPolarBear", new ResourceLocation("polar_bear")); - map.put("EntityLlama", new ResourceLocation("llama")); - map.put("EntityLlamaSpit", new ResourceLocation("llama_spit")); - map.put("EntityParrot", new ResourceLocation("parrot")); - map.put("EntityVillager", new ResourceLocation("villager")); - map.put("EntityEnderCrystal", new ResourceLocation("ender_crystal")); - map.put("TileEntityFurnace", new ResourceLocation("furnace")); - map.put("TileEntityChest", new ResourceLocation("chest")); - map.put("TileEntityEnderChest", new ResourceLocation("ender_chest")); - map.put("TileEntityRecordPlayer", new ResourceLocation("jukebox")); - map.put("TileEntityDispenser", new ResourceLocation("dispenser")); - map.put("TileEntityDropper", new ResourceLocation("dropper")); - map.put("TileEntitySign", new ResourceLocation("sign")); - map.put("TileEntityMobSpawner", new ResourceLocation("mob_spawner")); - map.put("TileEntityNote", new ResourceLocation("noteblock")); - map.put("TileEntityPiston", new ResourceLocation("piston")); - map.put("TileEntityBrewingStand", new ResourceLocation("brewing_stand")); - map.put("TileEntityEnchantTable", new ResourceLocation("enchanting_table")); - map.put("TileEntityEnderPortal", new ResourceLocation("end_portal")); - map.put("TileEntityBeacon", new ResourceLocation("beacon")); - map.put("TileEntitySkull", new ResourceLocation("skull")); - map.put("TileEntityLightDetector", new ResourceLocation("daylight_detector")); - map.put("TileEntityHopper", new ResourceLocation("hopper")); - map.put("TileEntityComparator", new ResourceLocation("comparator")); - map.put("TileEntityFlowerPot", new ResourceLocation("flower_pot")); - map.put("TileEntityBanner", new ResourceLocation("banner")); - map.put("TileEntityStructure", new ResourceLocation("structure_block")); - map.put("TileEntityEndGateway", new ResourceLocation("end_gateway")); - map.put("TileEntityCommand", new ResourceLocation("command_block")); - map.put("TileEntityShulkerBox", new ResourceLocation("shulker_box")); - map.put("TileEntityBed", new ResourceLocation("bed")); - } - - private static ResourceLocation getKey(String type) { - final ResourceLocation key = OLD_ID_TO_KEY_MAP.get(type); - if (key == null) { - throw new IllegalArgumentException("Unknown mapping for " + type); - } - return key; - } - - private static void convertCompound(LegacyType type, CompoundTag cmp, String key, int sourceVer, int targetVer) { - cmp.put(key, convert(type, cmp.getCompound(key), sourceVer, targetVer)); - } - - private static void convertItem(CompoundTag nbttagcompound, String key, int sourceVer, int targetVer) { - if (nbttagcompound.contains(key, 10)) { - convertCompound(LegacyType.ITEM_INSTANCE, nbttagcompound, key, sourceVer, targetVer); - } - } - - private static void convertItems(CompoundTag nbttagcompound, String key, int sourceVer, int targetVer) { - if (nbttagcompound.contains(key, 9)) { - ListTag nbttaglist = nbttagcompound.getList(key, 10); - - for (int j = 0; j < nbttaglist.size(); ++j) { - nbttaglist.set(j, convert(LegacyType.ITEM_INSTANCE, nbttaglist.getCompound(j), sourceVer, targetVer)); - } - } - - } - - private static class DataConverterEquipment implements DataConverter { - - DataConverterEquipment() { - } - - public int getDataVersion() { - return 100; - } - - public CompoundTag convert(CompoundTag cmp) { - ListTag nbttaglist = cmp.getList("Equipment", 10); - ListTag nbttaglist1; - - if (!nbttaglist.isEmpty() && !cmp.contains("HandItems", 10)) { - nbttaglist1 = new ListTag(); - nbttaglist1.add(nbttaglist.get(0)); - nbttaglist1.add(new CompoundTag()); - cmp.put("HandItems", nbttaglist1); - } - - if (nbttaglist.size() > 1 && !cmp.contains("ArmorItem", 10)) { - nbttaglist1 = new ListTag(); - nbttaglist1.add(nbttaglist.get(1)); - nbttaglist1.add(nbttaglist.get(2)); - nbttaglist1.add(nbttaglist.get(3)); - nbttaglist1.add(nbttaglist.get(4)); - cmp.put("ArmorItems", nbttaglist1); - } - - cmp.remove("Equipment"); - if (cmp.contains("DropChances", 9)) { - nbttaglist1 = cmp.getList("DropChances", 5); - ListTag nbttaglist2; - - if (!cmp.contains("HandDropChances", 10)) { - nbttaglist2 = new ListTag(); - nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(0))); - nbttaglist2.add(FloatTag.valueOf(0.0F)); - cmp.put("HandDropChances", nbttaglist2); - } - - if (!cmp.contains("ArmorDropChances", 10)) { - nbttaglist2 = new ListTag(); - nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(1))); - nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(2))); - nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(3))); - nbttaglist2.add(FloatTag.valueOf(nbttaglist1.getFloat(4))); - cmp.put("ArmorDropChances", nbttaglist2); - } - - cmp.remove("DropChances"); - } - - return cmp; - } - } - - private static class DataInspectorBlockEntity implements DataInspector { - - private static final Map b = Maps.newHashMap(); - private static final Map c = Maps.newHashMap(); - - DataInspectorBlockEntity() { - } - - @Nullable - private static String convertEntityId(int i, String s) { - String key = new ResourceLocation(s).toString(); - if (i < 515 && DataInspectorBlockEntity.b.containsKey(key)) { - return DataInspectorBlockEntity.b.get(key); - } else { - return DataInspectorBlockEntity.c.get(key); - } - } - - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (!cmp.contains("tag", 10)) { - return cmp; - } else { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - - if (nbttagcompound1.contains("BlockEntityTag", 10)) { - CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); - String s = cmp.getString("id"); - String s1 = convertEntityId(sourceVer, s); - boolean flag; - - if (s1 == null) { - // CraftBukkit - Remove unnecessary warning (occurs when deserializing a Shulker Box item) - // DataInspectorBlockEntity.a.warn("Unable to resolve BlockEntity for ItemInstance: {}", s); - flag = false; - } else { - flag = !nbttagcompound2.contains("id"); - nbttagcompound2.putString("id", s1); - } - - convert(LegacyType.BLOCK_ENTITY, nbttagcompound2, sourceVer, targetVer); - if (flag) { - nbttagcompound2.remove("id"); - } - } - - return cmp; - } - } - - static { - Map map = DataInspectorBlockEntity.b; - - map.put("minecraft:furnace", "Furnace"); - map.put("minecraft:lit_furnace", "Furnace"); - map.put("minecraft:chest", "Chest"); - map.put("minecraft:trapped_chest", "Chest"); - map.put("minecraft:ender_chest", "EnderChest"); - map.put("minecraft:jukebox", "RecordPlayer"); - map.put("minecraft:dispenser", "Trap"); - map.put("minecraft:dropper", "Dropper"); - map.put("minecraft:sign", "Sign"); - map.put("minecraft:mob_spawner", "MobSpawner"); - map.put("minecraft:noteblock", "Music"); - map.put("minecraft:brewing_stand", "Cauldron"); - map.put("minecraft:enhanting_table", "EnchantTable"); - map.put("minecraft:command_block", "CommandBlock"); - map.put("minecraft:beacon", "Beacon"); - map.put("minecraft:skull", "Skull"); - map.put("minecraft:daylight_detector", "DLDetector"); - map.put("minecraft:hopper", "Hopper"); - map.put("minecraft:banner", "Banner"); - map.put("minecraft:flower_pot", "FlowerPot"); - map.put("minecraft:repeating_command_block", "CommandBlock"); - map.put("minecraft:chain_command_block", "CommandBlock"); - map.put("minecraft:standing_sign", "Sign"); - map.put("minecraft:wall_sign", "Sign"); - map.put("minecraft:piston_head", "Piston"); - map.put("minecraft:daylight_detector_inverted", "DLDetector"); - map.put("minecraft:unpowered_comparator", "Comparator"); - map.put("minecraft:powered_comparator", "Comparator"); - map.put("minecraft:wall_banner", "Banner"); - map.put("minecraft:standing_banner", "Banner"); - map.put("minecraft:structure_block", "Structure"); - map.put("minecraft:end_portal", "Airportal"); - map.put("minecraft:end_gateway", "EndGateway"); - map.put("minecraft:shield", "Shield"); - map = DataInspectorBlockEntity.c; - map.put("minecraft:furnace", "minecraft:furnace"); - map.put("minecraft:lit_furnace", "minecraft:furnace"); - map.put("minecraft:chest", "minecraft:chest"); - map.put("minecraft:trapped_chest", "minecraft:chest"); - map.put("minecraft:ender_chest", "minecraft:enderchest"); - map.put("minecraft:jukebox", "minecraft:jukebox"); - map.put("minecraft:dispenser", "minecraft:dispenser"); - map.put("minecraft:dropper", "minecraft:dropper"); - map.put("minecraft:sign", "minecraft:sign"); - map.put("minecraft:mob_spawner", "minecraft:mob_spawner"); - map.put("minecraft:noteblock", "minecraft:noteblock"); - map.put("minecraft:brewing_stand", "minecraft:brewing_stand"); - map.put("minecraft:enhanting_table", "minecraft:enchanting_table"); - map.put("minecraft:command_block", "minecraft:command_block"); - map.put("minecraft:beacon", "minecraft:beacon"); - map.put("minecraft:skull", "minecraft:skull"); - map.put("minecraft:daylight_detector", "minecraft:daylight_detector"); - map.put("minecraft:hopper", "minecraft:hopper"); - map.put("minecraft:banner", "minecraft:banner"); - map.put("minecraft:flower_pot", "minecraft:flower_pot"); - map.put("minecraft:repeating_command_block", "minecraft:command_block"); - map.put("minecraft:chain_command_block", "minecraft:command_block"); - map.put("minecraft:shulker_box", "minecraft:shulker_box"); - map.put("minecraft:white_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:orange_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:magenta_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:light_blue_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:yellow_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:lime_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:pink_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:gray_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:silver_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:cyan_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:purple_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:blue_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:brown_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:green_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:red_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:black_shulker_box", "minecraft:shulker_box"); - map.put("minecraft:bed", "minecraft:bed"); - map.put("minecraft:standing_sign", "minecraft:sign"); - map.put("minecraft:wall_sign", "minecraft:sign"); - map.put("minecraft:piston_head", "minecraft:piston"); - map.put("minecraft:daylight_detector_inverted", "minecraft:daylight_detector"); - map.put("minecraft:unpowered_comparator", "minecraft:comparator"); - map.put("minecraft:powered_comparator", "minecraft:comparator"); - map.put("minecraft:wall_banner", "minecraft:banner"); - map.put("minecraft:standing_banner", "minecraft:banner"); - map.put("minecraft:structure_block", "minecraft:structure_block"); - map.put("minecraft:end_portal", "minecraft:end_portal"); - map.put("minecraft:end_gateway", "minecraft:end_gateway"); - map.put("minecraft:shield", "minecraft:shield"); - } - } - - private static class DataInspectorEntity implements DataInspector { - - private static final Logger a = LogManager.getLogger(PaperweightDataConverters.class); - - DataInspectorEntity() { - } - - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - - if (nbttagcompound1.contains("EntityTag", 10)) { - CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("EntityTag"); - String s = cmp.getString("id"); - String s1; - - if ("minecraft:armor_stand".equals(s)) { - s1 = sourceVer < 515 ? "ArmorStand" : "minecraft:armor_stand"; - } else { - if (!"minecraft:spawn_egg".equals(s)) { - return cmp; - } - - s1 = nbttagcompound2.getString("id"); - } - - boolean flag; - - flag = !nbttagcompound2.contains("id", 8); - nbttagcompound2.putString("id", s1); - - convert(LegacyType.ENTITY, nbttagcompound2, sourceVer, targetVer); - if (flag) { - nbttagcompound2.remove("id"); - } - } - - return cmp; - } - } - - - private abstract static class DataInspectorTagged implements DataInspector { - - private final ResourceLocation key; - - DataInspectorTagged(String type) { - this.key = getKey(type); - } - - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (this.key.equals(new ResourceLocation(cmp.getString("id")))) { - cmp = this.inspectChecked(cmp, sourceVer, targetVer); - } - - return cmp; - } - - abstract CompoundTag inspectChecked(CompoundTag nbttagcompound, int sourceVer, int targetVer); - } - - private static class DataInspectorItemList extends DataInspectorTagged { - - private final String[] keys; - - DataInspectorItemList(String oclass, String... astring) { - super(oclass); - this.keys = astring; - } - - CompoundTag inspectChecked(CompoundTag nbttagcompound, int sourceVer, int targetVer) { - for (String s : this.keys) { - PaperweightDataConverters.convertItems(nbttagcompound, s, sourceVer, targetVer); - } - - return nbttagcompound; - } - } - - private static class DataInspectorItem extends DataInspectorTagged { - - private final String[] keys; - - DataInspectorItem(String oclass, String... astring) { - super(oclass); - this.keys = astring; - } - - CompoundTag inspectChecked(CompoundTag nbttagcompound, int sourceVer, int targetVer) { - for (String key : this.keys) { - PaperweightDataConverters.convertItem(nbttagcompound, key, sourceVer, targetVer); - } - - return nbttagcompound; - } - } - - private static class DataConverterMaterialId implements DataConverter { - - private static final String[] materials = new String[2268]; - - DataConverterMaterialId() { - } - - public int getDataVersion() { - return 102; - } - - public CompoundTag convert(CompoundTag cmp) { - if (cmp.contains("id", 99)) { - short short0 = cmp.getShort("id"); - - if (short0 > 0 && short0 < materials.length && materials[short0] != null) { - cmp.putString("id", materials[short0]); - } - } - - return cmp; - } - - static { - materials[1] = "minecraft:stone"; - materials[2] = "minecraft:grass"; - materials[3] = "minecraft:dirt"; - materials[4] = "minecraft:cobblestone"; - materials[5] = "minecraft:planks"; - materials[6] = "minecraft:sapling"; - materials[7] = "minecraft:bedrock"; - materials[8] = "minecraft:flowing_water"; - materials[9] = "minecraft:water"; - materials[10] = "minecraft:flowing_lava"; - materials[11] = "minecraft:lava"; - materials[12] = "minecraft:sand"; - materials[13] = "minecraft:gravel"; - materials[14] = "minecraft:gold_ore"; - materials[15] = "minecraft:iron_ore"; - materials[16] = "minecraft:coal_ore"; - materials[17] = "minecraft:log"; - materials[18] = "minecraft:leaves"; - materials[19] = "minecraft:sponge"; - materials[20] = "minecraft:glass"; - materials[21] = "minecraft:lapis_ore"; - materials[22] = "minecraft:lapis_block"; - materials[23] = "minecraft:dispenser"; - materials[24] = "minecraft:sandstone"; - materials[25] = "minecraft:noteblock"; - materials[27] = "minecraft:golden_rail"; - materials[28] = "minecraft:detector_rail"; - materials[29] = "minecraft:sticky_piston"; - materials[30] = "minecraft:web"; - materials[31] = "minecraft:tallgrass"; - materials[32] = "minecraft:deadbush"; - materials[33] = "minecraft:piston"; - materials[35] = "minecraft:wool"; - materials[37] = "minecraft:yellow_flower"; - materials[38] = "minecraft:red_flower"; - materials[39] = "minecraft:brown_mushroom"; - materials[40] = "minecraft:red_mushroom"; - materials[41] = "minecraft:gold_block"; - materials[42] = "minecraft:iron_block"; - materials[43] = "minecraft:double_stone_slab"; - materials[44] = "minecraft:stone_slab"; - materials[45] = "minecraft:brick_block"; - materials[46] = "minecraft:tnt"; - materials[47] = "minecraft:bookshelf"; - materials[48] = "minecraft:mossy_cobblestone"; - materials[49] = "minecraft:obsidian"; - materials[50] = "minecraft:torch"; - materials[51] = "minecraft:fire"; - materials[52] = "minecraft:mob_spawner"; - materials[53] = "minecraft:oak_stairs"; - materials[54] = "minecraft:chest"; - materials[56] = "minecraft:diamond_ore"; - materials[57] = "minecraft:diamond_block"; - materials[58] = "minecraft:crafting_table"; - materials[60] = "minecraft:farmland"; - materials[61] = "minecraft:furnace"; - materials[62] = "minecraft:lit_furnace"; - materials[65] = "minecraft:ladder"; - materials[66] = "minecraft:rail"; - materials[67] = "minecraft:stone_stairs"; - materials[69] = "minecraft:lever"; - materials[70] = "minecraft:stone_pressure_plate"; - materials[72] = "minecraft:wooden_pressure_plate"; - materials[73] = "minecraft:redstone_ore"; - materials[76] = "minecraft:redstone_torch"; - materials[77] = "minecraft:stone_button"; - materials[78] = "minecraft:snow_layer"; - materials[79] = "minecraft:ice"; - materials[80] = "minecraft:snow"; - materials[81] = "minecraft:cactus"; - materials[82] = "minecraft:clay"; - materials[84] = "minecraft:jukebox"; - materials[85] = "minecraft:fence"; - materials[86] = "minecraft:pumpkin"; - materials[87] = "minecraft:netherrack"; - materials[88] = "minecraft:soul_sand"; - materials[89] = "minecraft:glowstone"; - materials[90] = "minecraft:portal"; - materials[91] = "minecraft:lit_pumpkin"; - materials[95] = "minecraft:stained_glass"; - materials[96] = "minecraft:trapdoor"; - materials[97] = "minecraft:monster_egg"; - materials[98] = "minecraft:stonebrick"; - materials[99] = "minecraft:brown_mushroom_block"; - materials[100] = "minecraft:red_mushroom_block"; - materials[101] = "minecraft:iron_bars"; - materials[102] = "minecraft:glass_pane"; - materials[103] = "minecraft:melon_block"; - materials[106] = "minecraft:vine"; - materials[107] = "minecraft:fence_gate"; - materials[108] = "minecraft:brick_stairs"; - materials[109] = "minecraft:stone_brick_stairs"; - materials[110] = "minecraft:mycelium"; - materials[111] = "minecraft:waterlily"; - materials[112] = "minecraft:nether_brick"; - materials[113] = "minecraft:nether_brick_fence"; - materials[114] = "minecraft:nether_brick_stairs"; - materials[116] = "minecraft:enchanting_table"; - materials[119] = "minecraft:end_portal"; - materials[120] = "minecraft:end_portal_frame"; - materials[121] = "minecraft:end_stone"; - materials[122] = "minecraft:dragon_egg"; - materials[123] = "minecraft:redstone_lamp"; - materials[125] = "minecraft:double_wooden_slab"; - materials[126] = "minecraft:wooden_slab"; - materials[127] = "minecraft:cocoa"; - materials[128] = "minecraft:sandstone_stairs"; - materials[129] = "minecraft:emerald_ore"; - materials[130] = "minecraft:ender_chest"; - materials[131] = "minecraft:tripwire_hook"; - materials[133] = "minecraft:emerald_block"; - materials[134] = "minecraft:spruce_stairs"; - materials[135] = "minecraft:birch_stairs"; - materials[136] = "minecraft:jungle_stairs"; - materials[137] = "minecraft:command_block"; - materials[138] = "minecraft:beacon"; - materials[139] = "minecraft:cobblestone_wall"; - materials[141] = "minecraft:carrots"; - materials[142] = "minecraft:potatoes"; - materials[143] = "minecraft:wooden_button"; - materials[145] = "minecraft:anvil"; - materials[146] = "minecraft:trapped_chest"; - materials[147] = "minecraft:light_weighted_pressure_plate"; - materials[148] = "minecraft:heavy_weighted_pressure_plate"; - materials[151] = "minecraft:daylight_detector"; - materials[152] = "minecraft:redstone_block"; - materials[153] = "minecraft:quartz_ore"; - materials[154] = "minecraft:hopper"; - materials[155] = "minecraft:quartz_block"; - materials[156] = "minecraft:quartz_stairs"; - materials[157] = "minecraft:activator_rail"; - materials[158] = "minecraft:dropper"; - materials[159] = "minecraft:stained_hardened_clay"; - materials[160] = "minecraft:stained_glass_pane"; - materials[161] = "minecraft:leaves2"; - materials[162] = "minecraft:log2"; - materials[163] = "minecraft:acacia_stairs"; - materials[164] = "minecraft:dark_oak_stairs"; - materials[170] = "minecraft:hay_block"; - materials[171] = "minecraft:carpet"; - materials[172] = "minecraft:hardened_clay"; - materials[173] = "minecraft:coal_block"; - materials[174] = "minecraft:packed_ice"; - materials[175] = "minecraft:double_plant"; - materials[256] = "minecraft:iron_shovel"; - materials[257] = "minecraft:iron_pickaxe"; - materials[258] = "minecraft:iron_axe"; - materials[259] = "minecraft:flint_and_steel"; - materials[260] = "minecraft:apple"; - materials[261] = "minecraft:bow"; - materials[262] = "minecraft:arrow"; - materials[263] = "minecraft:coal"; - materials[264] = "minecraft:diamond"; - materials[265] = "minecraft:iron_ingot"; - materials[266] = "minecraft:gold_ingot"; - materials[267] = "minecraft:iron_sword"; - materials[268] = "minecraft:wooden_sword"; - materials[269] = "minecraft:wooden_shovel"; - materials[270] = "minecraft:wooden_pickaxe"; - materials[271] = "minecraft:wooden_axe"; - materials[272] = "minecraft:stone_sword"; - materials[273] = "minecraft:stone_shovel"; - materials[274] = "minecraft:stone_pickaxe"; - materials[275] = "minecraft:stone_axe"; - materials[276] = "minecraft:diamond_sword"; - materials[277] = "minecraft:diamond_shovel"; - materials[278] = "minecraft:diamond_pickaxe"; - materials[279] = "minecraft:diamond_axe"; - materials[280] = "minecraft:stick"; - materials[281] = "minecraft:bowl"; - materials[282] = "minecraft:mushroom_stew"; - materials[283] = "minecraft:golden_sword"; - materials[284] = "minecraft:golden_shovel"; - materials[285] = "minecraft:golden_pickaxe"; - materials[286] = "minecraft:golden_axe"; - materials[287] = "minecraft:string"; - materials[288] = "minecraft:feather"; - materials[289] = "minecraft:gunpowder"; - materials[290] = "minecraft:wooden_hoe"; - materials[291] = "minecraft:stone_hoe"; - materials[292] = "minecraft:iron_hoe"; - materials[293] = "minecraft:diamond_hoe"; - materials[294] = "minecraft:golden_hoe"; - materials[295] = "minecraft:wheat_seeds"; - materials[296] = "minecraft:wheat"; - materials[297] = "minecraft:bread"; - materials[298] = "minecraft:leather_helmet"; - materials[299] = "minecraft:leather_chestplate"; - materials[300] = "minecraft:leather_leggings"; - materials[301] = "minecraft:leather_boots"; - materials[302] = "minecraft:chainmail_helmet"; - materials[303] = "minecraft:chainmail_chestplate"; - materials[304] = "minecraft:chainmail_leggings"; - materials[305] = "minecraft:chainmail_boots"; - materials[306] = "minecraft:iron_helmet"; - materials[307] = "minecraft:iron_chestplate"; - materials[308] = "minecraft:iron_leggings"; - materials[309] = "minecraft:iron_boots"; - materials[310] = "minecraft:diamond_helmet"; - materials[311] = "minecraft:diamond_chestplate"; - materials[312] = "minecraft:diamond_leggings"; - materials[313] = "minecraft:diamond_boots"; - materials[314] = "minecraft:golden_helmet"; - materials[315] = "minecraft:golden_chestplate"; - materials[316] = "minecraft:golden_leggings"; - materials[317] = "minecraft:golden_boots"; - materials[318] = "minecraft:flint"; - materials[319] = "minecraft:porkchop"; - materials[320] = "minecraft:cooked_porkchop"; - materials[321] = "minecraft:painting"; - materials[322] = "minecraft:golden_apple"; - materials[323] = "minecraft:sign"; - materials[324] = "minecraft:wooden_door"; - materials[325] = "minecraft:bucket"; - materials[326] = "minecraft:water_bucket"; - materials[327] = "minecraft:lava_bucket"; - materials[328] = "minecraft:minecart"; - materials[329] = "minecraft:saddle"; - materials[330] = "minecraft:iron_door"; - materials[331] = "minecraft:redstone"; - materials[332] = "minecraft:snowball"; - materials[333] = "minecraft:boat"; - materials[334] = "minecraft:leather"; - materials[335] = "minecraft:milk_bucket"; - materials[336] = "minecraft:brick"; - materials[337] = "minecraft:clay_ball"; - materials[338] = "minecraft:reeds"; - materials[339] = "minecraft:paper"; - materials[340] = "minecraft:book"; - materials[341] = "minecraft:slime_ball"; - materials[342] = "minecraft:chest_minecart"; - materials[343] = "minecraft:furnace_minecart"; - materials[344] = "minecraft:egg"; - materials[345] = "minecraft:compass"; - materials[346] = "minecraft:fishing_rod"; - materials[347] = "minecraft:clock"; - materials[348] = "minecraft:glowstone_dust"; - materials[349] = "minecraft:fish"; - materials[350] = "minecraft:cooked_fish"; // Paper - cooked_fished -> cooked_fish - materials[351] = "minecraft:dye"; - materials[352] = "minecraft:bone"; - materials[353] = "minecraft:sugar"; - materials[354] = "minecraft:cake"; - materials[355] = "minecraft:bed"; - materials[356] = "minecraft:repeater"; - materials[357] = "minecraft:cookie"; - materials[358] = "minecraft:filled_map"; - materials[359] = "minecraft:shears"; - materials[360] = "minecraft:melon"; - materials[361] = "minecraft:pumpkin_seeds"; - materials[362] = "minecraft:melon_seeds"; - materials[363] = "minecraft:beef"; - materials[364] = "minecraft:cooked_beef"; - materials[365] = "minecraft:chicken"; - materials[366] = "minecraft:cooked_chicken"; - materials[367] = "minecraft:rotten_flesh"; - materials[368] = "minecraft:ender_pearl"; - materials[369] = "minecraft:blaze_rod"; - materials[370] = "minecraft:ghast_tear"; - materials[371] = "minecraft:gold_nugget"; - materials[372] = "minecraft:nether_wart"; - materials[373] = "minecraft:potion"; - materials[374] = "minecraft:glass_bottle"; - materials[375] = "minecraft:spider_eye"; - materials[376] = "minecraft:fermented_spider_eye"; - materials[377] = "minecraft:blaze_powder"; - materials[378] = "minecraft:magma_cream"; - materials[379] = "minecraft:brewing_stand"; - materials[380] = "minecraft:cauldron"; - materials[381] = "minecraft:ender_eye"; - materials[382] = "minecraft:speckled_melon"; - materials[383] = "minecraft:spawn_egg"; - materials[384] = "minecraft:experience_bottle"; - materials[385] = "minecraft:fire_charge"; - materials[386] = "minecraft:writable_book"; - materials[387] = "minecraft:written_book"; - materials[388] = "minecraft:emerald"; - materials[389] = "minecraft:item_frame"; - materials[390] = "minecraft:flower_pot"; - materials[391] = "minecraft:carrot"; - materials[392] = "minecraft:potato"; - materials[393] = "minecraft:baked_potato"; - materials[394] = "minecraft:poisonous_potato"; - materials[395] = "minecraft:map"; - materials[396] = "minecraft:golden_carrot"; - materials[397] = "minecraft:skull"; - materials[398] = "minecraft:carrot_on_a_stick"; - materials[399] = "minecraft:nether_star"; - materials[400] = "minecraft:pumpkin_pie"; - materials[401] = "minecraft:fireworks"; - materials[402] = "minecraft:firework_charge"; - materials[403] = "minecraft:enchanted_book"; - materials[404] = "minecraft:comparator"; - materials[405] = "minecraft:netherbrick"; - materials[406] = "minecraft:quartz"; - materials[407] = "minecraft:tnt_minecart"; - materials[408] = "minecraft:hopper_minecart"; - materials[417] = "minecraft:iron_horse_armor"; - materials[418] = "minecraft:golden_horse_armor"; - materials[419] = "minecraft:diamond_horse_armor"; - materials[420] = "minecraft:lead"; - materials[421] = "minecraft:name_tag"; - materials[422] = "minecraft:command_block_minecart"; - materials[2256] = "minecraft:record_13"; - materials[2257] = "minecraft:record_cat"; - materials[2258] = "minecraft:record_blocks"; - materials[2259] = "minecraft:record_chirp"; - materials[2260] = "minecraft:record_far"; - materials[2261] = "minecraft:record_mall"; - materials[2262] = "minecraft:record_mellohi"; - materials[2263] = "minecraft:record_stal"; - materials[2264] = "minecraft:record_strad"; - materials[2265] = "minecraft:record_ward"; - materials[2266] = "minecraft:record_11"; - materials[2267] = "minecraft:record_wait"; - // Paper start - materials[409] = "minecraft:prismarine_shard"; - materials[410] = "minecraft:prismarine_crystals"; - materials[411] = "minecraft:rabbit"; - materials[412] = "minecraft:cooked_rabbit"; - materials[413] = "minecraft:rabbit_stew"; - materials[414] = "minecraft:rabbit_foot"; - materials[415] = "minecraft:rabbit_hide"; - materials[416] = "minecraft:armor_stand"; - materials[423] = "minecraft:mutton"; - materials[424] = "minecraft:cooked_mutton"; - materials[425] = "minecraft:banner"; - materials[426] = "minecraft:end_crystal"; - materials[427] = "minecraft:spruce_door"; - materials[428] = "minecraft:birch_door"; - materials[429] = "minecraft:jungle_door"; - materials[430] = "minecraft:acacia_door"; - materials[431] = "minecraft:dark_oak_door"; - materials[432] = "minecraft:chorus_fruit"; - materials[433] = "minecraft:chorus_fruit_popped"; - materials[434] = "minecraft:beetroot"; - materials[435] = "minecraft:beetroot_seeds"; - materials[436] = "minecraft:beetroot_soup"; - materials[437] = "minecraft:dragon_breath"; - materials[438] = "minecraft:splash_potion"; - materials[439] = "minecraft:spectral_arrow"; - materials[440] = "minecraft:tipped_arrow"; - materials[441] = "minecraft:lingering_potion"; - materials[442] = "minecraft:shield"; - materials[443] = "minecraft:elytra"; - materials[444] = "minecraft:spruce_boat"; - materials[445] = "minecraft:birch_boat"; - materials[446] = "minecraft:jungle_boat"; - materials[447] = "minecraft:acacia_boat"; - materials[448] = "minecraft:dark_oak_boat"; - materials[449] = "minecraft:totem_of_undying"; - materials[450] = "minecraft:shulker_shell"; - materials[452] = "minecraft:iron_nugget"; - materials[453] = "minecraft:knowledge_book"; - // Paper end - } - } - - private static class DataConverterArmorStand implements DataConverter { - - DataConverterArmorStand() { - } - - public int getDataVersion() { - return 147; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("ArmorStand".equals(cmp.getString("id")) && cmp.getBoolean("Silent") && !cmp.getBoolean("Marker")) { - cmp.remove("Silent"); - } - - return cmp; - } - } - - private static class DataConverterBanner implements DataConverter { - - DataConverterBanner() { - } - - public int getDataVersion() { - return 804; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:banner".equals(cmp.getString("id")) && cmp.contains("tag", 10)) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - - if (nbttagcompound1.contains("BlockEntityTag", 10)) { - CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); - - if (nbttagcompound2.contains("Base", 99)) { - cmp.putShort("Damage", (short) (nbttagcompound2.getShort("Base") & 15)); - if (nbttagcompound1.contains("display", 10)) { - CompoundTag nbttagcompound3 = nbttagcompound1.getCompound("display"); - - if (nbttagcompound3.contains("Lore", 9)) { - ListTag nbttaglist = nbttagcompound3.getList("Lore", 8); - - if (nbttaglist.size() == 1 && "(+NBT)".equals(nbttaglist.getString(0))) { - return cmp; - } - } - } - - nbttagcompound2.remove("Base"); - if (nbttagcompound2.isEmpty()) { - nbttagcompound1.remove("BlockEntityTag"); - } - - if (nbttagcompound1.isEmpty()) { - cmp.remove("tag"); - } - } - } - } - - return cmp; - } - } - - private static class DataConverterPotionId implements DataConverter { - - private static final String[] potions = new String[128]; - - DataConverterPotionId() { - } - - public int getDataVersion() { - return 102; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:potion".equals(cmp.getString("id"))) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - short short0 = cmp.getShort("Damage"); - - if (!nbttagcompound1.contains("Potion", 8)) { - String s = DataConverterPotionId.potions[short0 & 127]; - - nbttagcompound1.putString("Potion", s == null ? "minecraft:water" : s); - cmp.put("tag", nbttagcompound1); - if ((short0 & 16384) == 16384) { - cmp.putString("id", "minecraft:splash_potion"); - } - } - - if (short0 != 0) { - cmp.putShort("Damage", (short) 0); - } - } - - return cmp; - } - - static { - DataConverterPotionId.potions[0] = "minecraft:water"; - DataConverterPotionId.potions[1] = "minecraft:regeneration"; - DataConverterPotionId.potions[2] = "minecraft:swiftness"; - DataConverterPotionId.potions[3] = "minecraft:fire_resistance"; - DataConverterPotionId.potions[4] = "minecraft:poison"; - DataConverterPotionId.potions[5] = "minecraft:healing"; - DataConverterPotionId.potions[6] = "minecraft:night_vision"; - DataConverterPotionId.potions[7] = null; - DataConverterPotionId.potions[8] = "minecraft:weakness"; - DataConverterPotionId.potions[9] = "minecraft:strength"; - DataConverterPotionId.potions[10] = "minecraft:slowness"; - DataConverterPotionId.potions[11] = "minecraft:leaping"; - DataConverterPotionId.potions[12] = "minecraft:harming"; - DataConverterPotionId.potions[13] = "minecraft:water_breathing"; - DataConverterPotionId.potions[14] = "minecraft:invisibility"; - DataConverterPotionId.potions[15] = null; - DataConverterPotionId.potions[16] = "minecraft:awkward"; - DataConverterPotionId.potions[17] = "minecraft:regeneration"; - DataConverterPotionId.potions[18] = "minecraft:swiftness"; - DataConverterPotionId.potions[19] = "minecraft:fire_resistance"; - DataConverterPotionId.potions[20] = "minecraft:poison"; - DataConverterPotionId.potions[21] = "minecraft:healing"; - DataConverterPotionId.potions[22] = "minecraft:night_vision"; - DataConverterPotionId.potions[23] = null; - DataConverterPotionId.potions[24] = "minecraft:weakness"; - DataConverterPotionId.potions[25] = "minecraft:strength"; - DataConverterPotionId.potions[26] = "minecraft:slowness"; - DataConverterPotionId.potions[27] = "minecraft:leaping"; - DataConverterPotionId.potions[28] = "minecraft:harming"; - DataConverterPotionId.potions[29] = "minecraft:water_breathing"; - DataConverterPotionId.potions[30] = "minecraft:invisibility"; - DataConverterPotionId.potions[31] = null; - DataConverterPotionId.potions[32] = "minecraft:thick"; - DataConverterPotionId.potions[33] = "minecraft:strong_regeneration"; - DataConverterPotionId.potions[34] = "minecraft:strong_swiftness"; - DataConverterPotionId.potions[35] = "minecraft:fire_resistance"; - DataConverterPotionId.potions[36] = "minecraft:strong_poison"; - DataConverterPotionId.potions[37] = "minecraft:strong_healing"; - DataConverterPotionId.potions[38] = "minecraft:night_vision"; - DataConverterPotionId.potions[39] = null; - DataConverterPotionId.potions[40] = "minecraft:weakness"; - DataConverterPotionId.potions[41] = "minecraft:strong_strength"; - DataConverterPotionId.potions[42] = "minecraft:slowness"; - DataConverterPotionId.potions[43] = "minecraft:strong_leaping"; - DataConverterPotionId.potions[44] = "minecraft:strong_harming"; - DataConverterPotionId.potions[45] = "minecraft:water_breathing"; - DataConverterPotionId.potions[46] = "minecraft:invisibility"; - DataConverterPotionId.potions[47] = null; - DataConverterPotionId.potions[48] = null; - DataConverterPotionId.potions[49] = "minecraft:strong_regeneration"; - DataConverterPotionId.potions[50] = "minecraft:strong_swiftness"; - DataConverterPotionId.potions[51] = "minecraft:fire_resistance"; - DataConverterPotionId.potions[52] = "minecraft:strong_poison"; - DataConverterPotionId.potions[53] = "minecraft:strong_healing"; - DataConverterPotionId.potions[54] = "minecraft:night_vision"; - DataConverterPotionId.potions[55] = null; - DataConverterPotionId.potions[56] = "minecraft:weakness"; - DataConverterPotionId.potions[57] = "minecraft:strong_strength"; - DataConverterPotionId.potions[58] = "minecraft:slowness"; - DataConverterPotionId.potions[59] = "minecraft:strong_leaping"; - DataConverterPotionId.potions[60] = "minecraft:strong_harming"; - DataConverterPotionId.potions[61] = "minecraft:water_breathing"; - DataConverterPotionId.potions[62] = "minecraft:invisibility"; - DataConverterPotionId.potions[63] = null; - DataConverterPotionId.potions[64] = "minecraft:mundane"; - DataConverterPotionId.potions[65] = "minecraft:long_regeneration"; - DataConverterPotionId.potions[66] = "minecraft:long_swiftness"; - DataConverterPotionId.potions[67] = "minecraft:long_fire_resistance"; - DataConverterPotionId.potions[68] = "minecraft:long_poison"; - DataConverterPotionId.potions[69] = "minecraft:healing"; - DataConverterPotionId.potions[70] = "minecraft:long_night_vision"; - DataConverterPotionId.potions[71] = null; - DataConverterPotionId.potions[72] = "minecraft:long_weakness"; - DataConverterPotionId.potions[73] = "minecraft:long_strength"; - DataConverterPotionId.potions[74] = "minecraft:long_slowness"; - DataConverterPotionId.potions[75] = "minecraft:long_leaping"; - DataConverterPotionId.potions[76] = "minecraft:harming"; - DataConverterPotionId.potions[77] = "minecraft:long_water_breathing"; - DataConverterPotionId.potions[78] = "minecraft:long_invisibility"; - DataConverterPotionId.potions[79] = null; - DataConverterPotionId.potions[80] = "minecraft:awkward"; - DataConverterPotionId.potions[81] = "minecraft:long_regeneration"; - DataConverterPotionId.potions[82] = "minecraft:long_swiftness"; - DataConverterPotionId.potions[83] = "minecraft:long_fire_resistance"; - DataConverterPotionId.potions[84] = "minecraft:long_poison"; - DataConverterPotionId.potions[85] = "minecraft:healing"; - DataConverterPotionId.potions[86] = "minecraft:long_night_vision"; - DataConverterPotionId.potions[87] = null; - DataConverterPotionId.potions[88] = "minecraft:long_weakness"; - DataConverterPotionId.potions[89] = "minecraft:long_strength"; - DataConverterPotionId.potions[90] = "minecraft:long_slowness"; - DataConverterPotionId.potions[91] = "minecraft:long_leaping"; - DataConverterPotionId.potions[92] = "minecraft:harming"; - DataConverterPotionId.potions[93] = "minecraft:long_water_breathing"; - DataConverterPotionId.potions[94] = "minecraft:long_invisibility"; - DataConverterPotionId.potions[95] = null; - DataConverterPotionId.potions[96] = "minecraft:thick"; - DataConverterPotionId.potions[97] = "minecraft:regeneration"; - DataConverterPotionId.potions[98] = "minecraft:swiftness"; - DataConverterPotionId.potions[99] = "minecraft:long_fire_resistance"; - DataConverterPotionId.potions[100] = "minecraft:poison"; - DataConverterPotionId.potions[101] = "minecraft:strong_healing"; - DataConverterPotionId.potions[102] = "minecraft:long_night_vision"; - DataConverterPotionId.potions[103] = null; - DataConverterPotionId.potions[104] = "minecraft:long_weakness"; - DataConverterPotionId.potions[105] = "minecraft:strength"; - DataConverterPotionId.potions[106] = "minecraft:long_slowness"; - DataConverterPotionId.potions[107] = "minecraft:leaping"; - DataConverterPotionId.potions[108] = "minecraft:strong_harming"; - DataConverterPotionId.potions[109] = "minecraft:long_water_breathing"; - DataConverterPotionId.potions[110] = "minecraft:long_invisibility"; - DataConverterPotionId.potions[111] = null; - DataConverterPotionId.potions[112] = null; - DataConverterPotionId.potions[113] = "minecraft:regeneration"; - DataConverterPotionId.potions[114] = "minecraft:swiftness"; - DataConverterPotionId.potions[115] = "minecraft:long_fire_resistance"; - DataConverterPotionId.potions[116] = "minecraft:poison"; - DataConverterPotionId.potions[117] = "minecraft:strong_healing"; - DataConverterPotionId.potions[118] = "minecraft:long_night_vision"; - DataConverterPotionId.potions[119] = null; - DataConverterPotionId.potions[120] = "minecraft:long_weakness"; - DataConverterPotionId.potions[121] = "minecraft:strength"; - DataConverterPotionId.potions[122] = "minecraft:long_slowness"; - DataConverterPotionId.potions[123] = "minecraft:leaping"; - DataConverterPotionId.potions[124] = "minecraft:strong_harming"; - DataConverterPotionId.potions[125] = "minecraft:long_water_breathing"; - DataConverterPotionId.potions[126] = "minecraft:long_invisibility"; - DataConverterPotionId.potions[127] = null; - } - } - - private static class DataConverterSpawnEgg implements DataConverter { - - private static final String[] eggs = new String[256]; - - DataConverterSpawnEgg() { - } - - public int getDataVersion() { - return 105; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:spawn_egg".equals(cmp.getString("id"))) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("EntityTag"); - short short0 = cmp.getShort("Damage"); - - if (!nbttagcompound2.contains("id", 8)) { - String s = DataConverterSpawnEgg.eggs[short0 & 255]; - - if (s != null) { - nbttagcompound2.putString("id", s); - nbttagcompound1.put("EntityTag", nbttagcompound2); - cmp.put("tag", nbttagcompound1); - } - } - - if (short0 != 0) { - cmp.putShort("Damage", (short) 0); - } - } - - return cmp; - } - - static { - - DataConverterSpawnEgg.eggs[1] = "Item"; - DataConverterSpawnEgg.eggs[2] = "XPOrb"; - DataConverterSpawnEgg.eggs[7] = "ThrownEgg"; - DataConverterSpawnEgg.eggs[8] = "LeashKnot"; - DataConverterSpawnEgg.eggs[9] = "Painting"; - DataConverterSpawnEgg.eggs[10] = "Arrow"; - DataConverterSpawnEgg.eggs[11] = "Snowball"; - DataConverterSpawnEgg.eggs[12] = "Fireball"; - DataConverterSpawnEgg.eggs[13] = "SmallFireball"; - DataConverterSpawnEgg.eggs[14] = "ThrownEnderpearl"; - DataConverterSpawnEgg.eggs[15] = "EyeOfEnderSignal"; - DataConverterSpawnEgg.eggs[16] = "ThrownPotion"; - DataConverterSpawnEgg.eggs[17] = "ThrownExpBottle"; - DataConverterSpawnEgg.eggs[18] = "ItemFrame"; - DataConverterSpawnEgg.eggs[19] = "WitherSkull"; - DataConverterSpawnEgg.eggs[20] = "PrimedTnt"; - DataConverterSpawnEgg.eggs[21] = "FallingSand"; - DataConverterSpawnEgg.eggs[22] = "FireworksRocketEntity"; - DataConverterSpawnEgg.eggs[23] = "TippedArrow"; - DataConverterSpawnEgg.eggs[24] = "SpectralArrow"; - DataConverterSpawnEgg.eggs[25] = "ShulkerBullet"; - DataConverterSpawnEgg.eggs[26] = "DragonFireball"; - DataConverterSpawnEgg.eggs[30] = "ArmorStand"; - DataConverterSpawnEgg.eggs[41] = "Boat"; - DataConverterSpawnEgg.eggs[42] = "MinecartRideable"; - DataConverterSpawnEgg.eggs[43] = "MinecartChest"; - DataConverterSpawnEgg.eggs[44] = "MinecartFurnace"; - DataConverterSpawnEgg.eggs[45] = "MinecartTNT"; - DataConverterSpawnEgg.eggs[46] = "MinecartHopper"; - DataConverterSpawnEgg.eggs[47] = "MinecartSpawner"; - DataConverterSpawnEgg.eggs[40] = "MinecartCommandBlock"; - DataConverterSpawnEgg.eggs[48] = "Mob"; - DataConverterSpawnEgg.eggs[49] = "Monster"; - DataConverterSpawnEgg.eggs[50] = "Creeper"; - DataConverterSpawnEgg.eggs[51] = "Skeleton"; - DataConverterSpawnEgg.eggs[52] = "Spider"; - DataConverterSpawnEgg.eggs[53] = "Giant"; - DataConverterSpawnEgg.eggs[54] = "Zombie"; - DataConverterSpawnEgg.eggs[55] = "Slime"; - DataConverterSpawnEgg.eggs[56] = "Ghast"; - DataConverterSpawnEgg.eggs[57] = "PigZombie"; - DataConverterSpawnEgg.eggs[58] = "Enderman"; - DataConverterSpawnEgg.eggs[59] = "CaveSpider"; - DataConverterSpawnEgg.eggs[60] = "Silverfish"; - DataConverterSpawnEgg.eggs[61] = "Blaze"; - DataConverterSpawnEgg.eggs[62] = "LavaSlime"; - DataConverterSpawnEgg.eggs[63] = "EnderDragon"; - DataConverterSpawnEgg.eggs[64] = "WitherBoss"; - DataConverterSpawnEgg.eggs[65] = "Bat"; - DataConverterSpawnEgg.eggs[66] = "Witch"; - DataConverterSpawnEgg.eggs[67] = "Endermite"; - DataConverterSpawnEgg.eggs[68] = "Guardian"; - DataConverterSpawnEgg.eggs[69] = "Shulker"; - DataConverterSpawnEgg.eggs[90] = "Pig"; - DataConverterSpawnEgg.eggs[91] = "Sheep"; - DataConverterSpawnEgg.eggs[92] = "Cow"; - DataConverterSpawnEgg.eggs[93] = "Chicken"; - DataConverterSpawnEgg.eggs[94] = "Squid"; - DataConverterSpawnEgg.eggs[95] = "Wolf"; - DataConverterSpawnEgg.eggs[96] = "MushroomCow"; - DataConverterSpawnEgg.eggs[97] = "SnowMan"; - DataConverterSpawnEgg.eggs[98] = "Ozelot"; - DataConverterSpawnEgg.eggs[99] = "VillagerGolem"; - DataConverterSpawnEgg.eggs[100] = "EntityHorse"; - DataConverterSpawnEgg.eggs[101] = "Rabbit"; - DataConverterSpawnEgg.eggs[120] = "Villager"; - DataConverterSpawnEgg.eggs[200] = "EnderCrystal"; - } - } - - private static class DataConverterMinecart implements DataConverter { - - private static final List a = Lists.newArrayList("MinecartRideable", "MinecartChest", "MinecartFurnace", "MinecartTNT", "MinecartSpawner", "MinecartHopper", "MinecartCommandBlock"); - - DataConverterMinecart() { - } - - public int getDataVersion() { - return 106; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("Minecart".equals(cmp.getString("id"))) { - String s = "MinecartRideable"; - int i = cmp.getInt("Type"); - - if (i > 0 && i < DataConverterMinecart.a.size()) { - s = DataConverterMinecart.a.get(i); - } - - cmp.putString("id", s); - cmp.remove("Type"); - } - - return cmp; - } - } - - private static class DataConverterMobSpawner implements DataConverter { - - DataConverterMobSpawner() { - } - - public int getDataVersion() { - return 107; - } - - public CompoundTag convert(CompoundTag cmp) { - if (!"MobSpawner".equals(cmp.getString("id"))) { - return cmp; - } else { - if (cmp.contains("EntityId", 8)) { - String s = cmp.getString("EntityId"); - CompoundTag nbttagcompound1 = cmp.getCompound("SpawnData"); - - nbttagcompound1.putString("id", s.isEmpty() ? "Pig" : s); - cmp.put("SpawnData", nbttagcompound1); - cmp.remove("EntityId"); - } - - if (cmp.contains("SpawnPotentials", 9)) { - ListTag nbttaglist = cmp.getList("SpawnPotentials", 10); - - for (int i = 0; i < nbttaglist.size(); ++i) { - CompoundTag nbttagcompound2 = nbttaglist.getCompound(i); - - if (nbttagcompound2.contains("Type", 8)) { - CompoundTag nbttagcompound3 = nbttagcompound2.getCompound("Properties"); - - nbttagcompound3.putString("id", nbttagcompound2.getString("Type")); - nbttagcompound2.put("Entity", nbttagcompound3); - nbttagcompound2.remove("Type"); - nbttagcompound2.remove("Properties"); - } - } - } - - return cmp; - } - } - } - - private static class DataConverterUUID implements DataConverter { - - DataConverterUUID() { - } - - public int getDataVersion() { - return 108; - } - - public CompoundTag convert(CompoundTag cmp) { - if (cmp.contains("UUID", 8)) { - cmp.putUUID("UUID", UUID.fromString(cmp.getString("UUID"))); - } - - return cmp; - } - } - - private static class DataConverterHealth implements DataConverter { - - private static final Set a = Sets.newHashSet("ArmorStand", "Bat", "Blaze", "CaveSpider", "Chicken", "Cow", "Creeper", "EnderDragon", "Enderman", "Endermite", "EntityHorse", "Ghast", "Giant", "Guardian", "LavaSlime", "MushroomCow", "Ozelot", "Pig", "PigZombie", "Rabbit", "Sheep", "Shulker", "Silverfish", "Skeleton", "Slime", "SnowMan", "Spider", "Squid", "Villager", "VillagerGolem", "Witch", "WitherBoss", "Wolf", "Zombie"); - - DataConverterHealth() { - } - - public int getDataVersion() { - return 109; - } - - public CompoundTag convert(CompoundTag cmp) { - if (DataConverterHealth.a.contains(cmp.getString("id"))) { - float f; - - if (cmp.contains("HealF", 99)) { - f = cmp.getFloat("HealF"); - cmp.remove("HealF"); - } else { - if (!cmp.contains("Health", 99)) { - return cmp; - } - - f = cmp.getFloat("Health"); - } - - cmp.putFloat("Health", f); - } - - return cmp; - } - } - - private static class DataConverterSaddle implements DataConverter { - - DataConverterSaddle() { - } - - public int getDataVersion() { - return 110; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("EntityHorse".equals(cmp.getString("id")) && !cmp.contains("SaddleItem", 10) && cmp.getBoolean("Saddle")) { - CompoundTag nbttagcompound1 = new CompoundTag(); - - nbttagcompound1.putString("id", "minecraft:saddle"); - nbttagcompound1.putByte("Count", (byte) 1); - nbttagcompound1.putShort("Damage", (short) 0); - cmp.put("SaddleItem", nbttagcompound1); - cmp.remove("Saddle"); - } - - return cmp; - } - } - - private static class DataConverterHanging implements DataConverter { - - DataConverterHanging() { - } - - public int getDataVersion() { - return 111; - } - - public CompoundTag convert(CompoundTag cmp) { - String s = cmp.getString("id"); - boolean flag = "Painting".equals(s); - boolean flag1 = "ItemFrame".equals(s); - - if ((flag || flag1) && !cmp.contains("Facing", 99)) { - Direction enumdirection; - - if (cmp.contains("Direction", 99)) { - enumdirection = Direction.from2DDataValue(cmp.getByte("Direction")); - cmp.putInt("TileX", cmp.getInt("TileX") + enumdirection.getStepX()); - cmp.putInt("TileY", cmp.getInt("TileY") + enumdirection.getStepY()); - cmp.putInt("TileZ", cmp.getInt("TileZ") + enumdirection.getStepZ()); - cmp.remove("Direction"); - if (flag1 && cmp.contains("ItemRotation", 99)) { - cmp.putByte("ItemRotation", (byte) (cmp.getByte("ItemRotation") * 2)); - } - } else { - enumdirection = Direction.from2DDataValue(cmp.getByte("Dir")); - cmp.remove("Dir"); - } - - cmp.putByte("Facing", (byte) enumdirection.get2DDataValue()); - } - - return cmp; - } - } - - private static class DataConverterDropChances implements DataConverter { - - DataConverterDropChances() { - } - - public int getDataVersion() { - return 113; - } - - public CompoundTag convert(CompoundTag cmp) { - ListTag nbttaglist; - - if (cmp.contains("HandDropChances", 9)) { - nbttaglist = cmp.getList("HandDropChances", 5); - if (nbttaglist.size() == 2 && nbttaglist.getFloat(0) == 0.0F && nbttaglist.getFloat(1) == 0.0F) { - cmp.remove("HandDropChances"); - } - } - - if (cmp.contains("ArmorDropChances", 9)) { - nbttaglist = cmp.getList("ArmorDropChances", 5); - if (nbttaglist.size() == 4 && nbttaglist.getFloat(0) == 0.0F && nbttaglist.getFloat(1) == 0.0F && nbttaglist.getFloat(2) == 0.0F && nbttaglist.getFloat(3) == 0.0F) { - cmp.remove("ArmorDropChances"); - } - } - - return cmp; - } - } - - private static class DataConverterRiding implements DataConverter { - - DataConverterRiding() { - } - - public int getDataVersion() { - return 135; - } - - public CompoundTag convert(CompoundTag cmp) { - while (cmp.contains("Riding", 10)) { - CompoundTag nbttagcompound1 = this.b(cmp); - - this.convert(cmp, nbttagcompound1); - cmp = nbttagcompound1; - } - - return cmp; - } - - protected void convert(CompoundTag nbttagcompound, CompoundTag nbttagcompound1) { - ListTag nbttaglist = new ListTag(); - - nbttaglist.add(nbttagcompound); - nbttagcompound1.put("Passengers", nbttaglist); - } - - protected CompoundTag b(CompoundTag nbttagcompound) { - CompoundTag nbttagcompound1 = nbttagcompound.getCompound("Riding"); - - nbttagcompound.remove("Riding"); - return nbttagcompound1; - } - } - - private static class DataConverterBook implements DataConverter { - - DataConverterBook() { - } - - public int getDataVersion() { - return 165; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:written_book".equals(cmp.getString("id"))) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - - if (nbttagcompound1.contains("pages", 9)) { - ListTag nbttaglist = nbttagcompound1.getList("pages", 8); - - for (int i = 0; i < nbttaglist.size(); ++i) { - String s = nbttaglist.getString(i); - Component object = null; - - if (!"null".equals(s) && !StringUtil.isNullOrEmpty(s)) { - if ((s.charAt(0) != 34 || s.charAt(s.length() - 1) != 34) && (s.charAt(0) != 123 || s.charAt(s.length() - 1) != 125)) { - object = new TextComponent(s); - } else { - try { - object = GsonHelper.fromJson(DataConverterSignText.a, s, Component.class, true); - if (object == null) { - object = new TextComponent(""); - } - } catch (JsonParseException jsonparseexception) { - ; - } - - if (object == null) { - try { - object = Component.Serializer.fromJson(s); - } catch (JsonParseException jsonparseexception1) { - ; - } - } - - if (object == null) { - try { - object = Component.Serializer.fromJsonLenient(s); - } catch (JsonParseException jsonparseexception2) { - ; - } - } - - if (object == null) { - object = new TextComponent(s); - } - } - } else { - object = new TextComponent(""); - } - - nbttaglist.set(i, StringTag.valueOf(Component.Serializer.toJson(object))); - } - - nbttagcompound1.put("pages", nbttaglist); - } - } - - return cmp; - } - } - - private static class DataConverterCookedFish implements DataConverter { - - private static final ResourceLocation a = new ResourceLocation("cooked_fished"); - - DataConverterCookedFish() { - } - - public int getDataVersion() { - return 502; - } - - public CompoundTag convert(CompoundTag cmp) { - if (cmp.contains("id", 8) && DataConverterCookedFish.a.equals(new ResourceLocation(cmp.getString("id")))) { - cmp.putString("id", "minecraft:cooked_fish"); - } - - return cmp; - } - } - - private static class DataConverterZombie implements DataConverter { - - private static final Random a = new Random(); - - DataConverterZombie() { - } - - public int getDataVersion() { - return 502; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("Zombie".equals(cmp.getString("id")) && cmp.getBoolean("IsVillager")) { - if (!cmp.contains("ZombieType", 99)) { - int i = -1; - - if (cmp.contains("VillagerProfession", 99)) { - try { - i = this.convert(cmp.getInt("VillagerProfession")); - } catch (RuntimeException runtimeexception) { - ; - } - } - - if (i == -1) { - i = this.convert(DataConverterZombie.a.nextInt(6)); - } - - cmp.putInt("ZombieType", i); - } - - cmp.remove("IsVillager"); - } - - return cmp; - } - - private int convert(int i) { - return i >= 0 && i < 6 ? i : -1; - } - } - - private static class DataConverterVBO implements DataConverter { - - DataConverterVBO() { - } - - public int getDataVersion() { - return 505; - } - - public CompoundTag convert(CompoundTag cmp) { - cmp.putString("useVbo", "true"); - return cmp; - } - } - - private static class DataConverterGuardian implements DataConverter { - - DataConverterGuardian() { - } - - public int getDataVersion() { - return 700; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("Guardian".equals(cmp.getString("id"))) { - if (cmp.getBoolean("Elder")) { - cmp.putString("id", "ElderGuardian"); - } - - cmp.remove("Elder"); - } - - return cmp; - } - } - - private static class DataConverterSkeleton implements DataConverter { - - DataConverterSkeleton() { - } - - public int getDataVersion() { - return 701; - } - - public CompoundTag convert(CompoundTag cmp) { - String s = cmp.getString("id"); - - if ("Skeleton".equals(s)) { - int i = cmp.getInt("SkeletonType"); - - if (i == 1) { - cmp.putString("id", "WitherSkeleton"); - } else if (i == 2) { - cmp.putString("id", "Stray"); - } - - cmp.remove("SkeletonType"); - } - - return cmp; - } - } - - private static class DataConverterZombieType implements DataConverter { - - DataConverterZombieType() { - } - - public int getDataVersion() { - return 702; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("Zombie".equals(cmp.getString("id"))) { - int i = cmp.getInt("ZombieType"); - - switch (i) { - case 0: - default: - break; - - case 1: - case 2: - case 3: - case 4: - case 5: - cmp.putString("id", "ZombieVillager"); - cmp.putInt("Profession", i - 1); - break; - - case 6: - cmp.putString("id", "Husk"); - } - - cmp.remove("ZombieType"); - } - - return cmp; - } - } - - private static class DataConverterHorse implements DataConverter { - - DataConverterHorse() { - } - - public int getDataVersion() { - return 703; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("EntityHorse".equals(cmp.getString("id"))) { - int i = cmp.getInt("Type"); - - switch (i) { - case 0: - default: - cmp.putString("id", "Horse"); - break; - - case 1: - cmp.putString("id", "Donkey"); - break; - - case 2: - cmp.putString("id", "Mule"); - break; - - case 3: - cmp.putString("id", "ZombieHorse"); - break; - - case 4: - cmp.putString("id", "SkeletonHorse"); - } - - cmp.remove("Type"); - } - - return cmp; - } - } - - private static class DataConverterTileEntity implements DataConverter { - - private static final Map a = Maps.newHashMap(); - - DataConverterTileEntity() { - } - - public int getDataVersion() { - return 704; - } - - public CompoundTag convert(CompoundTag cmp) { - String s = DataConverterTileEntity.a.get(cmp.getString("id")); - - if (s != null) { - cmp.putString("id", s); - } - - return cmp; - } - - static { - DataConverterTileEntity.a.put("Airportal", "minecraft:end_portal"); - DataConverterTileEntity.a.put("Banner", "minecraft:banner"); - DataConverterTileEntity.a.put("Beacon", "minecraft:beacon"); - DataConverterTileEntity.a.put("Cauldron", "minecraft:brewing_stand"); - DataConverterTileEntity.a.put("Chest", "minecraft:chest"); - DataConverterTileEntity.a.put("Comparator", "minecraft:comparator"); - DataConverterTileEntity.a.put("Control", "minecraft:command_block"); - DataConverterTileEntity.a.put("DLDetector", "minecraft:daylight_detector"); - DataConverterTileEntity.a.put("Dropper", "minecraft:dropper"); - DataConverterTileEntity.a.put("EnchantTable", "minecraft:enchanting_table"); - DataConverterTileEntity.a.put("EndGateway", "minecraft:end_gateway"); - DataConverterTileEntity.a.put("EnderChest", "minecraft:ender_chest"); - DataConverterTileEntity.a.put("FlowerPot", "minecraft:flower_pot"); - DataConverterTileEntity.a.put("Furnace", "minecraft:furnace"); - DataConverterTileEntity.a.put("Hopper", "minecraft:hopper"); - DataConverterTileEntity.a.put("MobSpawner", "minecraft:mob_spawner"); - DataConverterTileEntity.a.put("Music", "minecraft:noteblock"); - DataConverterTileEntity.a.put("Piston", "minecraft:piston"); - DataConverterTileEntity.a.put("RecordPlayer", "minecraft:jukebox"); - DataConverterTileEntity.a.put("Sign", "minecraft:sign"); - DataConverterTileEntity.a.put("Skull", "minecraft:skull"); - DataConverterTileEntity.a.put("Structure", "minecraft:structure_block"); - DataConverterTileEntity.a.put("Trap", "minecraft:dispenser"); - } - } - - private static class DataConverterEntity implements DataConverter { - - private static final Map a = Maps.newHashMap(); - - DataConverterEntity() { - } - - public int getDataVersion() { - return 704; - } - - public CompoundTag convert(CompoundTag cmp) { - String s = DataConverterEntity.a.get(cmp.getString("id")); - - if (s != null) { - cmp.putString("id", s); - } - - return cmp; - } - - static { - DataConverterEntity.a.put("AreaEffectCloud", "minecraft:area_effect_cloud"); - DataConverterEntity.a.put("ArmorStand", "minecraft:armor_stand"); - DataConverterEntity.a.put("Arrow", "minecraft:arrow"); - DataConverterEntity.a.put("Bat", "minecraft:bat"); - DataConverterEntity.a.put("Blaze", "minecraft:blaze"); - DataConverterEntity.a.put("Boat", "minecraft:boat"); - DataConverterEntity.a.put("CaveSpider", "minecraft:cave_spider"); - DataConverterEntity.a.put("Chicken", "minecraft:chicken"); - DataConverterEntity.a.put("Cow", "minecraft:cow"); - DataConverterEntity.a.put("Creeper", "minecraft:creeper"); - DataConverterEntity.a.put("Donkey", "minecraft:donkey"); - DataConverterEntity.a.put("DragonFireball", "minecraft:dragon_fireball"); - DataConverterEntity.a.put("ElderGuardian", "minecraft:elder_guardian"); - DataConverterEntity.a.put("EnderCrystal", "minecraft:ender_crystal"); - DataConverterEntity.a.put("EnderDragon", "minecraft:ender_dragon"); - DataConverterEntity.a.put("Enderman", "minecraft:enderman"); - DataConverterEntity.a.put("Endermite", "minecraft:endermite"); - DataConverterEntity.a.put("EyeOfEnderSignal", "minecraft:eye_of_ender_signal"); - DataConverterEntity.a.put("FallingSand", "minecraft:falling_block"); - DataConverterEntity.a.put("Fireball", "minecraft:fireball"); - DataConverterEntity.a.put("FireworksRocketEntity", "minecraft:fireworks_rocket"); - DataConverterEntity.a.put("Ghast", "minecraft:ghast"); - DataConverterEntity.a.put("Giant", "minecraft:giant"); - DataConverterEntity.a.put("Guardian", "minecraft:guardian"); - DataConverterEntity.a.put("Horse", "minecraft:horse"); - DataConverterEntity.a.put("Husk", "minecraft:husk"); - DataConverterEntity.a.put("Item", "minecraft:item"); - DataConverterEntity.a.put("ItemFrame", "minecraft:item_frame"); - DataConverterEntity.a.put("LavaSlime", "minecraft:magma_cube"); - DataConverterEntity.a.put("LeashKnot", "minecraft:leash_knot"); - DataConverterEntity.a.put("MinecartChest", "minecraft:chest_minecart"); - DataConverterEntity.a.put("MinecartCommandBlock", "minecraft:commandblock_minecart"); - DataConverterEntity.a.put("MinecartFurnace", "minecraft:furnace_minecart"); - DataConverterEntity.a.put("MinecartHopper", "minecraft:hopper_minecart"); - DataConverterEntity.a.put("MinecartRideable", "minecraft:minecart"); - DataConverterEntity.a.put("MinecartSpawner", "minecraft:spawner_minecart"); - DataConverterEntity.a.put("MinecartTNT", "minecraft:tnt_minecart"); - DataConverterEntity.a.put("Mule", "minecraft:mule"); - DataConverterEntity.a.put("MushroomCow", "minecraft:mooshroom"); - DataConverterEntity.a.put("Ozelot", "minecraft:ocelot"); - DataConverterEntity.a.put("Painting", "minecraft:painting"); - DataConverterEntity.a.put("Pig", "minecraft:pig"); - DataConverterEntity.a.put("PigZombie", "minecraft:zombie_pigman"); - DataConverterEntity.a.put("PolarBear", "minecraft:polar_bear"); - DataConverterEntity.a.put("PrimedTnt", "minecraft:tnt"); - DataConverterEntity.a.put("Rabbit", "minecraft:rabbit"); - DataConverterEntity.a.put("Sheep", "minecraft:sheep"); - DataConverterEntity.a.put("Shulker", "minecraft:shulker"); - DataConverterEntity.a.put("ShulkerBullet", "minecraft:shulker_bullet"); - DataConverterEntity.a.put("Silverfish", "minecraft:silverfish"); - DataConverterEntity.a.put("Skeleton", "minecraft:skeleton"); - DataConverterEntity.a.put("SkeletonHorse", "minecraft:skeleton_horse"); - DataConverterEntity.a.put("Slime", "minecraft:slime"); - DataConverterEntity.a.put("SmallFireball", "minecraft:small_fireball"); - DataConverterEntity.a.put("SnowMan", "minecraft:snowman"); - DataConverterEntity.a.put("Snowball", "minecraft:snowball"); - DataConverterEntity.a.put("SpectralArrow", "minecraft:spectral_arrow"); - DataConverterEntity.a.put("Spider", "minecraft:spider"); - DataConverterEntity.a.put("Squid", "minecraft:squid"); - DataConverterEntity.a.put("Stray", "minecraft:stray"); - DataConverterEntity.a.put("ThrownEgg", "minecraft:egg"); - DataConverterEntity.a.put("ThrownEnderpearl", "minecraft:ender_pearl"); - DataConverterEntity.a.put("ThrownExpBottle", "minecraft:xp_bottle"); - DataConverterEntity.a.put("ThrownPotion", "minecraft:potion"); - DataConverterEntity.a.put("Villager", "minecraft:villager"); - DataConverterEntity.a.put("VillagerGolem", "minecraft:villager_golem"); - DataConverterEntity.a.put("Witch", "minecraft:witch"); - DataConverterEntity.a.put("WitherBoss", "minecraft:wither"); - DataConverterEntity.a.put("WitherSkeleton", "minecraft:wither_skeleton"); - DataConverterEntity.a.put("WitherSkull", "minecraft:wither_skull"); - DataConverterEntity.a.put("Wolf", "minecraft:wolf"); - DataConverterEntity.a.put("XPOrb", "minecraft:xp_orb"); - DataConverterEntity.a.put("Zombie", "minecraft:zombie"); - DataConverterEntity.a.put("ZombieHorse", "minecraft:zombie_horse"); - DataConverterEntity.a.put("ZombieVillager", "minecraft:zombie_villager"); - } - } - - private static class DataConverterPotionWater implements DataConverter { - - DataConverterPotionWater() { - } - - public int getDataVersion() { - return 806; - } - - public CompoundTag convert(CompoundTag cmp) { - String s = cmp.getString("id"); - - if ("minecraft:potion".equals(s) || "minecraft:splash_potion".equals(s) || "minecraft:lingering_potion".equals(s) || "minecraft:tipped_arrow".equals(s)) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - - if (!nbttagcompound1.contains("Potion", 8)) { - nbttagcompound1.putString("Potion", "minecraft:water"); - } - - if (!cmp.contains("tag", 10)) { - cmp.put("tag", nbttagcompound1); - } - } - - return cmp; - } - } - - private static class DataConverterShulker implements DataConverter { - - DataConverterShulker() { - } - - public int getDataVersion() { - return 808; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:shulker".equals(cmp.getString("id")) && !cmp.contains("Color", 99)) { - cmp.putByte("Color", (byte) 10); - } - - return cmp; - } - } - - private static class DataConverterShulkerBoxItem implements DataConverter { - - public static final String[] a = new String[] { "minecraft:white_shulker_box", "minecraft:orange_shulker_box", "minecraft:magenta_shulker_box", "minecraft:light_blue_shulker_box", "minecraft:yellow_shulker_box", "minecraft:lime_shulker_box", "minecraft:pink_shulker_box", "minecraft:gray_shulker_box", "minecraft:silver_shulker_box", "minecraft:cyan_shulker_box", "minecraft:purple_shulker_box", "minecraft:blue_shulker_box", "minecraft:brown_shulker_box", "minecraft:green_shulker_box", "minecraft:red_shulker_box", "minecraft:black_shulker_box" }; - - DataConverterShulkerBoxItem() { - } - - public int getDataVersion() { - return 813; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:shulker_box".equals(cmp.getString("id")) && cmp.contains("tag", 10)) { - CompoundTag nbttagcompound1 = cmp.getCompound("tag"); - - if (nbttagcompound1.contains("BlockEntityTag", 10)) { - CompoundTag nbttagcompound2 = nbttagcompound1.getCompound("BlockEntityTag"); - - if (nbttagcompound2.getList("Items", 10).isEmpty()) { - nbttagcompound2.remove("Items"); - } - - int i = nbttagcompound2.getInt("Color"); - - nbttagcompound2.remove("Color"); - if (nbttagcompound2.isEmpty()) { - nbttagcompound1.remove("BlockEntityTag"); - } - - if (nbttagcompound1.isEmpty()) { - cmp.remove("tag"); - } - - cmp.putString("id", DataConverterShulkerBoxItem.a[i % 16]); - } - } - - return cmp; - } - } - - private static class DataConverterShulkerBoxBlock implements DataConverter { - - DataConverterShulkerBoxBlock() { - } - - public int getDataVersion() { - return 813; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:shulker".equals(cmp.getString("id"))) { - cmp.remove("Color"); - } - - return cmp; - } - } - - private static class DataConverterLang implements DataConverter { - - DataConverterLang() { - } - - public int getDataVersion() { - return 816; - } - - public CompoundTag convert(CompoundTag cmp) { - if (cmp.contains("lang", 8)) { - cmp.putString("lang", cmp.getString("lang").toLowerCase(Locale.ROOT)); - } - - return cmp; - } - } - - private static class DataConverterTotem implements DataConverter { - - DataConverterTotem() { - } - - public int getDataVersion() { - return 820; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:totem".equals(cmp.getString("id"))) { - cmp.putString("id", "minecraft:totem_of_undying"); - } - - return cmp; - } - } - - private static class DataConverterBedBlock implements DataConverter { - - private static final Logger a = LogManager.getLogger(PaperweightDataConverters.class); - - DataConverterBedBlock() { - } - - public int getDataVersion() { - return 1125; - } - - public CompoundTag convert(CompoundTag cmp) { - try { - CompoundTag nbttagcompound1 = cmp.getCompound("Level"); - int i = nbttagcompound1.getInt("xPos"); - int j = nbttagcompound1.getInt("zPos"); - ListTag nbttaglist = nbttagcompound1.getList("TileEntities", 10); - ListTag nbttaglist1 = nbttagcompound1.getList("Sections", 10); - - for (int k = 0; k < nbttaglist1.size(); ++k) { - CompoundTag nbttagcompound2 = nbttaglist1.getCompound(k); - byte b0 = nbttagcompound2.getByte("Y"); - byte[] abyte = nbttagcompound2.getByteArray("Blocks"); - - for (int l = 0; l < abyte.length; ++l) { - if (416 == (abyte[l] & 255) << 4) { - int i1 = l & 15; - int j1 = l >> 8 & 15; - int k1 = l >> 4 & 15; - CompoundTag nbttagcompound3 = new CompoundTag(); - - nbttagcompound3.putString("id", "bed"); - nbttagcompound3.putInt("x", i1 + (i << 4)); - nbttagcompound3.putInt("y", j1 + (b0 << 4)); - nbttagcompound3.putInt("z", k1 + (j << 4)); - nbttaglist.add(nbttagcompound3); - } - } - } - } catch (Exception exception) { - DataConverterBedBlock.a.warn("Unable to datafix Bed blocks, level format may be missing tags."); - } - - return cmp; - } - } - - private static class DataConverterBedItem implements DataConverter { - - DataConverterBedItem() { - } - - public int getDataVersion() { - return 1125; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("minecraft:bed".equals(cmp.getString("id")) && cmp.getShort("Damage") == 0) { - cmp.putShort("Damage", (short) DyeColor.RED.getId()); - } - - return cmp; - } - } - - private static class DataConverterSignText implements DataConverter { - - public static final Gson a = new GsonBuilder().registerTypeAdapter(Component.class, new JsonDeserializer() { - MutableComponent a(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { - if (jsonelement.isJsonPrimitive()) { - return new TextComponent(jsonelement.getAsString()); - } else if (jsonelement.isJsonArray()) { - JsonArray jsonarray = jsonelement.getAsJsonArray(); - MutableComponent ichatbasecomponent = null; - Iterator iterator = jsonarray.iterator(); - - while (iterator.hasNext()) { - JsonElement jsonelement1 = (JsonElement) iterator.next(); - MutableComponent ichatbasecomponent1 = this.a(jsonelement1, jsonelement1.getClass(), jsondeserializationcontext); - - if (ichatbasecomponent == null) { - ichatbasecomponent = ichatbasecomponent1; - } else { - ichatbasecomponent.append(ichatbasecomponent1); - } - } - - return ichatbasecomponent; - } else { - throw new JsonParseException("Don't know how to turn " + jsonelement + " into a Component"); - } - } - - public Object deserialize(JsonElement jsonelement, Type type, JsonDeserializationContext jsondeserializationcontext) throws JsonParseException { - return this.a(jsonelement, type, jsondeserializationcontext); - } - }).create(); - - DataConverterSignText() { - } - - public int getDataVersion() { - return 101; - } - - public CompoundTag convert(CompoundTag cmp) { - if ("Sign".equals(cmp.getString("id"))) { - this.convert(cmp, "Text1"); - this.convert(cmp, "Text2"); - this.convert(cmp, "Text3"); - this.convert(cmp, "Text4"); - } - - return cmp; - } - - private void convert(CompoundTag nbttagcompound, String s) { - String s1 = nbttagcompound.getString(s); - Component object = null; - - if (!"null".equals(s1) && !StringUtil.isNullOrEmpty(s1)) { - if ((s1.charAt(0) != 34 || s1.charAt(s1.length() - 1) != 34) && (s1.charAt(0) != 123 || s1.charAt(s1.length() - 1) != 125)) { - object = new TextComponent(s1); - } else { - try { - object = GsonHelper.fromJson(DataConverterSignText.a, s1, Component.class, true); - if (object == null) { - object = new TextComponent(""); - } - } catch (JsonParseException jsonparseexception) { - ; - } - - if (object == null) { - try { - object = Component.Serializer.fromJson(s1); - } catch (JsonParseException jsonparseexception1) { - ; - } - } - - if (object == null) { - try { - object = Component.Serializer.fromJsonLenient(s1); - } catch (JsonParseException jsonparseexception2) { - ; - } - } - - if (object == null) { - object = new TextComponent(s1); - } - } - } else { - object = new TextComponent(""); - } - - nbttagcompound.putString(s, Component.Serializer.toJson(object)); - } - } - - private static class DataInspectorPlayerVehicle implements DataInspector { - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (cmp.contains("RootVehicle", 10)) { - CompoundTag nbttagcompound1 = cmp.getCompound("RootVehicle"); - - if (nbttagcompound1.contains("Entity", 10)) { - convertCompound(LegacyType.ENTITY, nbttagcompound1, "Entity", sourceVer, targetVer); - } - } - - return cmp; - } - } - - private static class DataInspectorLevelPlayer implements DataInspector { - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (cmp.contains("Player", 10)) { - convertCompound(LegacyType.PLAYER, cmp, "Player", sourceVer, targetVer); - } - - return cmp; - } - } - - private static class DataInspectorStructure implements DataInspector { - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - ListTag nbttaglist; - int j; - CompoundTag nbttagcompound1; - - if (cmp.contains("entities", 9)) { - nbttaglist = cmp.getList("entities", 10); - - for (j = 0; j < nbttaglist.size(); ++j) { - nbttagcompound1 = (CompoundTag) nbttaglist.get(j); - if (nbttagcompound1.contains("nbt", 10)) { - convertCompound(LegacyType.ENTITY, nbttagcompound1, "nbt", sourceVer, targetVer); - } - } - } - - if (cmp.contains("blocks", 9)) { - nbttaglist = cmp.getList("blocks", 10); - - for (j = 0; j < nbttaglist.size(); ++j) { - nbttagcompound1 = (CompoundTag) nbttaglist.get(j); - if (nbttagcompound1.contains("nbt", 10)) { - convertCompound(LegacyType.BLOCK_ENTITY, nbttagcompound1, "nbt", sourceVer, targetVer); - } - } - } - - return cmp; - } - } - - private static class DataInspectorChunks implements DataInspector { - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (cmp.contains("Level", 10)) { - CompoundTag nbttagcompound1 = cmp.getCompound("Level"); - ListTag nbttaglist; - int j; - - if (nbttagcompound1.contains("Entities", 9)) { - nbttaglist = nbttagcompound1.getList("Entities", 10); - - for (j = 0; j < nbttaglist.size(); ++j) { - nbttaglist.set(j, convert(LegacyType.ENTITY, (CompoundTag) nbttaglist.get(j), sourceVer, targetVer)); - } - } - - if (nbttagcompound1.contains("TileEntities", 9)) { - nbttaglist = nbttagcompound1.getList("TileEntities", 10); - - for (j = 0; j < nbttaglist.size(); ++j) { - nbttaglist.set(j, convert(LegacyType.BLOCK_ENTITY, (CompoundTag) nbttaglist.get(j), sourceVer, targetVer)); - } - } - } - - return cmp; - } - } - - private static class DataInspectorEntityPassengers implements DataInspector { - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (cmp.contains("Passengers", 9)) { - ListTag nbttaglist = cmp.getList("Passengers", 10); - - for (int j = 0; j < nbttaglist.size(); ++j) { - nbttaglist.set(j, convert(LegacyType.ENTITY, nbttaglist.getCompound(j), sourceVer, targetVer)); - } - } - - return cmp; - } - } - - private static class DataInspectorPlayer implements DataInspector { - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - convertItems(cmp, "Inventory", sourceVer, targetVer); - convertItems(cmp, "EnderItems", sourceVer, targetVer); - if (cmp.contains("ShoulderEntityLeft", 10)) { - convertCompound(LegacyType.ENTITY, cmp, "ShoulderEntityLeft", sourceVer, targetVer); - } - - if (cmp.contains("ShoulderEntityRight", 10)) { - convertCompound(LegacyType.ENTITY, cmp, "ShoulderEntityRight", sourceVer, targetVer); - } - - return cmp; - } - } - - private static class DataInspectorVillagers implements DataInspector { - ResourceLocation entityVillager = getKey("EntityVillager"); - - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (entityVillager.equals(new ResourceLocation(cmp.getString("id"))) && cmp.contains("Offers", 10)) { - CompoundTag nbttagcompound1 = cmp.getCompound("Offers"); - - if (nbttagcompound1.contains("Recipes", 9)) { - ListTag nbttaglist = nbttagcompound1.getList("Recipes", 10); - - for (int j = 0; j < nbttaglist.size(); ++j) { - CompoundTag nbttagcompound2 = nbttaglist.getCompound(j); - - convertItem(nbttagcompound2, "buy", sourceVer, targetVer); - convertItem(nbttagcompound2, "buyB", sourceVer, targetVer); - convertItem(nbttagcompound2, "sell", sourceVer, targetVer); - nbttaglist.set(j, nbttagcompound2); - } - } - } - - return cmp; - } - } - - private static class DataInspectorMobSpawnerMinecart implements DataInspector { - ResourceLocation entityMinecartMobSpawner = getKey("EntityMinecartMobSpawner"); - ResourceLocation tileEntityMobSpawner = getKey("TileEntityMobSpawner"); - - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - String s = cmp.getString("id"); - if (entityMinecartMobSpawner.equals(new ResourceLocation(s))) { - cmp.putString("id", tileEntityMobSpawner.toString()); - convert(LegacyType.BLOCK_ENTITY, cmp, sourceVer, targetVer); - cmp.putString("id", s); - } - - return cmp; - } - } - - private static class DataInspectorMobSpawnerMobs implements DataInspector { - ResourceLocation tileEntityMobSpawner = getKey("TileEntityMobSpawner"); - - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (tileEntityMobSpawner.equals(new ResourceLocation(cmp.getString("id")))) { - if (cmp.contains("SpawnPotentials", 9)) { - ListTag nbttaglist = cmp.getList("SpawnPotentials", 10); - - for (int j = 0; j < nbttaglist.size(); ++j) { - CompoundTag nbttagcompound1 = nbttaglist.getCompound(j); - - convertCompound(LegacyType.ENTITY, nbttagcompound1, "Entity", sourceVer, targetVer); - } - } - - convertCompound(LegacyType.ENTITY, cmp, "SpawnData", sourceVer, targetVer); - } - - return cmp; - } - } - - private static class DataInspectorCommandBlock implements DataInspector { - ResourceLocation tileEntityCommand = getKey("TileEntityCommand"); - - @Override - public CompoundTag inspect(CompoundTag cmp, int sourceVer, int targetVer) { - if (tileEntityCommand.equals(new ResourceLocation(cmp.getString("id")))) { - cmp.putString("id", "Control"); - convert(LegacyType.BLOCK_ENTITY, cmp, sourceVer, targetVer); - cmp.putString("id", "MinecartCommandBlock"); - } - - return cmp; - } - } -} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java deleted file mode 100644 index f3097a98bb..0000000000 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightFakePlayer.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; - -import com.mojang.authlib.GameProfile; -import net.minecraft.network.chat.ChatType; -import net.minecraft.network.chat.Component; -import net.minecraft.network.protocol.game.ServerboundClientInformationPacket; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.stats.Stat; -import net.minecraft.world.MenuProvider; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.block.entity.SignBlockEntity; -import net.minecraft.world.phys.Vec3; -import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; - -import java.util.OptionalInt; -import java.util.UUID; - -class PaperweightFakePlayer extends ServerPlayer { - private static final GameProfile FAKE_WORLDEDIT_PROFILE = new GameProfile(UUID.nameUUIDFromBytes("worldedit".getBytes()), "[WorldEdit]"); - private static final Vec3 ORIGIN = new Vec3(0.0D, 0.0D, 0.0D); - - PaperweightFakePlayer(ServerLevel world) { - super(world.getServer(), world, FAKE_WORLDEDIT_PROFILE); - } - - @Override - public Vec3 position() { - return ORIGIN; - } - - @Override - public void tick() { - } - - @Override - public void die(DamageSource damagesource) { - } - - @Override - public Entity changeDimension(ServerLevel worldserver, TeleportCause cause) { - return this; - } - - @Override - public OptionalInt openMenu(MenuProvider factory) { - return OptionalInt.empty(); - } - - @Override - public void updateOptions(ServerboundClientInformationPacket packet) { - } - - @Override - public void displayClientMessage(Component message, boolean actionBar) { - } - - @Override - public void sendMessage(Component message, ChatType type, UUID sender) { - } - - @Override - public void awardStat(Stat stat, int amount) { - } - - @Override - public void awardStat(Stat stat) { - } - - @Override - public boolean isInvulnerableTo(DamageSource damageSource) { - return true; - } - - @Override - public void openTextEdit(SignBlockEntity sign) { - } -} diff --git a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java b/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java deleted file mode 100644 index 34775ae834..0000000000 --- a/worldedit-bukkit/adapters/adapter-1.18.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v1_18_R2/PaperweightWorldNativeAccess.java +++ /dev/null @@ -1,189 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.bukkit.adapter.impl.v1_18_R2; - -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.internal.block.BlockStateIdAccess; -import com.sk89q.worldedit.internal.wna.WorldNativeAccess; -import com.sk89q.worldedit.util.SideEffect; -import com.sk89q.worldedit.util.SideEffectSet; -import com.sk89q.worldedit.world.block.BlockState; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; -import net.minecraft.server.level.ChunkHolder; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.chunk.LevelChunk; -import org.bukkit.craftbukkit.v1_18_R2.CraftWorld; -import org.bukkit.craftbukkit.v1_18_R2.block.data.CraftBlockData; -import org.bukkit.event.block.BlockPhysicsEvent; -import org.enginehub.linbus.tree.LinCompoundTag; - -import java.lang.ref.WeakReference; -import java.util.Objects; -import javax.annotation.Nullable; - -public class PaperweightWorldNativeAccess implements WorldNativeAccess { - private static final int UPDATE = 1; - private static final int NOTIFY = 2; - - private final PaperweightAdapter adapter; - private final WeakReference world; - private SideEffectSet sideEffectSet; - - public PaperweightWorldNativeAccess(PaperweightAdapter adapter, WeakReference world) { - this.adapter = adapter; - this.world = world; - } - - private ServerLevel getWorld() { - return Objects.requireNonNull(world.get(), "The reference to the world was lost"); - } - - @Override - public void setCurrentSideEffectSet(SideEffectSet sideEffectSet) { - this.sideEffectSet = sideEffectSet; - } - - @Override - public LevelChunk getChunk(int x, int z) { - return getWorld().getChunk(x, z); - } - - @Override - public net.minecraft.world.level.block.state.BlockState toNative(BlockState state) { - int stateId = BlockStateIdAccess.getBlockStateId(state); - return BlockStateIdAccess.isValidInternalId(stateId) - ? Block.stateById(stateId) - : ((CraftBlockData) BukkitAdapter.adapt(state)).getState(); - } - - @Override - public net.minecraft.world.level.block.state.BlockState getBlockState(LevelChunk chunk, BlockPos position) { - return chunk.getBlockState(position); - } - - @Nullable - @Override - public net.minecraft.world.level.block.state.BlockState setBlockState(LevelChunk chunk, BlockPos position, net.minecraft.world.level.block.state.BlockState state) { - return chunk.setBlockState(position, state, false, this.sideEffectSet.shouldApply(SideEffect.UPDATE)); - } - - @Override - public net.minecraft.world.level.block.state.BlockState getValidBlockForPosition(net.minecraft.world.level.block.state.BlockState block, BlockPos position) { - return Block.updateFromNeighbourShapes(block, getWorld(), position); - } - - @Override - public BlockPos getPosition(int x, int y, int z) { - return new BlockPos(x, y, z); - } - - @Override - public void updateLightingForBlock(BlockPos position) { - getWorld().getChunkSource().getLightEngine().checkBlock(position); - } - - @Override - public boolean updateTileEntity(BlockPos position, LinCompoundTag tag) { - // We will assume that the tile entity was created for us - BlockEntity tileEntity = getWorld().getBlockEntity(position); - if (tileEntity == null) { - return false; - } - Tag nativeTag = adapter.fromNative(tag); - PaperweightAdapter.readTagIntoTileEntity((CompoundTag) nativeTag, tileEntity); - return true; - } - - @Override - public void notifyBlockUpdate(LevelChunk chunk, BlockPos position, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { - if (chunk.getSections()[getWorld().getSectionIndex(position.getY())] != null) { - getWorld().sendBlockUpdated(position, oldState, newState, UPDATE | NOTIFY); - } - } - - @Override - public boolean isChunkTicking(LevelChunk chunk) { - return chunk.getFullStatus().isOrAfter(ChunkHolder.FullChunkStatus.TICKING); - } - - @Override - public void markBlockChanged(LevelChunk chunk, BlockPos position) { - if (chunk.getSections()[getWorld().getSectionIndex(position.getY())] != null) { - getWorld().getChunkSource().blockChanged(position); - } - } - - @Override - public void notifyNeighbors(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { - ServerLevel world = getWorld(); - if (sideEffectSet.shouldApply(SideEffect.EVENTS)) { - world.updateNeighborsAt(pos, oldState.getBlock()); - } else { - // When we don't want events, manually run the physics without them. - Block block = oldState.getBlock(); - fireNeighborChanged(pos, world, block, pos.west()); - fireNeighborChanged(pos, world, block, pos.east()); - fireNeighborChanged(pos, world, block, pos.below()); - fireNeighborChanged(pos, world, block, pos.above()); - fireNeighborChanged(pos, world, block, pos.north()); - fireNeighborChanged(pos, world, block, pos.south()); - } - if (newState.hasAnalogOutputSignal()) { - world.updateNeighbourForOutputSignal(pos, newState.getBlock()); - } - } - - @Override - public void updateBlock(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { - ServerLevel world = getWorld(); - newState.onPlace(world, pos, oldState, false); - } - - private void fireNeighborChanged(BlockPos pos, ServerLevel world, Block block, BlockPos neighborPos) { - world.getBlockState(neighborPos).neighborChanged(world, neighborPos, block, pos, false); - } - - @Override - public void updateNeighbors(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState, int recursionLimit) { - ServerLevel world = getWorld(); - // a == updateNeighbors - // b == updateDiagonalNeighbors - oldState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); - if (sideEffectSet.shouldApply(SideEffect.EVENTS)) { - CraftWorld craftWorld = world.getWorld(); - BlockPhysicsEvent event = new BlockPhysicsEvent(craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), CraftBlockData.fromData(newState)); - world.getCraftServer().getPluginManager().callEvent(event); - if (event.isCancelled()) { - return; - } - } - newState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); - newState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); - } - - @Override - public void onBlockStateChange(BlockPos pos, net.minecraft.world.level.block.state.BlockState oldState, net.minecraft.world.level.block.state.BlockState newState) { - getWorld().onBlockStateChange(pos, oldState, newState); - } -} diff --git a/worldedit-bukkit/adapters/adapter-1.19.4/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.19.4/build.gradle.kts index df1bae5c83..c52e5712d4 100644 --- a/worldedit-bukkit/adapters/adapter-1.19.4/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.19.4/build.gradle.kts @@ -1,6 +1,8 @@ import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension -applyPaperweightAdapterConfiguration() +plugins { + id("buildlogic.adapter") +} dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ diff --git a/worldedit-bukkit/adapters/adapter-1.20.2/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.20.2/build.gradle.kts index 968c53ee22..c2ce87151e 100644 --- a/worldedit-bukkit/adapters/adapter-1.20.2/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.20.2/build.gradle.kts @@ -1,6 +1,8 @@ import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension -applyPaperweightAdapterConfiguration() +plugins { + id("buildlogic.adapter") +} dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ diff --git a/worldedit-bukkit/adapters/adapter-1.20.4/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.20.4/build.gradle.kts index cdab328e73..8a6f722c97 100644 --- a/worldedit-bukkit/adapters/adapter-1.20.4/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.20.4/build.gradle.kts @@ -1,6 +1,8 @@ import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension -applyPaperweightAdapterConfiguration() +plugins { + id("buildlogic.adapter") +} dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ diff --git a/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts index 4cf500733a..130819e707 100644 --- a/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.20.5/build.gradle.kts @@ -1,6 +1,8 @@ import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension -applyPaperweightAdapterConfiguration() +plugins { + id("buildlogic.adapter") +} dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ diff --git a/worldedit-bukkit/adapters/adapter-1.20/build.gradle.kts b/worldedit-bukkit/adapters/adapter-1.20/build.gradle.kts index 52ada7865c..d1db9f9ac7 100644 --- a/worldedit-bukkit/adapters/adapter-1.20/build.gradle.kts +++ b/worldedit-bukkit/adapters/adapter-1.20/build.gradle.kts @@ -1,6 +1,8 @@ import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension -applyPaperweightAdapterConfiguration() +plugins { + id("buildlogic.adapter") +} dependencies { // https://repo.papermc.io/service/rest/repository/browse/maven-public/io/papermc/paper/dev-bundle/ diff --git a/worldedit-bukkit/build.gradle.kts b/worldedit-bukkit/build.gradle.kts index b2ac1b362f..e5b6e41089 100644 --- a/worldedit-bukkit/build.gradle.kts +++ b/worldedit-bukkit/build.gradle.kts @@ -3,14 +3,19 @@ import io.papermc.paperweight.userdev.attribute.Obfuscation plugins { `java-library` + id("buildlogic.platform") } -applyPlatformAndCoreConfiguration() -applyShadowConfiguration() +platform { + kind = buildlogic.WorldEditKind.Plugin + includeClasspath = true +} repositories { - maven { url = uri("https://hub.spigotmc.org/nexus/content/groups/public") } - maven { url = uri("https://repo.papermc.io/repository/maven-public/") } + maven { + name = "Spigot" + url = uri("https://hub.spigotmc.org/nexus/content/groups/public") + } } val localImplementation = configurations.create("localImplementation") { @@ -79,8 +84,6 @@ tasks.named("processResources") { } } -addJarManifest(WorldEditKind.Plugin, includeClasspath = true) - tasks.named("shadowJar") { configurations.add(adapters) dependencies { diff --git a/worldedit-cli/build.gradle.kts b/worldedit-cli/build.gradle.kts index d830726ba9..22f21f4714 100644 --- a/worldedit-cli/build.gradle.kts +++ b/worldedit-cli/build.gradle.kts @@ -2,17 +2,16 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { `java-library` + id("buildlogic.platform") } -applyPlatformAndCoreConfiguration() -applyShadowConfiguration() -addJarManifest( - WorldEditKind.Standalone("com.sk89q.worldedit.cli.CLIWorldEdit"), +platform { + kind = buildlogic.WorldEditKind.Standalone("com.sk89q.worldedit.cli.CLIWorldEdit") extraAttributes = mapOf( // We don't have any multi-release stuff, but Log4J does. "Multi-Release" to "true", - ), -) + ) +} dependencies { "compileOnly"(project(":worldedit-libs:core:ap")) diff --git a/worldedit-core/build.gradle.kts b/worldedit-core/build.gradle.kts index 4d03138672..6780e68712 100644 --- a/worldedit-core/build.gradle.kts +++ b/worldedit-core/build.gradle.kts @@ -4,10 +4,9 @@ import org.gradle.plugins.ide.idea.model.IdeaModel plugins { `java-library` antlr + id("buildlogic.core-and-platform") } -applyPlatformAndCoreConfiguration() - repositories { ivy { url = uri("https://repo.enginehub.org/language-files/") diff --git a/worldedit-core/doctools/build.gradle.kts b/worldedit-core/doctools/build.gradle.kts index b921ebc72f..d12701190b 100644 --- a/worldedit-core/doctools/build.gradle.kts +++ b/worldedit-core/doctools/build.gradle.kts @@ -1,10 +1,9 @@ plugins { kotlin("jvm") version "1.9.23" application + id("buildlogic.common") } -applyCommonConfiguration() - application.mainClass.set("com.sk89q.worldedit.internal.util.DocumentationPrinter") tasks.named("run") { workingDir = rootProject.projectDir diff --git a/worldedit-fabric/build.gradle.kts b/worldedit-fabric/build.gradle.kts index 28c1dbc83a..273b6d5693 100644 --- a/worldedit-fabric/build.gradle.kts +++ b/worldedit-fabric/build.gradle.kts @@ -5,12 +5,20 @@ import net.fabricmc.loom.task.RemapJarTask import net.fabricmc.loom.task.RunGameTask plugins { - id("fabric-loom") + alias(libs.plugins.fabric.loom) `java-library` + id("buildlogic.platform") } -applyPlatformAndCoreConfiguration() -applyShadowConfiguration() +commonJava { + // Not easy to do, because it's in a bunch of separate configurations + banSlf4j = false +} + +platform { + kind = buildlogic.WorldEditKind.Mod + includeClasspath = true +} val fabricApiConfiguration: Configuration = configurations.create("fabricApi") @@ -24,12 +32,12 @@ tasks.withType().configureEach { repositories { maven { - name = "Fabric" - url = uri("https://maven.fabricmc.net/") + name = "EngineHub" + url = uri("https://maven.enginehub.org/repo/") } getByName("Mojang") { content { - includeGroupByRegex("com\\.mojang\\..*") + includeGroupAndSubgroups("com.mojang") } } } @@ -60,11 +68,6 @@ dependencies { // No need for this at runtime "modCompileOnly"(libs.fabric.permissions.api) - // Hook these up manually, because Fabric doesn't seem to quite do it properly. - "compileOnly"(libs.fabric.mixin) - "annotationProcessor"(libs.fabric.mixin) - "annotationProcessor"(libs.fabric.loom) - // Silence some warnings, since apparently this isn't on the compile classpath like it should be. "compileOnly"(libs.errorprone.annotations) } @@ -88,8 +91,6 @@ tasks.named("processResources") { } } -addJarManifest(WorldEditKind.Mod, includeClasspath = true) - tasks.named("shadowJar") { archiveClassifier.set("dist-dev") dependencies { diff --git a/worldedit-libs/bukkit/build.gradle.kts b/worldedit-libs/bukkit/build.gradle.kts index d8fb8a56f7..1efe39cef8 100644 --- a/worldedit-libs/bukkit/build.gradle.kts +++ b/worldedit-libs/bukkit/build.gradle.kts @@ -1,11 +1,5 @@ -applyLibrariesConfiguration() -constrainDependenciesToLibsCore() - -repositories { - maven { - name = "SpigotMC" - url = uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") - } +plugins { + id("buildlogic.libs") } dependencies { diff --git a/worldedit-libs/cli/build.gradle.kts b/worldedit-libs/cli/build.gradle.kts index 388618cea1..3f6c7e06cb 100644 --- a/worldedit-libs/cli/build.gradle.kts +++ b/worldedit-libs/cli/build.gradle.kts @@ -1 +1,3 @@ -applyLibrariesConfiguration() +plugins { + id("buildlogic.libs") +} diff --git a/worldedit-libs/core/ap/build.gradle.kts b/worldedit-libs/core/ap/build.gradle.kts index f610613073..9d30deaea5 100644 --- a/worldedit-libs/core/ap/build.gradle.kts +++ b/worldedit-libs/core/ap/build.gradle.kts @@ -1,4 +1,6 @@ -applyLibrariesConfiguration() +plugins { + id("buildlogic.libs") +} dependencies { // These are here because they use net.kyori:text-api -- so they need to be relocated too diff --git a/worldedit-libs/core/build.gradle.kts b/worldedit-libs/core/build.gradle.kts index abfd84c7ba..f8e7a76e8d 100644 --- a/worldedit-libs/core/build.gradle.kts +++ b/worldedit-libs/core/build.gradle.kts @@ -1,4 +1,6 @@ -applyLibrariesConfiguration() +plugins { + id("buildlogic.libs") +} dependencies { "shade"(libs.kyoriText.api) diff --git a/worldedit-libs/fabric/build.gradle.kts b/worldedit-libs/fabric/build.gradle.kts index 388618cea1..3f6c7e06cb 100644 --- a/worldedit-libs/fabric/build.gradle.kts +++ b/worldedit-libs/fabric/build.gradle.kts @@ -1 +1,3 @@ -applyLibrariesConfiguration() +plugins { + id("buildlogic.libs") +} diff --git a/worldedit-libs/neoforge/build.gradle.kts b/worldedit-libs/neoforge/build.gradle.kts index 388618cea1..3f6c7e06cb 100644 --- a/worldedit-libs/neoforge/build.gradle.kts +++ b/worldedit-libs/neoforge/build.gradle.kts @@ -1 +1,3 @@ -applyLibrariesConfiguration() +plugins { + id("buildlogic.libs") +} diff --git a/worldedit-libs/sponge/build.gradle.kts b/worldedit-libs/sponge/build.gradle.kts deleted file mode 100644 index 7f10cf0124..0000000000 --- a/worldedit-libs/sponge/build.gradle.kts +++ /dev/null @@ -1,11 +0,0 @@ -applyLibrariesConfiguration() -constrainDependenciesToLibsCore() - -repositories { - maven { - name = "Sponge" - url = uri("https://repo.spongepowered.org/maven") - } -} -dependencies { -} diff --git a/worldedit-mod/build.gradle.kts b/worldedit-mod/build.gradle.kts index fd3d91c1e9..e1c39837f2 100644 --- a/worldedit-mod/build.gradle.kts +++ b/worldedit-mod/build.gradle.kts @@ -4,10 +4,10 @@ import java.util.jar.Manifest plugins { base + id("buildlogic.common") + alias(libs.plugins.fabric.loom) apply false } -applyCommonConfiguration() - open class MergeManifests : DefaultTask() { @InputFiles val inputManifests: ConfigurableFileCollection = project.objects.fileCollection() diff --git a/worldedit-neoforge/build.gradle.kts b/worldedit-neoforge/build.gradle.kts index 61213ef54e..3fc0bdbec1 100644 --- a/worldedit-neoforge/build.gradle.kts +++ b/worldedit-neoforge/build.gradle.kts @@ -2,12 +2,19 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import net.neoforged.gradle.dsl.common.runs.run.Run plugins { - id("net.neoforged.gradle.userdev") + alias(libs.plugins.neogradle.userdev) `java-library` + id("buildlogic.platform") } -applyPlatformAndCoreConfiguration() -applyShadowConfiguration() +commonJava { + // Not easy to do, because it's in a bunch of separate configurations + banSlf4j = false +} + +platform { + kind = buildlogic.WorldEditKind.Mod +} val minecraftVersion = libs.versions.neoforge.minecraft.get() val nextMajorMinecraftVersion: String = minecraftVersion.split('.').let { (useless, major) -> @@ -20,20 +27,16 @@ val apiClasspath = configurations.create("apiClasspath") { } repositories { + val toRemove = mutableListOf() for (repo in project.repositories) { if (repo is MavenArtifactRepository && repo.url.toString() == "https://maven.neoforged.net/releases/") { - repo.mavenContent { - includeGroupAndSubgroups("net.neoforged") - } + toRemove.add(repo) } } - // For Fabric's mixin fork + toRemove.forEach { remove(it) } maven { - name = "Fabric" - url = uri("https://maven.fabricmc.net/") - mavenContent { - includeGroup("net.fabricmc") - } + name = "EngineHub" + url = uri("https://maven.enginehub.org/repo/") } } @@ -106,8 +109,6 @@ tasks.named("processResources") { from(project(":worldedit-core").tasks.named("processResources")) } -addJarManifest(WorldEditKind.Mod, includeClasspath = false) - tasks.named("shadowJar") { dependencies { relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") diff --git a/worldedit-sponge/build.gradle.kts b/worldedit-sponge/build.gradle.kts deleted file mode 100644 index 9da479e093..0000000000 --- a/worldedit-sponge/build.gradle.kts +++ /dev/null @@ -1,81 +0,0 @@ -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar -import org.spongepowered.gradle.plugin.config.PluginLoaders -import org.spongepowered.plugin.metadata.model.PluginDependency - -plugins { - id("org.spongepowered.gradle.plugin") - id("org.spongepowered.gradle.vanilla") -} - -applyPlatformAndCoreConfiguration() -applyShadowConfiguration() - -repositories { - mavenCentral() -} - -minecraft { - version("1.20") -} - -val spongeApiVersion = "11.0.0-SNAPSHOT"; - -sponge { - apiVersion(spongeApiVersion) - license("GPL-3.0-or-later") - plugin("worldedit") { - loader { - name(PluginLoaders.JAVA_PLAIN) - version("1.0") - } - displayName("WorldEdit") - version(project.ext["internalVersion"].toString()) - entrypoint("com.sk89q.worldedit.sponge.SpongeWorldEdit") - description("WorldEdit is an easy-to-use in-game world editor for Minecraft, supporting both single- and multi-player.") - links { - homepage("https://enginehub.org/worldedit/") - source("https://github.com/EngineHub/WorldEdit") - issues("https://github.com/EngineHub/WorldEdit/issues") - } - contributor("EngineHub") { - description("Various members of the EngineHub team") - } - dependency("spongeapi") { - loadOrder(PluginDependency.LoadOrder.AFTER) - optional(false) - } - } -} - -dependencies { - api(project(":worldedit-core")) - api(project(":worldedit-libs:sponge")) - - api("org.apache.logging.log4j:log4j-api") - implementation("org.bstats:bstats-sponge:3.0.0") - implementation("it.unimi.dsi:fastutil") - - // Silence some warnings, since apparently this isn't on the compile classpath like it should be. - compileOnly("com.google.errorprone:error_prone_annotations:2.11.0") -} - -configure { - archivesName.set("${project.name}-api$spongeApiVersion") -} - -addJarManifest(WorldEditKind.Mod, includeClasspath = true) - -tasks.named("shadowJar") { - dependencies { - include(dependency("org.bstats:")) - include(dependency("org.antlr:antlr4-runtime")) - include(dependency("com.sk89q.lib:jlibnoise")) - - relocate("org.antlr.v4", "com.sk89q.worldedit.antlr4") - relocate("org.bstats", "com.sk89q.worldedit.sponge.bstats") - relocate("net.royawesome.jlibnoise", "com.sk89q.worldedit.jlibnoise") - } -} -tasks.named("assemble").configure { - dependsOn("shadowJar") -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java deleted file mode 100644 index 79f23a134c..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CUIChannelHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.util.lifecycle.SimpleLifecycled; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; -import org.spongepowered.api.event.Listener; -import org.spongepowered.api.event.lifecycle.RegisterChannelEvent; -import org.spongepowered.api.network.ServerPlayerConnection; -import org.spongepowered.api.network.channel.ChannelBuf; -import org.spongepowered.api.network.channel.raw.RawDataChannel; -import org.spongepowered.api.network.channel.raw.play.RawPlayDataHandler; - -import java.nio.charset.StandardCharsets; - -public class CUIChannelHandler implements RawPlayDataHandler { - public static final ResourceKey CUI_PLUGIN_CHANNEL = ResourceKey.of("worldedit", "cui"); - private static final SimpleLifecycled CHANNEL = SimpleLifecycled.invalid(); - - public static final class RegistrationHandler { - @Listener - public void onChannelRegistration(RegisterChannelEvent event) { - RawDataChannel channel = event.register(CUI_PLUGIN_CHANNEL, RawDataChannel.class); - channel.play().addHandler(ServerPlayerConnection.class, new CUIChannelHandler()); - CHANNEL.newValue(channel); - } - } - - public static RawDataChannel channel() { - return CHANNEL.valueOrThrow(); - } - - @Override - public void handlePayload(ChannelBuf data, ServerPlayerConnection connection) { - ServerPlayer player = connection.player(); - - SpongePlayer spongePlayer = SpongeAdapter.adapt(player); - LocalSession session = WorldEdit.getInstance().getSessionManager().get( - spongePlayer - ); - - session.handleCUIInitializationMessage( - new String(data.readBytes(data.available()), StandardCharsets.UTF_8), - spongePlayer - ); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java deleted file mode 100644 index be08709a14..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/CommandAdapter.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.command.util.PermissionCondition; -import com.sk89q.worldedit.sponge.internal.LocaleResolver; -import net.kyori.adventure.text.Component; -import org.checkerframework.checker.nullness.qual.NonNull; -import org.enginehub.piston.Command; -import org.spongepowered.api.command.CommandCause; - -import java.util.Collections; -import java.util.Optional; -import java.util.Set; - -public abstract class CommandAdapter implements org.spongepowered.api.command.Command.Raw { - private final Command command; - - protected CommandAdapter(Command command) { - this.command = command; - } - - @Override - public boolean canExecute(CommandCause cause) { - Set permissions = command.getCondition().as(PermissionCondition.class) - .map(PermissionCondition::getPermissions) - .orElseGet(Collections::emptySet); - - // Allow commands without permission nodes to always execute. - if (permissions.isEmpty()) { - return true; - } - - for (String perm : permissions) { - if (cause.hasPermission(perm)) { - return true; - } - } - return false; - } - - @Override - public Optional shortDescription(CommandCause cause) { - return Optional.of(command.getDescription()) - .map(desc -> SpongeTextAdapter.convert(desc, LocaleResolver.resolveLocale(cause.audience()))); - } - - @Override - public Optional extendedDescription(CommandCause cause) { - return command.getFooter() - .map(footer -> SpongeTextAdapter.convert(footer, LocaleResolver.resolveLocale(cause.audience()))); - } - - @Override - public Optional help(@NonNull CommandCause cause) { - return Optional.of(command.getFullHelp()) - .map(help -> SpongeTextAdapter.convert(help, LocaleResolver.resolveLocale(cause.audience()))); - } - - @Override - public Component usage(CommandCause cause) { - return SpongeTextAdapter.convert(command.getUsage(), LocaleResolver.resolveLocale(cause.audience())); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java deleted file mode 100644 index 7edfd16c6f..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/Constants.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import org.spongepowered.api.data.persistence.DataQuery; - -/** - * Kinda mirrors Sponge Common's Constants class. - * - *

Internal. Do not use.

- */ -public class Constants { - public static class Sponge { - public static final DataQuery UNSAFE_NBT = DataQuery.of("UnsafeData"); - - private Sponge() { - } - } - - private Constants() { - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java deleted file mode 100644 index 401456b4ae..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeAdapter.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.blocks.BaseItemStack; -import com.sk89q.worldedit.internal.block.BlockStateIdAccess; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.math.Vector3; -import com.sk89q.worldedit.sponge.internal.NbtAdapter; -import com.sk89q.worldedit.sponge.internal.SpongeTransmogrifier; -import com.sk89q.worldedit.util.Direction; -import com.sk89q.worldedit.util.Location; -import com.sk89q.worldedit.util.concurrency.LazyReference; -import com.sk89q.worldedit.world.World; -import com.sk89q.worldedit.world.biome.BiomeType; -import com.sk89q.worldedit.world.block.BlockState; -import com.sk89q.worldedit.world.item.ItemTypes; -import net.minecraft.world.level.block.Block; -import org.enginehub.linbus.tree.LinCompoundTag; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.data.persistence.DataContainer; -import org.spongepowered.api.data.persistence.DataView; -import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; -import org.spongepowered.api.item.inventory.ItemStack; -import org.spongepowered.api.registry.RegistryKey; -import org.spongepowered.api.registry.RegistryReference; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.world.biome.Biome; -import org.spongepowered.api.world.server.ServerLocation; -import org.spongepowered.api.world.server.ServerWorld; -import org.spongepowered.math.vector.Vector3d; -import org.spongepowered.math.vector.Vector3i; - -import java.util.Objects; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * Adapts between Sponge and WorldEdit equivalent objects. - */ -public class SpongeAdapter { - - public static org.spongepowered.api.block.BlockState adapt(BlockState blockState) { - int blockStateId = BlockStateIdAccess.getBlockStateId(blockState); - if (!BlockStateIdAccess.isValidInternalId(blockStateId)) { - return SpongeTransmogrifier.transmogToMinecraft(blockState); - } - return (org.spongepowered.api.block.BlockState) Block.stateById(blockStateId); - } - - public static BlockState adapt(org.spongepowered.api.block.BlockState blockState) { - int blockStateId = Block.getId((net.minecraft.world.level.block.state.BlockState) blockState); - BlockState worldEdit = BlockStateIdAccess.getBlockStateById(blockStateId); - if (worldEdit == null) { - return SpongeTransmogrifier.transmogToWorldEdit(blockState); - } - return worldEdit; - } - - /** - * Create a WorldEdit world from a Sponge world. - * - * @param world the Sponge world - * @return a WorldEdit world - */ - public static World adapt(ServerWorld world) { - checkNotNull(world); - return new SpongeWorld(world); - } - - /** - * Create a WorldEdit Player from a Sponge Player. - * - * @param player The Sponge player - * @return The WorldEdit player - */ - public static SpongePlayer adapt(ServerPlayer player) { - Objects.requireNonNull(player); - return new SpongePlayer(player); - } - - /** - * Create a Sponge Player from a WorldEdit Player. - * - * @param player The WorldEdit player - * @return The Bukkit player - */ - public static Player adapt(com.sk89q.worldedit.entity.Player player) { - return ((SpongePlayer) player).getPlayer(); - } - - /** - * Create a Sponge world from a WorldEdit world. - * - * @param world the WorldEdit world - * @return a Sponge world - */ - public static ServerWorld adapt(World world) { - checkNotNull(world); - if (world instanceof SpongeWorld) { - return ((SpongeWorld) world).getWorld(); - } else { - // Currently this is 99% certain to fail, we don't have consistent world name/id mapping - ServerWorld match = Sponge.server().worldManager().world( - ResourceKey.resolve(world.getName()) - ).orElse(null); - if (match != null) { - return match; - } else { - throw new IllegalArgumentException("Can't find a Sponge world for " + world); - } - } - } - - public static RegistryReference adapt(BiomeType biomeType) { - return RegistryKey.of(RegistryTypes.BIOME, ResourceKey.resolve(biomeType.id())) - .asReference(); - } - - public static BiomeType adapt(Biome biomeType) { - return BiomeType.REGISTRY.get(biomeType.toString()); - } - - /** - * Create a WorldEdit location from a Sponge location. - * - * @param location the Sponge location - * @return a WorldEdit location - */ - public static Location adapt(ServerLocation location, Vector3d rotation) { - checkNotNull(location); - Vector3 position = asVector(location); - return new Location( - adapt(location.world()), - position, - (float) rotation.y(), - (float) rotation.x() - ); - } - - /** - * Create a Sponge location from a WorldEdit location. - * - * @param location the WorldEdit location - * @return a Sponge location - */ - public static ServerLocation adapt(Location location) { - checkNotNull(location); - Vector3 position = location.toVector(); - return ServerLocation.of( - adapt((World) location.getExtent()), - position.x(), position.y(), position.z() - ); - } - - /** - * Create a Sponge rotation from a WorldEdit location. - * - * @param location the WorldEdit location - * @return a Sponge rotation - */ - public static Vector3d adaptRotation(Location location) { - checkNotNull(location); - return new Vector3d(location.getPitch(), location.getYaw(), 0); - } - - /** - * Create a WorldEdit Vector from a Sponge location. - * - * @param location The Sponge location - * @return a WorldEdit vector - */ - public static Vector3 asVector(ServerLocation location) { - checkNotNull(location); - return Vector3.at(location.x(), location.y(), location.z()); - } - - /** - * Create a WorldEdit BlockVector from a Sponge location. - * - * @param location The Sponge location - * @return a WorldEdit vector - */ - public static BlockVector3 asBlockVector(ServerLocation location) { - checkNotNull(location); - return BlockVector3.at(location.x(), location.y(), location.z()); - } - - public static BaseItemStack adapt(ItemStack itemStack) { - DataView tag = itemStack.toContainer().getView(Constants.Sponge.UNSAFE_NBT) - .orElse(null); - return new BaseItemStack( - ItemTypes.get(itemStack.type().key(RegistryTypes.ITEM_TYPE).asString()), - tag == null ? null : LazyReference.from(() -> NbtAdapter.adaptToWorldEdit(tag)), - itemStack.quantity() - ); - } - - public static ItemStack adapt(BaseItemStack itemStack) { - ItemStack stack = ItemStack.builder() - .itemType(() -> Sponge.game().registry(RegistryTypes.ITEM_TYPE) - .value(ResourceKey.resolve(itemStack.getType().id()))) - .quantity(itemStack.getAmount()) - .build(); - LinCompoundTag nbt = itemStack.getNbt(); - if (nbt != null) { - stack.setRawData( - DataContainer.createNew(DataView.SafetyMode.NO_DATA_CLONED) - .set(Constants.Sponge.UNSAFE_NBT, NbtAdapter.adaptFromWorldEdit(nbt)) - ); - } - return stack; - } - - public static Direction adapt(org.spongepowered.api.util.Direction direction) { - return Direction.valueOf(direction.name()); - } - - public static Vector3i adaptVector3i(BlockVector3 bv3) { - return new Vector3i(bv3.x(), bv3.y(), bv3.z()); - } - - public static BlockVector3 adaptVector3i(Vector3i vec3i) { - return BlockVector3.at(vec3i.x(), vec3i.y(), vec3i.z()); - } - - private SpongeAdapter() { - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java deleted file mode 100644 index 66e1b9c427..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBiomeRegistry.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; -import com.sk89q.worldedit.util.translation.TranslationManager; -import com.sk89q.worldedit.world.biome.BiomeData; -import com.sk89q.worldedit.world.registry.BiomeRegistry; -import org.spongepowered.api.registry.RegistryReference; -import org.spongepowered.api.world.biome.Biome; - -import javax.annotation.Nullable; - -/** - * Provides access to biome data in Sponge. - */ -class SpongeBiomeRegistry implements BiomeRegistry { - - @Override - public Component getRichName(com.sk89q.worldedit.world.biome.BiomeType biomeType) { - return TranslatableComponent.of( - TranslationManager.makeTranslationKey("biome", biomeType.id()) - ); - } - - @Deprecated - @Nullable - @Override - public BiomeData getData(com.sk89q.worldedit.world.biome.BiomeType biome) { - return new SpongeBiomeData(SpongeAdapter.adapt(biome)); - } - - @Deprecated - private static class SpongeBiomeData implements BiomeData { - private final RegistryReference biome; - - /** - * Create a new instance. - * - * @param biome the base biome - */ - private SpongeBiomeData(RegistryReference biome) { - this.biome = biome; - } - - @SuppressWarnings("deprecation") - @Override - public String getName() { - return biome.location().asString(); - } - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java deleted file mode 100644 index 17b5236d88..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCategoryRegistry.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.world.block.BlockType; -import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.registry.Registry; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.tag.Tag; - -import java.util.Set; -import java.util.stream.Collectors; - -public class SpongeBlockCategoryRegistry implements BlockCategoryRegistry { - @Override - public Set getCategorisedByName(String category) { - Registry blockTypeRegistry = - Sponge.game().registry(RegistryTypes.BLOCK_TYPE); - - return blockTypeRegistry.taggedValues(Tag.of(RegistryTypes.BLOCK_TYPE, ResourceKey.resolve(category))) - .stream() - .map(blockType -> BlockType.REGISTRY.get(blockTypeRegistry.valueKey(blockType).formatted())) - .collect(Collectors.toSet()); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCommandSender.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCommandSender.java deleted file mode 100644 index 45d00da699..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockCommandSender.java +++ /dev/null @@ -1,183 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.extension.platform.AbstractCommandBlockActor; -import com.sk89q.worldedit.session.SessionKey; -import com.sk89q.worldedit.util.auth.AuthorizationException; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.TextComponent; -import com.sk89q.worldedit.util.formatting.text.format.TextColor; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.BlockState; -import org.spongepowered.api.block.BlockType; -import org.spongepowered.api.block.BlockTypes; -import org.spongepowered.api.block.entity.CommandBlock; -import org.spongepowered.api.data.Keys; -import org.spongepowered.api.scheduler.Task; -import org.spongepowered.api.util.Ticks; -import org.spongepowered.math.vector.Vector3d; - -import java.nio.charset.StandardCharsets; -import java.util.Locale; -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkNotNull; - -public class SpongeBlockCommandSender extends AbstractCommandBlockActor { - private final SpongeWorldEdit worldEdit; - private final CommandBlock sender; - private final UUID uuid; - - public SpongeBlockCommandSender(SpongeWorldEdit worldEdit, CommandBlock sender) { - super(SpongeAdapter.adapt(checkNotNull(sender).serverLocation(), Vector3d.ZERO)); - checkNotNull(worldEdit); - - this.worldEdit = worldEdit; - this.sender = sender; - this.uuid = UUID.nameUUIDFromBytes((UUID_PREFIX + sender.name()).getBytes(StandardCharsets.UTF_8)); - } - - @Override - public String getName() { - return sender.name(); - } - - @Override - @Deprecated - public void printRaw(String msg) { - for (String part : msg.split("\n")) { - sendMessage(net.kyori.adventure.text.Component.text(part)); - } - } - - @Override - @Deprecated - public void print(String msg) { - for (String part : msg.split("\n")) { - print(TextComponent.of(part, TextColor.LIGHT_PURPLE)); - } - } - - @Override - @Deprecated - public void printDebug(String msg) { - for (String part : msg.split("\n")) { - print(TextComponent.of(part, TextColor.GRAY)); - } - } - - @Override - @Deprecated - public void printError(String msg) { - for (String part : msg.split("\n")) { - print(TextComponent.of(part, TextColor.RED)); - } - } - - @Override - public void print(Component component) { - sendMessage(SpongeTextAdapter.convert(component, getLocale())); - } - - private void sendMessage(net.kyori.adventure.text.Component textComponent) { - this.sender.offer(Keys.LAST_COMMAND_OUTPUT, textComponent); - } - - @Override - public Locale getLocale() { - return WorldEdit.getInstance().getConfiguration().defaultLocale; - } - - @Override - public UUID getUniqueId() { - return uuid; - } - - @Override - public String[] getGroups() { - return new String[0]; - } - - @Override - public void checkPermission(String permission) throws AuthorizationException { - if (!hasPermission(permission)) { - throw new AuthorizationException(); - } - } - - @Override - public boolean hasPermission(String permission) { - return sender.hasPermission(permission); - } - - public CommandBlock getSender() { - return this.sender; - } - - @Override - public SessionKey getSessionKey() { - return new SessionKey() { - - private volatile boolean active = true; - - private void updateActive() { - BlockState block = sender.block(); - if (!sender.serverLocation().world().isChunkLoadedAtBlock(sender.blockPosition(), false)) { - active = false; - return; - } - BlockType type = block.type(); - active = type == BlockTypes.COMMAND_BLOCK.get() - || type == BlockTypes.CHAIN_COMMAND_BLOCK.get() - || type == BlockTypes.REPEATING_COMMAND_BLOCK.get(); - } - - @Override - public String getName() { - return sender.name(); - } - - @Override - public boolean isActive() { - if (Sponge.server().onMainThread()) { - // we can update eagerly - updateActive(); - } else { - // we should update it eventually - Task task = Task.builder().delay(Ticks.zero()).plugin(worldEdit.getPluginContainer()).execute(this::updateActive).build(); - Sponge.server().scheduler().submit(task); - } - return active; - } - - @Override - public boolean isPersistent() { - return true; - } - - @Override - public UUID getUniqueId() { - return uuid; - } - }; - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java deleted file mode 100644 index 861b9d633b..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockMaterial.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.world.registry.BlockMaterial; -import com.sk89q.worldedit.world.registry.PassthroughBlockMaterial; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.PushReaction; - -import javax.annotation.Nullable; - -/** - * Sponge block material that pulls as much info as possible from the Minecraft - * Material, and passes the rest to another implementation, typically the - * bundled block info. - */ -public class SpongeBlockMaterial extends PassthroughBlockMaterial { - - private final BlockState block; - - public SpongeBlockMaterial(BlockState block, @Nullable BlockMaterial secondary) { - super(secondary); - this.block = block; - } - - @Override - public boolean isAir() { - return block.isAir() || super.isAir(); - } - - @Override - public boolean isOpaque() { - return block.canOcclude(); - } - - @Override - @SuppressWarnings("deprecation") - public boolean isLiquid() { - return block.liquid(); - } - - @Override - @SuppressWarnings("deprecation") - public boolean isSolid() { - return block.isSolid(); - } - - @Override - public boolean isFragileWhenPushed() { - return block.getPistonPushReaction() == PushReaction.DESTROY; - } - - @Override - public boolean isUnpushable() { - return block.getPistonPushReaction() == PushReaction.BLOCK; - } - - @Override - @SuppressWarnings("deprecation") - public boolean isMovementBlocker() { - return block.blocksMotion(); - } - - @Override - public boolean isBurnable() { - return block.ignitedByLava(); - } - - @Override - public boolean isToolRequired() { - return block.requiresCorrectToolForDrops(); - } - - @Override - public boolean isReplacedDuringPlacement() { - return block.canBeReplaced(); - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java deleted file mode 100644 index f692e9c278..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeBlockRegistry.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.registry.state.Property; -import com.sk89q.worldedit.sponge.internal.SpongeTransmogrifier; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.world.block.BlockState; -import com.sk89q.worldedit.world.block.BlockType; -import com.sk89q.worldedit.world.registry.BlockMaterial; -import com.sk89q.worldedit.world.registry.BundledBlockRegistry; -import net.minecraft.world.level.block.Block; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.state.StateProperty; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import java.util.OptionalInt; -import java.util.TreeMap; - -public class SpongeBlockRegistry extends BundledBlockRegistry { - - private final Map materialMap = - new HashMap<>(); - - @Override - public Component getRichName(BlockType blockType) { - return SpongeTextAdapter.convert(Sponge.game().registry(RegistryTypes.BLOCK_TYPE) - .value(ResourceKey.resolve(blockType.id())).asComponent()); - } - - @Override - public BlockMaterial getMaterial(BlockType blockType) { - org.spongepowered.api.block.BlockType spongeBlockType = - Sponge.game().registry(RegistryTypes.BLOCK_TYPE) - .value(ResourceKey.resolve(blockType.id())); - return materialMap.computeIfAbsent( - spongeBlockType.defaultState(), - m -> { - net.minecraft.world.level.block.state.BlockState blockState = - (net.minecraft.world.level.block.state.BlockState) m; - return new SpongeBlockMaterial( - blockState, - super.getMaterial(blockType) - ); - } - ); - } - - @Override - public Map> getProperties(BlockType blockType) { - org.spongepowered.api.block.BlockType spongeBlockType = - Sponge.game().registry(RegistryTypes.BLOCK_TYPE) - .value(ResourceKey.resolve(blockType.id())); - Map> map = new TreeMap<>(); - Collection> propertyKeys = spongeBlockType - .defaultState().stateProperties(); - for (StateProperty key : propertyKeys) { - map.put(key.name(), SpongeTransmogrifier.transmogToWorldEditProperty(key)); - } - return map; - } - - @Override - public OptionalInt getInternalBlockStateId(BlockState state) { - org.spongepowered.api.block.BlockState equivalent = SpongeAdapter.adapt(state); - return OptionalInt.of(Block.getId( - (net.minecraft.world.level.block.state.BlockState) equivalent - )); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java deleted file mode 100644 index a75ee8fc6c..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeCommandSender.java +++ /dev/null @@ -1,172 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.extension.platform.Actor; -import com.sk89q.worldedit.internal.cui.CUIEvent; -import com.sk89q.worldedit.session.SessionKey; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.TextComponent; -import com.sk89q.worldedit.util.formatting.text.format.TextColor; -import net.kyori.adventure.audience.Audience; -import org.spongepowered.api.entity.living.player.Player; - -import java.io.File; -import java.util.Locale; -import java.util.UUID; - -import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; - -public class SpongeCommandSender implements Actor { - - /** - * One time generated ID. - */ - private static final UUID DEFAULT_ID = UUID.fromString("a233eb4b-4cab-42cd-9fd9-7e7b9a3f74be"); - - private final Audience sender; - - public SpongeCommandSender(Audience sender) { - checkNotNull(sender); - checkArgument( - !(sender instanceof Player), - "Players should be wrapped using the specialized class" - ); - - this.sender = sender; - } - - @Override - public UUID getUniqueId() { - return DEFAULT_ID; - } - - @Override - public String getName() { - return "Console"; - } - - @Override - @Deprecated - public void printRaw(String msg) { - for (String part : msg.split("\n")) { - sender.sendMessage(net.kyori.adventure.text.Component.text(part)); - } - } - - @Override - @Deprecated - public void print(String msg) { - for (String part : msg.split("\n")) { - print(TextComponent.of(part, TextColor.LIGHT_PURPLE)); - } - } - - @Override - @Deprecated - public void printDebug(String msg) { - for (String part : msg.split("\n")) { - print(TextComponent.of(part, TextColor.GRAY)); - } - } - - @Override - @Deprecated - public void printError(String msg) { - for (String part : msg.split("\n")) { - print(TextComponent.of(part, TextColor.RED)); - } - } - - @Override - public void print(Component component) { - sender.sendMessage(SpongeTextAdapter.convert(component, getLocale())); - } - - @Override - public boolean canDestroyBedrock() { - return true; - } - - @Override - public String[] getGroups() { - return new String[0]; - } - - @Override - public boolean hasPermission(String perm) { - return true; - } - - @Override - public void checkPermission(String permission) { - } - - @Override - public boolean isPlayer() { - return false; - } - - @Override - public File openFileOpenDialog(String[] extensions) { - return null; - } - - @Override - public File openFileSaveDialog(String[] extensions) { - return null; - } - - @Override - public void dispatchCUIEvent(CUIEvent event) { - } - - @Override - public Locale getLocale() { - return WorldEdit.getInstance().getConfiguration().defaultLocale; - } - - @Override - public SessionKey getSessionKey() { - return new SessionKey() { - @Override - public String getName() { - return "Console"; - } - - @Override - public boolean isActive() { - return true; - } - - @Override - public boolean isPersistent() { - return true; - } - - @Override - public UUID getUniqueId() { - return DEFAULT_ID; - } - }; - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java deleted file mode 100644 index e8ad6b39d1..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntity.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.entity.Entity; -import com.sk89q.worldedit.entity.metadata.EntityProperties; -import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.sponge.internal.NbtAdapter; -import com.sk89q.worldedit.util.Location; -import com.sk89q.worldedit.util.concurrency.LazyReference; -import com.sk89q.worldedit.world.NullWorld; -import com.sk89q.worldedit.world.entity.EntityType; -import org.spongepowered.api.data.persistence.DataView; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.world.server.ServerLocation; -import org.spongepowered.math.vector.Vector3d; - -import java.lang.ref.WeakReference; -import javax.annotation.Nullable; - -import static com.google.common.base.Preconditions.checkNotNull; - -class SpongeEntity implements Entity { - - private final WeakReference entityRef; - - SpongeEntity(org.spongepowered.api.entity.Entity entity) { - checkNotNull(entity); - this.entityRef = new WeakReference<>(entity); - } - - @Override - public BaseEntity getState() { - org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity == null || entity.vehicle().isPresent()) { - return null; - } - EntityType entityType = EntityType.REGISTRY.get(entity.type().key(RegistryTypes.ENTITY_TYPE).asString()); - if (entityType == null) { - return null; - } - DataView dataView = entity.toContainer().getView(Constants.Sponge.UNSAFE_NBT) - .orElse(null); - return new BaseEntity( - entityType, - dataView == null ? null : LazyReference.from(() -> NbtAdapter.adaptToWorldEdit(dataView)) - ); - } - - @Override - public Location getLocation() { - org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity != null) { - ServerLocation entityLoc = entity.serverLocation(); - Vector3d entityRot = entity.rotation(); - - return SpongeAdapter.adapt(entityLoc, entityRot); - } else { - return new Location(NullWorld.getInstance()); - } - } - - @Override - public boolean setLocation(Location location) { - org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity != null) { - return entity.setLocation(SpongeAdapter.adapt(location)); - } else { - return false; - } - } - - @Override - public Extent getExtent() { - org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity != null) { - return SpongeAdapter.adapt(entity.serverLocation().world()); - } else { - return NullWorld.getInstance(); - } - } - - @Override - public boolean remove() { - org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity != null) { - entity.remove(); - } - return true; - } - - @SuppressWarnings("unchecked") - @Nullable - @Override - public T getFacet(Class cls) { - org.spongepowered.api.entity.Entity entity = entityRef.get(); - if (entity != null) { - if (EntityProperties.class.isAssignableFrom(cls)) { - return (T) new SpongeEntityProperties(entity); - } else { - return null; - } - } else { - return null; - } - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java deleted file mode 100644 index f7b0269a7f..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeEntityProperties.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.entity.metadata.EntityProperties; -import org.spongepowered.api.data.Keys; -import org.spongepowered.api.entity.Entity; -import org.spongepowered.api.entity.ExperienceOrb; -import org.spongepowered.api.entity.FallingBlock; -import org.spongepowered.api.entity.Item; -import org.spongepowered.api.entity.explosive.fused.PrimedTNT; -import org.spongepowered.api.entity.hanging.ItemFrame; -import org.spongepowered.api.entity.hanging.Painting; -import org.spongepowered.api.entity.living.Ambient; -import org.spongepowered.api.entity.living.ArmorStand; -import org.spongepowered.api.entity.living.ComplexLivingPart; -import org.spongepowered.api.entity.living.Humanoid; -import org.spongepowered.api.entity.living.Living; -import org.spongepowered.api.entity.living.animal.Animal; -import org.spongepowered.api.entity.living.aquatic.Aquatic; -import org.spongepowered.api.entity.living.golem.Golem; -import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.entity.living.trader.Trader; -import org.spongepowered.api.entity.projectile.Projectile; -import org.spongepowered.api.entity.vehicle.Boat; -import org.spongepowered.api.entity.vehicle.minecart.Minecart; - -import static com.google.common.base.Preconditions.checkNotNull; - -public class SpongeEntityProperties implements EntityProperties { - - private final Entity entity; - - public SpongeEntityProperties(Entity entity) { - checkNotNull(entity); - this.entity = entity; - } - - @Override - public boolean isPlayerDerived() { - return entity instanceof Humanoid; - } - - @Override - public boolean isProjectile() { - return entity instanceof Projectile; - } - - @Override - public boolean isItem() { - return entity instanceof Item; - } - - @Override - public boolean isFallingBlock() { - return entity instanceof FallingBlock; - } - - @Override - public boolean isPainting() { - return entity instanceof Painting; - } - - @Override - public boolean isItemFrame() { - return entity instanceof ItemFrame; - } - - @Override - public boolean isBoat() { - return entity instanceof Boat; - } - - @Override - public boolean isMinecart() { - return entity instanceof Minecart; - } - - @Override - public boolean isTNT() { - return entity instanceof PrimedTNT; - } - - @Override - public boolean isExperienceOrb() { - return entity instanceof ExperienceOrb; - } - - @Override - public boolean isLiving() { - return entity instanceof Living; - } - - @Override - public boolean isAnimal() { - return entity instanceof Animal; - } - - @Override - public boolean isAmbient() { - return entity instanceof Ambient; - } - - @Override - public boolean isNPC() { - return entity instanceof Trader; - } - - @Override - public boolean isGolem() { - return entity instanceof Golem; - } - - @Override - public boolean isTamed() { - return entity.get(Keys.IS_TAMED).orElse(false); - } - - @Override - public boolean isTagged() { - return entity.get(Keys.CUSTOM_NAME).isPresent(); - } - - @Override - public boolean isArmorStand() { - return entity instanceof ArmorStand; - } - - @Override - public boolean isPasteable() { - return !(entity instanceof Player || entity instanceof ComplexLivingPart); - } - - @Override - public boolean isWaterCreature() { - return entity instanceof Aquatic; - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java deleted file mode 100644 index 39bc266ac7..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemCategoryRegistry.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.world.item.ItemType; -import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.BlockType; -import org.spongepowered.api.registry.Registry; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.tag.Tag; - -import java.util.Collections; -import java.util.Set; -import java.util.stream.Collectors; - -public class SpongeItemCategoryRegistry implements ItemCategoryRegistry { - @Override - public Set getCategorisedByName(String category) { - Registry itemTypeRegistry = - Sponge.game().registry(RegistryTypes.ITEM_TYPE); - - return itemTypeRegistry.taggedValues(Tag.of(RegistryTypes.ITEM_TYPE, ResourceKey.resolve(category))) - .stream() - .map(itemType -> ItemType.REGISTRY.get(itemTypeRegistry.valueKey(itemType).formatted())) - .collect(Collectors.toSet()); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java deleted file mode 100644 index 23936cbb2e..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeItemRegistry.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.blocks.BaseItemStack; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.TranslatableComponent; -import com.sk89q.worldedit.world.item.ItemType; -import com.sk89q.worldedit.world.registry.BundledItemRegistry; -import net.minecraft.world.item.ItemStack; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.registry.RegistryTypes; - -public class SpongeItemRegistry extends BundledItemRegistry { - - @Override - public Component getRichName(ItemType itemType) { - return SpongeTextAdapter.convert(Sponge.game().registry(RegistryTypes.ITEM_TYPE) - .value(ResourceKey.resolve(itemType.id())).asComponent()); - } - - @Override - public Component getRichName(BaseItemStack itemStack) { - return TranslatableComponent.of( - ((ItemStack) (Object) SpongeAdapter.adapt(itemStack)).getDescriptionId() - ); - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java deleted file mode 100644 index da99c0eca6..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePermissionsProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import org.spongepowered.api.Sponge; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; -import org.spongepowered.api.service.permission.PermissionDescription; -import org.spongepowered.api.service.permission.PermissionService; -import org.spongepowered.api.service.permission.SubjectReference; - -public class SpongePermissionsProvider { - - public boolean hasPermission(ServerPlayer player, String permission) { - return player.hasPermission(permission); - } - - public void registerPermission(String permission) { - Sponge.game().serviceProvider().registration(PermissionService.class).ifPresent((permissionService -> { - PermissionDescription.Builder permissionBuilder = permissionService.service() - .newDescriptionBuilder(SpongeWorldEdit.inst().getPluginContainer()); - permissionBuilder.id(permission).register(); - })); - } - - public String[] getGroups(ServerPlayer player) { - return player.parents().stream() - .map(SubjectReference::subjectIdentifier) - .toArray(String[]::new); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java deleted file mode 100644 index 011f932b1d..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlatform.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.google.common.collect.ImmutableSet; -import com.sk89q.worldedit.entity.Player; -import com.sk89q.worldedit.extension.platform.AbstractPlatform; -import com.sk89q.worldedit.extension.platform.Actor; -import com.sk89q.worldedit.extension.platform.Capability; -import com.sk89q.worldedit.extension.platform.MultiUserPlatform; -import com.sk89q.worldedit.extension.platform.Preference; -import com.sk89q.worldedit.sponge.config.SpongeConfiguration; -import com.sk89q.worldedit.util.SideEffect; -import com.sk89q.worldedit.world.World; -import com.sk89q.worldedit.world.registry.Registries; -import org.enginehub.piston.CommandManager; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.scheduler.Task; -import org.spongepowered.api.util.Ticks; -import org.spongepowered.api.world.server.ServerWorld; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.EnumMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import javax.annotation.Nullable; - -import static java.util.stream.Collectors.toList; - -class SpongePlatform extends AbstractPlatform implements MultiUserPlatform { - - private final SpongeWorldEdit mod; - private boolean hookingEvents = false; - private int nextTaskId = 0; - - SpongePlatform(SpongeWorldEdit mod) { - this.mod = mod; - } - - boolean isHookingEvents() { - return hookingEvents; - } - - @Override - public Registries getRegistries() { - return SpongeRegistries.getInstance(); - } - - @Override - public int getDataVersion() { - return Sponge.platform().minecraftVersion().dataVersion().orElse(-1); - } - - @Override - public boolean isValidMobType(String type) { - return Sponge.game().registry(RegistryTypes.ENTITY_TYPE) - .findValue(ResourceKey.resolve(type)).isPresent(); - } - - @Override - public void reload() { - getConfiguration().load(); - super.reload(); - } - - @Override - public int schedule(long delay, long period, Runnable task) { - Sponge.server().scheduler().submit(Task.builder() - .delay(Ticks.of(delay)) - .interval(Ticks.of(period)) - .execute(task) - .plugin(SpongeWorldEdit.inst().getPluginContainer()) - .build()); - return nextTaskId++; - } - - @Override - public List getWorlds() { - Collection worlds = Sponge.server().worldManager().worlds(); - List ret = new ArrayList<>(worlds.size()); - for (ServerWorld world : worlds) { - ret.add(SpongeAdapter.adapt(world)); - } - return ret; - } - - @Nullable - @Override - public Player matchPlayer(Player player) { - if (player instanceof SpongePlayer) { - return player; - } else { - Optional optPlayer = Sponge.server().player(player.getUniqueId()); - return optPlayer.map(SpongePlayer::new).orElse(null); - } - } - - @Nullable - @Override - public World matchWorld(World world) { - if (world instanceof SpongeWorld) { - return world; - } else { - // TODO this needs fixing for world name shenanigans - for (ServerWorld spongeWorld : Sponge.server().worldManager().worlds()) { - if (spongeWorld.key().toString().equals(world.getName())) { - return SpongeAdapter.adapt(spongeWorld); - } - } - - return null; - } - } - - @Override - public void registerCommands(CommandManager manager) { - } - - @Override - public void setGameHooksEnabled(boolean enabled) { - this.hookingEvents = enabled; - } - - @Override - public SpongeConfiguration getConfiguration() { - return mod.getConfig(); - } - - @Override - public String getVersion() { - return mod.getInternalVersion(); - } - - @Override - public String getPlatformName() { - return "Sponge-Official"; - } - - @Override - public String getPlatformVersion() { - return mod.getInternalVersion(); - } - - @Override - public String id() { - return "enginehub:sponge"; - } - - @Override - public Map getCapabilities() { - Map capabilities = new EnumMap<>(Capability.class); - capabilities.put(Capability.CONFIGURATION, Preference.NORMAL); - capabilities.put(Capability.WORLDEDIT_CUI, Preference.NORMAL); - capabilities.put(Capability.GAME_HOOKS, Preference.NORMAL); - capabilities.put(Capability.PERMISSIONS, Preference.NORMAL); - capabilities.put(Capability.USER_COMMANDS, Preference.NORMAL); - capabilities.put(Capability.WORLD_EDITING, Preference.PREFERRED); - return capabilities; - } - - @Override - public Set getSupportedSideEffects() { - return ImmutableSet.of( - SideEffect.UPDATE, SideEffect.ENTITY_AI, SideEffect.LIGHTING, SideEffect.NEIGHBORS - ); - } - - @Override - public long getTickCount() { - return Sponge.server().runningTimeTicks().ticks(); - } - - @Override - public Collection getConnectedUsers() { - return Sponge.server().onlinePlayers().stream().map(SpongePlayer::new).collect(toList()); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java deleted file mode 100644 index a495924a53..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongePlayer.java +++ /dev/null @@ -1,308 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.util.StringUtil; -import com.sk89q.worldedit.blocks.BaseItemStack; -import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.extension.platform.AbstractPlayerActor; -import com.sk89q.worldedit.extent.inventory.BlockBag; -import com.sk89q.worldedit.internal.cui.CUIEvent; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.math.Vector3; -import com.sk89q.worldedit.session.SessionKey; -import com.sk89q.worldedit.sponge.internal.NbtAdapter; -import com.sk89q.worldedit.util.HandSide; -import com.sk89q.worldedit.util.Location; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.world.block.BaseBlock; -import com.sk89q.worldedit.world.block.BlockStateHolder; -import com.sk89q.worldedit.world.gamemode.GameMode; -import com.sk89q.worldedit.world.gamemode.GameModes; -import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.format.TextColor; -import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; -import net.minecraft.core.BlockPos; -import net.minecraft.network.protocol.game.ClientboundBlockEntityDataPacket; -import net.minecraft.world.level.block.entity.StructureBlockEntity; -import org.enginehub.linbus.tree.LinCompoundTag; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.BlockState; -import org.spongepowered.api.data.Keys; -import org.spongepowered.api.data.type.HandTypes; -import org.spongepowered.api.entity.living.player.Player; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; -import org.spongepowered.api.item.inventory.ItemStack; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.world.server.ServerLocation; -import org.spongepowered.math.vector.Vector3d; - -import java.nio.charset.StandardCharsets; -import java.util.Locale; -import java.util.UUID; -import javax.annotation.Nullable; - -public class SpongePlayer extends AbstractPlayerActor { - private static final int STRUCTURE_BLOCK_PACKET_ID = 7; - - private final ServerPlayer player; - - protected SpongePlayer(ServerPlayer player) { - this.player = player; - ThreadSafeCache.getInstance().getOnlineIds().add(getUniqueId()); - } - - @Override - public UUID getUniqueId() { - return player.uniqueId(); - } - - @Override - public BaseItemStack getItemInHand(HandSide handSide) { - ItemStack is = this.player.itemInHand( - handSide == HandSide.MAIN_HAND ? HandTypes.MAIN_HAND : HandTypes.OFF_HAND - ); - return SpongeAdapter.adapt(is); - } - - @Override - public String getName() { - return this.player.name(); - } - - @Override - public String getDisplayName() { - return LegacyComponentSerializer.legacySection().serialize(player.displayName().get()); - } - - @Override - public BaseEntity getState() { - throw new UnsupportedOperationException("Cannot create a state from this object"); - } - - @Override - public Location getLocation() { - ServerLocation entityLoc = this.player.serverLocation(); - Vector3d entityRot = this.player.rotation(); - - return SpongeAdapter.adapt(entityLoc, entityRot); - } - - @Override - public boolean setLocation(Location location) { - return player.setLocation(SpongeAdapter.adapt(location)); - } - - @Override - public com.sk89q.worldedit.world.World getWorld() { - return SpongeAdapter.adapt(player.serverLocation().world()); - } - - @Override - public void giveItem(BaseItemStack itemStack) { - this.player.inventory().offer(SpongeAdapter.adapt(itemStack)); - } - - @Override - public void dispatchCUIEvent(CUIEvent event) { - String[] params = event.getParameters(); - String send = event.getTypeId(); - if (params.length > 0) { - send = send + "|" + StringUtil.joinString(params, "|"); - } - - String finalData = send; - CUIChannelHandler.channel().play().sendTo( - player, - buffer -> buffer.writeBytes(finalData.getBytes(StandardCharsets.UTF_8)) - ); - } - - @Override - @Deprecated - public void printRaw(String msg) { - for (String part : msg.split("\n")) { - this.player.sendMessage(LegacyComponentSerializer.legacySection().deserialize(part)); - } - } - - @Override - @Deprecated - public void printDebug(String msg) { - sendColorized(msg, NamedTextColor.GRAY); - } - - @Override - @Deprecated - public void print(String msg) { - sendColorized(msg, NamedTextColor.LIGHT_PURPLE); - } - - @Override - @Deprecated - public void printError(String msg) { - sendColorized(msg, NamedTextColor.RED); - } - - @Override - public void print(Component component) { - player.sendMessage(SpongeTextAdapter.convert(component, getLocale())); - } - - private void sendColorized(String msg, TextColor formatting) { - for (String part : msg.split("\n")) { - this.player.sendMessage( - LegacyComponentSerializer.legacySection().deserialize(part).color(formatting) - ); - } - } - - @Override - public boolean trySetPosition(Vector3 pos, float pitch, float yaw) { - ServerLocation loc = ServerLocation.of( - this.player.world(), pos.x(), pos.y(), pos.z() - ); - - return this.player.setLocationAndRotation(loc, new Vector3d(pitch, yaw, 0)); - } - - @Override - public String[] getGroups() { - return SpongeWorldEdit.inst().getPermissionsProvider().getGroups(this.player); - } - - @Override - public BlockBag getInventoryBlockBag() { - return null; - } - - @Override - public boolean hasPermission(String perm) { - return SpongeWorldEdit.inst().getPermissionsProvider().hasPermission(player, perm); - } - - @Nullable - @Override - public T getFacet(Class cls) { - return null; - } - - @Override - public GameMode getGameMode() { - return GameModes.get(player.gameMode().get().key(RegistryTypes.GAME_MODE).asString()); - } - - @Override - public void setGameMode(GameMode gameMode) { - player.gameMode().set( - Sponge.game().registry(RegistryTypes.GAME_MODE).value( - ResourceKey.resolve(gameMode.id()) - ) - ); - } - - @Override - public boolean isAllowedToFly() { - return player.get(Keys.CAN_FLY).orElse(super.isAllowedToFly()); - } - - @Override - public void setFlying(boolean flying) { - player.offer(Keys.IS_FLYING, flying); - } - - @Override - public > void sendFakeBlock(BlockVector3 pos, B block) { - if (block == null) { - player.resetBlockChange(pos.x(), pos.y(), pos.z()); - } else { - BlockState spongeBlock = SpongeAdapter.adapt(block.toImmutableState()); - player.sendBlockChange(pos.x(), pos.y(), pos.z(), spongeBlock); - if (block instanceof final BaseBlock baseBlock - && block.getBlockType().equals(com.sk89q.worldedit.world.block.BlockTypes.STRUCTURE_BLOCK)) { - final LinCompoundTag nbtData = baseBlock.getNbt(); - if (nbtData != null) { - net.minecraft.world.level.block.state.BlockState nativeBlock = - (net.minecraft.world.level.block.state.BlockState) spongeBlock; - net.minecraft.nbt.CompoundTag nativeNbtData = NbtAdapter.adaptNMSToWorldEdit(nbtData); - net.minecraft.server.level.ServerPlayer nativePlayer = - ((net.minecraft.server.level.ServerPlayer) player); - - StructureBlockEntity structureBlockEntity = - new StructureBlockEntity(new BlockPos(pos.x(), pos.y(), pos.z()), nativeBlock); - structureBlockEntity.load(nativeNbtData); - nativePlayer.connection.send( - ClientboundBlockEntityDataPacket.create(structureBlockEntity, it -> nativeNbtData)); - } - } - } - } - - @Override - public Locale getLocale() { - return player.locale(); - } - - @Override - public SessionKey getSessionKey() { - return new SessionKeyImpl(player); - } - - static class SessionKeyImpl implements SessionKey { - // If not static, this will leak a reference - - private final UUID uuid; - private final String name; - - SessionKeyImpl(Player player) { - this.uuid = player.uniqueId(); - this.name = player.name(); - } - - @Override - public UUID getUniqueId() { - return uuid; - } - - @Nullable - @Override - public String getName() { - return name; - } - - @Override - public boolean isActive() { - // We can't directly check if the player is online because - // the list of players is not thread safe - return ThreadSafeCache.getInstance().getOnlineIds().contains(uuid); - } - - @Override - public boolean isPersistent() { - return true; - } - - } - - public Player getPlayer() { - return player; - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java deleted file mode 100644 index 04baa39365..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeRegistries.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.world.registry.BiomeRegistry; -import com.sk89q.worldedit.world.registry.BlockCategoryRegistry; -import com.sk89q.worldedit.world.registry.BlockRegistry; -import com.sk89q.worldedit.world.registry.BundledRegistries; -import com.sk89q.worldedit.world.registry.ItemCategoryRegistry; -import com.sk89q.worldedit.world.registry.ItemRegistry; - -/** - * World data for the Sponge platform. - */ -class SpongeRegistries extends BundledRegistries { - - private static final SpongeRegistries INSTANCE = new SpongeRegistries(); - - public static SpongeRegistries getInstance() { - return INSTANCE; - } - - private final BiomeRegistry biomeRegistry = new SpongeBiomeRegistry(); - private final BlockRegistry blockRegistry = new SpongeBlockRegistry(); - private final BlockCategoryRegistry blockCategoryRegistry = new SpongeBlockCategoryRegistry(); - private final ItemRegistry itemRegistry = new SpongeItemRegistry(); - private final ItemCategoryRegistry itemCategoryRegistry = new SpongeItemCategoryRegistry(); - - @Override - public BiomeRegistry getBiomeRegistry() { - return biomeRegistry; - } - - @Override - public BlockRegistry getBlockRegistry() { - return blockRegistry; - } - - @Override - public BlockCategoryRegistry getBlockCategoryRegistry() { - return blockCategoryRegistry; - } - - @Override - public ItemRegistry getItemRegistry() { - return itemRegistry; - } - - @Override - public ItemCategoryRegistry getItemCategoryRegistry() { - return itemCategoryRegistry; - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java deleted file mode 100644 index 7709737e43..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeTextAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.sk89q.worldedit.util.formatting.WorldEditText; -import com.sk89q.worldedit.util.formatting.text.Component; -import com.sk89q.worldedit.util.formatting.text.serializer.gson.GsonComponentSerializer; - -import java.util.Locale; - -public class SpongeTextAdapter { - - public static net.kyori.adventure.text.Component convert(Component component, Locale locale) { - component = WorldEditText.format(component, locale); - return net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson() - .deserialize(GsonComponentSerializer.INSTANCE.serialize(component)); - } - - public static Component convert(net.kyori.adventure.text.Component component) { - return GsonComponentSerializer.INSTANCE.deserialize( - net.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson() - .serialize(component) - ); - } - - private SpongeTextAdapter() { - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java deleted file mode 100644 index 28258d5fac..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorld.java +++ /dev/null @@ -1,507 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.google.common.collect.Sets; -import com.sk89q.worldedit.EditSession; -import com.sk89q.worldedit.WorldEditException; -import com.sk89q.worldedit.blocks.BaseItemStack; -import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.entity.Entity; -import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.internal.util.LogManagerCompat; -import com.sk89q.worldedit.math.BlockVector3; -import com.sk89q.worldedit.math.Vector3; -import com.sk89q.worldedit.regions.CuboidRegion; -import com.sk89q.worldedit.regions.Region; -import com.sk89q.worldedit.sponge.internal.NbtAdapter; -import com.sk89q.worldedit.sponge.internal.SpongeWorldNativeAccess; -import com.sk89q.worldedit.util.Location; -import com.sk89q.worldedit.util.SideEffect; -import com.sk89q.worldedit.util.SideEffectSet; -import com.sk89q.worldedit.util.TreeGenerator; -import com.sk89q.worldedit.world.AbstractWorld; -import com.sk89q.worldedit.world.RegenOptions; -import com.sk89q.worldedit.world.World; -import com.sk89q.worldedit.world.biome.BiomeType; -import com.sk89q.worldedit.world.block.BaseBlock; -import com.sk89q.worldedit.world.block.BlockState; -import com.sk89q.worldedit.world.block.BlockStateHolder; -import com.sk89q.worldedit.world.item.ItemTypes; -import com.sk89q.worldedit.world.weather.WeatherType; -import com.sk89q.worldedit.world.weather.WeatherTypes; -import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.worldgen.features.EndFeatures; -import net.minecraft.data.worldgen.features.TreeFeatures; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.RandomSource; -import net.minecraft.world.level.LevelReader; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import org.apache.logging.log4j.Logger; -import org.enginehub.linbus.tree.LinCompoundTag; -import org.enginehub.linbus.tree.LinIntTag; -import org.enginehub.linbus.tree.LinStringTag; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Server; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.entity.BlockEntity; -import org.spongepowered.api.block.entity.BlockEntityArchetype; -import org.spongepowered.api.block.entity.BlockEntityType; -import org.spongepowered.api.data.Keys; -import org.spongepowered.api.entity.EntityArchetype; -import org.spongepowered.api.entity.EntityType; -import org.spongepowered.api.entity.EntityTypes; -import org.spongepowered.api.entity.Item; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.util.Ticks; -import org.spongepowered.api.world.BlockChangeFlags; -import org.spongepowered.api.world.LightTypes; -import org.spongepowered.api.world.SerializationBehavior; -import org.spongepowered.api.world.server.ServerLocation; -import org.spongepowered.api.world.server.ServerWorld; -import org.spongepowered.api.world.server.WorldTemplate; -import org.spongepowered.api.world.volume.stream.StreamOptions; -import org.spongepowered.math.vector.Vector3d; -import org.spongepowered.math.vector.Vector3i; - -import java.lang.ref.WeakReference; -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ThreadLocalRandom; -import java.util.stream.Collectors; -import javax.annotation.Nullable; - -import static com.google.common.base.Preconditions.checkNotNull; - -/** - * An adapter to Minecraft worlds for WorldEdit. - */ -public final class SpongeWorld extends AbstractWorld { - - private static final RandomSource random = RandomSource.create(); - private static final Logger LOGGER = LogManagerCompat.getLogger(); - - private final WeakReference worldRef; - private final SpongeWorldNativeAccess worldNativeAccess; - - /** - * Construct a new world. - * - * @param world the world - */ - SpongeWorld(ServerWorld world) { - checkNotNull(world); - this.worldRef = new WeakReference<>(world); - this.worldNativeAccess = new SpongeWorldNativeAccess(new WeakReference<>((ServerLevel) world)); - } - - /** - * Get the underlying handle to the world. - * - * @return the world - * @throws RuntimeException thrown if a reference to the world was lost (i.e. world was - * unloaded) - */ - ServerWorld getWorld() { - ServerWorld world = worldRef.get(); - if (world != null) { - return world; - } else { - throw new RuntimeException("The reference to the world was lost (i.e. the world may have been unloaded)"); - } - } - - // This is sus but leaving it for later world name/id reworks - @Override - public String getName() { - return getWorld().key().asString(); - } - - @Override - public String id() { - return getWorld().key().asString(); - } - - @Override - public Path getStoragePath() { - return getWorld().directory(); - } - - @Override - public BlockState getBlock(BlockVector3 position) { - return SpongeAdapter.adapt(getWorld().block( - position.x(), position.y(), position.z() - )); - } - - @Override - public BaseBlock getFullBlock(BlockVector3 position) { - BlockEntity blockEntity = getWorld().blockEntity( - position.x(), position.y(), position.z() - ).orElse(null); - LinCompoundTag blockEntityData = null; - if (blockEntity != null) { - BlockEntityArchetype blockEntityArchetype = blockEntity.createArchetype(); - BlockEntityType blockEntityType = blockEntityArchetype.blockEntityType(); - ResourceKey blockEntityId = blockEntityType.key(RegistryTypes.BLOCK_ENTITY_TYPE); - blockEntityData = NbtAdapter.adaptToWorldEdit(blockEntityArchetype.blockEntityData()); - - // Add ID and position since Sponge's #blockEntityData does not save metadata - LinCompoundTag.Builder fullBlockEntityDataBuilder = blockEntityData.toBuilder(); - fullBlockEntityDataBuilder.put("id", LinStringTag.of(blockEntityId.formatted())); - fullBlockEntityDataBuilder.put("x", LinIntTag.of(position.x())); - fullBlockEntityDataBuilder.put("y", LinIntTag.of(position.y())); - fullBlockEntityDataBuilder.put("z", LinIntTag.of(position.z())); - blockEntityData = fullBlockEntityDataBuilder.build(); - } - return getBlock(position).toBaseBlock(blockEntityData); - } - - @Override - public > boolean setBlock(BlockVector3 position, B block, SideEffectSet sideEffects) throws WorldEditException { - checkNotNull(position); - checkNotNull(block); - - ServerWorld world = getWorld(); - - org.spongepowered.api.block.BlockState newState = SpongeAdapter.adapt(block.toImmutableState()); - - boolean didSet = world.setBlock( - position.x(), position.y(), position.z(), - newState, - BlockChangeFlags.NONE - .withUpdateNeighbors(sideEffects.shouldApply(SideEffect.NEIGHBORS)) - .withNotifyClients(true) - .withPhysics(sideEffects.shouldApply(SideEffect.UPDATE)) - .withNotifyObservers(sideEffects.shouldApply(SideEffect.UPDATE)) - .withLightingUpdates(sideEffects.shouldApply(SideEffect.LIGHTING)) - .withPathfindingUpdates(sideEffects.shouldApply(SideEffect.ENTITY_AI)) - .withNeighborDropsAllowed(false) - .withBlocksMoving(false) - .withForcedReRender(false) - .withIgnoreRender(false) - ); - if (!didSet) { - // still update NBT if the block is the same - if (world.block(position.x(), position.y(), position.z()) == newState) { - didSet = block.toBaseBlock().getNbt() != null; - } - } - - // Create the TileEntity - if (didSet && block instanceof BaseBlock baseBlock) { - LinCompoundTag nbt = baseBlock.getNbt(); - if (nbt != null) { - BlockEntityArchetype.builder() - .blockEntity( - Sponge.game().registry(RegistryTypes.BLOCK_ENTITY_TYPE) - .value(ResourceKey.resolve(baseBlock.getNbtId())) - ) - .blockEntityData(NbtAdapter.adaptFromWorldEdit(nbt)) - .state(newState) - .build() - .apply(ServerLocation.of(world, position.x(), position.y(), position.z())); - } - } - - return true; - } - - @Override - public Set applySideEffects(BlockVector3 position, com.sk89q.worldedit.world.block.BlockState previousType, SideEffectSet sideEffectSet) throws WorldEditException { - checkNotNull(position); - - worldNativeAccess.applySideEffects(position, previousType, sideEffectSet); - - return Sets.intersection( - SpongeWorldEdit.inst().getInternalPlatform().getSupportedSideEffects(), - sideEffectSet.getSideEffectsToApply() - ); - } - - @Override - public boolean clearContainerBlockContents(BlockVector3 position) { - getWorld().removeBlockEntity(position.x(), position.y(), position.z()); - return true; - } - - @Override - public boolean regenerate(Region region, Extent extent, RegenOptions options) { - Server server = Sponge.server(); - - final String id = "worldedittemp_" + getWorld().key().value(); - - WorldTemplate tempWorldProperties = WorldTemplate.builder().from(getWorld()) - .key(ResourceKey.of("worldedit", id)) - .add(Keys.IS_LOAD_ON_STARTUP, false) - .add(Keys.SERIALIZATION_BEHAVIOR, SerializationBehavior.NONE) - .add(Keys.SEED, options.getSeed().orElse(getWorld().properties().worldGenerationConfig().seed())) - .build(); - - ServerWorld tempWorld; - try { - tempWorld = server.worldManager().loadWorld(tempWorldProperties).get(); - } catch (InterruptedException | ExecutionException e) { - LOGGER.error("Failed to load temp world", e); - return false; - } - - try { - // Pre-gen all the chunks - // We need to also pull one more chunk in every direction - CuboidRegion expandedPreGen = new CuboidRegion(region.getMinimumPoint().subtract(16, 16, 16), region.getMaximumPoint().add(16, 16, 16)); - for (BlockVector3 chunk : expandedPreGen.getChunkCubes()) { - tempWorld.loadChunk(chunk.x(), chunk.y(), chunk.z(), true); - } - - World from = SpongeAdapter.adapt(tempWorld); - for (BlockVector3 vec : region) { - extent.setBlock(vec, from.getFullBlock(vec)); - if (options.shouldRegenBiomes()) { - extent.setBiome(vec, from.getBiome(vec)); - } - } - } catch (WorldEditException e) { - throw new RuntimeException(e); - } finally { - // Remove temp world - server.worldManager().unloadWorld(tempWorldProperties.key()).thenRun(() -> server.worldManager().deleteWorld(tempWorldProperties.key())); - } - - return true; - } - - - @Nullable - private static net.minecraft.resources.ResourceKey> createTreeFeatureGenerator(TreeGenerator.TreeType type) { - return switch (type) { - // Based off of the SaplingGenerator class, as well as uses of DefaultBiomeFeatures fields - case TREE -> TreeFeatures.OAK; - case BIG_TREE -> TreeFeatures.FANCY_OAK; - case REDWOOD -> TreeFeatures.SPRUCE; - case TALL_REDWOOD -> TreeFeatures.MEGA_SPRUCE; - case MEGA_REDWOOD -> TreeFeatures.MEGA_PINE; - case BIRCH -> TreeFeatures.BIRCH; - case JUNGLE -> TreeFeatures.MEGA_JUNGLE_TREE; - case SMALL_JUNGLE -> TreeFeatures.JUNGLE_TREE; - case SHORT_JUNGLE -> TreeFeatures.JUNGLE_TREE_NO_VINE; - case JUNGLE_BUSH -> TreeFeatures.JUNGLE_BUSH; - case SWAMP -> TreeFeatures.SWAMP_OAK; - case ACACIA -> TreeFeatures.ACACIA; - case DARK_OAK -> TreeFeatures.DARK_OAK; - case TALL_BIRCH -> TreeFeatures.SUPER_BIRCH_BEES_0002; - case RED_MUSHROOM -> TreeFeatures.HUGE_RED_MUSHROOM; - case BROWN_MUSHROOM -> TreeFeatures.HUGE_BROWN_MUSHROOM; - case WARPED_FUNGUS -> TreeFeatures.WARPED_FUNGUS; - case CRIMSON_FUNGUS -> TreeFeatures.CRIMSON_FUNGUS; - case CHORUS_PLANT -> EndFeatures.CHORUS_PLANT; - case MANGROVE -> TreeFeatures.MANGROVE; - case TALL_MANGROVE -> TreeFeatures.TALL_MANGROVE; - case CHERRY -> TreeFeatures.CHERRY; - case RANDOM -> - createTreeFeatureGenerator(TreeGenerator.TreeType.values()[ThreadLocalRandom.current().nextInt(TreeGenerator.TreeType.values().length)]); - default -> null; - }; - } - - @Override - public boolean generateTree(TreeGenerator.TreeType type, EditSession editSession, BlockVector3 position) { - ServerLevel world = (ServerLevel) getWorld(); - ConfiguredFeature generator = Optional.ofNullable(createTreeFeatureGenerator(type)) - .map(k -> world.registryAccess().registryOrThrow(Registries.CONFIGURED_FEATURE).get(k)) - .orElse(null); - return generator != null && generator.place( - world, world.getChunkSource().getGenerator(), random, - new BlockPos(position.x(), position.y(), position.z()) - ); - } - - @Override - public int getBlockLightLevel(BlockVector3 position) { - checkNotNull(position); - - int skyLight = getWorld().light(LightTypes.SKY, position.x(), position.y(), position.z()); - int groundLight = getWorld().light(LightTypes.BLOCK, position.x(), position.y(), position.z()); - - return Math.max(skyLight, groundLight); - - } - - @Override - public BiomeType getBiome(BlockVector3 position) { - checkNotNull(position); - return BiomeType.REGISTRY.get( - getWorld().registry(RegistryTypes.BIOME) - .valueKey(getWorld().biome(position.x(), position.y(), position.z())) - .asString() - ); - } - - @Override - public boolean setBiome(BlockVector3 position, BiomeType biome) { - checkNotNull(position); - checkNotNull(biome); - - getWorld().setBiome( - position.x(), position.y(), position.z(), - getWorld().registry(RegistryTypes.BIOME).value( - ResourceKey.resolve(biome.id()) - ) - ); - return true; - } - - @Override - public void dropItem(Vector3 position, BaseItemStack item) { - checkNotNull(position); - checkNotNull(item); - - if (item.getType() == ItemTypes.AIR) { - return; - } - - Item itemEntity = getWorld().createEntity( - EntityTypes.ITEM, - new Vector3d(position.x(), position.y(), position.z()) - ); - - itemEntity.item().set( - SpongeAdapter.adapt(item).createSnapshot() - ); - getWorld().spawnEntity(itemEntity); - } - - @Override - public void simulateBlockMine(BlockVector3 position) { - getWorld().destroyBlock( - new Vector3i(position.x(), position.y(), position.z()), - true - ); - } - - @Override - public boolean canPlaceAt(BlockVector3 position, com.sk89q.worldedit.world.block.BlockState blockState) { - return ((net.minecraft.world.level.block.state.BlockState) SpongeAdapter.adapt(blockState)) - .canSurvive( - ((LevelReader) getWorld()), - new BlockPos(position.x(), position.y(), position.z()) - ); - } - - @Override - public int hashCode() { - return getWorld().hashCode(); - } - - @Override - public boolean equals(Object o) { - if (o == null) { - return false; - } else if ((o instanceof SpongeWorld other)) { - ServerWorld otherWorld = other.worldRef.get(); - ServerWorld thisWorld = worldRef.get(); - return otherWorld != null && otherWorld.equals(thisWorld); - } else { - return o instanceof com.sk89q.worldedit.world.World - && ((com.sk89q.worldedit.world.World) o).getName().equals(getName()); - } - } - - @Override - public List getEntities(Region region) { - return getWorld() - .entityStream( - SpongeAdapter.adaptVector3i(region.getMinimumPoint()), - SpongeAdapter.adaptVector3i(region.getMaximumPoint()), - // We don't need to force load or clone to copy entities - StreamOptions.builder() - .setCarbonCopy(false) - .setLoadingStyle(StreamOptions.LoadingStyle.NONE) - .build() - ) - .toStream() - .map(ve -> new SpongeEntity(ve.type())) - .collect(Collectors.toList()); - } - - @Override - public List getEntities() { - return getWorld().entities().stream() - .map(SpongeEntity::new) - .collect(Collectors.toList()); - } - - @Nullable - @Override - public Entity createEntity(Location location, BaseEntity entity) { - Optional> entityType = Sponge.game().registry(RegistryTypes.ENTITY_TYPE) - .findValue(ResourceKey.resolve(entity.getType().id())); - if (entityType.isEmpty()) { - return null; - } - EntityArchetype.Builder builder = EntityArchetype.builder().type(entityType.get()); - var nativeTag = entity.getNbt(); - if (nativeTag != null) { - builder.entityData(NbtAdapter.adaptFromWorldEdit(nativeTag)); - } - return builder.build().apply(SpongeAdapter.adapt(location)).map(SpongeEntity::new).orElse(null); - } - - @Override - public WeatherType getWeather() { - return WeatherTypes.get( - getWorld().weather().type().key(RegistryTypes.WEATHER_TYPE).asString() - ); - } - - @Override - public long getRemainingWeatherDuration() { - return getWorld().weather().remainingDuration().ticks(); - } - - @Override - public void setWeather(WeatherType weatherType) { - getWorld().setWeather( - Sponge.game().registry(RegistryTypes.WEATHER_TYPE).value( - ResourceKey.resolve(weatherType.id()) - ) - ); - } - - @Override - public void setWeather(WeatherType weatherType, long duration) { - getWorld().setWeather( - Sponge.game().registry(RegistryTypes.WEATHER_TYPE).value( - ResourceKey.resolve(weatherType.id()) - ), - Ticks.of(duration) - ); - } - - @Override - public BlockVector3 getSpawnPosition() { - return SpongeAdapter.adaptVector3i(getWorld().properties().spawnPosition()); - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java deleted file mode 100644 index ed2e8b7a53..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/SpongeWorldEdit.java +++ /dev/null @@ -1,485 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import com.google.common.base.Joiner; -import com.google.inject.Inject; -import com.sk89q.worldedit.WorldEdit; -import com.sk89q.worldedit.command.util.PermissionCondition; -import com.sk89q.worldedit.event.platform.CommandEvent; -import com.sk89q.worldedit.event.platform.CommandSuggestionEvent; -import com.sk89q.worldedit.event.platform.PlatformReadyEvent; -import com.sk89q.worldedit.event.platform.PlatformUnreadyEvent; -import com.sk89q.worldedit.event.platform.PlatformsRegisteredEvent; -import com.sk89q.worldedit.event.platform.SessionIdleEvent; -import com.sk89q.worldedit.extension.platform.Actor; -import com.sk89q.worldedit.extension.platform.Capability; -import com.sk89q.worldedit.extension.platform.Platform; -import com.sk89q.worldedit.extension.platform.PlatformManager; -import com.sk89q.worldedit.internal.anvil.ChunkDeleter; -import com.sk89q.worldedit.internal.command.CommandUtil; -import com.sk89q.worldedit.internal.event.InteractionDebouncer; -import com.sk89q.worldedit.sponge.config.SpongeConfiguration; -import com.sk89q.worldedit.world.biome.BiomeCategory; -import com.sk89q.worldedit.world.biome.BiomeType; -import com.sk89q.worldedit.world.block.BlockCategory; -import com.sk89q.worldedit.world.item.ItemCategory; -import net.kyori.adventure.audience.Audience; -import org.apache.logging.log4j.Logger; -import org.bstats.sponge.Metrics; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Server; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.block.BlockSnapshot; -import org.spongepowered.api.block.BlockType; -import org.spongepowered.api.block.entity.BlockEntity; -import org.spongepowered.api.block.entity.CommandBlock; -import org.spongepowered.api.command.Command; -import org.spongepowered.api.command.CommandCause; -import org.spongepowered.api.command.CommandCompletion; -import org.spongepowered.api.command.CommandResult; -import org.spongepowered.api.command.parameter.ArgumentReader; -import org.spongepowered.api.config.ConfigDir; -import org.spongepowered.api.data.type.HandTypes; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; -import org.spongepowered.api.event.EventContextKeys; -import org.spongepowered.api.event.Listener; -import org.spongepowered.api.event.action.InteractEvent; -import org.spongepowered.api.event.block.InteractBlockEvent; -import org.spongepowered.api.event.filter.cause.Root; -import org.spongepowered.api.event.item.inventory.InteractItemEvent; -import org.spongepowered.api.event.lifecycle.ConstructPluginEvent; -import org.spongepowered.api.event.lifecycle.RegisterCommandEvent; -import org.spongepowered.api.event.lifecycle.StartedEngineEvent; -import org.spongepowered.api.event.lifecycle.StartingEngineEvent; -import org.spongepowered.api.event.lifecycle.StoppingEngineEvent; -import org.spongepowered.api.event.network.ServerSideConnectionEvent; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.scheduler.Task; -import org.spongepowered.api.world.LocatableBlock; -import org.spongepowered.api.world.server.ServerLocation; -import org.spongepowered.api.world.server.ServerWorld; -import org.spongepowered.math.vector.Vector3d; -import org.spongepowered.plugin.PluginContainer; -import org.spongepowered.plugin.builtin.jvm.Plugin; - -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -import static com.sk89q.worldedit.internal.anvil.ChunkDeleter.DELCHUNKS_FILE_NAME; -import static java.util.stream.Collectors.toList; - -/** - * The Sponge implementation of WorldEdit. - */ -@Plugin(SpongeWorldEdit.MOD_ID) -public class SpongeWorldEdit { - - public static final String MOD_ID = "worldedit"; - private static final int BSTATS_PLUGIN_ID = 3329; - - private static SpongeWorldEdit inst; - - public static SpongeWorldEdit inst() { - return inst; - } - - private final Logger logger; - private final PluginContainer container; - private final SpongeConfiguration config; - private final Path workingDir; - - private InteractionDebouncer debouncer; - private SpongePermissionsProvider provider; - private SpongePlatform platform; - - @Inject - public SpongeWorldEdit(Logger logger, - PluginContainer container, - SpongeConfiguration config, - Metrics.Factory metricsFactory, - @ConfigDir(sharedRoot = false) - Path workingDir) { - this.logger = logger; - this.container = container; - this.config = config; - this.workingDir = workingDir; - metricsFactory.make(BSTATS_PLUGIN_ID); - inst = this; - } - - @Listener - public void onPluginConstruction(ConstructPluginEvent event) { - this.platform = new SpongePlatform(this); - debouncer = new InteractionDebouncer(platform); - - WorldEdit.getInstance().getPlatformManager().register(platform); - - this.provider = new SpongePermissionsProvider(); - - event.game().eventManager().registerListeners( - container, - new CUIChannelHandler.RegistrationHandler() - ); - logger.info("WorldEdit for Sponge (version " + getInternalVersion() + ") is loaded"); - } - - @Listener - public void serverStarting(StartingEngineEvent event) { - final Path delChunks = workingDir.resolve(DELCHUNKS_FILE_NAME); - if (Files.exists(delChunks)) { - ChunkDeleter.runFromFile(delChunks, true); - } - } - - @Listener - public void serverStarted(StartedEngineEvent event) { - event.engine().scheduler().submit(Task.builder() - .plugin(container) - .interval(30, TimeUnit.SECONDS) - .execute(ThreadSafeCache.getInstance()) - .build()); - - event.game().registry(RegistryTypes.BLOCK_TYPE).streamEntries().forEach(blockType -> { - String id = blockType.key().asString(); - if (!com.sk89q.worldedit.world.block.BlockType.REGISTRY.keySet().contains(id)) { - com.sk89q.worldedit.world.block.BlockType.REGISTRY.register(id, new com.sk89q.worldedit.world.block.BlockType( - id, - input -> { - BlockType spongeBlockType = Sponge.game().registry(RegistryTypes.BLOCK_TYPE).value( - ResourceKey.resolve(input.getBlockType().id()) - ); - return SpongeAdapter.adapt(spongeBlockType.defaultState()); - } - )); - } - }); - - event.game().registry(RegistryTypes.ITEM_TYPE).streamEntries().forEach(itemType -> { - String id = itemType.key().asString(); - if (!com.sk89q.worldedit.world.item.ItemType.REGISTRY.keySet().contains(id)) { - com.sk89q.worldedit.world.item.ItemType.REGISTRY.register(id, new com.sk89q.worldedit.world.item.ItemType(id)); - } - }); - - event.game().registry(RegistryTypes.ENTITY_TYPE).streamEntries().forEach(entityType -> { - String id = entityType.key().asString(); - if (!com.sk89q.worldedit.world.entity.EntityType.REGISTRY.keySet().contains(id)) { - com.sk89q.worldedit.world.entity.EntityType.REGISTRY.register(id, new com.sk89q.worldedit.world.entity.EntityType(id)); - } - }); - - for (ServerWorld world : event.engine().worldManager().worlds()) { - world.registry(RegistryTypes.BIOME).streamEntries().forEach(biomeType -> { - String id = biomeType.key().asString(); - if (!BiomeType.REGISTRY.keySet().contains(id)) { - BiomeType.REGISTRY.register(id, new BiomeType(id)); - } - }); - } - - event.game().registry(RegistryTypes.BLOCK_TYPE).tags().forEach(blockTypeTag -> { - String id = blockTypeTag.key().asString(); - if (!BlockCategory.REGISTRY.keySet().contains(id)) { - BlockCategory.REGISTRY.register(id, new BlockCategory(id)); - } - }); - event.game().registry(RegistryTypes.ITEM_TYPE).tags().forEach(itemTypeTag -> { - String id = itemTypeTag.key().asString(); - if (!ItemCategory.REGISTRY.keySet().contains(id)) { - ItemCategory.REGISTRY.register(id, new ItemCategory(id)); - } - }); - event.game().registry(RegistryTypes.BIOME).tags().forEach(biomeTag -> { - String id = biomeTag.key().asString(); - if (!BiomeCategory.REGISTRY.keySet().contains(id)) { - BiomeCategory.REGISTRY.register(id, new BiomeCategory(id, () -> event.game().registry(RegistryTypes.BIOME).taggedValues(biomeTag).stream().map(SpongeAdapter::adapt).collect(Collectors.toSet()))); - } - }); - - config.load(); - WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent(platform)); - } - - @Listener - public void serverStopping(StoppingEngineEvent event) { - WorldEdit worldEdit = WorldEdit.getInstance(); - worldEdit.getSessionManager().unload(); - WorldEdit.getInstance().getEventBus().post(new PlatformUnreadyEvent(platform)); - } - - @Listener - public void registerCommand(RegisterCommandEvent event) { - WorldEdit.getInstance().getEventBus().post(new PlatformsRegisteredEvent()); - PlatformManager manager = WorldEdit.getInstance().getPlatformManager(); - Platform commandsPlatform = manager.queryCapability(Capability.USER_COMMANDS); - if (commandsPlatform != platform || !platform.isHookingEvents()) { - // We're not in control of commands/events -- do not register. - return; - } - - List commands = manager.getPlatformCommandManager().getCommandManager() - .getAllCommands().toList(); - for (org.enginehub.piston.Command command : commands) { - registerAdaptedCommand(event, command); - - Set perms = command.getCondition().as(PermissionCondition.class) - .map(PermissionCondition::getPermissions) - .orElseGet(Collections::emptySet); - if (!perms.isEmpty()) { - perms.forEach(getPermissionsProvider()::registerPermission); - } - } - } - - private String rebuildArguments(String commandLabel, String args) { - int plSep = commandLabel.indexOf(':'); - if (plSep >= 0 && plSep < commandLabel.length() + 1) { - commandLabel = commandLabel.substring(plSep + 1); - } - - StringBuilder sb = new StringBuilder("/").append(commandLabel); - - String[] split = args.split(" ", -1); - if (split.length > 0) { - sb.append(" "); - } - return Joiner.on(" ").appendTo(sb, split).toString(); - } - - private void registerAdaptedCommand(RegisterCommandEvent event, org.enginehub.piston.Command command) { - CommandAdapter adapter = new CommandAdapter(command) { - @Override - public CommandResult process(CommandCause cause, ArgumentReader.Mutable arguments) { - CommandEvent weEvent = new CommandEvent(SpongeWorldEdit.inst().wrapCommandCause(cause), rebuildArguments(command.getName(), arguments.remaining()).trim()); - WorldEdit.getInstance().getEventBus().post(weEvent); - return weEvent.isCancelled() ? CommandResult.success() : CommandResult.builder().build(); - } - - @Override - public List complete(CommandCause cause, ArgumentReader.Mutable arguments) { - String args = rebuildArguments(command.getName(), arguments.remaining()); - CommandSuggestionEvent weEvent = new CommandSuggestionEvent(SpongeWorldEdit.inst().wrapCommandCause(cause), args); - WorldEdit.getInstance().getEventBus().post(weEvent); - return CommandUtil.fixSuggestions(args, weEvent.getSuggestions()) - .stream().map(CommandCompletion::of).collect(toList()); - } - }; - event.register( - container, adapter, command.getName(), command.getAliases().toArray(new String[0]) - ); - } - - private boolean skipEvents() { - return platform == null || !platform.isHookingEvents(); - } - - private boolean skipInteractionEvent(InteractEvent event) { - return skipEvents() || event.context().get(EventContextKeys.USED_HAND).orElse(null) != HandTypes.MAIN_HAND.get(); - } - - @Listener - public void onPlayerInteractItemPrimary(InteractItemEvent.Primary event, @Root ServerPlayer spongePlayer) { - if (skipInteractionEvent(event)) { - return; - } - - WorldEdit we = WorldEdit.getInstance(); - SpongePlayer player = SpongeAdapter.adapt(spongePlayer); - - Optional previousResult = debouncer.getDuplicateInteractionResult(player); - if (previousResult.isPresent()) { - return; - } - - boolean result = we.handleArmSwing(player); - debouncer.setLastInteraction(player, result); - } - - @Listener - public void onPlayerInteractItemSecondary(InteractItemEvent.Secondary event, @Root ServerPlayer spongePlayer) { - if (skipInteractionEvent(event)) { - return; - } - - WorldEdit we = WorldEdit.getInstance(); - SpongePlayer player = SpongeAdapter.adapt(spongePlayer); - - Optional previousResult = debouncer.getDuplicateInteractionResult(player); - if (previousResult.isPresent()) { - if (previousResult.get()) { - event.setCancelled(true); - } - return; - } - - boolean result = we.handleRightClick(player); - debouncer.setLastInteraction(player, result); - - if (result) { - event.setCancelled(true); - } - } - - @Listener - public void onPlayerInteractBlockPrimary(InteractBlockEvent.Primary.Start event, @Root ServerPlayer spongePlayer) { - if (skipInteractionEvent(event)) { - return; - } - - WorldEdit we = WorldEdit.getInstance(); - SpongePlayer player = SpongeAdapter.adapt(spongePlayer); - - BlockSnapshot targetBlock = event.block(); - Optional optLoc = targetBlock.location(); - - boolean result = false; - if (optLoc.isPresent()) { - ServerLocation loc = optLoc.get(); - com.sk89q.worldedit.util.Location pos = SpongeAdapter.adapt(loc, Vector3d.ZERO); - - result = we.handleBlockLeftClick(player, pos, SpongeAdapter.adapt(event.targetSide())); - } - - result = we.handleArmSwing(player) || result; - debouncer.setLastInteraction(player, result); - - if (result) { - event.setCancelled(true); - } - } - - @Listener - public void onPlayerInteractBlockSecondary(InteractBlockEvent.Secondary event, @Root ServerPlayer spongePlayer) { - if (skipInteractionEvent(event)) { - return; - } - - WorldEdit we = WorldEdit.getInstance(); - SpongePlayer player = SpongeAdapter.adapt(spongePlayer); - - BlockSnapshot targetBlock = event.block(); - Optional optLoc = targetBlock.location(); - - boolean result = false; - if (optLoc.isPresent()) { - ServerLocation loc = optLoc.get(); - com.sk89q.worldedit.util.Location pos = SpongeAdapter.adapt(loc, Vector3d.ZERO); - - result = we.handleBlockRightClick(player, pos, SpongeAdapter.adapt(event.targetSide())); - } - - result = we.handleRightClick(player) || result; - debouncer.setLastInteraction(player, result); - - if (result) { - event.setCancelled(true); - } - } - - @Listener - public void onPlayerQuit(ServerSideConnectionEvent.Disconnect event) { - debouncer.clearInteraction(SpongeAdapter.adapt(event.player())); - - WorldEdit.getInstance().getEventBus() - .post(new SessionIdleEvent(new SpongePlayer.SessionKeyImpl(event.player()))); - } - - public PluginContainer getPluginContainer() { - return container; - } - - /** - * Get the configuration. - * - * @return the Sponge configuration - */ - SpongeConfiguration getConfig() { - return this.config; - } - - public Actor wrapCommandCause(CommandCause cause) { - Object rootCause = cause.root(); - if (rootCause instanceof ServerPlayer) { - return SpongeAdapter.adapt((ServerPlayer) rootCause); - } - if (rootCause instanceof LocatableBlock locatableBlock) { - Optional optionalBlockEntity = locatableBlock.world().blockEntity(locatableBlock.blockPosition()); - if (optionalBlockEntity.isPresent()) { - BlockEntity blockEntity = optionalBlockEntity.get(); - if (blockEntity instanceof CommandBlock commandBlock) { - return new SpongeBlockCommandSender(this, commandBlock); - } - } - } - if (rootCause instanceof Audience) { - return new SpongeCommandSender((Audience) rootCause); - } - - throw new UnsupportedOperationException("Cannot wrap " + rootCause.getClass()); - } - - - /** - * Get the WorldEdit proxy for the platform. - * - * @return the WorldEdit platform - */ - public Platform getPlatform() { - return this.platform; - } - - SpongePlatform getInternalPlatform() { - return this.platform; - } - - /** - * Get the working directory where WorldEdit's files are stored. - * - * @return the working directory - */ - public Path getWorkingDir() { - return this.workingDir; - } - - /** - * Get the version of the WorldEdit Sponge implementation. - * - * @return a version string - */ - String getInternalVersion() { - return container.metadata().version().toString(); - } - - public void setPermissionsProvider(SpongePermissionsProvider provider) { - this.provider = provider; - } - - public SpongePermissionsProvider getPermissionsProvider() { - return provider; - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java deleted file mode 100644 index b6f131444f..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/ThreadSafeCache.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge; - -import org.spongepowered.api.Sponge; -import org.spongepowered.api.entity.living.player.server.ServerPlayer; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.CopyOnWriteArraySet; - -/** - * Caches data that cannot be accessed from another thread safely. - */ -public class ThreadSafeCache implements Runnable { - - private static final ThreadSafeCache INSTANCE = new ThreadSafeCache(); - private Set onlineIds = new CopyOnWriteArraySet<>(); - - /** - * Get an concurrent-safe set of UUIDs of online players. - * - * @return a set of UUIDs - */ - public Set getOnlineIds() { - return onlineIds; - } - - @Override - public void run() { - List onlineIds = new ArrayList<>(); - - for (ServerPlayer player : Sponge.server().onlinePlayers()) { - onlineIds.add(player.uniqueId()); - } - - this.onlineIds = new CopyOnWriteArraySet<>(onlineIds); - } - - public static ThreadSafeCache getInstance() { - return INSTANCE; - } - -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java deleted file mode 100644 index b9f0437522..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/ConfigurateConfiguration.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.config; - -import com.google.common.collect.ImmutableList; -import com.sk89q.worldedit.LocalConfiguration; -import com.sk89q.worldedit.LocalSession; -import com.sk89q.worldedit.session.SessionManager; -import com.sk89q.worldedit.util.report.Unreported; -import com.sk89q.worldedit.world.registry.LegacyMapper; -import org.apache.logging.log4j.Logger; -import org.spongepowered.configurate.CommentedConfigurationNode; -import org.spongepowered.configurate.ConfigurationOptions; -import org.spongepowered.configurate.loader.ConfigurationLoader; -import org.spongepowered.configurate.serialize.SerializationException; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Locale; - -public class ConfigurateConfiguration extends LocalConfiguration { - - @Unreported - protected final ConfigurationLoader config; - @Unreported - protected final Logger logger; - - @Unreported - protected CommentedConfigurationNode node; - - public ConfigurateConfiguration(ConfigurationLoader config, Logger logger) { - this.config = config; - this.logger = logger; - } - - @Override - public void load() { - try { - ConfigurationOptions options = ConfigurationOptions.defaults(); - options = options.shouldCopyDefaults(true); - - node = config.load(options); - } catch (IOException e) { - logger.warn("Error loading WorldEdit configuration", e); - } - - profile = node.node("debug").getBoolean(profile); - traceUnflushedSessions = node.node("debugging", "trace-unflushed-sessions").getBoolean(traceUnflushedSessions); - wandItem = node.node("wand-item").getString(wandItem).toLowerCase(Locale.ROOT); - try { - wandItem = LegacyMapper.getInstance().getItemFromLegacy(Integer.parseInt(wandItem)).id(); - } catch (Throwable ignored) { - } - - defaultChangeLimit = Math.max(-1, node.node("limits", "max-blocks-changed", "default").getInt(defaultChangeLimit)); - maxChangeLimit = Math.max(-1, node.node("limits", "max-blocks-changed", "maximum").getInt(maxChangeLimit)); - - defaultVerticalHeight = Math.max(1, node.node("limits", "vertical-height", "default").getInt(defaultVerticalHeight)); - - defaultMaxPolygonalPoints = Math.max(-1, node.node("limits", "max-polygonal-points", "default").getInt(defaultMaxPolygonalPoints)); - maxPolygonalPoints = Math.max(-1, node.node("limits", "max-polygonal-points", "maximum").getInt(maxPolygonalPoints)); - - maxRadius = Math.max(-1, node.node("limits", "max-radius").getInt(maxRadius)); - maxBrushRadius = node.node("limits", "max-brush-radius").getInt(maxBrushRadius); - maxSuperPickaxeSize = Math.max(1, node.node("limits", "max-super-pickaxe-size").getInt(maxSuperPickaxeSize)); - - butcherDefaultRadius = Math.max(-1, node.node("limits", "butcher-radius", "default").getInt(butcherDefaultRadius)); - butcherMaxRadius = Math.max(-1, node.node("limits", "butcher-radius", "maximum").getInt(butcherMaxRadius)); - - try { - disallowedBlocks = new HashSet<>( - node.node("limits", "disallowed-blocks").getList( - String.class, - ImmutableList.copyOf(getDefaultDisallowedBlocks()) - ) - ); - } catch (SerializationException e) { - logger.warn("Error loading WorldEdit configuration", e); - } - try { - allowedDataCycleBlocks = new HashSet<>( - node.node("limits", "allowed-data-cycle-blocks").getList(String.class, ImmutableList.of()) - ); - } catch (SerializationException e) { - logger.warn("Error loading WorldEdit configuration", e); - } - - registerHelp = node.node("register-help").getBoolean(true); - logCommands = node.node("logging", "log-commands").getBoolean(logCommands); - logFile = node.node("logging", "file").getString(logFile); - logFormat = node.node("logging", "format").getString(logFormat); - - superPickaxeDrop = node.node("super-pickaxe", "drop-items").getBoolean(superPickaxeDrop); - superPickaxeManyDrop = node.node("super-pickaxe", "many-drop-items").getBoolean(superPickaxeManyDrop); - - useInventory = node.node("use-inventory", "enable").getBoolean(useInventory); - useInventoryOverride = node.node("use-inventory", "allow-override").getBoolean(useInventoryOverride); - useInventoryCreativeOverride = node.node("use-inventory", "creative-mode-overrides").getBoolean(useInventoryCreativeOverride); - - navigationWand = node.node("navigation-wand", "item").getString(navigationWand).toLowerCase(Locale.ROOT); - try { - navigationWand = LegacyMapper.getInstance().getItemFromLegacy(Integer.parseInt(navigationWand)).id(); - } catch (Throwable ignored) { - } - navigationWandMaxDistance = node.node("navigation-wand", "max-distance").getInt(navigationWandMaxDistance); - navigationUseGlass = node.node("navigation", "use-glass").getBoolean(navigationUseGlass); - - scriptTimeout = node.node("scripting", "timeout").getInt(scriptTimeout); - scriptsDir = node.node("scripting", "dir").getString(scriptsDir); - - saveDir = node.node("saving", "dir").getString(saveDir); - - allowSymlinks = node.node("files", "allow-symbolic-links").getBoolean(false); - LocalSession.MAX_HISTORY_SIZE = Math.max(0, node.node("history", "size").getInt(15)); - SessionManager.EXPIRATION_GRACE = node.node("history", "expiration").getInt(10) * 60 * 1000; - - showHelpInfo = node.node("show-help-on-first-use").getBoolean(true); - serverSideCUI = node.node("server-side-cui").getBoolean(true); - - String snapshotsDir = node.node("snapshots", "directory").getString(""); - boolean experimentalSnapshots = node.node("snapshots", "experimental").getBoolean(false); - initializeSnapshotConfiguration(snapshotsDir, experimentalSnapshots); - - String type = node.node("shell-save-type").getString("").trim(); - shellSaveType = type.isEmpty() ? null : type; - - extendedYLimit = node.node("compat", "extended-y-limit").getBoolean(false); - setDefaultLocaleName(node.node("default-locale").getString(defaultLocaleName)); - - commandBlockSupport = node.node("command-block-support").getBoolean(false); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java deleted file mode 100644 index bb58a5d8c4..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/config/SpongeConfiguration.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.config; - -import com.google.inject.Inject; -import com.sk89q.worldedit.sponge.SpongeWorldEdit; -import org.apache.logging.log4j.Logger; -import org.spongepowered.api.config.DefaultConfig; -import org.spongepowered.configurate.CommentedConfigurationNode; -import org.spongepowered.configurate.loader.ConfigurationLoader; - -import java.io.IOException; -import java.nio.file.Path; - -public class SpongeConfiguration extends ConfigurateConfiguration { - - public boolean creativeEnable = false; - public boolean cheatMode = false; - - @Inject - public SpongeConfiguration(@DefaultConfig(sharedRoot = false) - ConfigurationLoader config, - Logger logger) { - super(config, logger); - } - - @Override - public void load() { - super.load(); - - creativeEnable = node.node("use-in-creative").getBoolean(false); - cheatMode = node.node("cheat-mode").getBoolean(false); - - try { - config.save(node); - } catch (IOException e) { - logger.warn("Error loading WorldEdit configuration", e); - } - } - - @Override - public Path getWorkingDirectoryPath() { - return SpongeWorldEdit.inst().getWorkingDir(); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java deleted file mode 100644 index 47e0451e27..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/ExtendedChunk.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.internal; - -import com.sk89q.worldedit.util.SideEffect; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.LevelChunk; - -import javax.annotation.Nullable; - -public interface ExtendedChunk { - /** - * {@link LevelChunk#setBlockState(BlockPos, BlockState, boolean)} with the extra - * {@link SideEffect#UPDATE} flag. - * - * @param pos the position to set - * @param state the state to set - * @param moved I honestly have no idea and can't be bothered to investigate, we pass {@code - * false} - * @param update the update flag, see side-effect for details - * @return the old block state, or {@code null} if unchanged - */ - @Nullable - BlockState setBlockState(BlockPos pos, BlockState state, boolean moved, boolean update); -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java deleted file mode 100644 index 4f7f4c8a54..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/LocaleResolver.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.internal; - -import com.sk89q.worldedit.WorldEdit; -import net.kyori.adventure.audience.Audience; -import org.spongepowered.api.util.locale.LocaleSource; - -import java.util.Locale; - -public class LocaleResolver { - public static Locale resolveLocale(Audience audience) { - if (audience instanceof LocaleSource) { - return ((LocaleSource) audience).locale(); - } - return WorldEdit.getInstance().getConfiguration().defaultLocale; - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java deleted file mode 100644 index 2b7fe5f77a..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/NbtAdapter.java +++ /dev/null @@ -1,272 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.internal; - -import net.minecraft.nbt.ByteArrayTag; -import net.minecraft.nbt.ByteTag; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.DoubleTag; -import net.minecraft.nbt.FloatTag; -import net.minecraft.nbt.IntArrayTag; -import net.minecraft.nbt.IntTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.LongArrayTag; -import net.minecraft.nbt.LongTag; -import net.minecraft.nbt.ShortTag; -import net.minecraft.nbt.StringTag; -import net.minecraft.nbt.Tag; -import org.enginehub.linbus.tree.LinByteArrayTag; -import org.enginehub.linbus.tree.LinByteTag; -import org.enginehub.linbus.tree.LinCompoundTag; -import org.enginehub.linbus.tree.LinDoubleTag; -import org.enginehub.linbus.tree.LinFloatTag; -import org.enginehub.linbus.tree.LinIntArrayTag; -import org.enginehub.linbus.tree.LinIntTag; -import org.enginehub.linbus.tree.LinListTag; -import org.enginehub.linbus.tree.LinLongArrayTag; -import org.enginehub.linbus.tree.LinLongTag; -import org.enginehub.linbus.tree.LinShortTag; -import org.enginehub.linbus.tree.LinStringTag; -import org.enginehub.linbus.tree.LinTag; -import org.enginehub.linbus.tree.LinTagType; -import org.spongepowered.api.data.persistence.DataContainer; -import org.spongepowered.api.data.persistence.DataQuery; -import org.spongepowered.api.data.persistence.DataSerializable; -import org.spongepowered.api.data.persistence.DataView; - -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -public class NbtAdapter { - /** - * A separator to introduce errors if there is something to be separated. We should only see - * single-part keys. - */ - private static final String BREAKING_SEPARATOR = "if you see this, something is wrong"; - - public static LinCompoundTag adaptToWorldEdit(DataView view) { - LinCompoundTag.Builder builder = LinCompoundTag.builder(); - for (Map.Entry entry : view.values(false).entrySet()) { - builder.put( - entry.getKey().asString(BREAKING_SEPARATOR), - adaptUnknownToWorldEdit(entry.getValue()) - ); - } - return builder.build(); - } - - private static LinTag adaptUnknownToWorldEdit(Object object) { - if (object instanceof DataView) { - return adaptToWorldEdit((DataView) object); - } - if (object instanceof Boolean) { - return LinByteTag.of((byte) ((Boolean) object ? 1 : 0)); - } - if (object instanceof Byte) { - return LinByteTag.of((Byte) object); - } - if (object instanceof Short) { - return LinShortTag.of(((Short) object)); - } - if (object instanceof Integer) { - return LinIntTag.of(((Integer) object)); - } - if (object instanceof Long) { - return LinLongTag.of(((Long) object)); - } - if (object instanceof Float) { - return LinFloatTag.of(((Float) object)); - } - if (object instanceof Double) { - return LinDoubleTag.of(((Double) object)); - } - if (object instanceof String) { - return LinStringTag.of((String) object); - } - if (object instanceof byte[]) { - return LinByteArrayTag.of(((byte[]) object)); - } - if (object instanceof Byte[] array) { - byte[] copy = new byte[array.length]; - for (int i = 0; i < copy.length; i++) { - copy[i] = array[i]; - } - return LinByteArrayTag.of(copy); - } - if (object instanceof int[]) { - return LinIntArrayTag.of(((int[]) object)); - } - if (object instanceof Integer[] array) { - int[] copy = new int[array.length]; - for (int i = 0; i < copy.length; i++) { - copy[i] = array[i]; - } - return LinIntArrayTag.of(copy); - } - if (object instanceof long[]) { - return LinLongArrayTag.of(((long[]) object)); - } - if (object instanceof Long[] array) { - long[] copy = new long[array.length]; - for (int i = 0; i < copy.length; i++) { - copy[i] = array[i]; - } - return LinLongArrayTag.of(copy); - } - if (object instanceof List objects) { - if (objects.isEmpty()) { - return LinListTag.empty(LinTagType.endTag()); - } - LinTag first = adaptUnknownToWorldEdit(objects.get(0)); - @SuppressWarnings("unchecked") - LinListTag.Builder> builder = LinListTag.builder((LinTagType>) first.type()); - builder.add(first); - for (int i = 1; i < objects.size(); i++) { - Object value = objects.get(i); - builder.add(adaptUnknownToWorldEdit(value)); - } - return builder.build(); - } - if (object instanceof Map) { - LinCompoundTag.Builder builder = LinCompoundTag.builder(); - for (Map.Entry entry : ((Map) object).entrySet()) { - String key = entry.getKey() instanceof DataQuery - ? ((DataQuery) entry.getKey()).asString(BREAKING_SEPARATOR) - : entry.getKey().toString(); - builder.put(key, adaptUnknownToWorldEdit(entry.getValue())); - } - return builder.build(); - } - if (object instanceof DataSerializable) { - return adaptToWorldEdit(((DataSerializable) object).toContainer()); - } - throw new UnsupportedOperationException("Unable to translate into NBT: " + object.getClass()); - } - - public static DataContainer adaptFromWorldEdit(LinCompoundTag tag) { - // copy to container, no cloning used because it's unlikely to leak - // and it's cheaper this way - DataContainer container = DataContainer.createNew(DataView.SafetyMode.NO_DATA_CLONED); - for (var entry : tag.value().entrySet()) { - container.set(DataQuery.of(entry.getKey()), adaptTagFromWorldEdit(entry.getValue())); - } - return container; - } - - private static Object adaptTagFromWorldEdit(LinTag value) { - if (value instanceof LinListTag listTag) { - return listTag.value().stream() - .map(NbtAdapter::adaptTagFromWorldEdit) - .collect(Collectors.toList()); - } - if (value instanceof LinCompoundTag compoundTag) { - return adaptFromWorldEdit(compoundTag); - } - // everything else is raw JDK types, so we can use it directly - return value.value(); - } - - public static Tag adaptNMSToWorldEdit(LinTag tag) { - if (tag instanceof LinIntArrayTag intArrayTag) { - return adaptNMSToWorldEdit(intArrayTag); - } else if (tag instanceof LinListTag listTag) { - return adaptNMSToWorldEdit(listTag); - } else if (tag instanceof LinLongTag longTag) { - return adaptNMSToWorldEdit(longTag); - } else if (tag instanceof LinLongArrayTag longArrayTag) { - return adaptNMSToWorldEdit(longArrayTag); - } else if (tag instanceof LinStringTag stringTag) { - return adaptNMSToWorldEdit(stringTag); - } else if (tag instanceof LinIntTag intTag) { - return adaptNMSToWorldEdit(intTag); - } else if (tag instanceof LinByteTag byteTag) { - return adaptNMSToWorldEdit(byteTag); - } else if (tag instanceof LinByteArrayTag byteArrayTag) { - return adaptNMSToWorldEdit(byteArrayTag); - } else if (tag instanceof LinCompoundTag compoundTag) { - return adaptNMSToWorldEdit(compoundTag); - } else if (tag instanceof LinFloatTag floatTag) { - return adaptNMSToWorldEdit(floatTag); - } else if (tag instanceof LinShortTag shortTag) { - return adaptNMSToWorldEdit(shortTag); - } else if (tag instanceof LinDoubleTag doubleTag) { - return adaptNMSToWorldEdit(doubleTag); - } else { - throw new IllegalArgumentException("Can't convert tag of type " + tag.getClass().getCanonicalName()); - } - } - - public static IntArrayTag adaptNMSToWorldEdit(LinIntArrayTag tag) { - return new IntArrayTag(tag.value()); - } - - public static ListTag adaptNMSToWorldEdit(LinListTag tag) { - ListTag list = new ListTag(); - for (LinTag child : tag.value()) { - list.add(adaptNMSToWorldEdit(child)); - } - return list; - } - - public static LongTag adaptNMSToWorldEdit(LinLongTag tag) { - return LongTag.valueOf(tag.valueAsLong()); - } - - public static LongArrayTag adaptNMSToWorldEdit(LinLongArrayTag tag) { - return new LongArrayTag(tag.value()); - } - - public static StringTag adaptNMSToWorldEdit(LinStringTag tag) { - return StringTag.valueOf(tag.value()); - } - - public static IntTag adaptNMSToWorldEdit(LinIntTag tag) { - return IntTag.valueOf(tag.valueAsInt()); - } - - public static ByteTag adaptNMSToWorldEdit(LinByteTag tag) { - return ByteTag.valueOf(tag.valueAsByte()); - } - - public static ByteArrayTag adaptNMSToWorldEdit(LinByteArrayTag tag) { - return new ByteArrayTag(tag.value()); - } - - public static CompoundTag adaptNMSToWorldEdit(LinCompoundTag tag) { - CompoundTag compound = new CompoundTag(); - for (var child : tag.value().entrySet()) { - compound.put(child.getKey(), adaptNMSToWorldEdit(child.getValue())); - } - return compound; - } - - public static FloatTag adaptNMSToWorldEdit(LinFloatTag tag) { - return FloatTag.valueOf(tag.valueAsFloat()); - } - - public static ShortTag adaptNMSToWorldEdit(LinShortTag tag) { - return ShortTag.valueOf(tag.valueAsShort()); - } - - public static DoubleTag adaptNMSToWorldEdit(LinDoubleTag tag) { - return DoubleTag.valueOf(tag.valueAsDouble()); - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java deleted file mode 100644 index 0bedfe64ab..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeTransmogrifier.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.internal; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.google.common.collect.ImmutableList; -import com.sk89q.worldedit.registry.state.BooleanProperty; -import com.sk89q.worldedit.registry.state.DirectionalProperty; -import com.sk89q.worldedit.registry.state.EnumProperty; -import com.sk89q.worldedit.registry.state.IntegerProperty; -import com.sk89q.worldedit.registry.state.Property; -import com.sk89q.worldedit.util.Direction; -import com.sk89q.worldedit.world.block.BlockState; -import com.sk89q.worldedit.world.block.BlockType; -import net.minecraft.util.StringRepresentable; -import org.spongepowered.api.ResourceKey; -import org.spongepowered.api.Sponge; -import org.spongepowered.api.registry.RegistryTypes; -import org.spongepowered.api.state.StateProperty; - -import java.util.Comparator; -import java.util.Map; -import java.util.Optional; -import java.util.TreeMap; - -/** - * Raw, un-cached transformations. - */ -public class SpongeTransmogrifier { - - private static final LoadingCache, Property> PROPERTY_CACHE = CacheBuilder.newBuilder().build(new CacheLoader<>() { - @Override - public Property load(StateProperty property) { - net.minecraft.world.level.block.state.properties.Property nativeProperty = - (net.minecraft.world.level.block.state.properties.Property) property; - String propertyName = nativeProperty.getName(); - if (nativeProperty instanceof net.minecraft.world.level.block.state.properties.BooleanProperty) { - return new BooleanProperty(propertyName, - ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.BooleanProperty) nativeProperty).getPossibleValues())); - } - if (nativeProperty instanceof net.minecraft.world.level.block.state.properties.IntegerProperty) { - return new IntegerProperty(propertyName, - ImmutableList.copyOf(((net.minecraft.world.level.block.state.properties.IntegerProperty) nativeProperty).getPossibleValues())); - } - if (isDirectionProperty(nativeProperty)) { - return new DirectionalProperty(propertyName, - ((net.minecraft.world.level.block.state.properties.EnumProperty) nativeProperty).getPossibleValues().stream() - .map(x -> adaptDirection((net.minecraft.core.Direction) x)) - .toList() - ); - } - if (nativeProperty instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - return new EnumProperty(propertyName, - ((net.minecraft.world.level.block.state.properties.EnumProperty) nativeProperty).getPossibleValues().stream() - .map(StringRepresentable::getSerializedName) - .toList()); - } - throw new IllegalStateException("Unknown property type"); - } - }); - - public static Property transmogToWorldEditProperty(StateProperty property) { - return PROPERTY_CACHE.getUnchecked(property); - } - - private static Map, Object> transmogToWorldEditProperties( - BlockType block, - net.minecraft.world.level.block.state.BlockState blockState - ) { - Map, Object> properties = new TreeMap<>(Comparator.comparing(Property::getName)); - for (net.minecraft.world.level.block.state.properties.Property nativeProperty: blockState.getProperties()) { - Object value = blockState.getValue(nativeProperty); - if (isDirectionProperty(nativeProperty)) { - net.minecraft.core.Direction nativeDirectionValue = (net.minecraft.core.Direction) value; - value = adaptDirection(nativeDirectionValue); - } else if (nativeProperty instanceof net.minecraft.world.level.block.state.properties.EnumProperty) { - value = ((StringRepresentable) value).getSerializedName(); - } - properties.put(block.getProperty(nativeProperty.getName()), value); - } - return properties; - } - - private static boolean isDirectionProperty(net.minecraft.world.level.block.state.properties.Property property) { - return property instanceof net.minecraft.world.level.block.state.properties.EnumProperty - && property.getValueClass().isAssignableFrom(net.minecraft.core.Direction.class); - } - - private static Direction adaptDirection(net.minecraft.core.Direction direction) { - switch (direction) { - case UP: - return Direction.UP; - case DOWN: - return Direction.DOWN; - case EAST: - return Direction.EAST; - case WEST: - return Direction.WEST; - case NORTH: - return Direction.NORTH; - case SOUTH: - return Direction.SOUTH; - default: - throw new AssertionError("New direction added: " + direction); - } - } - - private static net.minecraft.core.Direction adaptDirection(Direction direction) { - switch (direction) { - case UP: - return net.minecraft.core.Direction.UP; - case DOWN: - return net.minecraft.core.Direction.DOWN; - case EAST: - return net.minecraft.core.Direction.EAST; - case WEST: - return net.minecraft.core.Direction.WEST; - case NORTH: - return net.minecraft.core.Direction.NORTH; - case SOUTH: - return net.minecraft.core.Direction.SOUTH; - default: - throw new AssertionError("New direction added: " + direction); - } - } - - private static net.minecraft.world.level.block.state.properties.Property findPropertyByName( - net.minecraft.world.level.block.state.BlockState blockState, - String propertyName - ) { - for (net.minecraft.world.level.block.state.properties.Property property: blockState.getProperties()) { - if (property.getName().equals(propertyName)) { - return property; - } - } - - throw new IllegalStateException("Missing property in " + blockState.getBlock() + ": " + propertyName); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private static org.spongepowered.api.block.BlockState transmogToMinecraftProperties( - org.spongepowered.api.block.BlockState blockState, - Map, Object> states - ) { - net.minecraft.world.level.block.state.BlockState nativeBlockState = - (net.minecraft.world.level.block.state.BlockState) blockState; - for (Map.Entry, Object> stateEntry: states.entrySet()) { - Property property = stateEntry.getKey(); - Object value = stateEntry.getValue(); - net.minecraft.world.level.block.state.properties.Property nativeProperty = - findPropertyByName(nativeBlockState, property.getName()); - Comparable nativeValue; - if (property instanceof DirectionalProperty) { - Direction directionValue = (Direction) value; - nativeValue = adaptDirection(directionValue); - } else if (property instanceof EnumProperty) { - String valueName = (String) value; - Optional> nativeValueOpt = nativeProperty.getValue(valueName); - if (nativeValueOpt.isEmpty()) { - throw new IllegalStateException("Failed to parse " + valueName + " into " + property.getName()); - } - nativeValue = nativeValueOpt.get(); - } else { - nativeValue = (Comparable) value; - } - nativeBlockState = nativeBlockState.setValue( - (net.minecraft.world.level.block.state.properties.Property) nativeProperty, (Comparable) nativeValue); - } - - return (org.spongepowered.api.block.BlockState) nativeBlockState; - } - - public static org.spongepowered.api.block.BlockState transmogToMinecraft(BlockState blockState) { - org.spongepowered.api.block.BlockType mcBlock = Sponge.game().registry(RegistryTypes.BLOCK_TYPE) - .value(ResourceKey.resolve(blockState.getBlockType().id())); - org.spongepowered.api.block.BlockState newState = mcBlock.defaultState(); - Map, Object> states = blockState.getStates(); - return transmogToMinecraftProperties(newState, states); - } - - public static BlockState transmogToWorldEdit(org.spongepowered.api.block.BlockState blockState) { - BlockType blockType = BlockType.REGISTRY.get( - blockState.type().key(RegistryTypes.BLOCK_TYPE).asString() - ); - return blockType.getState(transmogToWorldEditProperties(blockType, - (net.minecraft.world.level.block.state.BlockState) blockState)); - } - - private SpongeTransmogrifier() { - } -} diff --git a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java b/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java deleted file mode 100644 index 9d382c2635..0000000000 --- a/worldedit-sponge/src/main/java/com/sk89q/worldedit/sponge/internal/SpongeWorldNativeAccess.java +++ /dev/null @@ -1,159 +0,0 @@ -/* - * WorldEdit, a Minecraft world manipulation toolkit - * Copyright (C) sk89q - * Copyright (C) WorldEdit team and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.sk89q.worldedit.sponge.internal; - -import com.sk89q.worldedit.internal.wna.WorldNativeAccess; -import com.sk89q.worldedit.sponge.SpongeAdapter; -import com.sk89q.worldedit.util.SideEffect; -import com.sk89q.worldedit.util.SideEffectSet; -import com.sk89q.worldedit.world.storage.ChunkStore; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.FullChunkStatus; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.chunk.LevelChunk; -import org.enginehub.linbus.tree.LinCompoundTag; - -import java.lang.ref.WeakReference; -import java.util.Objects; -import javax.annotation.Nullable; - -public class SpongeWorldNativeAccess implements WorldNativeAccess { - private static final int UPDATE = 1; - private static final int NOTIFY = 2; - - private final WeakReference world; - private SideEffectSet sideEffectSet; - - public SpongeWorldNativeAccess(WeakReference world) { - this.world = world; - } - - private ServerLevel getWorld() { - return Objects.requireNonNull(world.get(), "The reference to the world was lost"); - } - - @Override - public void setCurrentSideEffectSet(SideEffectSet sideEffectSet) { - this.sideEffectSet = sideEffectSet; - } - - @Override - public LevelChunk getChunk(int x, int z) { - return getWorld().getChunk(x, z); - } - - @Override - public BlockState toNative(com.sk89q.worldedit.world.block.BlockState state) { - return (BlockState) SpongeAdapter.adapt(state); - } - - @Override - public BlockState getBlockState(LevelChunk chunk, BlockPos position) { - return chunk.getBlockState(position); - } - - @Nullable - @Override - public BlockState setBlockState(LevelChunk chunk, BlockPos position, BlockState state) { - if (chunk instanceof ExtendedChunk) { - return ((ExtendedChunk) chunk).setBlockState( - position, state, false, sideEffectSet.shouldApply(SideEffect.UPDATE) - ); - } - return chunk.setBlockState(position, state, false); - } - - @Override - public BlockState getValidBlockForPosition(BlockState block, BlockPos position) { - return Block.updateFromNeighbourShapes(block, getWorld(), position); - } - - @Override - public BlockPos getPosition(int x, int y, int z) { - return new BlockPos(x, y, z); - } - - @Override - public void updateLightingForBlock(BlockPos position) { - getWorld().getChunkSource().getLightEngine().checkBlock(position); - } - - @Override - public boolean updateTileEntity(BlockPos position, LinCompoundTag tag) { - CompoundTag nativeTag = NbtAdapter.adaptNMSToWorldEdit(tag); - BlockEntity tileEntity = getWorld().getChunk(position).getBlockEntity(position); - if (tileEntity == null) { - return false; - } - tileEntity.setLevel(getWorld()); - tileEntity.load(nativeTag); - return true; - } - - @Override - public void notifyBlockUpdate(LevelChunk chunk, BlockPos position, BlockState oldState, BlockState newState) { - if (chunk.getSections()[position.getY() >> ChunkStore.CHUNK_SHIFTS] != null) { // TODO 1.17 - world.get().getSectionIndex(position.getY()) - getWorld().sendBlockUpdated(position, oldState, newState, UPDATE | NOTIFY); - } - } - - @Override - public boolean isChunkTicking(LevelChunk chunk) { - return chunk.getFullStatus().isOrAfter(FullChunkStatus.BLOCK_TICKING); - } - - @Override - public void markBlockChanged(LevelChunk chunk, BlockPos position) { - if (chunk.getSections()[position.getY() >> ChunkStore.CHUNK_SHIFTS] != null) { // TODO 1.17 - world.getSectionIndex(position.getY()) - getWorld().getChunkSource().blockChanged(position); - } - } - - @Override - public void notifyNeighbors(BlockPos pos, BlockState oldState, BlockState newState) { - getWorld().updateNeighborsAt(pos, oldState.getBlock()); - if (newState.hasAnalogOutputSignal()) { - getWorld().updateNeighbourForOutputSignal(pos, newState.getBlock()); - } - } - - @Override - public void updateBlock(BlockPos pos, BlockState oldState, BlockState newState) { - ServerLevel world = getWorld(); - newState.onPlace(world, pos, oldState, false); - } - - @Override - public void updateNeighbors(BlockPos pos, BlockState oldState, BlockState newState, int recursionLimit) { - ServerLevel world = getWorld(); - oldState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); - newState.updateIndirectNeighbourShapes(world, pos, NOTIFY, recursionLimit); - newState.updateNeighbourShapes(world, pos, NOTIFY, recursionLimit); - } - - @Override - public void onBlockStateChange(BlockPos pos, BlockState oldState, BlockState newState) { - getWorld().onBlockStateChange(pos, oldState, newState); - } -} From 006cf71883e5bfbdde8ef297ed62c109837eb48f Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Mon, 29 Apr 2024 17:39:27 -0700 Subject: [PATCH 21/23] Update checkstyle Doesn't matter much, but it's good to be up-to-date --- build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts b/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts index 48387042f5..02011915e0 100644 --- a/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts +++ b/build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts @@ -29,7 +29,7 @@ tasks configure { configFile = rootProject.file("config/checkstyle/checkstyle.xml") - toolVersion = "9.1" + toolVersion = "10.16.0" } tasks.withType().configureEach { From e3705dc43c6252de046e94f9fd0a1d0919c5ab84 Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Tue, 30 Apr 2024 19:05:39 -0700 Subject: [PATCH 22/23] Remove unnecessary buildscript block Fabric got smarter at some point --- build.gradle.kts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0f5d6e5649..c43f19f9a3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,20 +1,5 @@ import org.ajoberstar.grgit.Grgit -buildscript { - repositories { - maven { - name = "EngineHub" - url = uri("https://maven.enginehub.org/repo/") - } - maven { - name = "Fabric" - url = uri("https://maven.fabricmc.net/") - } - } - dependencies { - // needed for fabric to know where FF executor is.... - } -} plugins { alias(libs.plugins.codecov) jacoco From b5b5902f54eb1d259ed6a6a10a908fc1ae19c0fb Mon Sep 17 00:00:00 2001 From: Octavia Togami Date: Wed, 1 May 2024 00:27:03 -0700 Subject: [PATCH 23/23] [NeoForge] [Fabric] 1.20.6 --- gradle/libs.versions.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 561dc42365..8547912e66 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,9 +9,9 @@ piston = "0.5.10" autoValue = "1.10.4" antlr = "4.13.1" -fabric-api = "0.97.6+1.20.5" +fabric-api = "0.97.8+1.20.6" -neoforge-minecraft = "1.20.5" +neoforge-minecraft = "1.20.6" # https://parchmentmc.org/docs/getting-started; note that we use older MC versions some times which is OK parchment-minecraft = "1.20.4" @@ -71,11 +71,11 @@ rhino = "org.mozilla:rhino-runtime:1.7.13" jchronic = "com.sk89q:jchronic:0.2.4a" jlibnoise = "com.sk89q.lib:jlibnoise:1.0.0" -fabric-minecraft = "com.mojang:minecraft:1.20.5" +fabric-minecraft = "com.mojang:minecraft:1.20.6" fabric-loader = "net.fabricmc:fabric-loader:0.15.10" fabric-permissions-api = "me.lucko:fabric-permissions-api:0.1-SNAPSHOT" -neoforge = "net.neoforged:neoforge:20.5.16-beta" +neoforge = "net.neoforged:neoforge:20.6.11-beta" # Mojang-provided libraries, CHECK AGAINST MINECRAFT for versions guava = "com.google.guava:guava:32.1.3-jre!!"