diff --git a/overviewer_core/src/block_class.c b/overviewer_core/src/block_class.c index eb5ec06..fe9d96c 100644 --- a/overviewer_core/src/block_class.c +++ b/overviewer_core/src/block_class.c @@ -78,7 +78,8 @@ const mc_block_t block_class_stair[] = { block_red_sandstone_stairs, block_purpur_stairs, block_prismarine_stairs, - block_dark_prismarine_stairs + block_dark_prismarine_stairs, + block_prismarine_brick_stairs }; const size_t block_class_stair_len = COUNT_OF(block_class_stair); @@ -138,6 +139,7 @@ const mc_block_t block_class_ancil[] = { block_purpur_stairs, block_prismarine_stairs, block_dark_prismarine_stairs, + block_prismarine_brick_stairs, block_grass, block_flowing_water, block_water, @@ -181,6 +183,10 @@ const mc_block_t block_class_alt_height[] = { block_red_sandstone_stairs, block_prismarine_stairs, block_dark_prismarine_stairs, + block_prismarine_brick_stairs, + block_prismarine_slab, + block_dark_prismarine_slab, + block_prismarine_brick_slab, block_stone_slab2, block_purpur_stairs, block_purpur_slab, diff --git a/overviewer_core/src/mc_id.h b/overviewer_core/src/mc_id.h index 845082c..729d7b5 100644 --- a/overviewer_core/src/mc_id.h +++ b/overviewer_core/src/mc_id.h @@ -259,7 +259,11 @@ enum mc_block_id block_concrete_powder = 252, block_structure_block = 255, block_prismarine_stairs = 11337, - block_dark_prismarine_stairs = 11338 + block_dark_prismarine_stairs = 11338, + block_prismarine_brick_stairs = 11339, + block_prismarine_slab = 11340, + block_dark_prismarine_slab = 11341, + block_prismarine_brick_slab = 11342 }; typedef uint16_t mc_block_t; diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index 9a9a924..76a7830 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -33,7 +33,7 @@ // increment this value if you've made a change to the c extesion // and want to force users to rebuild -#define OVERVIEWER_EXTENSION_VERSION 59 +#define OVERVIEWER_EXTENSION_VERSION 60 /* Python PIL, and numpy headers */ #include diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 7ced6fa..42eb33b 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -1707,8 +1707,8 @@ block(blockid=42, top_image="assets/minecraft/textures/block/iron_block.png") # double slabs and slabs # these wooden slabs are unobtainable without cheating, they are still -# here because lots of pre-1.3 worlds use this blocks -@material(blockid=[43, 44, 181, 182, 204, 205], data=range(16), transparent=(44,182,205), solid=True) +# here because lots of pre-1.3 worlds use this blocks, add prismarine slabs +@material(blockid=[43, 44, 181, 182, 204, 205,11340,11341,11342], data=range(16), transparent=(44,182,205), solid=True) def slabs(self, blockid, data): if blockid == 44 or blockid == 182: texture = data & 7 @@ -1759,6 +1759,12 @@ def slabs(self, blockid, data): elif blockid == 204 or blockid == 205: # purpur slab (single=205 double=204) top = side = self.load_image_texture("assets/minecraft/textures/block/purpur_block.png"); + elif blockid == 11340: # prismarine slabs + top = side = self.load_image_texture("assets/minecraft/textures/block/prismarine.png").copy() + elif blockid == 11341: # dark prismarine slabs + top = side = self.load_image_texture("assets/minecraft/textures/block/dark_prismarine.png").copy() + elif blockid == 11342: # prismarine brick slabs + top = side = self.load_image_texture("assets/minecraft/textures/block/prismarine_bricks.png").copy() if blockid == 43 or blockid == 181 or blockid == 204: # double slab return self.build_block(top, side) @@ -1867,7 +1873,7 @@ def fire(self, blockid, data): block(blockid=52, top_image="assets/minecraft/textures/block/spawner.png", transparent=True) # wooden, cobblestone, red brick, stone brick, netherbrick, sandstone, spruce, birch, jungle, quartz, red sandstone and (dark) prismarine stairs. -@material(blockid=[53,67,108,109,114,128,134,135,136,156,163,164,180,203,11337,11338], data=range(128), transparent=True, solid=True, nospawn=True) +@material(blockid=[53,67,108,109,114,128,134,135,136,156,163,164,180,203,11337,11338,11339], data=range(128), transparent=True, solid=True, nospawn=True) def stairs(self, blockid, data): # preserve the upside-down bit upside_down = data & 0x4 @@ -1912,6 +1918,8 @@ def stairs(self, blockid, data): texture = self.load_image_texture("assets/minecraft/textures/block/prismarine.png").copy() elif blockid == 11338: # dark prismarine stairs texture = self.load_image_texture("assets/minecraft/textures/block/dark_prismarine.png").copy() + elif blockid == 11339: # prismarine brick stairs + texture = self.load_image_texture("assets/minecraft/textures/block/prismarine_bricks.png").copy() outside_l = texture.copy() outside_r = texture.copy() diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 873f477..f239d5a 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -626,6 +626,7 @@ class RegionSet(object): 'minecraft:cut_red_sandstone': (179, 2), 'minecraft:chiseled_red_sandstone': (179, 3), 'minecraft:red_sandstone_stairs': (180, 0), + 'minecraft:red_sandstone_slab': (182,0), 'minecraft:spruce_fence_gate': (183, 0), 'minecraft:birch_fence_gate': (184, 0), 'minecraft:jungle_fence_gate': (185, 0), @@ -774,6 +775,10 @@ class RegionSet(object): 'minecraft:petrified_oak_slab': (126, 0), 'minecraft:prismarine_stairs': (11337, 0), 'minecraft:dark_prismarine_stairs': (11338, 0), + 'minecraft:prismarine_brick_stairs': (11339,0), + 'minecraft:prismarine_slab': (11340, 0), + 'minecraft:dark_prismarine_slab': (11341, 0), + 'minecraft:prismarine_brick_slab': (11342, 0), } colors = [ 'white', 'orange', 'magenta', 'light_blue', @@ -799,6 +804,14 @@ class RegionSet(object): return "" % self.regiondir def _get_block(self, palette_entry): + wood_slabs = ('minecraft:oak_slab','minecraft:spruce_slab','minecraft:birch_slab','minecraft:jungle_slab', + 'minecraft:acacia_slab','minecraft:dark_oak_slab','minecraft:petrified_oak_slab') + stone_slabs = ('minecraft:stone_slab', 'minecraft:sandstone_slab','minecraft:red_sandstone_slab', + 'minecraft:cobblestone_slab', 'minecraft:brick_slab','minecraft:purpur_slab', + 'minecraft:stone_brick_slab', 'minecraft:nether_brick_slab', + 'minecraft:quartz_slab') + prismarine_slabs = ('minecraft:prismarine_slab','minecraft:dark_prismarine_slab','minecraft:prismarine_brick_slab') + key = palette_entry['Name'] (block, data) = self._blockmap[key] if key in ['minecraft:redstone_ore', 'minecraft:redstone_lamp']: @@ -830,17 +843,40 @@ class RegionSet(object): elif key in ('minecraft:sunflower', 'minecraft:lilac', 'minecraft:tall_grass', 'minecraft:large_fern', 'minecraft:rose_bush', 'minecraft:peony'): if palette_entry['Properties']['half'] == 'upper': data |= 0x08 - elif key in ['minecraft:stone_slab', 'minecraft:sandstone_slab', 'minecraft:oak_slab', - 'minecraft:cobblestone_slab', 'minecraft:brick_slab', - 'minecraft:stone_brick_slab', 'minecraft:nether_brick_slab', - 'minecraft:quartz_slab', 'minecraft:petrified_oak_slab']: + elif key in wood_slabs + stone_slabs + prismarine_slabs: + # handle double slabs if palette_entry['Properties']['type'] == 'top': - data += 8 + data |= 0x08 elif palette_entry['Properties']['type'] == 'double': - if 'oak' in key: - block = 125 - elif key == 'minecraft:stone_brick_slab': - block = 98 + if key in wood_slabs: + block = 125 # block_double_wooden_slab + elif key in stone_slabs: + if key == 'minecraft:stone_brick_slab': + block = 98 + elif key == 'minecraft:stone_slab': + block = 43 # block_double_stone_slab + elif key == 'minecraft:cobblestone_slab': + block = 4 # cobblestone + elif key == 'minecraft:sandstone_slab': + block = 24 # minecraft:sandstone + elif key == 'minecraft:red_sandstone_slab': + block = 179 # minecraft:red_sandstone + elif key == 'minecraft:nether_brick_slab': + block = 112 # minecraft:nether_bricks + elif key == 'minecraft:quartz_slab': + block = 155 # minecraft:quartz_block + elif key == 'minecraft:brick_slab': + block = 45 # minecraft:bricks + elif key == 'minecraft:purpur_slab': + block = 201 # minecraft:purpur_block + elif key in prismarine_slabs: + block = 168 # minecraft:prismarine variants + if key == 'minecraft:prismarine_slab': + data = 0 + elif key == 'minecraft:prismarine_brick_slab': + data = 1 + elif key == 'minecraft:dark_prismarine_slab': + data = 2 elif key in ['minecraft:ladder', 'minecraft:chest', 'minecraft:ender_chest', 'minecraft:trapped_chest', 'minecraft:furnace']: facing = palette_entry['Properties']['facing'] data = {'north': 2, 'south': 3, 'west': 4, 'east': 5}[facing]