diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Block.cpp | 524 | ||||
-rw-r--r-- | src/Block.hpp | 3 | ||||
-rw-r--r-- | src/Render.cpp | 4 |
3 files changed, 2 insertions, 529 deletions
diff --git a/src/Block.cpp b/src/Block.cpp index 421cb5d..48c099d 100644 --- a/src/Block.cpp +++ b/src/Block.cpp @@ -4,530 +4,6 @@ #include "Plugin.hpp" -std::pair<std::string, std::string> TransformBlockIdToBlockStateName(BlockId blockId) { - switch (blockId.id) { - case 1: { - if (blockId.state > 6) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("stone", "normal"), - std::pair<std::string,std::string>("granite", "normal"), - std::pair<std::string,std::string>("smooth_granite", "normal"), - std::pair<std::string,std::string>("diorite", "normal"), - std::pair<std::string,std::string>("smooth_diorite", "normal"), - std::pair<std::string,std::string>("andesite", "normal"), - std::pair<std::string,std::string>("smooth_andesite", "normal"), - }; - return ids[blockId.state]; - } - case 2: { - return std::make_pair("grass", "snowy=false"); - } - case 3: { - if (blockId.state > 2) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("dirt", "normal"), - std::pair<std::string,std::string>("coarse_dirt", "normal"), - std::pair<std::string,std::string>("podzol", "snowy=false"), - }; - return ids[blockId.state]; - } - case 4: { - return std::make_pair("cobblestone", "normal"); - } - case 5: { - if (blockId.state > 5) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("oak_planks", "normal"), - std::pair<std::string,std::string>("spruce_planks", "normal"), - std::pair<std::string,std::string>("birch_planks", "normal"), - std::pair<std::string,std::string>("jungle_planks", "normal"), - std::pair<std::string,std::string>("acacia_planks", "normal"), - std::pair<std::string,std::string>("dark_oak_planks", "normal"), - }; - return ids[blockId.state]; - } - case 7: { - return std::make_pair("bedrock", "normal"); - } - case 8: - case 9: { - return std::make_pair("water", "normal"); - } - case 10: - case 11: { - return std::make_pair("lava", "normal"); - } - case 12: { - if (blockId.state > 1) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("sand", "normal"), - std::pair<std::string,std::string>("red_sand", "normal"), - }; - return ids[blockId.state]; - } - case 13: { - return std::make_pair("gravel", "normal"); - } - case 14: { - return std::make_pair("gold_ore", "normal"); - } - case 15: { - return std::make_pair("iron_ore", "normal"); - } - case 16: { - return std::make_pair("coal_ore", "normal"); - } - case 17: { - unsigned char type = blockId.state & 0x3; - unsigned char dir = (blockId.state & 0xC) >> 2; - static const std::string types[] = { - "oak_log", - "spruce_log", - "birch_log", - "jungle_log", - }; - static const std::string dirs[] = { - "axis=y", - "axis=x", - "axis=z", - "axis=none", - }; - return std::make_pair(types[type], dirs[dir]); - } - case 18: { - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("oak_leaves", "normal"), - std::pair<std::string,std::string>("spruce_leaves", "normal"), - std::pair<std::string,std::string>("birch_leaves", "normal"), - std::pair<std::string,std::string>("jungle_leaves", "normal"), - }; - return ids[blockId.state & 0x3]; - } - case 20: { - return std::make_pair("glass", "normal"); - } - case 21: { - return std::make_pair("lapis_ore", "normal"); - } - case 22: { - return std::make_pair("lapis_block", "normal"); - } - case 24: { - if (blockId.state > 2) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("sandstone", "normal"), - std::pair<std::string,std::string>("chiseled_sandstone", "normal"), - std::pair<std::string,std::string>("smooth_sandstone", "normal"), - }; - return ids[blockId.state]; - } - case 30: { - return std::make_pair("web", "normal"); - } - case 31: { - if (blockId.state > 2) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("dead_bush", "normal"), - std::pair<std::string,std::string>("tall_grass", "normal"), - std::pair<std::string,std::string>("fern", "normal"), - }; - return ids[blockId.state]; - } - case 32: { - return std::make_pair("dead_bush", "normal"); - } - case 35: { - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("white_wool", "normal"), - std::pair<std::string,std::string>("orange_wool", "normal"), - std::pair<std::string,std::string>("magenta_wool", "normal"), - std::pair<std::string,std::string>("light_blue_wool", "normal"), - std::pair<std::string,std::string>("yellow_wool", "normal"), - std::pair<std::string,std::string>("lime_wool", "normal"), - std::pair<std::string,std::string>("pink_wool", "normal"), - std::pair<std::string,std::string>("gray_wool", "normal"), - std::pair<std::string,std::string>("silver_wool", "normal"), - std::pair<std::string,std::string>("cyan_wool", "normal"), - std::pair<std::string,std::string>("purple_wool", "normal"), - std::pair<std::string,std::string>("blue_wool", "normal"), - std::pair<std::string,std::string>("brown_wool", "normal"), - std::pair<std::string,std::string>("green_wool", "normal"), - std::pair<std::string,std::string>("red_wool", "normal"), - std::pair<std::string,std::string>("black_wool", "normal"), - }; - return ids[blockId.state]; - } - case 37: { - return std::make_pair("dandelion", "normal"); - } - case 38: { - if (blockId.state > 8) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("poppy", "normal"), - std::pair<std::string,std::string>("blue_orchid", "normal"), - std::pair<std::string,std::string>("allium", "normal"), - std::pair<std::string,std::string>("houstonia", "normal"), - std::pair<std::string,std::string>("red_tulip", "normal"), - std::pair<std::string,std::string>("orange_tulip", "normal"), - std::pair<std::string,std::string>("white_tulip", "normal"), - std::pair<std::string,std::string>("pink_tulip", "normal"), - std::pair<std::string,std::string>("oxeye_daisy", "normal"), - }; - return ids[blockId.state]; - } - case 39: { - return std::make_pair("brown_mushroom","normal"); - } - case 40: { - return std::make_pair("red_mushroom", "normal"); - } - case 41: { - return std::make_pair("gold_block", "normal"); - } - case 44: { - return std::make_pair("stone_slab", "half=" + std::string(!(blockId.state >> 3) ? "bottom" : "top")); - } - case 45: { - return std::make_pair("brick_block", "normal"); - } - case 46: { - return std::make_pair("tnt", "normal"); - } - case 47: { - return std::make_pair("bookshelf", "normal"); - } - case 48: { - return std::make_pair("mossy_cobblestone", "normal"); - } - case 49: { - return std::make_pair("obsidian", "normal"); - } - case 50: { - if (blockId.state > 5) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("", ""), - std::pair<std::string,std::string>("torch", "facing=east"), - std::pair<std::string,std::string>("torch", "facing=west"), - std::pair<std::string,std::string>("torch", "facing=south"), - std::pair<std::string,std::string>("torch", "facing=north"), - std::pair<std::string,std::string>("torch", "facing=up"), - }; - return ids[blockId.state]; - } - case 53: { - bool isUp = blockId.state >> 2; - unsigned char dir = blockId.state & 0x3; - static const std::string dirs[] = { - "facing=east,half=", - "facing=west,half=", - "facing=south,half=", - "facing=north,half=", - }; - - return std::make_pair("oak_stairs", dirs[dir] + (isUp? "top" : "bottom") +",shape=straight"); - } - case 56: { - return std::make_pair("diamond_ore", "normal"); - } - case 57: { - return std::make_pair("diamond_block", "normal"); - } - case 59: { - return std::make_pair("wheat", "age=" + std::to_string(blockId.state)); - } - case 60: { - return std::make_pair("farmland", "moisture=" + std::to_string(7 - blockId.state)); - } - case 61: { - static const std::string dirs[] = { - "", - "", - "facing=north", - "facing=south", - "facing=west", - "facing=east", - }; - return std::make_pair("furnace", dirs[blockId.state]); - } - case 64: { - bool isUp = !(blockId.state >> 3); - bool hingeIsLeft = true; - bool isOpen = 0; - unsigned char dir = 0; - if (isUp) - hingeIsLeft = blockId.state & 0x1; - else { - isOpen = (blockId.state >> 1) & 0x1; - dir = blockId.state >> 2; - } - static const std::string dirs[] = { - "east", - "south", - "west", - "north", - }; - - return std::make_pair("wooden_door", "facing=" + dirs[dir] + ",half=" + (isUp ? "upper" : "lower") + ",hinge=" + (hingeIsLeft ? "left" : "right") + ",open=" + (isOpen ? "true" : "false")); - } - case 67: { - bool isUp = blockId.state >> 2; - unsigned char dir = blockId.state & 0x3; - static const std::string dirs[] = { - "facing=east,half=", - "facing=west,half=", - "facing=south,half=", - "facing=north,half=", - }; - - return std::make_pair("stone_stairs", dirs[dir] + (isUp ? "top" : "bottom") + ",shape=straight"); - } - case 69: { - bool isActive = blockId.state >> 3; - static const std::string types[] = { - "facing=down_x", - "facing=east", - "facing=west", - "facing=south", - "facing=north", - "facing=up_z", - "facing=up_x", - "facing=down_z", - }; - - return std::make_pair("lever", types[blockId.state & 0x7] + ",powered=" + (isActive ? "true" : "false")); - } - case 73: { - return std::make_pair("redstone_ore", "normal"); - } - case 74: { - return std::make_pair("redstone_ore", "normal"); - } - case 78: { - if (blockId.state > 7) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("snow_layer", "layers=1"), - std::pair<std::string,std::string>("snow_layer", "layers=2"), - std::pair<std::string,std::string>("snow_layer", "layers=3"), - std::pair<std::string,std::string>("snow_layer", "layers=4"), - std::pair<std::string,std::string>("snow_layer", "layers=5"), - std::pair<std::string,std::string>("snow_layer", "layers=6"), - std::pair<std::string,std::string>("snow_layer", "layers=7"), - std::pair<std::string,std::string>("snow_layer", "layers=8"), - }; - return ids[blockId.state]; - } - case 79: { - return std::make_pair("ice", "normal"); - } - case 80: { - return std::make_pair("snow", "normal"); - } - case 81: { - return std::make_pair("cactus", "normal"); - } - case 82: { - return std::make_pair("clay", "normal"); - } - case 83: { - return std::make_pair("reeds", "normal"); - } - case 86: { - if (blockId.state > 3) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("pumpkin", "facing=south"), - std::pair<std::string,std::string>("pumpkin", "facing=west"), - std::pair<std::string,std::string>("pumpkin", "facing=north"), - std::pair<std::string,std::string>("pumpkin", "facing=east"), - }; - return ids[blockId.state]; - } - case 87: { - return std::make_pair("netherrack", "normal"); - } - case 88: { - return std::make_pair("soul_sand", "normal"); - } - case 89: { - return std::make_pair("glowstone", "normal"); - } - case 90: { - return std::make_pair("portal", blockId.state == 1 ? "axis=x" : "axis=z"); - } - case 93: { - static const std::string dirs[] = { - "east", - "south", - "west", - "north", - }; - unsigned char dir = blockId.state & 0x3; - unsigned char delay = (blockId.state >> 2) + 1; - return std::make_pair("unpowered_repeater", "delay=" + std::to_string(delay) + ",facing=" + dirs[dir] + ",locked=false"); - } - case 94: { - static const std::string dirs[] = { - "east", - "south", - "west", - "north", - }; - unsigned char dir = blockId.state & 0x3; - unsigned char delay = (blockId.state >> 2) + 1; - return std::make_pair("powered_repeater", "delay=" + std::to_string(delay) + ",facing=" + dirs[dir] + ",locked=false"); - } - case 99: { - static const std::string variants[] = { - "variant=all_inside", - "variant=north_west", - "variant=north", - "variant=north_east", - "variant=west", - "variant=center", - "variant=east", - "variant=south_west", - "variant=south", - "variant=south_east", - "variant=stem", - "variant=all_outside", - "variant=all_stem", - }; - return std::make_pair("brown_mushroom_block", variants[blockId.state]); - } - case 100: { - static const std::string variants[] = { - "variant=all_inside", - "variant=north_west", - "variant=north", - "variant=north_east", - "variant=west", - "variant=center", - "variant=east", - "variant=south_west", - "variant=south", - "variant=south_east", - "variant=stem", - "variant=all_outside", - "variant=all_stem", - }; - return std::make_pair("red_mushroom_block", variants[blockId.state]); - } - case 103: { - return std::make_pair("melon_block", "normal"); - } - case 106: { - static const std::string values[] = { - "false", - "true", - }; - return std::make_pair("vine", "east=" + values[(blockId.state >> 3) & 0x1] + ",north=" + values[(blockId.state >> 2) & 0x1] + ",south=" + values[blockId.state & 0x1] + ",up=" + values[blockId.state == 0] + ",west=" + values[(blockId.state >> 1) & 0x1]); - } - case 111: { - return std::make_pair("waterlily", "normal"); - } - case 112: { - return std::make_pair("nether_brick", "normal"); - } - case 121: { - return std::make_pair("end_stone", "normal"); - } - case 129: { - return std::make_pair("emerald_ore", "normal"); - } - case 133: { - return std::make_pair("emerald_block", "normal"); - } - case 141: { - return std::make_pair("carrots", "age=" + std::to_string(blockId.state)); - } - case 142: { - return std::make_pair("potatoes", "age=" + std::to_string(blockId.state)); - } - case 149: { - static const std::string dirs[] = { - "east", - "south", - "west", - "north", - }; - unsigned char dir = blockId.state & 0x3; - bool substractMode = (blockId.state >> 2) & 0x1; - bool isPowered = blockId.state >> 3; - return std::make_pair("unpowered_comparator", "facing=" + dirs[dir] + ",mode=" + (substractMode ? "subtract" : "compare") + ",powered=" + (isPowered ? "true" : "false")); - } - case 153: { - return std::make_pair("quartz_ore", "normal"); - } - case 155: { - return std::make_pair("quartz_block", "normal"); - } - case 161: { - if ((blockId.state & 0x3) > 2) - break; - static const std::pair<std::string, std::string> ids[] = { - std::pair<std::string,std::string>("acacia_leaves", "normal"), - std::pair<std::string,std::string>("dark_oak_leaves", "normal"), - }; - return ids[blockId.state & 0x3]; - } - case 162: { - unsigned char type = blockId.state & 0x3; - if (type > 2) - break; - unsigned char dir = (blockId.state & 0xC) >> 2; - static const std::string types[] = { - "acacia_log", - "dark_oak_log", - }; - static const std::string dirs[] = { - "axis=y", - "axis=x", - "axis=z", - "axis=none", - }; - return std::make_pair(types[type], dirs[dir]); - } - case 175: { - bool high = ((blockId.state >> 3) & 0x1); - unsigned char type = blockId.state & 0x7; - - static const std::string types[] = { - "sunflower", - "syringa", - "double_grass", - "double_fern", - "double_rose", - "paeonia", - }; - - static const std::string isHigh[] = { - "half=lower", - "half=upper", - }; - return std::make_pair(types[type], isHigh[high]); - } - case 207: { - return std::make_pair("beetroots", "age=" + std::to_string(blockId.state)); - } - case 208: { - return std::make_pair("grass_path", "normal"); - } - default: - break; - } - - return std::make_pair("", ""); -} - std::map<BlockId, BlockInfo> staticBlockInfo; void RegisterStaticBlockInfo(BlockId blockId, BlockInfo blockInfo) { diff --git a/src/Block.hpp b/src/Block.hpp index d8a78a8..fbeeaeb 100644 --- a/src/Block.hpp +++ b/src/Block.hpp @@ -41,9 +41,6 @@ namespace std { }; } -//returns name of blockstate and name of variant -std::pair<std::string, std::string> TransformBlockIdToBlockStateName(BlockId blockId); - struct BlockInfo { bool collides; std::string blockstate; diff --git a/src/Render.cpp b/src/Render.cpp index 6218740..128c877 100644 --- a/src/Render.cpp +++ b/src/Render.cpp @@ -451,8 +451,8 @@ void Render::RenderGui() { AssetManager::GetAssetNameByBlockId(BlockId{ worldPtr->GetBlockId(selectionStatus.selectedBlock).id,0 }).c_str()); ImGui::Text("Selected block variant: %s:%s", - TransformBlockIdToBlockStateName(worldPtr->GetBlockId(selectionStatus.selectedBlock)).first.c_str(), - TransformBlockIdToBlockStateName(worldPtr->GetBlockId(selectionStatus.selectedBlock)).second.c_str()); + GetBlockInfo(worldPtr->GetBlockId(selectionStatus.selectedBlock)).blockstate.c_str(), + GetBlockInfo(worldPtr->GetBlockId(selectionStatus.selectedBlock)).variant.c_str()); } ImGui::End(); |