diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..303df618c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "prismarine-minecraft-data"] + path = prismarine-minecraft-data + url = https://github.com/PrismarineJS/minecraft-data diff --git a/build.gradle b/build.gradle index 1d5f1f464..95d054a0a 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,23 @@ repositories { } +sourceSets { + main { + java { + srcDir 'src/main/java' + srcDir 'src/autogenerated/java' + } + } + generation { + java { + srcDir 'src/generators/java' + } + + compileClasspath += sourceSets.main.runtimeClasspath + runtimeClasspath += sourceSets.main.runtimeClasspath + } +} + dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' diff --git a/prismarine-minecraft-data b/prismarine-minecraft-data new file mode 160000 index 000000000..28cb60995 --- /dev/null +++ b/prismarine-minecraft-data @@ -0,0 +1 @@ +Subproject commit 28cb60995d153d5c8eb7bb1bb2e0fd645e3202d0 diff --git a/src/autogenerated/java/net/minestom/instance/block/TmpBlock.java b/src/autogenerated/java/net/minestom/instance/block/TmpBlock.java new file mode 100644 index 000000000..6c850391f --- /dev/null +++ b/src/autogenerated/java/net/minestom/instance/block/TmpBlock.java @@ -0,0 +1,727 @@ +//============================== +// AUTOGENERATED BY EnumGenerator +//============================== +package net.minestom.instance.block; + +public enum TmpBlock { + AIR("minecraft:air", (short) 0, 0.0, 0.0, false, false), + STONE("minecraft:stone", (short) 1, 1.5, 6.0, false, true), + GRANITE("minecraft:granite", (short) 2, 1.5, 6.0, false, true), + POLISHED_GRANITE("minecraft:polished_granite", (short) 3, 1.5, 6.0, false, true), + DIORITE("minecraft:diorite", (short) 4, 1.5, 6.0, false, true), + POLISHED_DIORITE("minecraft:polished_diorite", (short) 5, 1.5, 6.0, false, true), + ANDESITE("minecraft:andesite", (short) 6, 1.5, 6.0, false, true), + POLISHED_ANDESITE("minecraft:polished_andesite", (short) 7, 1.5, 6.0, false, true), + GRASS_BLOCK("minecraft:grass_block", (short) 9, 0.6, 0.6, false, true), + DIRT("minecraft:dirt", (short) 10, 0.5, 0.5, false, true), + COARSE_DIRT("minecraft:coarse_dirt", (short) 11, 0.5, 0.5, false, true), + PODZOL("minecraft:podzol", (short) 13, 0.5, 0.5, false, true), + COBBLESTONE("minecraft:cobblestone", (short) 14, 2.0, 6.0, false, true), + OAK_PLANKS("minecraft:oak_planks", (short) 15, 2.0, 3.0, false, true), + SPRUCE_PLANKS("minecraft:spruce_planks", (short) 16, 2.0, 3.0, false, true), + BIRCH_PLANKS("minecraft:birch_planks", (short) 17, 2.0, 3.0, false, true), + JUNGLE_PLANKS("minecraft:jungle_planks", (short) 18, 2.0, 3.0, false, true), + ACACIA_PLANKS("minecraft:acacia_planks", (short) 19, 2.0, 3.0, false, true), + DARK_OAK_PLANKS("minecraft:dark_oak_planks", (short) 20, 2.0, 3.0, false, true), + OAK_SAPLING("minecraft:oak_sapling", (short) 21, 0.0, 0.0, false, false), + SPRUCE_SAPLING("minecraft:spruce_sapling", (short) 23, 0.0, 0.0, false, false), + BIRCH_SAPLING("minecraft:birch_sapling", (short) 25, 0.0, 0.0, false, false), + JUNGLE_SAPLING("minecraft:jungle_sapling", (short) 27, 0.0, 0.0, false, false), + ACACIA_SAPLING("minecraft:acacia_sapling", (short) 29, 0.0, 0.0, false, false), + DARK_OAK_SAPLING("minecraft:dark_oak_sapling", (short) 31, 0.0, 0.0, false, false), + BEDROCK("minecraft:bedrock", (short) 33, 0.0, 3600000.0, false, true), + WATER("minecraft:water", (short) 34, 100.0, 100.0, false, false), + LAVA("minecraft:lava", (short) 50, 100.0, 100.0, false, false), + SAND("minecraft:sand", (short) 66, 0.5, 0.5, false, true), + RED_SAND("minecraft:red_sand", (short) 67, 0.5, 0.5, false, true), + GRAVEL("minecraft:gravel", (short) 68, 0.6, 0.6, false, true), + GOLD_ORE("minecraft:gold_ore", (short) 69, 3.0, 3.0, false, true), + IRON_ORE("minecraft:iron_ore", (short) 70, 3.0, 3.0, false, true), + COAL_ORE("minecraft:coal_ore", (short) 71, 3.0, 3.0, false, true), + OAK_LOG("minecraft:oak_log", (short) 73, 2.0, 2.0, false, true), + SPRUCE_LOG("minecraft:spruce_log", (short) 76, 2.0, 2.0, false, true), + BIRCH_LOG("minecraft:birch_log", (short) 79, 2.0, 2.0, false, true), + JUNGLE_LOG("minecraft:jungle_log", (short) 82, 2.0, 2.0, false, true), + ACACIA_LOG("minecraft:acacia_log", (short) 85, 2.0, 2.0, false, true), + DARK_OAK_LOG("minecraft:dark_oak_log", (short) 88, 2.0, 2.0, false, true), + STRIPPED_SPRUCE_LOG("minecraft:stripped_spruce_log", (short) 91, 2.0, 2.0, false, true), + STRIPPED_BIRCH_LOG("minecraft:stripped_birch_log", (short) 94, 2.0, 2.0, false, true), + STRIPPED_JUNGLE_LOG("minecraft:stripped_jungle_log", (short) 97, 2.0, 2.0, false, true), + STRIPPED_ACACIA_LOG("minecraft:stripped_acacia_log", (short) 100, 2.0, 2.0, false, true), + STRIPPED_DARK_OAK_LOG("minecraft:stripped_dark_oak_log", (short) 103, 2.0, 2.0, false, true), + STRIPPED_OAK_LOG("minecraft:stripped_oak_log", (short) 106, 2.0, 2.0, false, true), + OAK_WOOD("minecraft:oak_wood", (short) 109, 2.0, 2.0, false, true), + SPRUCE_WOOD("minecraft:spruce_wood", (short) 112, 2.0, 2.0, false, true), + BIRCH_WOOD("minecraft:birch_wood", (short) 115, 2.0, 2.0, false, true), + JUNGLE_WOOD("minecraft:jungle_wood", (short) 118, 2.0, 2.0, false, true), + ACACIA_WOOD("minecraft:acacia_wood", (short) 121, 2.0, 2.0, false, true), + DARK_OAK_WOOD("minecraft:dark_oak_wood", (short) 124, 2.0, 2.0, false, true), + STRIPPED_OAK_WOOD("minecraft:stripped_oak_wood", (short) 127, 2.0, 2.0, false, true), + STRIPPED_SPRUCE_WOOD("minecraft:stripped_spruce_wood", (short) 130, 2.0, 2.0, false, true), + STRIPPED_BIRCH_WOOD("minecraft:stripped_birch_wood", (short) 133, 2.0, 2.0, false, true), + STRIPPED_JUNGLE_WOOD("minecraft:stripped_jungle_wood", (short) 136, 2.0, 2.0, false, true), + STRIPPED_ACACIA_WOOD("minecraft:stripped_acacia_wood", (short) 139, 2.0, 2.0, false, true), + STRIPPED_DARK_OAK_WOOD("minecraft:stripped_dark_oak_wood", (short) 142, 2.0, 2.0, false, true), + OAK_LEAVES("minecraft:oak_leaves", (short) 157, 0.2, 0.2, false, true), + SPRUCE_LEAVES("minecraft:spruce_leaves", (short) 171, 0.2, 0.2, false, true), + BIRCH_LEAVES("minecraft:birch_leaves", (short) 185, 0.2, 0.2, false, true), + JUNGLE_LEAVES("minecraft:jungle_leaves", (short) 199, 0.2, 0.2, false, true), + ACACIA_LEAVES("minecraft:acacia_leaves", (short) 213, 0.2, 0.2, false, true), + DARK_OAK_LEAVES("minecraft:dark_oak_leaves", (short) 227, 0.2, 0.2, false, true), + SPONGE("minecraft:sponge", (short) 228, 0.6, 0.6, false, true), + WET_SPONGE("minecraft:wet_sponge", (short) 229, 0.6, 0.6, false, true), + GLASS("minecraft:glass", (short) 230, 0.3, 0.3, false, true), + LAPIS_ORE("minecraft:lapis_ore", (short) 231, 3.0, 3.0, false, true), + LAPIS_BLOCK("minecraft:lapis_block", (short) 232, 3.0, 3.0, false, true), + DISPENSER("minecraft:dispenser", (short) 234, 3.5, 3.5, false, true), + SANDSTONE("minecraft:sandstone", (short) 245, 0.8, 0.8, false, true), + CHISELED_SANDSTONE("minecraft:chiseled_sandstone", (short) 246, 0.8, 0.8, false, true), + CUT_SANDSTONE("minecraft:cut_sandstone", (short) 247, 0.8, 0.8, false, true), + NOTE_BLOCK("minecraft:note_block", (short) 249, 0.8, 0.8, false, true), + WHITE_BED("minecraft:white_bed", (short) 1051, 0.2, 0.2, false, true), + ORANGE_BED("minecraft:orange_bed", (short) 1067, 0.2, 0.2, false, true), + MAGENTA_BED("minecraft:magenta_bed", (short) 1083, 0.2, 0.2, false, true), + LIGHT_BLUE_BED("minecraft:light_blue_bed", (short) 1099, 0.2, 0.2, false, true), + YELLOW_BED("minecraft:yellow_bed", (short) 1115, 0.2, 0.2, false, true), + LIME_BED("minecraft:lime_bed", (short) 1131, 0.2, 0.2, false, true), + PINK_BED("minecraft:pink_bed", (short) 1147, 0.2, 0.2, false, true), + GRAY_BED("minecraft:gray_bed", (short) 1163, 0.2, 0.2, false, true), + LIGHT_GRAY_BED("minecraft:light_gray_bed", (short) 1179, 0.2, 0.2, false, true), + CYAN_BED("minecraft:cyan_bed", (short) 1195, 0.2, 0.2, false, true), + PURPLE_BED("minecraft:purple_bed", (short) 1211, 0.2, 0.2, false, true), + BLUE_BED("minecraft:blue_bed", (short) 1227, 0.2, 0.2, false, true), + BROWN_BED("minecraft:brown_bed", (short) 1243, 0.2, 0.2, false, true), + GREEN_BED("minecraft:green_bed", (short) 1259, 0.2, 0.2, false, true), + RED_BED("minecraft:red_bed", (short) 1275, 0.2, 0.2, false, true), + BLACK_BED("minecraft:black_bed", (short) 1291, 0.2, 0.2, false, true), + POWERED_RAIL("minecraft:powered_rail", (short) 1310, 0.7, 0.7, false, false), + DETECTOR_RAIL("minecraft:detector_rail", (short) 1322, 0.7, 0.7, false, false), + STICKY_PISTON("minecraft:sticky_piston", (short) 1334, 0.5, 0.5, false, true), + COBWEB("minecraft:cobweb", (short) 1340, 4.0, 4.0, false, false), + GRASS("minecraft:grass", (short) 1341, 0.0, 0.0, false, false), + FERN("minecraft:fern", (short) 1342, 0.0, 0.0, false, false), + DEAD_BUSH("minecraft:dead_bush", (short) 1343, 0.0, 0.0, false, false), + SEAGRASS("minecraft:seagrass", (short) 1344, 0.0, 0.0, false, true), + TALL_SEAGRASS("minecraft:tall_seagrass", (short) 1346, 0.0, 0.0, false, true), + PISTON("minecraft:piston", (short) 1353, 0.5, 0.5, false, true), + PISTON_HEAD("minecraft:piston_head", (short) 1361, 0.5, 0.5, false, true), + WHITE_WOOL("minecraft:white_wool", (short) 1383, 0.8, 0.8, false, true), + ORANGE_WOOL("minecraft:orange_wool", (short) 1384, 0.8, 0.8, false, true), + MAGENTA_WOOL("minecraft:magenta_wool", (short) 1385, 0.8, 0.8, false, true), + LIGHT_BLUE_WOOL("minecraft:light_blue_wool", (short) 1386, 0.8, 0.8, false, true), + YELLOW_WOOL("minecraft:yellow_wool", (short) 1387, 0.8, 0.8, false, true), + LIME_WOOL("minecraft:lime_wool", (short) 1388, 0.8, 0.8, false, true), + PINK_WOOL("minecraft:pink_wool", (short) 1389, 0.8, 0.8, false, true), + GRAY_WOOL("minecraft:gray_wool", (short) 1390, 0.8, 0.8, false, true), + LIGHT_GRAY_WOOL("minecraft:light_gray_wool", (short) 1391, 0.8, 0.8, false, true), + CYAN_WOOL("minecraft:cyan_wool", (short) 1392, 0.8, 0.8, false, true), + PURPLE_WOOL("minecraft:purple_wool", (short) 1393, 0.8, 0.8, false, true), + BLUE_WOOL("minecraft:blue_wool", (short) 1394, 0.8, 0.8, false, true), + BROWN_WOOL("minecraft:brown_wool", (short) 1395, 0.8, 0.8, false, true), + GREEN_WOOL("minecraft:green_wool", (short) 1396, 0.8, 0.8, false, true), + RED_WOOL("minecraft:red_wool", (short) 1397, 0.8, 0.8, false, true), + BLACK_WOOL("minecraft:black_wool", (short) 1398, 0.8, 0.8, false, true), + MOVING_PISTON("minecraft:moving_piston", (short) 1399, 0.0, -1.0, false, true), + DANDELION("minecraft:dandelion", (short) 1411, 0.0, 0.0, false, false), + POPPY("minecraft:poppy", (short) 1412, 0.0, 0.0, false, false), + BLUE_ORCHID("minecraft:blue_orchid", (short) 1413, 0.0, 0.0, false, false), + ALLIUM("minecraft:allium", (short) 1414, 0.0, 0.0, false, false), + AZURE_BLUET("minecraft:azure_bluet", (short) 1415, 0.0, 0.0, false, false), + RED_TULIP("minecraft:red_tulip", (short) 1416, 0.0, 0.0, false, false), + ORANGE_TULIP("minecraft:orange_tulip", (short) 1417, 0.0, 0.0, false, false), + WHITE_TULIP("minecraft:white_tulip", (short) 1418, 0.0, 0.0, false, false), + PINK_TULIP("minecraft:pink_tulip", (short) 1419, 0.0, 0.0, false, false), + OXEYE_DAISY("minecraft:oxeye_daisy", (short) 1420, 0.0, 0.0, false, false), + CORNFLOWER("minecraft:cornflower", (short) 1421, 0.0, 0.0, false, false), + WITHER_ROSE("minecraft:wither_rose", (short) 1422, 0.0, 0.0, false, false), + LILY_OF_THE_VALLEY("minecraft:lily_of_the_valley", (short) 1423, 0.0, 0.0, false, false), + BROWN_MUSHROOM("minecraft:brown_mushroom", (short) 1424, 0.0, 0.0, false, false), + RED_MUSHROOM("minecraft:red_mushroom", (short) 1425, 0.0, 0.0, false, false), + GOLD_BLOCK("minecraft:gold_block", (short) 1426, 3.0, 6.0, false, true), + IRON_BLOCK("minecraft:iron_block", (short) 1427, 5.0, 6.0, false, true), + BRICKS("minecraft:bricks", (short) 1428, 2.0, 6.0, false, true), + TNT("minecraft:tnt", (short) 1430, 0.0, 0.0, false, true), + BOOKSHELF("minecraft:bookshelf", (short) 1431, 1.5, 1.5, false, true), + MOSSY_COBBLESTONE("minecraft:mossy_cobblestone", (short) 1432, 2.0, 6.0, false, true), + OBSIDIAN("minecraft:obsidian", (short) 1433, 50.0, 1200.0, false, true), + TORCH("minecraft:torch", (short) 1434, 0.0, 0.0, false, false), + WALL_TORCH("minecraft:wall_torch", (short) 1435, 0.0, 0.0, false, false), + FIRE("minecraft:fire", (short) 1470, 0.0, 0.0, false, false), + SPAWNER("minecraft:spawner", (short) 1951, 5.0, 5.0, false, true), + OAK_STAIRS("minecraft:oak_stairs", (short) 1963, 2.0, 3.0, false, true), + CHEST("minecraft:chest", (short) 2033, 2.5, 2.5, false, true), + REDSTONE_WIRE("minecraft:redstone_wire", (short) 3216, 0.0, 0.0, false, false), + DIAMOND_ORE("minecraft:diamond_ore", (short) 3352, 3.0, 3.0, false, true), + DIAMOND_BLOCK("minecraft:diamond_block", (short) 3353, 5.0, 6.0, false, true), + CRAFTING_TABLE("minecraft:crafting_table", (short) 3354, 2.5, 2.5, false, true), + WHEAT("minecraft:wheat", (short) 3355, 0.0, 0.0, false, false), + FARMLAND("minecraft:farmland", (short) 3363, 0.6, 0.6, false, true), + FURNACE("minecraft:furnace", (short) 3372, 3.5, 3.5, false, true), + OAK_SIGN("minecraft:oak_sign", (short) 3380, 1.0, 1.0, false, false), + SPRUCE_SIGN("minecraft:spruce_sign", (short) 3412, 1.0, 1.0, false, false), + BIRCH_SIGN("minecraft:birch_sign", (short) 3444, 1.0, 1.0, false, false), + ACACIA_SIGN("minecraft:acacia_sign", (short) 3476, 1.0, 1.0, false, false), + JUNGLE_SIGN("minecraft:jungle_sign", (short) 3508, 1.0, 1.0, false, false), + DARK_OAK_SIGN("minecraft:dark_oak_sign", (short) 3540, 1.0, 1.0, false, false), + OAK_DOOR("minecraft:oak_door", (short) 3582, 3.0, 3.0, false, true), + LADDER("minecraft:ladder", (short) 3636, 0.4, 0.4, false, true), + RAIL("minecraft:rail", (short) 3643, 0.7, 0.7, false, false), + COBBLESTONE_STAIRS("minecraft:cobblestone_stairs", (short) 3664, 2.0, 6.0, false, true), + OAK_WALL_SIGN("minecraft:oak_wall_sign", (short) 3734, 1.0, 1.0, false, false), + SPRUCE_WALL_SIGN("minecraft:spruce_wall_sign", (short) 3742, 1.0, 1.0, false, false), + BIRCH_WALL_SIGN("minecraft:birch_wall_sign", (short) 3750, 1.0, 1.0, false, false), + ACACIA_WALL_SIGN("minecraft:acacia_wall_sign", (short) 3758, 1.0, 1.0, false, false), + JUNGLE_WALL_SIGN("minecraft:jungle_wall_sign", (short) 3766, 1.0, 1.0, false, false), + DARK_OAK_WALL_SIGN("minecraft:dark_oak_wall_sign", (short) 3774, 1.0, 1.0, false, false), + LEVER("minecraft:lever", (short) 3790, 0.5, 0.5, false, false), + STONE_PRESSURE_PLATE("minecraft:stone_pressure_plate", (short) 3806, 0.5, 0.5, false, false), + IRON_DOOR("minecraft:iron_door", (short) 3818, 5.0, 5.0, false, true), + OAK_PRESSURE_PLATE("minecraft:oak_pressure_plate", (short) 3872, 0.5, 0.5, false, false), + SPRUCE_PRESSURE_PLATE("minecraft:spruce_pressure_plate", (short) 3874, 0.5, 0.5, false, false), + BIRCH_PRESSURE_PLATE("minecraft:birch_pressure_plate", (short) 3876, 0.5, 0.5, false, false), + JUNGLE_PRESSURE_PLATE("minecraft:jungle_pressure_plate", (short) 3878, 0.5, 0.5, false, false), + ACACIA_PRESSURE_PLATE("minecraft:acacia_pressure_plate", (short) 3880, 0.5, 0.5, false, false), + DARK_OAK_PRESSURE_PLATE("minecraft:dark_oak_pressure_plate", (short) 3882, 0.5, 0.5, false, false), + REDSTONE_ORE("minecraft:redstone_ore", (short) 3884, 3.0, 3.0, false, true), + REDSTONE_TORCH("minecraft:redstone_torch", (short) 3885, 0.0, 0.0, false, false), + REDSTONE_WALL_TORCH("minecraft:redstone_wall_torch", (short) 3887, 0.0, 0.0, false, false), + STONE_BUTTON("minecraft:stone_button", (short) 3904, 0.5, 0.5, false, false), + SNOW("minecraft:snow", (short) 3919, 0.1, 0.1, false, true), + ICE("minecraft:ice", (short) 3927, 0.5, 0.5, false, true), + SNOW_BLOCK("minecraft:snow_block", (short) 3928, 0.2, 0.2, false, true), + CACTUS("minecraft:cactus", (short) 3929, 0.4, 0.4, false, true), + CLAY("minecraft:clay", (short) 3945, 0.6, 0.6, false, true), + SUGAR_CANE("minecraft:sugar_cane", (short) 3946, 0.0, 0.0, false, false), + JUKEBOX("minecraft:jukebox", (short) 3963, 2.0, 6.0, false, true), + OAK_FENCE("minecraft:oak_fence", (short) 3995, 2.0, 3.0, false, true), + PUMPKIN("minecraft:pumpkin", (short) 3996, 1.0, 1.0, false, true), + NETHERRACK("minecraft:netherrack", (short) 3997, 0.4, 0.4, false, true), + SOUL_SAND("minecraft:soul_sand", (short) 3998, 0.5, 0.5, false, true), + GLOWSTONE("minecraft:glowstone", (short) 3999, 0.3, 0.3, false, true), + NETHER_PORTAL("minecraft:nether_portal", (short) 4000, 0.0, -1.0, false, false), + CARVED_PUMPKIN("minecraft:carved_pumpkin", (short) 4002, 1.0, 1.0, false, true), + JACK_O_LANTERN("minecraft:jack_o_lantern", (short) 4006, 1.0, 1.0, false, true), + CAKE("minecraft:cake", (short) 4010, 0.5, 0.5, false, false), + REPEATER("minecraft:repeater", (short) 4020, 0.0, 0.0, false, false), + WHITE_STAINED_GLASS("minecraft:white_stained_glass", (short) 4081, 0.3, 0.3, false, true), + ORANGE_STAINED_GLASS("minecraft:orange_stained_glass", (short) 4082, 0.3, 0.3, false, true), + MAGENTA_STAINED_GLASS("minecraft:magenta_stained_glass", (short) 4083, 0.3, 0.3, false, true), + LIGHT_BLUE_STAINED_GLASS("minecraft:light_blue_stained_glass", (short) 4084, 0.3, 0.3, false, true), + YELLOW_STAINED_GLASS("minecraft:yellow_stained_glass", (short) 4085, 0.3, 0.3, false, true), + LIME_STAINED_GLASS("minecraft:lime_stained_glass", (short) 4086, 0.3, 0.3, false, true), + PINK_STAINED_GLASS("minecraft:pink_stained_glass", (short) 4087, 0.3, 0.3, false, true), + GRAY_STAINED_GLASS("minecraft:gray_stained_glass", (short) 4088, 0.3, 0.3, false, true), + LIGHT_GRAY_STAINED_GLASS("minecraft:light_gray_stained_glass", (short) 4089, 0.3, 0.3, false, true), + CYAN_STAINED_GLASS("minecraft:cyan_stained_glass", (short) 4090, 0.3, 0.3, false, true), + PURPLE_STAINED_GLASS("minecraft:purple_stained_glass", (short) 4091, 0.3, 0.3, false, true), + BLUE_STAINED_GLASS("minecraft:blue_stained_glass", (short) 4092, 0.3, 0.3, false, true), + BROWN_STAINED_GLASS("minecraft:brown_stained_glass", (short) 4093, 0.3, 0.3, false, true), + GREEN_STAINED_GLASS("minecraft:green_stained_glass", (short) 4094, 0.3, 0.3, false, true), + RED_STAINED_GLASS("minecraft:red_stained_glass", (short) 4095, 0.3, 0.3, false, true), + BLACK_STAINED_GLASS("minecraft:black_stained_glass", (short) 4096, 0.3, 0.3, false, true), + OAK_TRAPDOOR("minecraft:oak_trapdoor", (short) 4112, 3.0, 3.0, false, true), + SPRUCE_TRAPDOOR("minecraft:spruce_trapdoor", (short) 4176, 3.0, 3.0, false, true), + BIRCH_TRAPDOOR("minecraft:birch_trapdoor", (short) 4240, 3.0, 3.0, false, true), + JUNGLE_TRAPDOOR("minecraft:jungle_trapdoor", (short) 4304, 3.0, 3.0, false, true), + ACACIA_TRAPDOOR("minecraft:acacia_trapdoor", (short) 4368, 3.0, 3.0, false, true), + DARK_OAK_TRAPDOOR("minecraft:dark_oak_trapdoor", (short) 4432, 3.0, 3.0, false, true), + STONE_BRICKS("minecraft:stone_bricks", (short) 4481, 1.5, 6.0, false, true), + MOSSY_STONE_BRICKS("minecraft:mossy_stone_bricks", (short) 4482, 1.5, 6.0, false, true), + CRACKED_STONE_BRICKS("minecraft:cracked_stone_bricks", (short) 4483, 1.5, 6.0, false, true), + CHISELED_STONE_BRICKS("minecraft:chiseled_stone_bricks", (short) 4484, 1.5, 6.0, false, true), + INFESTED_STONE("minecraft:infested_stone", (short) 4485, 0.0, 0.75, false, true), + INFESTED_COBBLESTONE("minecraft:infested_cobblestone", (short) 4486, 0.0, 0.75, false, true), + INFESTED_STONE_BRICKS("minecraft:infested_stone_bricks", (short) 4487, 0.0, 0.75, false, true), + INFESTED_MOSSY_STONE_BRICKS("minecraft:infested_mossy_stone_bricks", (short) 4488, 0.0, 0.75, false, true), + INFESTED_CRACKED_STONE_BRICKS("minecraft:infested_cracked_stone_bricks", (short) 4489, 0.0, 0.75, false, true), + INFESTED_CHISELED_STONE_BRICKS("minecraft:infested_chiseled_stone_bricks", (short) 4490, 0.0, 0.75, false, true), + BROWN_MUSHROOM_BLOCK("minecraft:brown_mushroom_block", (short) 4491, 0.2, 0.2, false, true), + RED_MUSHROOM_BLOCK("minecraft:red_mushroom_block", (short) 4555, 0.2, 0.2, false, true), + MUSHROOM_STEM("minecraft:mushroom_stem", (short) 4619, 0.2, 0.2, false, true), + IRON_BARS("minecraft:iron_bars", (short) 4714, 5.0, 6.0, false, true), + GLASS_PANE("minecraft:glass_pane", (short) 4746, 0.3, 0.3, false, true), + MELON("minecraft:melon", (short) 4747, 1.0, 1.0, false, true), + ATTACHED_PUMPKIN_STEM("minecraft:attached_pumpkin_stem", (short) 4748, 0.0, 0.0, false, false), + ATTACHED_MELON_STEM("minecraft:attached_melon_stem", (short) 4752, 0.0, 0.0, false, false), + PUMPKIN_STEM("minecraft:pumpkin_stem", (short) 4756, 0.0, 0.0, false, false), + MELON_STEM("minecraft:melon_stem", (short) 4764, 0.0, 0.0, false, false), + VINE("minecraft:vine", (short) 4803, 0.2, 0.2, false, false), + OAK_FENCE_GATE("minecraft:oak_fence_gate", (short) 4811, 2.0, 3.0, false, true), + BRICK_STAIRS("minecraft:brick_stairs", (short) 4847, 2.0, 6.0, false, true), + STONE_BRICK_STAIRS("minecraft:stone_brick_stairs", (short) 4927, 1.5, 6.0, false, true), + MYCELIUM("minecraft:mycelium", (short) 4997, 0.6, 0.6, false, true), + LILY_PAD("minecraft:lily_pad", (short) 4998, 0.0, 0.0, false, true), + NETHER_BRICKS("minecraft:nether_bricks", (short) 4999, 2.0, 6.0, false, true), + NETHER_BRICK_FENCE("minecraft:nether_brick_fence", (short) 5031, 2.0, 6.0, false, true), + NETHER_BRICK_STAIRS("minecraft:nether_brick_stairs", (short) 5043, 2.0, 6.0, false, true), + NETHER_WART("minecraft:nether_wart", (short) 5112, 0.0, 0.0, false, false), + ENCHANTING_TABLE("minecraft:enchanting_table", (short) 5116, 5.0, 1200.0, false, true), + BREWING_STAND("minecraft:brewing_stand", (short) 5124, 0.5, 0.5, false, true), + CAULDRON("minecraft:cauldron", (short) 5125, 2.0, 2.0, false, true), + END_PORTAL("minecraft:end_portal", (short) 5129, 0.0, 3600000.0, false, false), + END_PORTAL_FRAME("minecraft:end_portal_frame", (short) 5134, 0.0, 3600000.0, false, true), + END_STONE("minecraft:end_stone", (short) 5138, 3.0, 9.0, false, true), + DRAGON_EGG("minecraft:dragon_egg", (short) 5139, 3.0, 9.0, false, true), + REDSTONE_LAMP("minecraft:redstone_lamp", (short) 5141, 0.3, 0.3, false, true), + COCOA("minecraft:cocoa", (short) 5142, 0.2, 3.0, false, true), + SANDSTONE_STAIRS("minecraft:sandstone_stairs", (short) 5165, 0.8, 0.8, false, true), + EMERALD_ORE("minecraft:emerald_ore", (short) 5234, 3.0, 3.0, false, true), + ENDER_CHEST("minecraft:ender_chest", (short) 5236, 22.5, 600.0, false, true), + TRIPWIRE_HOOK("minecraft:tripwire_hook", (short) 5252, 0.0, 0.0, false, false), + TRIPWIRE("minecraft:tripwire", (short) 5386, 0.0, 0.0, false, false), + EMERALD_BLOCK("minecraft:emerald_block", (short) 5387, 5.0, 6.0, false, true), + SPRUCE_STAIRS("minecraft:spruce_stairs", (short) 5399, 2.0, 3.0, false, true), + BIRCH_STAIRS("minecraft:birch_stairs", (short) 5479, 2.0, 3.0, false, true), + JUNGLE_STAIRS("minecraft:jungle_stairs", (short) 5559, 2.0, 3.0, false, true), + COMMAND_BLOCK("minecraft:command_block", (short) 5634, 0.0, 3600000.0, false, true), + BEACON("minecraft:beacon", (short) 5640, 3.0, 3.0, false, true), + COBBLESTONE_WALL("minecraft:cobblestone_wall", (short) 5700, 2.0, 6.0, false, true), + MOSSY_COBBLESTONE_WALL("minecraft:mossy_cobblestone_wall", (short) 5764, 2.0, 6.0, false, true), + FLOWER_POT("minecraft:flower_pot", (short) 5769, 0.0, 0.0, false, true), + POTTED_OAK_SAPLING("minecraft:potted_oak_sapling", (short) 5770, 0.0, 0.0, false, true), + POTTED_SPRUCE_SAPLING("minecraft:potted_spruce_sapling", (short) 5771, 0.0, 0.0, false, true), + POTTED_BIRCH_SAPLING("minecraft:potted_birch_sapling", (short) 5772, 0.0, 0.0, false, true), + POTTED_JUNGLE_SAPLING("minecraft:potted_jungle_sapling", (short) 5773, 0.0, 0.0, false, true), + POTTED_ACACIA_SAPLING("minecraft:potted_acacia_sapling", (short) 5774, 0.0, 0.0, false, true), + POTTED_DARK_OAK_SAPLING("minecraft:potted_dark_oak_sapling", (short) 5775, 0.0, 0.0, false, true), + POTTED_FERN("minecraft:potted_fern", (short) 5776, 0.0, 0.0, false, true), + POTTED_DANDELION("minecraft:potted_dandelion", (short) 5777, 0.0, 0.0, false, false), + POTTED_POPPY("minecraft:potted_poppy", (short) 5778, 0.0, 0.0, false, true), + POTTED_BLUE_ORCHID("minecraft:potted_blue_orchid", (short) 5779, 0.0, 0.0, false, true), + POTTED_ALLIUM("minecraft:potted_allium", (short) 5780, 0.0, 0.0, false, true), + POTTED_AZURE_BLUET("minecraft:potted_azure_bluet", (short) 5781, 0.0, 0.0, false, true), + POTTED_RED_TULIP("minecraft:potted_red_tulip", (short) 5782, 0.0, 0.0, false, true), + POTTED_ORANGE_TULIP("minecraft:potted_orange_tulip", (short) 5783, 0.0, 0.0, false, true), + POTTED_WHITE_TULIP("minecraft:potted_white_tulip", (short) 5784, 0.0, 0.0, false, true), + POTTED_PINK_TULIP("minecraft:potted_pink_tulip", (short) 5785, 0.0, 0.0, false, true), + POTTED_OXEYE_DAISY("minecraft:potted_oxeye_daisy", (short) 5786, 0.0, 0.0, false, true), + POTTED_CORNFLOWER("minecraft:potted_cornflower", (short) 5787, 0.0, 0.0, false, true), + POTTED_LILY_OF_THE_VALLEY("minecraft:potted_lily_of_the_valley", (short) 5788, 0.0, 0.0, false, true), + POTTED_WITHER_ROSE("minecraft:potted_wither_rose", (short) 5789, 0.0, 0.0, false, true), + POTTED_RED_MUSHROOM("minecraft:potted_red_mushroom", (short) 5790, 0.0, 0.0, false, true), + POTTED_BROWN_MUSHROOM("minecraft:potted_brown_mushroom", (short) 5791, 0.0, 0.0, false, true), + POTTED_DEAD_BUSH("minecraft:potted_dead_bush", (short) 5792, 0.0, 0.0, false, true), + POTTED_CACTUS("minecraft:potted_cactus", (short) 5793, 0.0, 0.0, false, true), + CARROTS("minecraft:carrots", (short) 5794, 0.0, 0.0, false, false), + POTATOES("minecraft:potatoes", (short) 5802, 0.0, 0.0, false, false), + OAK_BUTTON("minecraft:oak_button", (short) 5819, 0.5, 0.5, false, false), + SPRUCE_BUTTON("minecraft:spruce_button", (short) 5843, 0.5, 0.5, false, false), + BIRCH_BUTTON("minecraft:birch_button", (short) 5867, 0.5, 0.5, false, false), + JUNGLE_BUTTON("minecraft:jungle_button", (short) 5891, 0.5, 0.5, false, false), + ACACIA_BUTTON("minecraft:acacia_button", (short) 5915, 0.5, 0.5, false, false), + DARK_OAK_BUTTON("minecraft:dark_oak_button", (short) 5939, 0.5, 0.5, false, false), + SKELETON_SKULL("minecraft:skeleton_skull", (short) 5954, 1.0, 1.0, false, true), + SKELETON_WALL_SKULL("minecraft:skeleton_wall_skull", (short) 5970, 1.0, 1.0, false, true), + WITHER_SKELETON_SKULL("minecraft:wither_skeleton_skull", (short) 5974, 1.0, 1.0, false, true), + WITHER_SKELETON_WALL_SKULL("minecraft:wither_skeleton_wall_skull", (short) 5990, 1.0, 1.0, false, true), + ZOMBIE_HEAD("minecraft:zombie_head", (short) 5994, 1.0, 1.0, false, true), + ZOMBIE_WALL_HEAD("minecraft:zombie_wall_head", (short) 6010, 1.0, 1.0, false, true), + PLAYER_HEAD("minecraft:player_head", (short) 6014, 1.0, 1.0, false, true), + PLAYER_WALL_HEAD("minecraft:player_wall_head", (short) 6030, 1.0, 1.0, false, true), + CREEPER_HEAD("minecraft:creeper_head", (short) 6034, 1.0, 1.0, false, true), + CREEPER_WALL_HEAD("minecraft:creeper_wall_head", (short) 6050, 1.0, 1.0, false, true), + DRAGON_HEAD("minecraft:dragon_head", (short) 6054, 1.0, 1.0, false, true), + DRAGON_WALL_HEAD("minecraft:dragon_wall_head", (short) 6070, 1.0, 1.0, false, true), + ANVIL("minecraft:anvil", (short) 6074, 5.0, 1200.0, false, true), + CHIPPED_ANVIL("minecraft:chipped_anvil", (short) 6078, 5.0, 1200.0, false, true), + DAMAGED_ANVIL("minecraft:damaged_anvil", (short) 6082, 5.0, 1200.0, false, true), + TRAPPED_CHEST("minecraft:trapped_chest", (short) 6087, 2.5, 2.5, false, true), + LIGHT_WEIGHTED_PRESSURE_PLATE("minecraft:light_weighted_pressure_plate", (short) 6110, 0.5, 0.5, false, false), + HEAVY_WEIGHTED_PRESSURE_PLATE("minecraft:heavy_weighted_pressure_plate", (short) 6126, 0.5, 0.5, false, false), + COMPARATOR("minecraft:comparator", (short) 6143, 0.0, 0.0, false, false), + DAYLIGHT_DETECTOR("minecraft:daylight_detector", (short) 6174, 0.2, 0.2, false, true), + REDSTONE_BLOCK("minecraft:redstone_block", (short) 6190, 5.0, 6.0, false, true), + NETHER_QUARTZ_ORE("minecraft:nether_quartz_ore", (short) 6191, 3.0, 3.0, false, true), + HOPPER("minecraft:hopper", (short) 6192, 3.0, 4.8, false, true), + QUARTZ_BLOCK("minecraft:quartz_block", (short) 6202, 0.8, 0.8, false, true), + CHISELED_QUARTZ_BLOCK("minecraft:chiseled_quartz_block", (short) 6203, 0.8, 0.8, false, true), + QUARTZ_PILLAR("minecraft:quartz_pillar", (short) 6205, 0.8, 0.8, false, true), + QUARTZ_STAIRS("minecraft:quartz_stairs", (short) 6218, 0.8, 0.8, false, true), + ACTIVATOR_RAIL("minecraft:activator_rail", (short) 6293, 0.7, 0.7, false, false), + DROPPER("minecraft:dropper", (short) 6300, 3.5, 3.5, false, true), + WHITE_TERRACOTTA("minecraft:white_terracotta", (short) 6311, 1.25, 4.2, false, true), + ORANGE_TERRACOTTA("minecraft:orange_terracotta", (short) 6312, 1.25, 4.2, false, true), + MAGENTA_TERRACOTTA("minecraft:magenta_terracotta", (short) 6313, 1.25, 4.2, false, true), + LIGHT_BLUE_TERRACOTTA("minecraft:light_blue_terracotta", (short) 6314, 1.25, 4.2, false, true), + YELLOW_TERRACOTTA("minecraft:yellow_terracotta", (short) 6315, 1.25, 4.2, false, true), + LIME_TERRACOTTA("minecraft:lime_terracotta", (short) 6316, 1.25, 4.2, false, true), + PINK_TERRACOTTA("minecraft:pink_terracotta", (short) 6317, 1.25, 4.2, false, true), + GRAY_TERRACOTTA("minecraft:gray_terracotta", (short) 6318, 1.25, 4.2, false, true), + LIGHT_GRAY_TERRACOTTA("minecraft:light_gray_terracotta", (short) 6319, 1.25, 4.2, false, true), + CYAN_TERRACOTTA("minecraft:cyan_terracotta", (short) 6320, 1.25, 4.2, false, true), + PURPLE_TERRACOTTA("minecraft:purple_terracotta", (short) 6321, 1.25, 4.2, false, true), + BLUE_TERRACOTTA("minecraft:blue_terracotta", (short) 6322, 1.25, 4.2, false, true), + BROWN_TERRACOTTA("minecraft:brown_terracotta", (short) 6323, 1.25, 4.2, false, true), + GREEN_TERRACOTTA("minecraft:green_terracotta", (short) 6324, 1.25, 4.2, false, true), + RED_TERRACOTTA("minecraft:red_terracotta", (short) 6325, 1.25, 4.2, false, true), + BLACK_TERRACOTTA("minecraft:black_terracotta", (short) 6326, 1.25, 4.2, false, true), + WHITE_STAINED_GLASS_PANE("minecraft:white_stained_glass_pane", (short) 6358, 0.3, 0.3, false, true), + ORANGE_STAINED_GLASS_PANE("minecraft:orange_stained_glass_pane", (short) 6390, 0.3, 0.3, false, true), + MAGENTA_STAINED_GLASS_PANE("minecraft:magenta_stained_glass_pane", (short) 6422, 0.3, 0.3, false, true), + LIGHT_BLUE_STAINED_GLASS_PANE("minecraft:light_blue_stained_glass_pane", (short) 6454, 0.3, 0.3, false, true), + YELLOW_STAINED_GLASS_PANE("minecraft:yellow_stained_glass_pane", (short) 6486, 0.3, 0.3, false, true), + LIME_STAINED_GLASS_PANE("minecraft:lime_stained_glass_pane", (short) 6518, 0.3, 0.3, false, true), + PINK_STAINED_GLASS_PANE("minecraft:pink_stained_glass_pane", (short) 6550, 0.3, 0.3, false, true), + GRAY_STAINED_GLASS_PANE("minecraft:gray_stained_glass_pane", (short) 6582, 0.3, 0.3, false, true), + LIGHT_GRAY_STAINED_GLASS_PANE("minecraft:light_gray_stained_glass_pane", (short) 6614, 0.3, 0.3, false, true), + CYAN_STAINED_GLASS_PANE("minecraft:cyan_stained_glass_pane", (short) 6646, 0.3, 0.3, false, true), + PURPLE_STAINED_GLASS_PANE("minecraft:purple_stained_glass_pane", (short) 6678, 0.3, 0.3, false, true), + BLUE_STAINED_GLASS_PANE("minecraft:blue_stained_glass_pane", (short) 6710, 0.3, 0.3, false, true), + BROWN_STAINED_GLASS_PANE("minecraft:brown_stained_glass_pane", (short) 6742, 0.3, 0.3, false, true), + GREEN_STAINED_GLASS_PANE("minecraft:green_stained_glass_pane", (short) 6774, 0.3, 0.3, false, true), + RED_STAINED_GLASS_PANE("minecraft:red_stained_glass_pane", (short) 6806, 0.3, 0.3, false, true), + BLACK_STAINED_GLASS_PANE("minecraft:black_stained_glass_pane", (short) 6838, 0.3, 0.3, false, true), + ACACIA_STAIRS("minecraft:acacia_stairs", (short) 6850, 2.0, 3.0, false, true), + DARK_OAK_STAIRS("minecraft:dark_oak_stairs", (short) 6930, 2.0, 3.0, false, true), + SLIME_BLOCK("minecraft:slime_block", (short) 6999, 0.0, 0.0, false, true), + BARRIER("minecraft:barrier", (short) 7000, 0.0, 3600000.75, false, true), + IRON_TRAPDOOR("minecraft:iron_trapdoor", (short) 7016, 5.0, 5.0, false, true), + PRISMARINE("minecraft:prismarine", (short) 7065, 1.5, 6.0, false, true), + PRISMARINE_BRICKS("minecraft:prismarine_bricks", (short) 7066, 1.5, 6.0, false, true), + DARK_PRISMARINE("minecraft:dark_prismarine", (short) 7067, 1.5, 6.0, false, true), + PRISMARINE_STAIRS("minecraft:prismarine_stairs", (short) 7079, 1.5, 6.0, false, true), + PRISMARINE_BRICK_STAIRS("minecraft:prismarine_brick_stairs", (short) 7159, 1.5, 6.0, false, true), + DARK_PRISMARINE_STAIRS("minecraft:dark_prismarine_stairs", (short) 7239, 1.5, 6.0, false, true), + PRISMARINE_SLAB("minecraft:prismarine_slab", (short) 7311, 1.5, 6.0, false, true), + PRISMARINE_BRICK_SLAB("minecraft:prismarine_brick_slab", (short) 7317, 1.5, 6.0, false, true), + DARK_PRISMARINE_SLAB("minecraft:dark_prismarine_slab", (short) 7323, 1.5, 6.0, false, true), + SEA_LANTERN("minecraft:sea_lantern", (short) 7326, 0.3, 0.3, false, true), + HAY_BLOCK("minecraft:hay_block", (short) 7328, 0.5, 0.5, false, true), + WHITE_CARPET("minecraft:white_carpet", (short) 7330, 0.1, 0.1, false, true), + ORANGE_CARPET("minecraft:orange_carpet", (short) 7331, 0.1, 0.1, false, true), + MAGENTA_CARPET("minecraft:magenta_carpet", (short) 7332, 0.1, 0.1, false, true), + LIGHT_BLUE_CARPET("minecraft:light_blue_carpet", (short) 7333, 0.1, 0.1, false, true), + YELLOW_CARPET("minecraft:yellow_carpet", (short) 7334, 0.1, 0.1, false, true), + LIME_CARPET("minecraft:lime_carpet", (short) 7335, 0.1, 0.1, false, true), + PINK_CARPET("minecraft:pink_carpet", (short) 7336, 0.1, 0.1, false, true), + GRAY_CARPET("minecraft:gray_carpet", (short) 7337, 0.1, 0.1, false, true), + LIGHT_GRAY_CARPET("minecraft:light_gray_carpet", (short) 7338, 0.1, 0.1, false, true), + CYAN_CARPET("minecraft:cyan_carpet", (short) 7339, 0.1, 0.1, false, true), + PURPLE_CARPET("minecraft:purple_carpet", (short) 7340, 0.1, 0.1, false, true), + BLUE_CARPET("minecraft:blue_carpet", (short) 7341, 0.1, 0.1, false, true), + BROWN_CARPET("minecraft:brown_carpet", (short) 7342, 0.1, 0.1, false, true), + GREEN_CARPET("minecraft:green_carpet", (short) 7343, 0.1, 0.1, false, true), + RED_CARPET("minecraft:red_carpet", (short) 7344, 0.1, 0.1, false, true), + BLACK_CARPET("minecraft:black_carpet", (short) 7345, 0.1, 0.1, false, true), + TERRACOTTA("minecraft:terracotta", (short) 7346, 1.25, 4.2, false, true), + COAL_BLOCK("minecraft:coal_block", (short) 7347, 5.0, 6.0, false, true), + PACKED_ICE("minecraft:packed_ice", (short) 7348, 0.5, 0.5, false, true), + SUNFLOWER("minecraft:sunflower", (short) 7350, 0.0, 0.0, false, false), + LILAC("minecraft:lilac", (short) 7352, 0.0, 0.0, false, false), + ROSE_BUSH("minecraft:rose_bush", (short) 7354, 0.0, 0.0, false, false), + PEONY("minecraft:peony", (short) 7356, 0.0, 0.0, false, true), + TALL_GRASS("minecraft:tall_grass", (short) 7358, 0.0, 0.0, false, false), + LARGE_FERN("minecraft:large_fern", (short) 7360, 0.0, 0.0, false, false), + WHITE_BANNER("minecraft:white_banner", (short) 7361, 1.0, 1.0, false, false), + ORANGE_BANNER("minecraft:orange_banner", (short) 7377, 1.0, 1.0, false, false), + MAGENTA_BANNER("minecraft:magenta_banner", (short) 7393, 1.0, 1.0, false, false), + LIGHT_BLUE_BANNER("minecraft:light_blue_banner", (short) 7409, 1.0, 1.0, false, false), + YELLOW_BANNER("minecraft:yellow_banner", (short) 7425, 1.0, 1.0, false, false), + LIME_BANNER("minecraft:lime_banner", (short) 7441, 1.0, 1.0, false, false), + PINK_BANNER("minecraft:pink_banner", (short) 7457, 1.0, 1.0, false, false), + GRAY_BANNER("minecraft:gray_banner", (short) 7473, 1.0, 1.0, false, false), + LIGHT_GRAY_BANNER("minecraft:light_gray_banner", (short) 7489, 1.0, 1.0, false, false), + CYAN_BANNER("minecraft:cyan_banner", (short) 7505, 1.0, 1.0, false, false), + PURPLE_BANNER("minecraft:purple_banner", (short) 7521, 1.0, 1.0, false, false), + BLUE_BANNER("minecraft:blue_banner", (short) 7537, 1.0, 1.0, false, false), + BROWN_BANNER("minecraft:brown_banner", (short) 7553, 1.0, 1.0, false, false), + GREEN_BANNER("minecraft:green_banner", (short) 7569, 1.0, 1.0, false, false), + RED_BANNER("minecraft:red_banner", (short) 7585, 1.0, 1.0, false, false), + BLACK_BANNER("minecraft:black_banner", (short) 7601, 1.0, 1.0, false, false), + WHITE_WALL_BANNER("minecraft:white_wall_banner", (short) 7617, 1.0, 1.0, false, false), + ORANGE_WALL_BANNER("minecraft:orange_wall_banner", (short) 7621, 1.0, 1.0, false, false), + MAGENTA_WALL_BANNER("minecraft:magenta_wall_banner", (short) 7625, 1.0, 1.0, false, false), + LIGHT_BLUE_WALL_BANNER("minecraft:light_blue_wall_banner", (short) 7629, 1.0, 1.0, false, false), + YELLOW_WALL_BANNER("minecraft:yellow_wall_banner", (short) 7633, 1.0, 1.0, false, false), + LIME_WALL_BANNER("minecraft:lime_wall_banner", (short) 7637, 1.0, 1.0, false, false), + PINK_WALL_BANNER("minecraft:pink_wall_banner", (short) 7641, 1.0, 1.0, false, false), + GRAY_WALL_BANNER("minecraft:gray_wall_banner", (short) 7645, 1.0, 1.0, false, false), + LIGHT_GRAY_WALL_BANNER("minecraft:light_gray_wall_banner", (short) 7649, 1.0, 1.0, false, false), + CYAN_WALL_BANNER("minecraft:cyan_wall_banner", (short) 7653, 1.0, 1.0, false, false), + PURPLE_WALL_BANNER("minecraft:purple_wall_banner", (short) 7657, 1.0, 1.0, false, false), + BLUE_WALL_BANNER("minecraft:blue_wall_banner", (short) 7661, 1.0, 1.0, false, false), + BROWN_WALL_BANNER("minecraft:brown_wall_banner", (short) 7665, 1.0, 1.0, false, false), + GREEN_WALL_BANNER("minecraft:green_wall_banner", (short) 7669, 1.0, 1.0, false, false), + RED_WALL_BANNER("minecraft:red_wall_banner", (short) 7673, 1.0, 1.0, false, false), + BLACK_WALL_BANNER("minecraft:black_wall_banner", (short) 7677, 1.0, 1.0, false, false), + RED_SANDSTONE("minecraft:red_sandstone", (short) 7681, 0.8, 0.8, false, true), + CHISELED_RED_SANDSTONE("minecraft:chiseled_red_sandstone", (short) 7682, 0.8, 0.8, false, true), + CUT_RED_SANDSTONE("minecraft:cut_red_sandstone", (short) 7683, 0.8, 0.8, false, true), + RED_SANDSTONE_STAIRS("minecraft:red_sandstone_stairs", (short) 7695, 0.8, 0.8, false, true), + OAK_SLAB("minecraft:oak_slab", (short) 7767, 2.0, 3.0, false, true), + SPRUCE_SLAB("minecraft:spruce_slab", (short) 7773, 2.0, 3.0, false, true), + BIRCH_SLAB("minecraft:birch_slab", (short) 7779, 2.0, 3.0, false, true), + JUNGLE_SLAB("minecraft:jungle_slab", (short) 7785, 2.0, 3.0, false, true), + ACACIA_SLAB("minecraft:acacia_slab", (short) 7791, 2.0, 3.0, false, true), + DARK_OAK_SLAB("minecraft:dark_oak_slab", (short) 7797, 2.0, 3.0, false, true), + STONE_SLAB("minecraft:stone_slab", (short) 7803, 2.0, 6.0, false, true), + SMOOTH_STONE_SLAB("minecraft:smooth_stone_slab", (short) 7809, 2.0, 6.0, false, true), + SANDSTONE_SLAB("minecraft:sandstone_slab", (short) 7815, 2.0, 6.0, false, true), + CUT_SANDSTONE_SLAB("minecraft:cut_sandstone_slab", (short) 7821, 2.0, 6.0, false, true), + PETRIFIED_OAK_SLAB("minecraft:petrified_oak_slab", (short) 7827, 2.0, 6.0, false, true), + COBBLESTONE_SLAB("minecraft:cobblestone_slab", (short) 7833, 2.0, 6.0, false, true), + BRICK_SLAB("minecraft:brick_slab", (short) 7839, 2.0, 6.0, false, true), + STONE_BRICK_SLAB("minecraft:stone_brick_slab", (short) 7845, 2.0, 6.0, false, true), + NETHER_BRICK_SLAB("minecraft:nether_brick_slab", (short) 7851, 2.0, 6.0, false, true), + QUARTZ_SLAB("minecraft:quartz_slab", (short) 7857, 2.0, 6.0, false, true), + RED_SANDSTONE_SLAB("minecraft:red_sandstone_slab", (short) 7863, 2.0, 6.0, false, true), + CUT_RED_SANDSTONE_SLAB("minecraft:cut_red_sandstone_slab", (short) 7869, 2.0, 6.0, false, true), + PURPUR_SLAB("minecraft:purpur_slab", (short) 7875, 2.0, 6.0, false, true), + SMOOTH_STONE("minecraft:smooth_stone", (short) 7878, 2.0, 6.0, false, true), + SMOOTH_SANDSTONE("minecraft:smooth_sandstone", (short) 7879, 2.0, 6.0, false, true), + SMOOTH_QUARTZ("minecraft:smooth_quartz", (short) 7880, 2.0, 6.0, false, true), + SMOOTH_RED_SANDSTONE("minecraft:smooth_red_sandstone", (short) 7881, 2.0, 6.0, false, true), + SPRUCE_FENCE_GATE("minecraft:spruce_fence_gate", (short) 7889, 2.0, 3.0, false, true), + BIRCH_FENCE_GATE("minecraft:birch_fence_gate", (short) 7921, 2.0, 3.0, false, true), + JUNGLE_FENCE_GATE("minecraft:jungle_fence_gate", (short) 7953, 2.0, 3.0, false, true), + ACACIA_FENCE_GATE("minecraft:acacia_fence_gate", (short) 7985, 2.0, 3.0, false, true), + DARK_OAK_FENCE_GATE("minecraft:dark_oak_fence_gate", (short) 8017, 2.0, 3.0, false, true), + SPRUCE_FENCE("minecraft:spruce_fence", (short) 8073, 2.0, 3.0, false, true), + BIRCH_FENCE("minecraft:birch_fence", (short) 8105, 2.0, 3.0, false, true), + JUNGLE_FENCE("minecraft:jungle_fence", (short) 8137, 2.0, 3.0, false, true), + ACACIA_FENCE("minecraft:acacia_fence", (short) 8169, 2.0, 3.0, false, true), + DARK_OAK_FENCE("minecraft:dark_oak_fence", (short) 8201, 2.0, 3.0, false, true), + SPRUCE_DOOR("minecraft:spruce_door", (short) 8213, 3.0, 3.0, false, true), + BIRCH_DOOR("minecraft:birch_door", (short) 8277, 3.0, 3.0, false, true), + JUNGLE_DOOR("minecraft:jungle_door", (short) 8341, 3.0, 3.0, false, true), + ACACIA_DOOR("minecraft:acacia_door", (short) 8405, 3.0, 3.0, false, true), + DARK_OAK_DOOR("minecraft:dark_oak_door", (short) 8469, 3.0, 3.0, false, true), + END_ROD("minecraft:end_rod", (short) 8526, 0.0, 0.0, false, true), + CHORUS_PLANT("minecraft:chorus_plant", (short) 8591, 0.4, 0.4, false, true), + CHORUS_FLOWER("minecraft:chorus_flower", (short) 8592, 0.4, 0.4, false, true), + PURPUR_BLOCK("minecraft:purpur_block", (short) 8598, 1.5, 6.0, false, true), + PURPUR_PILLAR("minecraft:purpur_pillar", (short) 8600, 1.5, 6.0, false, true), + PURPUR_STAIRS("minecraft:purpur_stairs", (short) 8613, 1.5, 6.0, false, true), + END_STONE_BRICKS("minecraft:end_stone_bricks", (short) 8682, 3.0, 9.0, false, true), + BEETROOTS("minecraft:beetroots", (short) 8683, 0.0, 0.0, false, false), + GRASS_PATH("minecraft:grass_path", (short) 8687, 0.65, 0.65, false, true), + END_GATEWAY("minecraft:end_gateway", (short) 8688, 0.0, 3600000.0, false, false), + REPEATING_COMMAND_BLOCK("minecraft:repeating_command_block", (short) 8695, 0.0, 3600000.0, false, true), + CHAIN_COMMAND_BLOCK("minecraft:chain_command_block", (short) 8707, 0.0, 3600000.0, false, true), + FROSTED_ICE("minecraft:frosted_ice", (short) 8713, 0.5, 0.5, false, true), + MAGMA_BLOCK("minecraft:magma_block", (short) 8717, 0.5, 0.5, false, true), + NETHER_WART_BLOCK("minecraft:nether_wart_block", (short) 8718, 1.0, 1.0, false, true), + RED_NETHER_BRICKS("minecraft:red_nether_bricks", (short) 8719, 2.0, 6.0, false, true), + BONE_BLOCK("minecraft:bone_block", (short) 8721, 2.0, 2.0, false, true), + STRUCTURE_VOID("minecraft:structure_void", (short) 8723, 0.0, 0.0, false, true), + OBSERVER("minecraft:observer", (short) 8729, 3.0, 3.0, false, true), + SHULKER_BOX("minecraft:shulker_box", (short) 8740, 2.0, 2.0, false, true), + WHITE_SHULKER_BOX("minecraft:white_shulker_box", (short) 8746, 2.0, 2.0, false, true), + ORANGE_SHULKER_BOX("minecraft:orange_shulker_box", (short) 8752, 2.0, 2.0, false, true), + MAGENTA_SHULKER_BOX("minecraft:magenta_shulker_box", (short) 8758, 2.0, 2.0, false, true), + LIGHT_BLUE_SHULKER_BOX("minecraft:light_blue_shulker_box", (short) 8764, 2.0, 2.0, false, true), + YELLOW_SHULKER_BOX("minecraft:yellow_shulker_box", (short) 8770, 2.0, 2.0, false, true), + LIME_SHULKER_BOX("minecraft:lime_shulker_box", (short) 8776, 2.0, 2.0, false, true), + PINK_SHULKER_BOX("minecraft:pink_shulker_box", (short) 8782, 2.0, 2.0, false, true), + GRAY_SHULKER_BOX("minecraft:gray_shulker_box", (short) 8788, 2.0, 2.0, false, true), + LIGHT_GRAY_SHULKER_BOX("minecraft:light_gray_shulker_box", (short) 8794, 2.0, 2.0, false, true), + CYAN_SHULKER_BOX("minecraft:cyan_shulker_box", (short) 8800, 2.0, 2.0, false, true), + PURPLE_SHULKER_BOX("minecraft:purple_shulker_box", (short) 8806, 2.0, 2.0, false, true), + BLUE_SHULKER_BOX("minecraft:blue_shulker_box", (short) 8812, 2.0, 2.0, false, true), + BROWN_SHULKER_BOX("minecraft:brown_shulker_box", (short) 8818, 2.0, 2.0, false, true), + GREEN_SHULKER_BOX("minecraft:green_shulker_box", (short) 8824, 2.0, 2.0, false, true), + RED_SHULKER_BOX("minecraft:red_shulker_box", (short) 8830, 2.0, 2.0, false, true), + BLACK_SHULKER_BOX("minecraft:black_shulker_box", (short) 8836, 2.0, 2.0, false, true), + WHITE_GLAZED_TERRACOTTA("minecraft:white_glazed_terracotta", (short) 8838, 1.4, 1.4, false, true), + ORANGE_GLAZED_TERRACOTTA("minecraft:orange_glazed_terracotta", (short) 8842, 1.4, 1.4, false, true), + MAGENTA_GLAZED_TERRACOTTA("minecraft:magenta_glazed_terracotta", (short) 8846, 1.4, 1.4, false, true), + LIGHT_BLUE_GLAZED_TERRACOTTA("minecraft:light_blue_glazed_terracotta", (short) 8850, 1.4, 1.4, false, true), + YELLOW_GLAZED_TERRACOTTA("minecraft:yellow_glazed_terracotta", (short) 8854, 1.4, 1.4, false, true), + LIME_GLAZED_TERRACOTTA("minecraft:lime_glazed_terracotta", (short) 8858, 1.4, 1.4, false, true), + PINK_GLAZED_TERRACOTTA("minecraft:pink_glazed_terracotta", (short) 8862, 1.4, 1.4, false, true), + GRAY_GLAZED_TERRACOTTA("minecraft:gray_glazed_terracotta", (short) 8866, 1.4, 1.4, false, true), + LIGHT_GRAY_GLAZED_TERRACOTTA("minecraft:light_gray_glazed_terracotta", (short) 8870, 1.4, 1.4, false, true), + CYAN_GLAZED_TERRACOTTA("minecraft:cyan_glazed_terracotta", (short) 8874, 1.4, 1.4, false, true), + PURPLE_GLAZED_TERRACOTTA("minecraft:purple_glazed_terracotta", (short) 8878, 1.4, 1.4, false, true), + BLUE_GLAZED_TERRACOTTA("minecraft:blue_glazed_terracotta", (short) 8882, 1.4, 1.4, false, true), + BROWN_GLAZED_TERRACOTTA("minecraft:brown_glazed_terracotta", (short) 8886, 1.4, 1.4, false, true), + GREEN_GLAZED_TERRACOTTA("minecraft:green_glazed_terracotta", (short) 8890, 1.4, 1.4, false, true), + RED_GLAZED_TERRACOTTA("minecraft:red_glazed_terracotta", (short) 8894, 1.4, 1.4, false, true), + BLACK_GLAZED_TERRACOTTA("minecraft:black_glazed_terracotta", (short) 8898, 1.4, 1.4, false, true), + WHITE_CONCRETE("minecraft:white_concrete", (short) 8902, 1.8, 1.8, false, true), + ORANGE_CONCRETE("minecraft:orange_concrete", (short) 8903, 1.8, 1.8, false, true), + MAGENTA_CONCRETE("minecraft:magenta_concrete", (short) 8904, 1.8, 1.8, false, true), + LIGHT_BLUE_CONCRETE("minecraft:light_blue_concrete", (short) 8905, 1.8, 1.8, false, true), + YELLOW_CONCRETE("minecraft:yellow_concrete", (short) 8906, 1.8, 1.8, false, true), + LIME_CONCRETE("minecraft:lime_concrete", (short) 8907, 1.8, 1.8, false, true), + PINK_CONCRETE("minecraft:pink_concrete", (short) 8908, 1.8, 1.8, false, true), + GRAY_CONCRETE("minecraft:gray_concrete", (short) 8909, 1.8, 1.8, false, true), + LIGHT_GRAY_CONCRETE("minecraft:light_gray_concrete", (short) 8910, 1.8, 1.8, false, true), + CYAN_CONCRETE("minecraft:cyan_concrete", (short) 8911, 1.8, 1.8, false, true), + PURPLE_CONCRETE("minecraft:purple_concrete", (short) 8912, 1.8, 1.8, false, true), + BLUE_CONCRETE("minecraft:blue_concrete", (short) 8913, 1.8, 1.8, false, true), + BROWN_CONCRETE("minecraft:brown_concrete", (short) 8914, 1.8, 1.8, false, true), + GREEN_CONCRETE("minecraft:green_concrete", (short) 8915, 1.8, 1.8, false, true), + RED_CONCRETE("minecraft:red_concrete", (short) 8916, 1.8, 1.8, false, true), + BLACK_CONCRETE("minecraft:black_concrete", (short) 8917, 1.8, 1.8, false, true), + WHITE_CONCRETE_POWDER("minecraft:white_concrete_powder", (short) 8918, 0.5, 0.5, false, true), + ORANGE_CONCRETE_POWDER("minecraft:orange_concrete_powder", (short) 8919, 0.5, 0.5, false, true), + MAGENTA_CONCRETE_POWDER("minecraft:magenta_concrete_powder", (short) 8920, 0.5, 0.5, false, true), + LIGHT_BLUE_CONCRETE_POWDER("minecraft:light_blue_concrete_powder", (short) 8921, 0.5, 0.5, false, true), + YELLOW_CONCRETE_POWDER("minecraft:yellow_concrete_powder", (short) 8922, 0.5, 0.5, false, true), + LIME_CONCRETE_POWDER("minecraft:lime_concrete_powder", (short) 8923, 0.5, 0.5, false, true), + PINK_CONCRETE_POWDER("minecraft:pink_concrete_powder", (short) 8924, 0.5, 0.5, false, true), + GRAY_CONCRETE_POWDER("minecraft:gray_concrete_powder", (short) 8925, 0.5, 0.5, false, true), + LIGHT_GRAY_CONCRETE_POWDER("minecraft:light_gray_concrete_powder", (short) 8926, 0.5, 0.5, false, true), + CYAN_CONCRETE_POWDER("minecraft:cyan_concrete_powder", (short) 8927, 0.5, 0.5, false, true), + PURPLE_CONCRETE_POWDER("minecraft:purple_concrete_powder", (short) 8928, 0.5, 0.5, false, true), + BLUE_CONCRETE_POWDER("minecraft:blue_concrete_powder", (short) 8929, 0.5, 0.5, false, true), + BROWN_CONCRETE_POWDER("minecraft:brown_concrete_powder", (short) 8930, 0.5, 0.5, false, true), + GREEN_CONCRETE_POWDER("minecraft:green_concrete_powder", (short) 8931, 0.5, 0.5, false, true), + RED_CONCRETE_POWDER("minecraft:red_concrete_powder", (short) 8932, 0.5, 0.5, false, true), + BLACK_CONCRETE_POWDER("minecraft:black_concrete_powder", (short) 8933, 0.5, 0.5, false, true), + KELP("minecraft:kelp", (short) 8934, 0.0, 0.0, false, true), + KELP_PLANT("minecraft:kelp_plant", (short) 8960, 0.0, 0.0, false, true), + DRIED_KELP_BLOCK("minecraft:dried_kelp_block", (short) 8961, 0.5, 2.5, false, true), + TURTLE_EGG("minecraft:turtle_egg", (short) 8962, 0.5, 0.5, false, true), + DEAD_TUBE_CORAL_BLOCK("minecraft:dead_tube_coral_block", (short) 8974, 1.5, 6.0, false, true), + DEAD_BRAIN_CORAL_BLOCK("minecraft:dead_brain_coral_block", (short) 8975, 1.5, 6.0, false, true), + DEAD_BUBBLE_CORAL_BLOCK("minecraft:dead_bubble_coral_block", (short) 8976, 1.5, 6.0, false, true), + DEAD_FIRE_CORAL_BLOCK("minecraft:dead_fire_coral_block", (short) 8977, 1.5, 6.0, false, true), + DEAD_HORN_CORAL_BLOCK("minecraft:dead_horn_coral_block", (short) 8978, 1.5, 6.0, false, true), + TUBE_CORAL_BLOCK("minecraft:tube_coral_block", (short) 8979, 1.5, 6.0, false, true), + BRAIN_CORAL_BLOCK("minecraft:brain_coral_block", (short) 8980, 1.5, 6.0, false, true), + BUBBLE_CORAL_BLOCK("minecraft:bubble_coral_block", (short) 8981, 1.5, 6.0, false, true), + FIRE_CORAL_BLOCK("minecraft:fire_coral_block", (short) 8982, 1.5, 6.0, false, true), + HORN_CORAL_BLOCK("minecraft:horn_coral_block", (short) 8983, 1.5, 6.0, false, true), + DEAD_TUBE_CORAL("minecraft:dead_tube_coral", (short) 8984, 0.0, 0.0, false, true), + DEAD_BRAIN_CORAL("minecraft:dead_brain_coral", (short) 8986, 0.0, 0.0, false, true), + DEAD_BUBBLE_CORAL("minecraft:dead_bubble_coral", (short) 8988, 0.0, 0.0, false, true), + DEAD_FIRE_CORAL("minecraft:dead_fire_coral", (short) 8990, 0.0, 0.0, false, true), + DEAD_HORN_CORAL("minecraft:dead_horn_coral", (short) 8992, 0.0, 0.0, false, true), + TUBE_CORAL("minecraft:tube_coral", (short) 8994, 0.0, 0.0, false, true), + BRAIN_CORAL("minecraft:brain_coral", (short) 8996, 0.0, 0.0, false, true), + BUBBLE_CORAL("minecraft:bubble_coral", (short) 8998, 0.0, 0.0, false, true), + FIRE_CORAL("minecraft:fire_coral", (short) 9000, 0.0, 0.0, false, true), + HORN_CORAL("minecraft:horn_coral", (short) 9002, 0.0, 0.0, false, true), + DEAD_TUBE_CORAL_FAN("minecraft:dead_tube_coral_fan", (short) 9004, 0.0, 0.0, false, true), + DEAD_BRAIN_CORAL_FAN("minecraft:dead_brain_coral_fan", (short) 9006, 0.0, 0.0, false, true), + DEAD_BUBBLE_CORAL_FAN("minecraft:dead_bubble_coral_fan", (short) 9008, 0.0, 0.0, false, true), + DEAD_FIRE_CORAL_FAN("minecraft:dead_fire_coral_fan", (short) 9010, 0.0, 0.0, false, true), + DEAD_HORN_CORAL_FAN("minecraft:dead_horn_coral_fan", (short) 9012, 0.0, 0.0, false, true), + TUBE_CORAL_FAN("minecraft:tube_coral_fan", (short) 9014, 0.0, 0.0, false, true), + BRAIN_CORAL_FAN("minecraft:brain_coral_fan", (short) 9016, 0.0, 0.0, false, true), + BUBBLE_CORAL_FAN("minecraft:bubble_coral_fan", (short) 9018, 0.0, 0.0, false, true), + FIRE_CORAL_FAN("minecraft:fire_coral_fan", (short) 9020, 0.0, 0.0, false, true), + HORN_CORAL_FAN("minecraft:horn_coral_fan", (short) 9022, 0.0, 0.0, false, true), + DEAD_TUBE_CORAL_WALL_FAN("minecraft:dead_tube_coral_wall_fan", (short) 9024, 0.0, 0.0, false, true), + DEAD_BRAIN_CORAL_WALL_FAN("minecraft:dead_brain_coral_wall_fan", (short) 9032, 0.0, 0.0, false, true), + DEAD_BUBBLE_CORAL_WALL_FAN("minecraft:dead_bubble_coral_wall_fan", (short) 9040, 0.0, 0.0, false, true), + DEAD_FIRE_CORAL_WALL_FAN("minecraft:dead_fire_coral_wall_fan", (short) 9048, 0.0, 0.0, false, true), + DEAD_HORN_CORAL_WALL_FAN("minecraft:dead_horn_coral_wall_fan", (short) 9056, 0.0, 0.0, false, true), + TUBE_CORAL_WALL_FAN("minecraft:tube_coral_wall_fan", (short) 9064, 0.0, 0.0, false, true), + BRAIN_CORAL_WALL_FAN("minecraft:brain_coral_wall_fan", (short) 9072, 0.0, 0.0, false, true), + BUBBLE_CORAL_WALL_FAN("minecraft:bubble_coral_wall_fan", (short) 9080, 0.0, 0.0, false, true), + FIRE_CORAL_WALL_FAN("minecraft:fire_coral_wall_fan", (short) 9088, 0.0, 0.0, false, true), + HORN_CORAL_WALL_FAN("minecraft:horn_coral_wall_fan", (short) 9096, 0.0, 0.0, false, true), + SEA_PICKLE("minecraft:sea_pickle", (short) 9104, 0.0, 0.0, false, true), + BLUE_ICE("minecraft:blue_ice", (short) 9112, 2.8, 2.8, false, true), + CONDUIT("minecraft:conduit", (short) 9113, 3.0, 3.0, false, true), + BAMBOO_SAPLING("minecraft:bamboo_sapling", (short) 9115, 1.0, 1.0, false, true), + BAMBOO("minecraft:bamboo", (short) 9116, 1.0, 1.0, false, true), + POTTED_BAMBOO("minecraft:potted_bamboo", (short) 9128, 0.0, 0.0, false, true), + VOID_AIR("minecraft:void_air", (short) 9129, 0.0, 0.0, false, false), + CAVE_AIR("minecraft:cave_air", (short) 9130, 0.0, 0.0, false, false), + BUBBLE_COLUMN("minecraft:bubble_column", (short) 9131, 0.0, 0.0, false, true), + POLISHED_GRANITE_STAIRS("minecraft:polished_granite_stairs", (short) 9144, 1.5, 6.0, false, true), + SMOOTH_RED_SANDSTONE_STAIRS("minecraft:smooth_red_sandstone_stairs", (short) 9224, 2.0, 6.0, false, true), + MOSSY_STONE_BRICK_STAIRS("minecraft:mossy_stone_brick_stairs", (short) 9304, 1.5, 6.0, false, true), + POLISHED_DIORITE_STAIRS("minecraft:polished_diorite_stairs", (short) 9384, 1.5, 6.0, false, true), + MOSSY_COBBLESTONE_STAIRS("minecraft:mossy_cobblestone_stairs", (short) 9464, 2.0, 6.0, false, true), + END_STONE_BRICK_STAIRS("minecraft:end_stone_brick_stairs", (short) 9544, 3.0, 9.0, false, true), + STONE_STAIRS("minecraft:stone_stairs", (short) 9624, 1.5, 6.0, false, true), + SMOOTH_SANDSTONE_STAIRS("minecraft:smooth_sandstone_stairs", (short) 9704, 2.0, 6.0, false, true), + SMOOTH_QUARTZ_STAIRS("minecraft:smooth_quartz_stairs", (short) 9784, 2.0, 6.0, false, true), + GRANITE_STAIRS("minecraft:granite_stairs", (short) 9864, 1.5, 6.0, false, true), + ANDESITE_STAIRS("minecraft:andesite_stairs", (short) 9944, 1.5, 6.0, false, true), + RED_NETHER_BRICK_STAIRS("minecraft:red_nether_brick_stairs", (short) 10024, 2.0, 6.0, false, true), + POLISHED_ANDESITE_STAIRS("minecraft:polished_andesite_stairs", (short) 10104, 1.5, 6.0, false, true), + DIORITE_STAIRS("minecraft:diorite_stairs", (short) 10184, 1.5, 6.0, false, true), + POLISHED_GRANITE_SLAB("minecraft:polished_granite_slab", (short) 10256, 1.5, 6.0, false, true), + SMOOTH_RED_SANDSTONE_SLAB("minecraft:smooth_red_sandstone_slab", (short) 10262, 2.0, 6.0, false, true), + MOSSY_STONE_BRICK_SLAB("minecraft:mossy_stone_brick_slab", (short) 10268, 1.5, 6.0, false, true), + POLISHED_DIORITE_SLAB("minecraft:polished_diorite_slab", (short) 10274, 1.5, 6.0, false, true), + MOSSY_COBBLESTONE_SLAB("minecraft:mossy_cobblestone_slab", (short) 10280, 2.0, 6.0, false, true), + END_STONE_BRICK_SLAB("minecraft:end_stone_brick_slab", (short) 10286, 3.0, 9.0, false, true), + SMOOTH_SANDSTONE_SLAB("minecraft:smooth_sandstone_slab", (short) 10292, 2.0, 6.0, false, true), + SMOOTH_QUARTZ_SLAB("minecraft:smooth_quartz_slab", (short) 10298, 2.0, 6.0, false, true), + GRANITE_SLAB("minecraft:granite_slab", (short) 10304, 1.5, 6.0, false, true), + ANDESITE_SLAB("minecraft:andesite_slab", (short) 10310, 1.5, 6.0, false, true), + RED_NETHER_BRICK_SLAB("minecraft:red_nether_brick_slab", (short) 10316, 2.0, 6.0, false, true), + POLISHED_ANDESITE_SLAB("minecraft:polished_andesite_slab", (short) 10322, 1.5, 6.0, false, true), + DIORITE_SLAB("minecraft:diorite_slab", (short) 10328, 1.5, 6.0, false, true), + BRICK_WALL("minecraft:brick_wall", (short) 10390, 2.0, 6.0, false, true), + PRISMARINE_WALL("minecraft:prismarine_wall", (short) 10454, 1.5, 6.0, false, true), + RED_SANDSTONE_WALL("minecraft:red_sandstone_wall", (short) 10518, 0.8, 0.8, false, true), + MOSSY_STONE_BRICK_WALL("minecraft:mossy_stone_brick_wall", (short) 10582, 1.5, 6.0, false, true), + GRANITE_WALL("minecraft:granite_wall", (short) 10646, 1.5, 6.0, false, true), + STONE_BRICK_WALL("minecraft:stone_brick_wall", (short) 10710, 1.5, 6.0, false, true), + NETHER_BRICK_WALL("minecraft:nether_brick_wall", (short) 10774, 2.0, 6.0, false, true), + ANDESITE_WALL("minecraft:andesite_wall", (short) 10838, 1.5, 6.0, false, true), + RED_NETHER_BRICK_WALL("minecraft:red_nether_brick_wall", (short) 10902, 2.0, 6.0, false, true), + SANDSTONE_WALL("minecraft:sandstone_wall", (short) 10966, 0.8, 0.8, false, true), + END_STONE_BRICK_WALL("minecraft:end_stone_brick_wall", (short) 11030, 3.0, 9.0, false, true), + DIORITE_WALL("minecraft:diorite_wall", (short) 11094, 1.5, 6.0, false, true), + SCAFFOLDING("minecraft:scaffolding", (short) 11130, 0.0, 0.0, false, true), + LOOM("minecraft:loom", (short) 11131, 2.5, 2.5, false, true), + BARREL("minecraft:barrel", (short) 11136, 2.5, 2.5, false, true), + SMOKER("minecraft:smoker", (short) 11148, 3.5, 3.5, false, true), + BLAST_FURNACE("minecraft:blast_furnace", (short) 11156, 3.5, 3.5, false, true), + CARTOGRAPHY_TABLE("minecraft:cartography_table", (short) 11163, 2.5, 2.5, false, true), + FLETCHING_TABLE("minecraft:fletching_table", (short) 11164, 2.5, 2.5, false, true), + GRINDSTONE("minecraft:grindstone", (short) 11169, 2.0, 6.0, false, true), + LECTERN("minecraft:lectern", (short) 11180, 2.5, 2.5, false, true), + SMITHING_TABLE("minecraft:smithing_table", (short) 11193, 2.5, 2.5, false, true), + STONECUTTER("minecraft:stonecutter", (short) 11194, 3.5, 3.5, false, true), + BELL("minecraft:bell", (short) 11199, 5.0, 5.0, false, true), + LANTERN("minecraft:lantern", (short) 11231, 3.5, 3.5, false, true), + CAMPFIRE("minecraft:campfire", (short) 11235, 2.0, 2.0, false, true), + SWEET_BERRY_BUSH("minecraft:sweet_berry_bush", (short) 11264, 0.0, 0.0, false, true), + STRUCTURE_BLOCK("minecraft:structure_block", (short) 11268, 0.0, 3600000.0, false, true), + JIGSAW("minecraft:jigsaw", (short) 11276, 0.0, 3600000.0, false, true), + COMPOSTER("minecraft:composter", (short) 11278, 0.6, 0.6, false, true), + BEE_NEST("minecraft:bee_nest", (short) 11287, 0.3, 0.3, false, true), + BEEHIVE("minecraft:beehive", (short) 11311, 0.6, 0.6, false, true), + HONEY_BLOCK("minecraft:honey_block", (short) 11335, 0.0, 0.0, false, true), + HONEYCOMB_BLOCK("minecraft:honeycomb_block", (short) 11336, 0.6, 0.6, false, true), +; + private String namespaceID; + private short defaultID; + private double hardness; + private double resistance; + private boolean isAir; + private boolean isSolid; + + TmpBlock(String namespaceID, short defaultID, double hardness, double resistance, boolean isAir, boolean isSolid) { + this.namespaceID = namespaceID; + this.defaultID = defaultID; + this.hardness = hardness; + this.resistance = resistance; + this.isAir = isAir; + this.isSolid = isSolid; + } + + public short getId() { + return defaultID; + } + + public boolean isAir() { + return isAir; + } + + public boolean isSolid() { + return isSolid; + } + + public double getHardness() { + return hardness; + } + + public double getResistance() { + return resistance; + } + + public boolean breaksInstantaneously() { + return hardness == 0; + } +} diff --git a/src/generators/java/BlockContainer.java b/src/generators/java/BlockContainer.java new file mode 100644 index 000000000..476701f4b --- /dev/null +++ b/src/generators/java/BlockContainer.java @@ -0,0 +1,174 @@ +import net.minestom.server.utils.NamespaceID; + +import java.util.List; +import java.util.Map; + +public class BlockContainer implements Comparable { + + private int ordinal; + private NamespaceID id; + private double hardness; + private double resistance; + private BlockState defaultState; + private boolean isSolid; + private boolean isAir; + private List states; + + private boolean isMushroom; + private boolean isLiquid; + private boolean isFlower; + private boolean isFlowerPot; + private boolean isCoral; + private boolean hasBlockEntity; + + public BlockContainer(int ordinal, NamespaceID id, double hardness, double resistance, BlockState defaultState, List states) { + this.ordinal = ordinal; + this.id = id; + this.hardness = hardness; + this.resistance = resistance; + this.defaultState = defaultState; + this.states = states; + } + + public int getOrdinal() { + return ordinal; + } + + public BlockState getDefaultState() { + return defaultState; + } + + public List getStates() { + return states; + } + + public NamespaceID getId() { + return id; + } + + public boolean isAir() { + return isAir; + } + + public boolean isCoral() { + return isCoral; + } + + public boolean isFlowerPot() { + return isFlowerPot; + } + + public boolean isFlower() { + return isFlower; + } + + public boolean isLiquid() { + return isLiquid; + } + + public boolean isMushroom() { + return isMushroom; + } + + public boolean isSolid() { + return isSolid; + } + + public double getHardness() { + return hardness; + } + + public double getResistance() { + return resistance; + } + + public boolean hasBlockEntity() { + return hasBlockEntity; + } + + public BlockContainer setHasBlockEntity() { + hasBlockEntity = true; + return this; + } + + public BlockContainer setCoral() { + isCoral = true; + return this; + } + + public BlockContainer setFlowerPot() { + isFlowerPot = true; + return this; + } + + public BlockContainer setFlower() { + isFlower = true; + return this; + } + + public BlockContainer setLiquid() { + isLiquid = true; + return this; + } + + public BlockContainer setMushroom() { + isMushroom = true; + return this; + } + + public BlockContainer setSolid() { + isSolid = true; + return this; + } + + @Override + public String toString() { + return "BlockContainer{" + + "id=" + id + + ", hardness=" + hardness + + ", resistance=" + resistance + + ", defaultState=" + defaultState + + ", isSolid=" + isSolid + + ", isAir=" + isAir + + ", states=" + states + + ", isMushroom=" + isMushroom + + ", isLiquid=" + isLiquid + + ", isFlower=" + isFlower + + ", isFlowerPot=" + isFlowerPot + + ", isCoral=" + isCoral + + ", hasBlockEntity=" + hasBlockEntity + + '}'; + } + + @Override + public int compareTo(BlockContainer o) { + return Integer.compare(ordinal, o.ordinal); + } + + public static class BlockState { + private short id; + private Map properties; + + public BlockState(short id, Map properties) { + this.id = id; + this.properties = properties; + } + + public short getId() { + return id; + } + + public Map getProperties() { + return properties; + } + + @Override + public String toString() { + return "BlockState{" + + "id=" + id + + ", properties=" + properties + + '}'; + } + } + +} diff --git a/src/generators/java/BlockEnumGenerator.java b/src/generators/java/BlockEnumGenerator.java new file mode 100644 index 000000000..7f126d575 --- /dev/null +++ b/src/generators/java/BlockEnumGenerator.java @@ -0,0 +1,210 @@ +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minestom.server.registry.ResourceGatherer; +import net.minestom.server.utils.NamespaceID; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.*; +import java.net.URL; +import java.util.*; + +/** + * Generates a Block enum containing all data about blocks + */ +public class BlockEnumGenerator { + + private static final Logger LOGGER = LoggerFactory.getLogger(BlockEnumGenerator.class); + + private static final String DEFAULT_TARGET_PATH = "src/autogenerated/java"; + public static final String MC_DATA_BLOCKS_PATH = "minecraft_data/reports/blocks.json"; + public static final String PRISMARINE_JS_DATA_PATHS = "prismarine-minecraft-data/data/dataPaths.json"; + public static final String BURGER_URL_BASE_URL = "https://pokechu22.github.io/Burger/"; + + public static void main(String[] args) throws IOException { + try { + ResourceGatherer.ensureResourcesArePresent(null); // TODO + } catch (IOException e) { + e.printStackTrace(); + } + String targetVersion = "1.15.2"; + if(args.length >= 1) { + targetVersion = args[0]; + } + + String targetPart = DEFAULT_TARGET_PATH; + if(args.length >= 2) { + targetPart = args[1]; + } + + File targetFolder = new File(targetPart); + if(!targetFolder.exists()) { + targetFolder.mkdirs(); + } + + Gson gson = new Gson(); + + // load report blocks and block states + LOGGER.debug("Loading information from data extraction"); + List dataBlocks = parseBlocksFromMCData(gson, MC_DATA_BLOCKS_PATH); + // load properties from Prismarine + LOGGER.debug("Finding path for PrismarineJS blocks"); + JsonObject dataPaths = gson.fromJson(new BufferedReader(new FileReader(PRISMARINE_JS_DATA_PATHS)), JsonObject.class); + JsonObject pathsJson = dataPaths.getAsJsonObject("pc").getAsJsonObject(targetVersion); + + PrismarinePaths paths = gson.fromJson(pathsJson, PrismarinePaths.class); + LOGGER.debug("Loading PrismarineJS blocks data"); + List prismarineJSBlocks = parseBlocksFromPrismarineJS(gson, paths.getBlockFile()); + + LOGGER.debug("Loading Burger blocks data (requires Internet connection)"); + List burgerBlocks = parseBlocksFromBurger(gson, BURGER_URL_BASE_URL+targetVersion+".json"); + + LOGGER.debug("Compiling information"); + Collection blocks = compile(dataBlocks, prismarineJSBlocks, burgerBlocks); + + LOGGER.debug("Compilation finished, code generation can now begin"); + + generateEnum(targetPart, blocks); + LOGGER.debug("Finished!"); + } + + private static void generateEnum(String targetPart, Collection blocks) throws IOException { + String packageName = "net.minestom.instance.block"; + String folder = packageName.replace(".", "/"); + String className = "TmpBlock"; + EnumGenerator blockGenerator = new EnumGenerator(packageName, className); + blockGenerator.setParams("String namespaceID", "short defaultID", "double hardness", "double resistance", "boolean isAir", "boolean isSolid"); + blockGenerator.addMethod("getId", "short", "return defaultID;"); + blockGenerator.addMethod("isAir", "boolean", "return isAir;"); + blockGenerator.addMethod("isSolid", "boolean", "return isSolid;"); + blockGenerator.addMethod("getHardness", "double", "return hardness;"); + blockGenerator.addMethod("getResistance", "double", "return resistance;"); + blockGenerator.addMethod("breaksInstantaneously", "boolean", "return hardness == 0;"); + LOGGER.debug("Generating enum"); + for (BlockContainer block : blocks) { + blockGenerator.addInstance(block.getId().getPath().toUpperCase(), "\""+block.getId().toString()+"\"", "(short) "+block.getDefaultState().getId(), block.getHardness(), block.getResistance(), block.isAir(), block.isSolid()); + } + + File classFolder = new File(targetPart+"/"+folder); + if(!classFolder.exists()) { + classFolder.mkdirs(); + } + LOGGER.debug("Writing enum to file: "+classFolder+"/"+className+".java"); + try(Writer writer = new BufferedWriter(new FileWriter(new File(classFolder, className+".java")))) { + writer.write(blockGenerator.generate()); + } + } + + /** + * Compiles all block information in a single location + * @param dataBlocks + * @param prismarineJSBlocks + * @param burgerBlocks + */ + private static Collection compile(List dataBlocks, List prismarineJSBlocks, List burgerBlocks) { + TreeSet blocks = new TreeSet<>(BlockContainer::compareTo); + // ensure the 3 list have the same length and order + dataBlocks.sort(Comparator.comparing(block -> block.name.toString())); + prismarineJSBlocks.sort(Comparator.comparing(block -> NamespaceID.from(block.name).toString())); + burgerBlocks.sort(Comparator.comparing(block -> NamespaceID.from(block.text_id).toString())); + + for (int i = 0; i < dataBlocks.size(); i++) { + DataReportBlock data = dataBlocks.get(i); + PrismarineJSBlock prismarine = prismarineJSBlocks.get(i); + BurgerBlock burger = burgerBlocks.get(i); + + assert data.name.getPath().equals(prismarine.name) && prismarine.name.equalsIgnoreCase(burger.text_id); + + List states = new LinkedList<>(); + for(DataReportBlock.BlockState s : data.states) { + states.add(new BlockContainer.BlockState(s.id, s.properties)); + } + + BlockContainer.BlockState defaultState = new BlockContainer.BlockState(data.defaultState.id, data.defaultState.properties); + + BlockContainer block = new BlockContainer(prismarine.id, data.name, prismarine.hardness, burger.resistance, defaultState, states); + if(!"empty".equals(prismarine.boundingBox)) { + block.setSolid(); + } + if(data.name.equals(NamespaceID.from("minecraft:water")) || data.name.equals(NamespaceID.from("minecraft:lava"))) { + block.setLiquid(); + } + + blocks.add(block); + } + + return blocks; + } + + /** + * Extracts block information from Burger + * @param gson + * @param url + * @return + * @throws IOException + */ + private static List parseBlocksFromBurger(Gson gson, String url) throws IOException { + try(BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new URL(url).openStream()))) { + LOGGER.debug("\tConnection established, reading file"); + JsonObject obj = gson.fromJson(bufferedReader, JsonArray.class).get(0).getAsJsonObject().getAsJsonObject("blocks").getAsJsonObject("block"); + + LOGGER.debug("\tExtracting blocks"); + List blocks = new LinkedList<>(); + for(var entry : obj.entrySet()) { + BurgerBlock block = gson.fromJson(entry.getValue(), BurgerBlock.class); + blocks.add(block); + } + + return blocks; + } catch (IOException e) { + throw e; + } + } + + /** + * Extract block information from PrismarineJS (submodule of Minestom) + * @param gson + * @param blockFile + * @return + * @throws IOException + */ + private static List parseBlocksFromPrismarineJS(Gson gson, File blockFile) throws IOException { + try(BufferedReader bufferedReader = new BufferedReader(new FileReader(blockFile))) { + PrismarineJSBlock[] blocks = gson.fromJson(bufferedReader, PrismarineJSBlock[].class); + return Arrays.asList(blocks); + } catch (IOException e) { + throw e; + } + } + + /** + * Extract block information from reports generated by the data extractor present in minecraft_server.jar + * @param gson + * @param path + * @return + */ + private static List parseBlocksFromMCData(Gson gson, String path) { + List blocks = new LinkedList<>(); + try { + BufferedReader bufferedReader = new BufferedReader(new FileReader(path)); + + JsonObject obj = gson.fromJson(bufferedReader, JsonObject.class); + for(var entry : obj.entrySet()) { + NamespaceID id = NamespaceID.from(entry.getKey()); + JsonElement blockInfo = entry.getValue(); + DataReportBlock block = gson.fromJson(blockInfo, DataReportBlock.class); + block.bindDefaultState(); + block.name = id; + + blocks.add(block); + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + + return blocks; + } +} diff --git a/src/generators/java/BurgerBlock.java b/src/generators/java/BurgerBlock.java new file mode 100644 index 000000000..b58dd51e4 --- /dev/null +++ b/src/generators/java/BurgerBlock.java @@ -0,0 +1,13 @@ +public class BurgerBlock { + + String text_id; + double resistance; + + @Override + public String toString() { + return "BurgerBlock{" + + "text_id='" + text_id + '\'' + + ", resistance=" + resistance + + '}'; + } +} diff --git a/src/generators/java/DataReportBlock.java b/src/generators/java/DataReportBlock.java new file mode 100644 index 000000000..1b15d8743 --- /dev/null +++ b/src/generators/java/DataReportBlock.java @@ -0,0 +1,53 @@ +import com.google.gson.annotations.SerializedName; +import net.minestom.server.utils.NamespaceID; + +import java.util.Arrays; +import java.util.Map; + +public class DataReportBlock { + + NamespaceID name; + Map properties; + BlockState[] states; + + BlockState defaultState; + + /** + * Looks for the first state in {@link #states} with #isDefault set and stores it into {@link #defaultState} + */ + public void bindDefaultState() { + for(BlockState s : states) { + if(s.isDefault) { + defaultState = s; + return; + } + } + } + + public static class BlockState { + protected Map properties; + protected short id; + @SerializedName("default") + protected boolean isDefault; + + @Override + public String toString() { + return "BlockState{" + + "properties=" + properties + + ", id=" + id + + ", isDefault=" + isDefault + + '}'; + } + } + + + @Override + public String toString() { + return "DataReportBlock{" + + "name=" + name + + ", properties=" + properties + + ", states=" + Arrays.toString(states) + + ", defaultState=" + defaultState + + '}'; + } +} diff --git a/src/generators/java/EnumGenerator.java b/src/generators/java/EnumGenerator.java new file mode 100644 index 000000000..400bfe95a --- /dev/null +++ b/src/generators/java/EnumGenerator.java @@ -0,0 +1,132 @@ +import java.util.LinkedList; +import java.util.List; + +/** + * Helper class to generate a .java enum + */ +public class EnumGenerator { + + private static final String COMMENT = "//==============================\n// AUTOGENERATED BY "+EnumGenerator.class.getSimpleName()+"\n//=============================="; + + private final String enumName; + private String[] parameters; + private List methods = new LinkedList<>(); + private List instances = new LinkedList<>(); + private String enumPackage; + + public EnumGenerator(String packageName, String enumName) { + this.enumPackage = packageName; + parameters = new String[0]; + this.enumName = enumName; + } + + public void setParams(String... parameters) { + this.parameters = parameters; + } + + public void addMethod(String name, String returnType, String... lines) { + methods.add(new Method(name, returnType, lines)); + } + + public void addInstance(String name, Object... parameters) { + instances.add(new Instance(name, parameters)); + } + + public String generate() { + StringBuilder builder = new StringBuilder(); + builder.append(COMMENT); + builder.append("\npackage ").append(enumPackage).append(";\n"); + builder.append("\npublic enum ").append(enumName).append(" {\n"); + + // generate instances + for(Instance instance : instances) { + builder.append("\t"); + builder.append(instance.name).append("("); + Object[] objects = instance.parameters; + for (int i = 0; i < objects.length; i++) { + Object param = objects[i]; + if(i != 0) { + builder.append(", "); + } + builder.append(param.toString()); + } + builder.append("),\n"); + } + builder.append(";\n"); + + + // generate properties & constructor + if(parameters.length != 0) { + // properties + for(String property : parameters) { + builder.append("\t"); + builder.append("private ").append(property).append(";\n"); + } + builder.append("\n"); + + // constructor + builder.append("\t"); + builder.append(enumName).append("("); + for (int i = 0; i < parameters.length; i++) { + if(i != 0) { + builder.append(", "); + } + builder.append(parameters[i]); + } + builder.append(") {\n"); + + // property assignment + for(String property : parameters) { + String[] parts = property.split(" "); + String type = parts[0]; + String name = parts[1]; + builder.append("\t\t"); + builder.append("this.").append(name).append(" = ").append(name).append(";\n"); + } + + builder.append("\t}\n"); + } + + // generate methods + for(Method m : methods) { + builder.append("\n"); + builder.append("\tpublic "); + builder.append(m.returnType).append(" ").append(m.name).append("() {\n"); + + for(String line : m.lines) { + builder.append("\t\t").append(line).append("\n"); + } + + builder.append("\t}\n"); + } + + builder.append("}\n"); + return builder.toString(); + } + + public void setEnumPackage(String enumPackage) { + this.enumPackage = enumPackage; + } + + private class Method { + private String name; + private String returnType; + private String[] lines; + + private Method(String name, String returnType, String[] lines) { + this.name = name; + this.returnType = returnType; + this.lines = lines; + } + } + + private class Instance { + private String name; + private Object[] parameters; + + private Instance(String name, Object[] parameters) { + this.name = name; + this.parameters = parameters; + } + } +} diff --git a/src/generators/java/PrismarineJSBlock.java b/src/generators/java/PrismarineJSBlock.java new file mode 100644 index 000000000..2d7e9f167 --- /dev/null +++ b/src/generators/java/PrismarineJSBlock.java @@ -0,0 +1,40 @@ +public class PrismarineJSBlock { + + int id; + String name; + double hardness; + boolean diggable; + boolean transparent; + int emitLight; + int filterLight; + String boundingBox; + int stackSize; + String material; + + @Override + public String toString() { + return "PrismarineJSBlock{" + + "name='" + name + '\'' + + ", id=" + id + + ", hardness=" + hardness + + ", diggable=" + diggable + + ", transparent=" + transparent + + ", emitLight=" + emitLight + + ", filterLight=" + filterLight + + ", boundingBox='" + boundingBox + '\'' + + ", stackSize=" + stackSize + + ", material='" + material + '\'' + + '}'; + } + + /* + TODO: + "harvestTools": { + "521": true, + "535": true, + "539": true, + "543": true, + "550": true + } + */ +} diff --git a/src/generators/java/PrismarinePaths.java b/src/generators/java/PrismarinePaths.java new file mode 100644 index 000000000..f744463f7 --- /dev/null +++ b/src/generators/java/PrismarinePaths.java @@ -0,0 +1,21 @@ +import java.io.File; + +public class PrismarinePaths { + + private String blocks; + private String biomes; + private String effects; + private String items; + private String recipes; + private String instruments; + private String materials; + private String entities; + private String protocol; + private String windows; + private String version; + private String language; + + public File getBlockFile() { + return new File("prismarine-minecraft-data/data/"+blocks+"/blocks.json"); + } +}