summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Server/Plugins/APIDump/APIDesc.lua8
-rw-r--r--src/BlockID.h5
-rw-r--r--src/Blocks/BlockHandler.cpp712
-rw-r--r--src/Blocks/BlockHandler.h7
-rw-r--r--src/Root.cpp1
-rw-r--r--src/Root.h7
6 files changed, 738 insertions, 2 deletions
diff --git a/Server/Plugins/APIDump/APIDesc.lua b/Server/Plugins/APIDump/APIDesc.lua
index 2bd47cbf5..9cf43c6a3 100644
--- a/Server/Plugins/APIDump/APIDesc.lua
+++ b/Server/Plugins/APIDump/APIDesc.lua
@@ -15302,6 +15302,10 @@ end
{
Notes = "The blocktype for tall grass"
},
+ E_BLOCK_TERRACOTTA =
+ {
+ Notes = "The blocktype for terracotta (synonym for E_BLOCK_STAINED_CLAY)",
+ },
E_BLOCK_TNT =
{
Notes = "The blocktype for tnt"
@@ -15326,6 +15330,10 @@ end
{
Notes = "The blocktype for tripwire hook"
},
+ E_BLOCK_UNFINISHED =
+ {
+ Notes = "Internal blocktype for unfinished block handlers",
+ },
E_BLOCK_VINES =
{
Notes = "The blocktype for vines"
diff --git a/src/BlockID.h b/src/BlockID.h
index 733155a50..226178699 100644
--- a/src/BlockID.h
+++ b/src/BlockID.h
@@ -172,7 +172,8 @@ enum ENUM_BLOCK_ID : BLOCKTYPE
E_BLOCK_ACTIVATOR_RAIL = 157,
E_BLOCK_DROPPER = 158,
- E_BLOCK_STAINED_CLAY = 159,
+ E_BLOCK_STAINED_CLAY = 159, // Synonym to terracotta
+ E_BLOCK_TERRACOTTA = 159, // Synonym to stained clay
E_BLOCK_STAINED_GLASS_PANE = 160,
E_BLOCK_NEW_LEAVES = 161, // Acacia and Dark Oak IDs in Minecraft 1.7.x
E_BLOCK_NEW_LOG = 162,
@@ -274,6 +275,8 @@ enum ENUM_BLOCK_ID : BLOCKTYPE
E_BLOCK_NUMBER_OF_TYPES = E_BLOCK_CONCRETE_POWDER + 1, ///< Number of individual (different) blocktypes
E_BLOCK_MAX_TYPE_ID = E_BLOCK_NUMBER_OF_TYPES - 1, ///< Maximum BlockType number used
+ E_BLOCK_UNFINISHED = 254, // Special type used as a placeholder, signifying that the block lacks implementation
+
// Synonym or ID compatibility
E_BLOCK_YELLOW_FLOWER = E_BLOCK_DANDELION,
E_BLOCK_RED_ROSE = E_BLOCK_FLOWER,
diff --git a/src/Blocks/BlockHandler.cpp b/src/Blocks/BlockHandler.cpp
index 61427cae6..928fca1e9 100644
--- a/src/Blocks/BlockHandler.cpp
+++ b/src/Blocks/BlockHandler.cpp
@@ -178,7 +178,8 @@ public:
-cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
+/** Creates a block handler instance based on the specified block type. */
+static cBlockHandler * CreateBlockHandler(BLOCKTYPE a_BlockType)
{
switch (a_BlockType)
{
@@ -361,6 +362,9 @@ cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE a_BlockType)
+////////////////////////////////////////////////////////////////////////////////
+// cBlockHandler:
+
cBlockHandler::cBlockHandler(BLOCKTYPE a_BlockType)
{
m_BlockType = a_BlockType;
@@ -686,3 +690,709 @@ ColourID cBlockHandler::GetMapBaseColourID(NIBBLETYPE a_Meta)
+
+cBlockHandler * cBlockHandler::CreateBlockHandler(BLOCKTYPE aBlockType)
+{
+ return ::CreateBlockHandler(aBlockType);
+}
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// Temporary:
+
+void Temporary::RegisterAllBlockHandlers(BlockTypeRegistry & aRegistry)
+{
+ static struct
+ {
+ const char * newBlockTypeName;
+ BLOCKTYPE oldBlockType;
+ } regs[] =
+ {
+ {"minecraft:acacia_button", E_BLOCK_WOODEN_BUTTON},
+ {"minecraft:acacia_door", E_BLOCK_ACACIA_DOOR},
+ {"minecraft:acacia_fence", E_BLOCK_ACACIA_FENCE},
+ {"minecraft:acacia_fence_gate", E_BLOCK_ACACIA_FENCE_GATE},
+ {"minecraft:acacia_leaves", E_BLOCK_LEAVES},
+ {"minecraft:acacia_log", E_BLOCK_LOG},
+ {"minecraft:acacia_planks", E_BLOCK_PLANKS},
+ {"minecraft:acacia_pressure_plate", E_BLOCK_WOODEN_PRESSURE_PLATE},
+ {"minecraft:acacia_sapling", E_BLOCK_SAPLING},
+ {"minecraft:acacia_sign", E_BLOCK_SIGN_POST},
+ {"minecraft:acacia_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:acacia_stairs", E_BLOCK_ACACIA_WOOD_STAIRS},
+ {"minecraft:acacia_trapdoor", E_BLOCK_TRAPDOOR},
+ {"minecraft:acacia_wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:acacia_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:activator_rail", E_BLOCK_ACTIVATOR_RAIL},
+ {"minecraft:air", E_BLOCK_AIR},
+ {"minecraft:allium", E_BLOCK_FLOWER},
+ {"minecraft:andesite", E_BLOCK_UNFINISHED},
+ {"minecraft:andesite_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:andesite_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:andesite_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:anvil", E_BLOCK_ANVIL},
+ {"minecraft:attached_melon_stem", E_BLOCK_MELON_STEM},
+ {"minecraft:attached_pumpkin_stem", E_BLOCK_PUMPKIN_STEM},
+ {"minecraft:azure_bluet", E_BLOCK_FLOWER},
+ {"minecraft:bamboo", E_BLOCK_UNFINISHED},
+ {"minecraft:bamboo_sapling", E_BLOCK_SAPLING},
+ {"minecraft:barrel", E_BLOCK_UNFINISHED},
+ {"minecraft:barrier", E_BLOCK_BARRIER},
+ {"minecraft:beacon", E_BLOCK_BEACON},
+ {"minecraft:bedrock", E_BLOCK_BEDROCK},
+ {"minecraft:beetroots", E_BLOCK_BEETROOTS},
+ {"minecraft:bell", E_BLOCK_UNFINISHED},
+ {"minecraft:birch_button", E_BLOCK_WOODEN_BUTTON},
+ {"minecraft:birch_door", E_BLOCK_ACACIA_DOOR},
+ {"minecraft:birch_fence", E_BLOCK_ACACIA_FENCE},
+ {"minecraft:birch_fence_gate", E_BLOCK_ACACIA_FENCE_GATE},
+ {"minecraft:birch_leaves", E_BLOCK_LEAVES},
+ {"minecraft:birch_log", E_BLOCK_LOG},
+ {"minecraft:birch_planks", E_BLOCK_PLANKS},
+ {"minecraft:birch_pressure_plate", E_BLOCK_WOODEN_PRESSURE_PLATE},
+ {"minecraft:birch_sapling", E_BLOCK_SAPLING},
+ {"minecraft:birch_sign", E_BLOCK_SIGN_POST},
+ {"minecraft:birch_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:birch_stairs", E_BLOCK_BIRCH_WOOD_STAIRS},
+ {"minecraft:birch_trapdoor", E_BLOCK_TRAPDOOR},
+ {"minecraft:birch_wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:birch_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:black_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:black_bed", E_BLOCK_BED},
+ {"minecraft:black_carpet", E_BLOCK_CARPET},
+ {"minecraft:black_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:black_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:black_glazed_terracotta", E_BLOCK_UNFINISHED},
+ {"minecraft:black_shulker_box", E_BLOCK_BLACK_SHULKER_BOX},
+ {"minecraft:black_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:black_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:black_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:black_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:black_wool", E_BLOCK_WOOL},
+ {"minecraft:blast_furnace", E_BLOCK_UNFINISHED},
+ {"minecraft:blue_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:blue_bed", E_BLOCK_BED},
+ {"minecraft:blue_carpet", E_BLOCK_CARPET},
+ {"minecraft:blue_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:blue_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:blue_glazed_terracotta", E_BLOCK_UNFINISHED},
+ {"minecraft:blue_ice", E_BLOCK_UNFINISHED},
+ {"minecraft:blue_orchid", E_BLOCK_FLOWER},
+ {"minecraft:blue_shulker_box", E_BLOCK_BLUE_SHULKER_BOX},
+ {"minecraft:blue_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:blue_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:blue_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:blue_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:blue_wool", E_BLOCK_WOOL},
+ {"minecraft:bone_block", E_BLOCK_BONE_BLOCK},
+ {"minecraft:bookshelf", E_BLOCK_BOOKCASE},
+ {"minecraft:brain_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:brain_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:brain_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:brain_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:brewing_stand", E_BLOCK_BREWING_STAND},
+ {"minecraft:brick_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:brick_stairs", E_BLOCK_BRICK_STAIRS},
+ {"minecraft:brick_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:bricks", E_BLOCK_BRICK},
+ {"minecraft:brown_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:brown_bed", E_BLOCK_BED},
+ {"minecraft:brown_carpet", E_BLOCK_CARPET},
+ {"minecraft:brown_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:brown_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:brown_glazed_terracotta", E_BLOCK_BROWN_GLAZED_TERRACOTTA},
+ {"minecraft:brown_mushroom", E_BLOCK_BROWN_MUSHROOM},
+ {"minecraft:brown_mushroom_block", E_BLOCK_HUGE_BROWN_MUSHROOM},
+ {"minecraft:brown_shulker_box", E_BLOCK_BROWN_SHULKER_BOX},
+ {"minecraft:brown_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:brown_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:brown_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:brown_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:brown_wool", E_BLOCK_WOOL},
+ {"minecraft:bubble_column", E_BLOCK_UNFINISHED},
+ {"minecraft:bubble_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:bubble_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:bubble_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:bubble_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:cactus", E_BLOCK_CACTUS},
+ {"minecraft:cake", E_BLOCK_CAKE},
+ {"minecraft:campfire", E_BLOCK_UNFINISHED},
+ {"minecraft:carrots", E_BLOCK_CARROTS},
+ {"minecraft:cartography_table", E_BLOCK_UNFINISHED},
+ {"minecraft:carved_pumpkin", E_BLOCK_UNFINISHED},
+ {"minecraft:cauldron", E_BLOCK_CAULDRON},
+ {"minecraft:cave_air", E_BLOCK_UNFINISHED},
+ {"minecraft:chain_command_block", E_BLOCK_COMMAND_BLOCK},
+ {"minecraft:chest", E_BLOCK_CHEST},
+ {"minecraft:chipped_anvil", E_BLOCK_ANVIL},
+ {"minecraft:chiseled_quartz_block", E_BLOCK_QUARTZ_BLOCK},
+ {"minecraft:chiseled_red_sandstone", E_BLOCK_RED_SANDSTONE},
+ {"minecraft:chiseled_sandstone", E_BLOCK_SANDSTONE},
+ {"minecraft:chiseled_stone_bricks", E_BLOCK_STONE_BRICKS},
+ {"minecraft:chorus_flower", E_BLOCK_CHORUS_FLOWER},
+ {"minecraft:chorus_plant", E_BLOCK_CHORUS_PLANT},
+ {"minecraft:clay", E_BLOCK_CLAY},
+ {"minecraft:coal_block", E_BLOCK_BLOCK_OF_COAL},
+ {"minecraft:coal_ore", E_BLOCK_COAL_ORE},
+ {"minecraft:coarse_dirt", E_BLOCK_DIRT},
+ {"minecraft:cobblestone", E_BLOCK_COBBLESTONE},
+ {"minecraft:cobblestone_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:cobblestone_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:cobblestone_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:cobweb", E_BLOCK_COBWEB},
+ {"minecraft:cocoa", E_BLOCK_COCOA_POD},
+ {"minecraft:command_block", E_BLOCK_COMMAND_BLOCK},
+ {"minecraft:comparator", E_BLOCK_UNFINISHED}, // We only have active / inactive blocks
+ {"minecraft:composter", E_BLOCK_UNFINISHED},
+ {"minecraft:conduit", E_BLOCK_UNFINISHED},
+ {"minecraft:cornflower", E_BLOCK_FLOWER},
+ {"minecraft:cracked_stone_bricks", E_BLOCK_STONE_BRICKS},
+ {"minecraft:crafting_table", E_BLOCK_CRAFTING_TABLE},
+ {"minecraft:creeper_head", E_BLOCK_HEAD},
+ {"minecraft:creeper_wall_head", E_BLOCK_HEAD},
+ {"minecraft:cut_red_sandstone", E_BLOCK_RED_SANDSTONE},
+ {"minecraft:cut_red_sandstone_slab", E_BLOCK_RED_SANDSTONE_SLAB},
+ {"minecraft:cut_sandstone", E_BLOCK_SANDSTONE},
+ {"minecraft:cut_sandstone_slab", E_BLOCK_RED_SANDSTONE_SLAB},
+ {"minecraft:cyan_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:cyan_bed", E_BLOCK_BED},
+ {"minecraft:cyan_carpet", E_BLOCK_CARPET},
+ {"minecraft:cyan_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:cyan_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:cyan_glazed_terracotta", E_BLOCK_CYAN_GLAZED_TERRACOTTA},
+ {"minecraft:cyan_shulker_box", E_BLOCK_CYAN_SHULKER_BOX},
+ {"minecraft:cyan_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:cyan_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:cyan_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:cyan_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:cyan_wool", E_BLOCK_WOOL},
+ {"minecraft:damaged_anvil", E_BLOCK_ANVIL},
+ {"minecraft:dandelion", E_BLOCK_FLOWER},
+ {"minecraft:dark_oak_button", E_BLOCK_WOODEN_BUTTON},
+ {"minecraft:dark_oak_door", E_BLOCK_WOODEN_DOOR},
+ {"minecraft:dark_oak_fence", E_BLOCK_FENCE},
+ {"minecraft:dark_oak_fence_gate", E_BLOCK_FENCE_GATE},
+ {"minecraft:dark_oak_leaves", E_BLOCK_LEAVES},
+ {"minecraft:dark_oak_log", E_BLOCK_LOG},
+ {"minecraft:dark_oak_planks", E_BLOCK_PLANKS},
+ {"minecraft:dark_oak_pressure_plate", E_BLOCK_WOODEN_PRESSURE_PLATE},
+ {"minecraft:dark_oak_sapling", E_BLOCK_SAPLING},
+ {"minecraft:dark_oak_sign", E_BLOCK_SIGN_POST},
+ {"minecraft:dark_oak_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:dark_oak_stairs", E_BLOCK_WOODEN_STAIRS},
+ {"minecraft:dark_oak_trapdoor", E_BLOCK_TRAPDOOR},
+ {"minecraft:dark_oak_wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:dark_oak_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:dark_prismarine", E_BLOCK_PRISMARINE_BLOCK},
+ {"minecraft:dark_prismarine_slab", E_BLOCK_UNFINISHED},
+ {"minecraft:dark_prismarine_stairs", E_BLOCK_UNFINISHED},
+ {"minecraft:daylight_detector", E_BLOCK_DAYLIGHT_SENSOR},
+ {"minecraft:dead_brain_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_brain_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_brain_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_brain_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_bubble_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_bubble_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_bubble_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_bubble_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_bush", E_BLOCK_DEAD_BUSH},
+ {"minecraft:dead_fire_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_fire_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_fire_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_fire_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_horn_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_horn_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_horn_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_horn_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_tube_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_tube_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_tube_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:dead_tube_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:detector_rail", E_BLOCK_DETECTOR_RAIL},
+ {"minecraft:diamond_block", E_BLOCK_DIAMOND_BLOCK},
+ {"minecraft:diamond_ore", E_BLOCK_DIAMOND_ORE},
+ {"minecraft:diorite", E_BLOCK_UNFINISHED},
+ {"minecraft:diorite_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:diorite_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:diorite_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:dirt", E_BLOCK_DIRT},
+ {"minecraft:dispenser", E_BLOCK_DISPENSER},
+ {"minecraft:dragon_egg", E_BLOCK_DRAGON_EGG},
+ {"minecraft:dragon_head", E_BLOCK_UNFINISHED},
+ {"minecraft:dragon_wall_head", E_BLOCK_UNFINISHED},
+ {"minecraft:dried_kelp_block", E_BLOCK_UNFINISHED},
+ {"minecraft:dropper", E_BLOCK_DROPPER},
+ {"minecraft:emerald_block", E_BLOCK_EMERALD_BLOCK},
+ {"minecraft:emerald_ore", E_BLOCK_EMERALD_ORE},
+ {"minecraft:enchanting_table", E_BLOCK_ENCHANTMENT_TABLE},
+ {"minecraft:end_gateway", E_BLOCK_END_GATEWAY},
+ {"minecraft:end_portal", E_BLOCK_END_PORTAL},
+ {"minecraft:end_portal_frame", E_BLOCK_END_PORTAL_FRAME},
+ {"minecraft:end_rod", E_BLOCK_END_ROD},
+ {"minecraft:end_stone", E_BLOCK_END_STONE},
+ {"minecraft:end_stone_brick_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:end_stone_brick_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:end_stone_brick_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:end_stone_bricks", E_BLOCK_UNFINISHED},
+ {"minecraft:ender_chest", E_BLOCK_ENDER_CHEST},
+ {"minecraft:farmland", E_BLOCK_FARMLAND},
+ {"minecraft:fern", E_BLOCK_TALL_GRASS},
+ {"minecraft:fire", E_BLOCK_FIRE},
+ {"minecraft:fire_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:fire_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:fire_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:fire_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:fletching_table", E_BLOCK_UNFINISHED},
+ {"minecraft:flower_pot", E_BLOCK_FLOWER_POT},
+ {"minecraft:frosted_ice", E_BLOCK_FROSTED_ICE},
+ {"minecraft:furnace", E_BLOCK_FURNACE},
+ {"minecraft:glass", E_BLOCK_GLASS},
+ {"minecraft:glass_pane", E_BLOCK_GLASS_PANE},
+ {"minecraft:glowstone", E_BLOCK_GLOWSTONE},
+ {"minecraft:gold_block", E_BLOCK_GOLD_BLOCK},
+ {"minecraft:gold_ore", E_BLOCK_GOLD_ORE},
+ {"minecraft:granite", E_BLOCK_UNFINISHED},
+ {"minecraft:granite_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:granite_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:granite_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:grass", E_BLOCK_TALL_GRASS},
+ {"minecraft:grass_block", E_BLOCK_GRASS},
+ {"minecraft:grass_path", E_BLOCK_UNFINISHED},
+ {"minecraft:gravel", E_BLOCK_GRAVEL},
+ {"minecraft:gray_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:gray_bed", E_BLOCK_BED},
+ {"minecraft:gray_carpet", E_BLOCK_CARPET},
+ {"minecraft:gray_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:gray_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:gray_glazed_terracotta", E_BLOCK_GRAY_GLAZED_TERRACOTTA},
+ {"minecraft:gray_shulker_box", E_BLOCK_GRAY_SHULKER_BOX},
+ {"minecraft:gray_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:gray_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:gray_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:gray_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:gray_wool", E_BLOCK_WOOL},
+ {"minecraft:green_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:green_bed", E_BLOCK_BED},
+ {"minecraft:green_carpet", E_BLOCK_CARPET},
+ {"minecraft:green_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:green_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:green_glazed_terracotta", E_BLOCK_GREEN_GLAZED_TERRACOTTA},
+ {"minecraft:green_shulker_box", E_BLOCK_GREEN_SHULKER_BOX},
+ {"minecraft:green_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:green_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:green_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:green_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:green_wool", E_BLOCK_WOOL},
+ {"minecraft:grindstone", E_BLOCK_UNFINISHED},
+ {"minecraft:hay_block", E_BLOCK_HAY_BALE},
+ {"minecraft:heavy_weighted_pressure_plate", E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE},
+ {"minecraft:hopper", E_BLOCK_HOPPER},
+ {"minecraft:horn_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:horn_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:horn_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:horn_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:ice", E_BLOCK_ICE},
+ {"minecraft:infested_chiseled_stone_bricks", E_BLOCK_SILVERFISH_EGG},
+ {"minecraft:infested_cobblestone", E_BLOCK_SILVERFISH_EGG},
+ {"minecraft:infested_cracked_stone_bricks", E_BLOCK_SILVERFISH_EGG},
+ {"minecraft:infested_mossy_stone_bricks", E_BLOCK_SILVERFISH_EGG},
+ {"minecraft:infested_stone", E_BLOCK_SILVERFISH_EGG},
+ {"minecraft:infested_stone_bricks", E_BLOCK_SILVERFISH_EGG},
+ {"minecraft:iron_bars", E_BLOCK_IRON_BARS},
+ {"minecraft:iron_block", E_BLOCK_IRON_BLOCK},
+ {"minecraft:iron_door", E_BLOCK_IRON_DOOR},
+ {"minecraft:iron_ore", E_BLOCK_IRON_ORE},
+ {"minecraft:iron_trapdoor", E_BLOCK_IRON_TRAPDOOR},
+ {"minecraft:jack_o_lantern", E_BLOCK_JACK_O_LANTERN},
+ {"minecraft:jigsaw", E_BLOCK_UNFINISHED},
+ {"minecraft:jukebox", E_BLOCK_JUKEBOX},
+ {"minecraft:jungle_button", E_BLOCK_WOODEN_BUTTON},
+ {"minecraft:jungle_door", E_BLOCK_WOODEN_DOOR},
+ {"minecraft:jungle_fence", E_BLOCK_FENCE},
+ {"minecraft:jungle_fence_gate", E_BLOCK_FENCE_GATE},
+ {"minecraft:jungle_leaves", E_BLOCK_LEAVES},
+ {"minecraft:jungle_log", E_BLOCK_LOG},
+ {"minecraft:jungle_planks", E_BLOCK_PLANKS},
+ {"minecraft:jungle_pressure_plate", E_BLOCK_WOODEN_PRESSURE_PLATE},
+ {"minecraft:jungle_sapling", E_BLOCK_SAPLING},
+ {"minecraft:jungle_sign", E_BLOCK_SIGN_POST},
+ {"minecraft:jungle_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:jungle_stairs", E_BLOCK_WOODEN_STAIRS},
+ {"minecraft:jungle_trapdoor", E_BLOCK_TRAPDOOR},
+ {"minecraft:jungle_wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:jungle_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:kelp", E_BLOCK_UNFINISHED},
+ {"minecraft:kelp_plant", E_BLOCK_UNFINISHED},
+ {"minecraft:ladder", E_BLOCK_LADDER},
+ {"minecraft:lantern", E_BLOCK_UNFINISHED},
+ {"minecraft:lapis_block", E_BLOCK_LAPIS_BLOCK},
+ {"minecraft:lapis_ore", E_BLOCK_LAPIS_ORE},
+ {"minecraft:large_fern", E_BLOCK_BIG_FLOWER},
+ {"minecraft:lava", E_BLOCK_LAVA},
+ {"minecraft:lectern", E_BLOCK_UNFINISHED},
+ {"minecraft:lever", E_BLOCK_LEVER},
+ {"minecraft:light_blue_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:light_blue_bed", E_BLOCK_BED},
+ {"minecraft:light_blue_carpet", E_BLOCK_CARPET},
+ {"minecraft:light_blue_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:light_blue_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:light_blue_glazed_terracotta", E_BLOCK_LIGHT_BLUE_GLAZED_TERRACOTTA},
+ {"minecraft:light_blue_shulker_box", E_BLOCK_LIGHT_BLUE_SHULKER_BOX},
+ {"minecraft:light_blue_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:light_blue_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:light_blue_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:light_blue_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:light_blue_wool", E_BLOCK_WOOL},
+ {"minecraft:light_gray_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:light_gray_bed", E_BLOCK_BED},
+ {"minecraft:light_gray_carpet", E_BLOCK_CARPET},
+ {"minecraft:light_gray_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:light_gray_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:light_gray_glazed_terracotta", E_BLOCK_LIGHT_GRAY_GLAZED_TERRACOTTA},
+ {"minecraft:light_gray_shulker_box", E_BLOCK_LIGHT_GRAY_SHULKER_BOX},
+ {"minecraft:light_gray_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:light_gray_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:light_gray_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:light_gray_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:light_gray_wool", E_BLOCK_WOOL},
+ {"minecraft:light_weighted_pressure_plate", E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE},
+ {"minecraft:lilac", E_BLOCK_BIG_FLOWER},
+ {"minecraft:lily_of_the_valley", E_BLOCK_FLOWER},
+ {"minecraft:lily_pad", E_BLOCK_LILY_PAD},
+ {"minecraft:lime_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:lime_bed", E_BLOCK_BED},
+ {"minecraft:lime_carpet", E_BLOCK_CARPET},
+ {"minecraft:lime_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:lime_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:lime_glazed_terracotta", E_BLOCK_LIME_GLAZED_TERRACOTTA},
+ {"minecraft:lime_shulker_box", E_BLOCK_LIME_SHULKER_BOX},
+ {"minecraft:lime_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:lime_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:lime_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:lime_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:lime_wool", E_BLOCK_WOOL},
+ {"minecraft:loom", E_BLOCK_UNFINISHED},
+ {"minecraft:magenta_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:magenta_bed", E_BLOCK_BED},
+ {"minecraft:magenta_carpet", E_BLOCK_CARPET},
+ {"minecraft:magenta_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:magenta_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:magenta_glazed_terracotta", E_BLOCK_MAGENTA_GLAZED_TERRACOTTA},
+ {"minecraft:magenta_shulker_box", E_BLOCK_MAGENTA_SHULKER_BOX},
+ {"minecraft:magenta_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:magenta_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:magenta_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:magenta_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:magenta_wool", E_BLOCK_WOOL},
+ {"minecraft:magma_block", E_BLOCK_MAGMA},
+ {"minecraft:melon", E_BLOCK_MELON},
+ {"minecraft:melon_stem", E_BLOCK_MELON_STEM},
+ {"minecraft:mossy_cobblestone", E_BLOCK_MOSSY_COBBLESTONE},
+ {"minecraft:mossy_cobblestone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:mossy_cobblestone_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:mossy_cobblestone_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:mossy_stone_brick_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:mossy_stone_brick_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:mossy_stone_brick_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:mossy_stone_bricks", E_BLOCK_STONE_BRICKS},
+ {"minecraft:moving_piston", E_BLOCK_UNFINISHED},
+ {"minecraft:mushroom_stem", E_BLOCK_HUGE_BROWN_MUSHROOM},
+ {"minecraft:mycelium", E_BLOCK_MYCELIUM},
+ {"minecraft:nether_brick_fence", E_BLOCK_NETHER_BRICK_FENCE},
+ {"minecraft:nether_brick_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:nether_brick_stairs", E_BLOCK_NETHER_BRICK_STAIRS},
+ {"minecraft:nether_brick_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:nether_bricks", E_BLOCK_NETHER_BRICK},
+ {"minecraft:nether_portal", E_BLOCK_NETHER_PORTAL},
+ {"minecraft:nether_quartz_ore", E_BLOCK_NETHER_QUARTZ_ORE},
+ {"minecraft:nether_wart", E_BLOCK_NETHER_WART},
+ {"minecraft:nether_wart_block", E_BLOCK_NETHER_WART_BLOCK},
+ {"minecraft:netherrack", E_BLOCK_NETHERRACK},
+ {"minecraft:note_block", E_BLOCK_NOTE_BLOCK},
+ {"minecraft:oak_button", E_BLOCK_WOODEN_BUTTON},
+ {"minecraft:oak_door", E_BLOCK_WOODEN_DOOR},
+ {"minecraft:oak_fence", E_BLOCK_FENCE},
+ {"minecraft:oak_fence_gate", E_BLOCK_FENCE_GATE},
+ {"minecraft:oak_leaves", E_BLOCK_LEAVES},
+ {"minecraft:oak_log", E_BLOCK_LOG},
+ {"minecraft:oak_planks", E_BLOCK_PLANKS},
+ {"minecraft:oak_pressure_plate", E_BLOCK_WOODEN_PRESSURE_PLATE},
+ {"minecraft:oak_sapling", E_BLOCK_SAPLING},
+ {"minecraft:oak_sign", E_BLOCK_SIGN_POST},
+ {"minecraft:oak_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:oak_stairs", E_BLOCK_WOODEN_STAIRS},
+ {"minecraft:oak_trapdoor", E_BLOCK_TRAPDOOR},
+ {"minecraft:oak_wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:oak_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:observer", E_BLOCK_OBSERVER},
+ {"minecraft:obsidian", E_BLOCK_OBSIDIAN},
+ {"minecraft:orange_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:orange_bed", E_BLOCK_BED},
+ {"minecraft:orange_carpet", E_BLOCK_CARPET},
+ {"minecraft:orange_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:orange_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:orange_glazed_terracotta", E_BLOCK_ORANGE_GLAZED_TERRACOTTA},
+ {"minecraft:orange_shulker_box", E_BLOCK_ORANGE_SHULKER_BOX},
+ {"minecraft:orange_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:orange_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:orange_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:orange_tulip", E_BLOCK_FLOWER},
+ {"minecraft:orange_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:orange_wool", E_BLOCK_WOOL},
+ {"minecraft:oxeye_daisy", E_BLOCK_FLOWER},
+ {"minecraft:packed_ice", E_BLOCK_PACKED_ICE},
+ {"minecraft:peony", E_BLOCK_BIG_FLOWER},
+ {"minecraft:petrified_oak_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:pink_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:pink_bed", E_BLOCK_BED},
+ {"minecraft:pink_carpet", E_BLOCK_CARPET},
+ {"minecraft:pink_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:pink_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:pink_glazed_terracotta", E_BLOCK_PINK_GLAZED_TERRACOTTA},
+ {"minecraft:pink_shulker_box", E_BLOCK_PINK_SHULKER_BOX},
+ {"minecraft:pink_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:pink_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:pink_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:pink_tulip", E_BLOCK_FLOWER},
+ {"minecraft:pink_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:pink_wool", E_BLOCK_WOOL},
+ {"minecraft:piston", E_BLOCK_PISTON},
+ {"minecraft:piston_head", E_BLOCK_PISTON_EXTENSION},
+ {"minecraft:player_head", E_BLOCK_HEAD},
+ {"minecraft:player_wall_head", E_BLOCK_HEAD},
+ {"minecraft:podzol", E_BLOCK_UNFINISHED},
+ {"minecraft:polished_andesite", E_BLOCK_UNFINISHED},
+ {"minecraft:polished_andesite_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:polished_andesite_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:polished_diorite", E_BLOCK_UNFINISHED},
+ {"minecraft:polished_diorite_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:polished_diorite_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:polished_granite", E_BLOCK_UNFINISHED},
+ {"minecraft:polished_granite_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:polished_granite_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:poppy", E_BLOCK_FLOWER},
+ {"minecraft:potatoes", E_BLOCK_POTATOES},
+ {"minecraft:potted_acacia_sapling", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_allium", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_azure_bluet", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_bamboo", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_birch_sapling", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_blue_orchid", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_brown_mushroom", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_cactus", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_cornflower", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_dandelion", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_dark_oak_sapling", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_dead_bush", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_fern", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_jungle_sapling", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_lily_of_the_valley", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_oak_sapling", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_orange_tulip", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_oxeye_daisy", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_pink_tulip", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_poppy", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_red_mushroom", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_red_tulip", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_spruce_sapling", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_white_tulip", E_BLOCK_UNFINISHED},
+ {"minecraft:potted_wither_rose", E_BLOCK_UNFINISHED},
+ {"minecraft:powered_rail", E_BLOCK_POWERED_RAIL},
+ {"minecraft:prismarine", E_BLOCK_PRISMARINE_BLOCK},
+ {"minecraft:prismarine_brick_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:prismarine_brick_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:prismarine_bricks", E_BLOCK_PRISMARINE_BLOCK},
+ {"minecraft:prismarine_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:prismarine_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:prismarine_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:pumpkin", E_BLOCK_PUMPKIN},
+ {"minecraft:pumpkin_stem", E_BLOCK_PUMPKIN_STEM},
+ {"minecraft:purple_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:purple_bed", E_BLOCK_BED},
+ {"minecraft:purple_carpet", E_BLOCK_CARPET},
+ {"minecraft:purple_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:purple_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:purple_glazed_terracotta", E_BLOCK_PURPLE_GLAZED_TERRACOTTA},
+ {"minecraft:purple_shulker_box", E_BLOCK_PURPLE_SHULKER_BOX},
+ {"minecraft:purple_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:purple_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:purple_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:purple_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:purple_wool", E_BLOCK_WOOL},
+ {"minecraft:purpur_block", E_BLOCK_PURPUR_BLOCK},
+ {"minecraft:purpur_pillar", E_BLOCK_PURPUR_PILLAR},
+ {"minecraft:purpur_slab", E_BLOCK_PURPUR_SLAB},
+ {"minecraft:purpur_stairs", E_BLOCK_PURPUR_STAIRS},
+ {"minecraft:quartz_block", E_BLOCK_QUARTZ_BLOCK},
+ {"minecraft:quartz_pillar", E_BLOCK_UNFINISHED},
+ {"minecraft:quartz_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:quartz_stairs", E_BLOCK_QUARTZ_STAIRS},
+ {"minecraft:rail", E_BLOCK_RAIL},
+ {"minecraft:red_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:red_bed", E_BLOCK_BED},
+ {"minecraft:red_carpet", E_BLOCK_CARPET},
+ {"minecraft:red_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:red_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:red_glazed_terracotta", E_BLOCK_RED_GLAZED_TERRACOTTA},
+ {"minecraft:red_mushroom", E_BLOCK_RED_MUSHROOM},
+ {"minecraft:red_mushroom_block", E_BLOCK_HUGE_RED_MUSHROOM},
+ {"minecraft:red_nether_brick_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:red_nether_brick_stairs", E_BLOCK_STONE_BRICK_STAIRS},
+ {"minecraft:red_nether_brick_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:red_nether_bricks", E_BLOCK_RED_NETHER_BRICK},
+ {"minecraft:red_sand", E_BLOCK_UNFINISHED},
+ {"minecraft:red_sandstone", E_BLOCK_RED_SANDSTONE},
+ {"minecraft:red_sandstone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:red_sandstone_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:red_sandstone_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:red_shulker_box", E_BLOCK_RED_SHULKER_BOX},
+ {"minecraft:red_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:red_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:red_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:red_tulip", E_BLOCK_FLOWER},
+ {"minecraft:red_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:red_wool", E_BLOCK_WOOL},
+ {"minecraft:redstone_block", E_BLOCK_BLOCK_OF_REDSTONE},
+ {"minecraft:redstone_lamp", E_BLOCK_UNFINISHED}, // We only have handlers for either ON or OFF variant
+ {"minecraft:redstone_ore", E_BLOCK_REDSTONE_ORE},
+ {"minecraft:redstone_torch", E_BLOCK_UNFINISHED}, // We only have handlers for either ON or OFF variant
+ {"minecraft:redstone_wall_torch", E_BLOCK_UNFINISHED},
+ {"minecraft:redstone_wire", E_BLOCK_REDSTONE_WIRE},
+ {"minecraft:repeater", E_BLOCK_UNFINISHED},
+ {"minecraft:repeating_command_block", E_BLOCK_REPEATING_COMMAND_BLOCK},
+ {"minecraft:rose_bush", E_BLOCK_BIG_FLOWER},
+ {"minecraft:sand", E_BLOCK_SAND},
+ {"minecraft:sandstone", E_BLOCK_SANDSTONE},
+ {"minecraft:sandstone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:sandstone_stairs", E_BLOCK_SANDSTONE_STAIRS},
+ {"minecraft:sandstone_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:scaffolding", E_BLOCK_UNFINISHED},
+ {"minecraft:sea_lantern", E_BLOCK_SEA_LANTERN},
+ {"minecraft:sea_pickle", E_BLOCK_UNFINISHED},
+ {"minecraft:seagrass", E_BLOCK_UNFINISHED},
+ {"minecraft:shulker_box", E_BLOCK_PURPLE_SHULKER_BOX}, // Color is irrelevant in the handler
+ {"minecraft:skeleton_skull", E_BLOCK_HEAD},
+ {"minecraft:skeleton_wall_skull", E_BLOCK_HEAD},
+ {"minecraft:slime_block", E_BLOCK_SLIME_BLOCK},
+ {"minecraft:smithing_table", E_BLOCK_UNFINISHED},
+ {"minecraft:smoker", E_BLOCK_UNFINISHED},
+ {"minecraft:smooth_quartz", E_BLOCK_QUARTZ_BLOCK},
+ {"minecraft:smooth_quartz_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:smooth_quartz_stairs", E_BLOCK_QUARTZ_STAIRS},
+ {"minecraft:smooth_red_sandstone", E_BLOCK_SANDSTONE},
+ {"minecraft:smooth_red_sandstone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:smooth_red_sandstone_stairs", E_BLOCK_SANDSTONE_STAIRS},
+ {"minecraft:smooth_sandstone", E_BLOCK_SANDSTONE},
+ {"minecraft:smooth_sandstone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:smooth_sandstone_stairs", E_BLOCK_SANDSTONE_STAIRS},
+ {"minecraft:smooth_stone", E_BLOCK_SANDSTONE},
+ {"minecraft:smooth_stone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:snow", E_BLOCK_SNOW},
+ {"minecraft:snow_block", E_BLOCK_SNOW_BLOCK},
+ {"minecraft:soul_sand", E_BLOCK_SOULSAND},
+ {"minecraft:spawner", E_BLOCK_MOB_SPAWNER},
+ {"minecraft:sponge", E_BLOCK_SPONGE},
+ {"minecraft:spruce_button", E_BLOCK_WOODEN_BUTTON},
+ {"minecraft:spruce_door", E_BLOCK_WOODEN_DOOR},
+ {"minecraft:spruce_fence", E_BLOCK_FENCE},
+ {"minecraft:spruce_fence_gate", E_BLOCK_FENCE_GATE},
+ {"minecraft:spruce_leaves", E_BLOCK_LEAVES},
+ {"minecraft:spruce_log", E_BLOCK_LOG},
+ {"minecraft:spruce_planks", E_BLOCK_PLANKS},
+ {"minecraft:spruce_pressure_plate", E_BLOCK_WOODEN_PRESSURE_PLATE},
+ {"minecraft:spruce_sapling", E_BLOCK_SAPLING},
+ {"minecraft:spruce_sign", E_BLOCK_SIGN_POST},
+ {"minecraft:spruce_slab", E_BLOCK_WOODEN_SLAB},
+ {"minecraft:spruce_stairs", E_BLOCK_WOODEN_STAIRS},
+ {"minecraft:spruce_trapdoor", E_BLOCK_TRAPDOOR},
+ {"minecraft:spruce_wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:spruce_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:sticky_piston", E_BLOCK_STICKY_PISTON},
+ {"minecraft:stone", E_BLOCK_STONE},
+ {"minecraft:stone_brick_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:stone_brick_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:stone_brick_wall", E_BLOCK_COBBLESTONE_WALL},
+ {"minecraft:stone_bricks", E_BLOCK_STONE_BRICKS},
+ {"minecraft:stone_button", E_BLOCK_STONE_BUTTON},
+ {"minecraft:stone_pressure_plate", E_BLOCK_STONE_PRESSURE_PLATE},
+ {"minecraft:stone_slab", E_BLOCK_STONE_SLAB},
+ {"minecraft:stone_stairs", E_BLOCK_COBBLESTONE_STAIRS},
+ {"minecraft:stonecutter", E_BLOCK_UNFINISHED},
+ {"minecraft:stripped_acacia_log", E_BLOCK_LOG},
+ {"minecraft:stripped_acacia_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:stripped_birch_log", E_BLOCK_LOG},
+ {"minecraft:stripped_birch_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:stripped_dark_oak_log", E_BLOCK_LOG},
+ {"minecraft:stripped_dark_oak_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:stripped_jungle_log", E_BLOCK_LOG},
+ {"minecraft:stripped_jungle_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:stripped_oak_log", E_BLOCK_LOG},
+ {"minecraft:stripped_oak_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:stripped_spruce_log", E_BLOCK_LOG},
+ {"minecraft:stripped_spruce_wood", E_BLOCK_UNFINISHED},
+ {"minecraft:structure_block", E_BLOCK_STRUCTURE_BLOCK},
+ {"minecraft:structure_void", E_BLOCK_STRUCTURE_VOID},
+ {"minecraft:sugar_cane", E_BLOCK_SUGARCANE},
+ {"minecraft:sunflower", E_BLOCK_BIG_FLOWER},
+ {"minecraft:sweet_berry_bush", E_BLOCK_FLOWER},
+ {"minecraft:tall_grass", E_BLOCK_TALL_GRASS},
+ {"minecraft:tall_seagrass", E_BLOCK_UNFINISHED},
+ {"minecraft:terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:tnt", E_BLOCK_TNT},
+ {"minecraft:torch", E_BLOCK_TORCH},
+ {"minecraft:trapped_chest", E_BLOCK_TRAPPED_CHEST},
+ {"minecraft:tripwire", E_BLOCK_TRIPWIRE},
+ {"minecraft:tripwire_hook", E_BLOCK_TRIPWIRE_HOOK},
+ {"minecraft:tube_coral", E_BLOCK_UNFINISHED},
+ {"minecraft:tube_coral_block", E_BLOCK_UNFINISHED},
+ {"minecraft:tube_coral_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:tube_coral_wall_fan", E_BLOCK_UNFINISHED},
+ {"minecraft:turtle_egg", E_BLOCK_UNFINISHED},
+ {"minecraft:vine", E_BLOCK_VINES},
+ {"minecraft:void_air", E_BLOCK_AIR},
+ {"minecraft:wall_sign", E_BLOCK_WALLSIGN},
+ {"minecraft:wall_torch", E_BLOCK_TORCH},
+ {"minecraft:water", E_BLOCK_WATER},
+ {"minecraft:wet_sponge", E_BLOCK_SPONGE},
+ {"minecraft:wheat", E_BLOCK_CROPS},
+ {"minecraft:white_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:white_bed", E_BLOCK_BED},
+ {"minecraft:white_carpet", E_BLOCK_CARPET},
+ {"minecraft:white_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:white_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:white_glazed_terracotta", E_BLOCK_WHITE_GLAZED_TERRACOTTA},
+ {"minecraft:white_shulker_box", E_BLOCK_WHITE_SHULKER_BOX},
+ {"minecraft:white_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:white_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:white_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:white_tulip", E_BLOCK_FLOWER},
+ {"minecraft:white_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:white_wool", E_BLOCK_WOOL},
+ {"minecraft:wither_rose", E_BLOCK_FLOWER},
+ {"minecraft:wither_skeleton_skull", E_BLOCK_HEAD},
+ {"minecraft:wither_skeleton_wall_skull", E_BLOCK_HEAD},
+ {"minecraft:yellow_banner", E_BLOCK_STANDING_BANNER},
+ {"minecraft:yellow_bed", E_BLOCK_BED},
+ {"minecraft:yellow_carpet", E_BLOCK_CARPET},
+ {"minecraft:yellow_concrete", E_BLOCK_CONCRETE},
+ {"minecraft:yellow_concrete_powder", E_BLOCK_CONCRETE_POWDER},
+ {"minecraft:yellow_glazed_terracotta", E_BLOCK_YELLOW_GLAZED_TERRACOTTA},
+ {"minecraft:yellow_shulker_box", E_BLOCK_YELLOW_SHULKER_BOX},
+ {"minecraft:yellow_stained_glass", E_BLOCK_STAINED_GLASS},
+ {"minecraft:yellow_stained_glass_pane", E_BLOCK_STAINED_GLASS_PANE},
+ {"minecraft:yellow_terracotta", E_BLOCK_TERRACOTTA},
+ {"minecraft:yellow_wall_banner", E_BLOCK_WALL_BANNER},
+ {"minecraft:yellow_wool", E_BLOCK_WOOL},
+ {"minecraft:zombie_head", E_BLOCK_HEAD},
+ {"minecraft:zombie_wall_head", E_BLOCK_HEAD},
+ };
+
+ for (const auto & r: regs)
+ {
+ std::shared_ptr<cBlockHandler> handler(::CreateBlockHandler(r.oldBlockType));
+ aRegistry.registerBlockType("<built-in>", r.newBlockTypeName, handler);
+ }
+}
diff --git a/src/Blocks/BlockHandler.h b/src/Blocks/BlockHandler.h
index 7fbc15ff5..d077442c9 100644
--- a/src/Blocks/BlockHandler.h
+++ b/src/Blocks/BlockHandler.h
@@ -16,6 +16,7 @@ class cBlockPluginInterface;
class cChunkInterface;
class cWorldInterface;
class cItems;
+class BlockTypeRegistry;
@@ -176,3 +177,9 @@ protected:
+namespace Temporary
+{
+ /** Registers all the BlockHandler descendants in the specified registry.
+ Temporary, since this will later be performed in a plugin that provides the vanilla blocks. */
+ void RegisterAllBlockHandlers(BlockTypeRegistry & aRegistry);
+};
diff --git a/src/Root.cpp b/src/Root.cpp
index b35d7229b..0110444ba 100644
--- a/src/Root.cpp
+++ b/src/Root.cpp
@@ -61,6 +61,7 @@ cRoot::cRoot(void) :
m_PluginManager(nullptr),
m_MojangAPI(nullptr)
{
+ Temporary::RegisterAllBlockHandlers(m_BlockTypeRegistry);
s_Root = this;
m_InputThreadRunFlag.clear();
}
diff --git a/src/Root.h b/src/Root.h
index aad7ccb14..169a78194 100644
--- a/src/Root.h
+++ b/src/Root.h
@@ -7,6 +7,7 @@
#include "Defines.h"
#include "FunctionRef.h"
#include "RankManager.h"
+#include "BlockTypeRegistry.h"
@@ -88,6 +89,9 @@ public:
cFurnaceRecipe * GetFurnaceRecipe (void) { return m_FurnaceRecipe; } // Exported in ManualBindings.cpp with quite a different signature
cBrewingRecipes * GetBrewingRecipes (void) { return m_BrewingRecipes.get(); } // Exported in ManualBindings.cpp
+ /** Returns the (read-write) storage for registered block types. */
+ BlockTypeRegistry & GetBlockTypeRegistry() { return m_BlockTypeRegistry; }
+
/** Returns the number of ticks for how long the item would fuel a furnace. Returns zero if not a fuel */
static int GetFurnaceFuelBurnTime(const cItem & a_Fuel); // tolua_export
@@ -227,6 +231,9 @@ private:
cHTTPServer m_HTTPServer;
+ /** The storage for all registered block types. */
+ BlockTypeRegistry m_BlockTypeRegistry;
+
void LoadGlobalSettings();