from dataclasses import dataclass class BlockID: AIR = 0 STONE = 1 GRASS = 2 DIRT = 3 STONEBRICK = 4 WOOD = 5 SAPLING = 6 BEDROCK = 7 WATER = 8 WATER_CALM = 9 LAVA = 10 LAVA_CALM = 11 SAND = 12 GRAVEL = 13 ORE_GOLD = 14 ORE_IRON = 15 ORE_COAL = 16 TREE_TRUNK = 17 LEAVES = 18 SPONGE = 19 GLASS = 20 ORE_LAPIS = 21 BLOCK_LAPIS = 22 DISPENSER = 23 SANDSTONE = 24 NOTE_BLOCK = 25 BED = 26 RAIL_POWERED = 27 RAIL_ACTIVATOR = 28 PISTON_STICKY = 29 COBWEB = 30 TALL_GRASS = 31 DEAD_BUSH = 32 PISTON = 33 PISTON_HEAD = 34 CLOTH = 35 PISTON_MOVING = 36 FLOWER = 37 ROSE = 38 MUSHROOM_1 = 39 MUSHROOM_2 = 40 BLOCK_GOLD = 41 BLOCK_IRON = 42 STONESLAB_FULL = 43 STONESLAB_HALF = 44 BRICKS = 45 TNT = 46 BOOKSHELF = 47 MOSS_STONE = 48 OBSIDIAN = 49 TORCH = 50 FIRE = 51 SPAWNER = 52 STAIRS_WOOD = 53 CHEST = 54 WIRE = 55 ORE_EMERALD = 56 BLOCK_EMERALD = 57 WORKBENCH = 58 WHEAT = 59 FARMLAND = 60 FURNACE = 61 FURNACE_LIT = 62 SIGN = 63 DOOR_WOOD = 64 LADDER = 65 RAIL = 66 STAIRS_STONE = 67 SIGN_WALL = 68 LEVER = 69 PLATE_STONE = 70 DOOR_IRON = 71 PLATE_WOOD = 72 ORE_REDSTONE = 73 ORE_REDSTONE_LIT = 74 NOT_GATE_OFF = 75 NOT_GATE_ON = 76 BUTTON_STONE = 77 TOPSNOW = 78 ICE = 79 SNOW = 80 CACTUS = 81 CLAY = 82 REEDS = 83 JUKEBOX = 84 FENCE = 85 PUMPKIN = 86 NETHERRACK = 87 SOUL_SAND = 88 GLOWSTONE = 89 PORTAL = 90 PUMPKIN_LIT = 91 CAKE = 92 REPEATER_OFF = 93 REPEATER_ON = 94 INVISIBLE = 95 TRAPDOOR = 96 STONE_MONSTER_EGG = 97 STONE_BRICKS = 98 MUSHROOM1_BLOCK = 99 MUSHROOM2_BLOCK = 100 CLOTH_00 = 101 CLOTH_10 = 102 CLOTH_20 = 103 CLOTH_30 = 104 CLOTH_40 = 105 CLOTH_50 = 106 CLOTH_60 = 107 CLOTH_70 = 108 CLOTH_01 = 109 CLOTH_11 = 110 CLOTH_21 = 111 CLOTH_31 = 112 CLOTH_41 = 113 CLOTH_51 = 114 CLOTH_61 = 115 # modded YELLOW_COBBLE = 128 MARBLE_YELLOW = 248 class Texture: GRASS_TOP = 0 STONE = 1 DIRT = 2 GRASS_SIDE = 3 PLANKS = 4 STONE_SLAB_SIDE = 5 STONE_SLAB_TOP = 6 BRICKS = 7 TNT_SIDE = 8 TNT_TOP = 9 TNT_BOTTOM = 10 COBWEB = 11 ROSE = 12 FLOWER = 13 WATER_STATIC = 14 SAPLING = 15 STONEBRICK = 16 BEDROCK = 17 SAND = 18 GRAVEL = 19 LOG_SIDE = 20 LOG_TOP = 21 IRON = 22 GOLD = 23 EMERALD = 24 CHEST_ONE_TOP = 25 CHEST_ONE_SIDE = 26 CHEST_ONE_FRONT = 27 MUSHROOM_RED = 28 MUSHROOM_BROWN = 29 OBSIDIAN_CRYING = 30 FIRE1 = 31 ORE_GOLD = 32 ORE_IRON = 33 ORE_COAL = 34 BOOKSHELF = 35 MOSSY_STONE = 36 OBSIDIAN = 37 GRASS_SIDE_OVERLAY = 38 TALL_GRASS = 39 NONE40 = 40 CHEST_TWO_FRONT_LEFT = 41 CHEST_TWO_FRONT_RIGHT = 42 WORKBENCH_TOP = 43 FURNACE_FRONT = 44 FURNACE_SIDE = 45 DISPENSER_SIDE = 46 FIRE2 = 47 SPONGE = 48 GLASS = 49 ORE_EMERALD = 50 ORE_RED_STONE = 51 LEAVES_TRANSPARENT = 52 LEAVES_OPAQUE = 53 NONE54 = 54 DEAD_BUSH = 55 NONE56 = 56 CHEST_TWO_BACK_LEFT = 57 CHEST_TWO_BACK_RIGHT = 58 WORKBENCH_SIDE_1 = 59 WORKBENCH_SIDE_2 = 60 FURNACE_LIT = 61 FURNACE_TOP = 62 NONE63 = 63 CLOTH_64 = 64 SPAWNER = 65 SNOW = 66 ICE = 67 GRASS_SIDE_SNOW = 68 CACTUS_TOP = 69 CACTUS_SIDE = 70 CACTUS_BOTTOM = 71 CLAY = 72 REEDS = 73 JUKEBOX_SIDE = 74 JUKEBOX_TOP = 75 NONE76 = 76 NONE77 = 77 NONE78 = 78 NONE79 = 79 TORCH_LIT = 80 DOOR_TOP = 81 DOOR_IRON_TOP = 82 LADDER = 83 TRAPDOOR = 84 NONE85 = 85 FARMLAND = 86 FARMLAND_DRY = 87 WHEAT_0 = 88 WHEAT_1 = 89 WHEAT_2 = 90 WHEAT_3 = 91 WHEAT_4 = 92 WHEAT_5 = 93 WHEAT_6 = 94 WHEAT_7 = 95 LEVER = 96 DOOR_BOTTOM = 97 DOOR_IRON_BOTTOM = 98 TORCH_RED_STONE = 99 NONE100 = 100 NONE101 = 101 PUMPKIN_TOP = 102 BLOODSTONE = 103 SOULSAND = 104 GLOWSTONE = 105 STICKY_PISTON = 106 PISTON = 107 NONE108 = 108 NONE109 = 109 NONE110 = 110 NONE111 = 111 RAIL_CURVED = 112 CLOTH_112 = 113 CLOTH_113 = 114 TORCH_RED_STONE_OFF = 115 LOG_SPRUCE = 116 LOG_BIRCH = 117 PUMPKIN_SIDE = 118 PUMPKIN_FACE = 119 PUMPKIN_FACE_LIT = 120 CAKE_TOP = 121 CAKE_SIDE = 122 CAKE_SIDE_BIT = 123 CAKE_BOTTOM = 124 NONE125 = 125 NONE126 = 126 NONE127 = 127 RAIL = 128 LAPIS = 144 ORE_LAPIS = 160 POWERED_RAIL = 163 REDSTONE_DUST = 164 DETECTOR_RAIL = 195 SANDSTONE_TOP = 176 SANDSTONE_SIDE = 192 WATER = 205 SANDSTONE_BOTTOM = 208 LAVA = 237 INFO_UPDATEGAME1 = 252 INFO_UPDATEGAME2 = 253 LAVA_PLACEHOLDER = 255 # modded YELLOW_COBBLE = 213 MARBLE_YELLOW = 214 @dataclass class Tile: block_id: BlockID texture: Texture tiles = [ Tile(BlockID.STONE, Texture.STONE), Tile(BlockID.GRASS, Texture.GRASS_TOP), # fixme Tile(BlockID.DIRT, Texture.DIRT), Tile(BlockID.STONEBRICK, Texture.STONEBRICK), Tile(BlockID.WOOD, Texture.PLANKS), Tile(BlockID.BEDROCK, Texture.BEDROCK), Tile(BlockID.WATER, Texture.WATER), # fixme Tile(BlockID.WATER_CALM, Texture.WATER), # fixme Tile(BlockID.LAVA, Texture.LAVA), # fixme Tile(BlockID.LAVA_CALM, Texture.LAVA), # fixme Tile(BlockID.SAND, Texture.SAND), Tile(BlockID.GRAVEL, Texture.GRAVEL), Tile(BlockID.ORE_GOLD, Texture.ORE_GOLD), Tile(BlockID.ORE_IRON, Texture.ORE_IRON), Tile(BlockID.ORE_COAL, Texture.ORE_COAL), Tile(BlockID.TREE_TRUNK, Texture.LOG_SIDE), # fixme Tile(BlockID.LEAVES, Texture.LEAVES_TRANSPARENT), # fixme Tile(BlockID.GLASS, Texture.GLASS), Tile(BlockID.ORE_LAPIS, Texture.ORE_LAPIS), Tile(BlockID.BLOCK_LAPIS, Texture.LAPIS), Tile(BlockID.SANDSTONE, Texture.SANDSTONE_SIDE), Tile(BlockID.CLOTH, Texture.CLOTH_64), # wool, colored Tile(BlockID.FLOWER, Texture.FLOWER), Tile(BlockID.ROSE, Texture.ROSE), Tile(BlockID.MUSHROOM_1, Texture.MUSHROOM_BROWN), Tile(BlockID.MUSHROOM_2, Texture.MUSHROOM_RED), Tile(BlockID.BLOCK_GOLD, Texture.GOLD), Tile(BlockID.BLOCK_IRON, Texture.IRON), Tile(BlockID.STONESLAB_FULL, Texture.STONE_SLAB_SIDE), # fixme Tile(BlockID.STONESLAB_HALF, Texture.STONE_SLAB_SIDE), # fixme Tile(BlockID.BRICKS, Texture.BRICKS), Tile(BlockID.TNT, Texture.TNT_SIDE), Tile(BlockID.BOOKSHELF, Texture.BOOKSHELF), Tile(BlockID.MOSS_STONE, Texture.MOSSY_STONE), Tile(BlockID.OBSIDIAN, Texture.OBSIDIAN), Tile(BlockID.TORCH, Texture.TORCH_LIT), Tile(BlockID.STAIRS_WOOD, Texture.PLANKS), # fixme Tile(BlockID.ORE_EMERALD, Texture.ORE_EMERALD), Tile(BlockID.BLOCK_EMERALD, Texture.EMERALD), Tile(BlockID.FARMLAND, Texture.FARMLAND), # fixme Tile(BlockID.DOOR_WOOD, Texture.DOOR_TOP), # fixme Tile(BlockID.LADDER, Texture.LADDER), Tile(BlockID.STAIRS_STONE, Texture.STONEBRICK), Tile(BlockID.DOOR_IRON, Texture.DOOR_IRON_TOP), # fixme Tile(BlockID.ORE_REDSTONE, Texture.ORE_RED_STONE), # fixme Tile(BlockID.ORE_REDSTONE_LIT, Texture.ORE_RED_STONE), # fixme Tile(BlockID.TOPSNOW, Texture.SNOW), Tile(BlockID.ICE, Texture.ICE), Tile(BlockID.SNOW, Texture.SNOW), Tile(BlockID.CACTUS, Texture.CACTUS_SIDE), Tile(BlockID.CLAY, Texture.CLAY), Tile(BlockID.REEDS, Texture.REEDS), Tile(BlockID.FENCE, Texture.PLANKS), Tile(BlockID.INVISIBLE, Texture.STONE), Tile(BlockID.WOOD, Texture.PLANKS), #Tile(BlockID.LEAVES_CARRIED, Texture.LEAVES_TRANSPARENT), # fixme Tile(BlockID.FIRE, Texture.FIRE1), Tile(BlockID.SAPLING, Texture.SAPLING), Tile(BlockID.SPONGE, Texture.SPONGE), Tile(BlockID.TALL_GRASS, Texture.TALL_GRASS), Tile(BlockID.DEAD_BUSH, Texture.DEAD_BUSH), Tile(BlockID.PUMPKIN, Texture.PUMPKIN_FACE), # fixme Tile(BlockID.PUMPKIN_LIT, Texture.PUMPKIN_FACE_LIT), # fixme Tile(BlockID.NETHERRACK, Texture.BLOODSTONE), Tile(BlockID.SOUL_SAND, Texture.SOULSAND), Tile(BlockID.GLOWSTONE, Texture.GLOWSTONE), Tile(BlockID.COBWEB, Texture.COBWEB), Tile(BlockID.WORKBENCH, Texture.WORKBENCH_TOP), # fixme Tile(BlockID.WHEAT, Texture.WHEAT_0), # modded blocks Tile(BlockID.YELLOW_COBBLE, Texture.YELLOW_COBBLE), Tile(BlockID.MARBLE_YELLOW, Texture.MARBLE_YELLOW), ] tiles_by_id = { tile.block_id: tile for tile in tiles }