From 5df95be17a6b456212899c01d80d35c00892b92c Mon Sep 17 00:00:00 2001 From: InrcedibleHolg Date: Sat, 6 Apr 2019 21:56:30 +0200 Subject: [PATCH 1/5] added: prismarine_brick_stairs, prismarine_slab, dark_prismarine_slab, prismarine_brick_slab --- overviewer_core/src/block_class.c | 8 +++++++- overviewer_core/src/mc_id.h | 6 +++++- overviewer_core/src/overviewer.h | 2 +- overviewer_core/textures.py | 14 +++++++++++--- overviewer_core/world.py | 5 +++++ 5 files changed, 29 insertions(+), 6 deletions(-) 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..e4990bc 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -774,6 +774,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', @@ -831,6 +835,7 @@ class RegionSet(object): if palette_entry['Properties']['half'] == 'upper': data |= 0x08 elif key in ['minecraft:stone_slab', 'minecraft:sandstone_slab', 'minecraft:oak_slab', + 'minecraft:prismarine_slab','minecraft:dark_prismarine_slab','minecraft:prismarine_brick_slab', 'minecraft:cobblestone_slab', 'minecraft:brick_slab', 'minecraft:stone_brick_slab', 'minecraft:nether_brick_slab', 'minecraft:quartz_slab', 'minecraft:petrified_oak_slab']: From 8529cc90bdffcfdb126c2d091403178d494b0414 Mon Sep 17 00:00:00 2001 From: InrcedibleHolg Date: Sun, 7 Apr 2019 08:05:22 +0200 Subject: [PATCH 2/5] fix upper/lower slab issue for more slab types --- overviewer_core/world.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/overviewer_core/world.py b/overviewer_core/world.py index e4990bc..a676d3e 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -836,11 +836,13 @@ class RegionSet(object): data |= 0x08 elif key in ['minecraft:stone_slab', 'minecraft:sandstone_slab', 'minecraft:oak_slab', 'minecraft:prismarine_slab','minecraft:dark_prismarine_slab','minecraft:prismarine_brick_slab', - 'minecraft:cobblestone_slab', 'minecraft:brick_slab', + 'minecraft:spruce_slab','minecraft:birch_slab','minecraft:jungle_slab', + 'minecraft:acacia_slab','minecraft:dark_oak_slab', + 'minecraft:cobblestone_slab', 'minecraft:brick_slab','minecraft:purpur_slab', 'minecraft:stone_brick_slab', 'minecraft:nether_brick_slab', 'minecraft:quartz_slab', 'minecraft:petrified_oak_slab']: if palette_entry['Properties']['type'] == 'top': - data += 8 + data |= 0x08 elif palette_entry['Properties']['type'] == 'double': if 'oak' in key: block = 125 From c34638d26db02a303f447e44473b137b74e611f2 Mon Sep 17 00:00:00 2001 From: InrcedibleHolg Date: Sun, 7 Apr 2019 08:21:13 +0200 Subject: [PATCH 3/5] activated red_sandstone_slab, for only half implemented --- overviewer_core/world.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/overviewer_core/world.py b/overviewer_core/world.py index a676d3e..042a960 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), @@ -834,7 +835,7 @@ 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', + elif key in ['minecraft:stone_slab', 'minecraft:sandstone_slab','minecraft:red_sandstone_slab', 'minecraft:oak_slab', 'minecraft:prismarine_slab','minecraft:dark_prismarine_slab','minecraft:prismarine_brick_slab', 'minecraft:spruce_slab','minecraft:birch_slab','minecraft:jungle_slab', 'minecraft:acacia_slab','minecraft:dark_oak_slab', From abc4a858ff70096d7fcfe51d9ec9ff1e3302fd59 Mon Sep 17 00:00:00 2001 From: InrcedibleHolg Date: Sun, 7 Apr 2019 13:44:28 +0200 Subject: [PATCH 4/5] double slab fix --- overviewer_core/world.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 042a960..6d061b9 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -842,13 +842,39 @@ class RegionSet(object): 'minecraft:cobblestone_slab', 'minecraft:brick_slab','minecraft:purpur_slab', 'minecraft:stone_brick_slab', 'minecraft:nether_brick_slab', 'minecraft:quartz_slab', 'minecraft:petrified_oak_slab']: + # handle double slabs if palette_entry['Properties']['type'] == 'top': data |= 0x08 elif palette_entry['Properties']['type'] == 'double': - if 'oak' in key: - block = 125 + if key in ['minecraft:oak_slab','minecraft:spruce_slab','minecraft:birch_slab','minecraft:jungle_slab', + 'minecraft:acacia_slab','minecraft:dark_oak_slab','minecraft:petrified_oak_slab']: + block = 125 # block_double_wooden_slab elif 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 in ['minecraft:prismarine_slab','minecraft:prismarine_brick_slab','minecraft:dark_prismarine_slab']: + 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 == '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 ['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] From f1dd70bdecaf123a71e259d54c6c85bc6d85511b Mon Sep 17 00:00:00 2001 From: InrcedibleHolg Date: Sun, 7 Apr 2019 18:21:59 +0200 Subject: [PATCH 5/5] reorder code in world.py --- overviewer_core/world.py | 58 +++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/overviewer_core/world.py b/overviewer_core/world.py index 6d061b9..f239d5a 100644 --- a/overviewer_core/world.py +++ b/overviewer_core/world.py @@ -804,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']: @@ -835,31 +843,33 @@ 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:red_sandstone_slab', 'minecraft:oak_slab', - 'minecraft:prismarine_slab','minecraft:dark_prismarine_slab','minecraft:prismarine_brick_slab', - 'minecraft:spruce_slab','minecraft:birch_slab','minecraft:jungle_slab', - 'minecraft:acacia_slab','minecraft:dark_oak_slab', - 'minecraft:cobblestone_slab', 'minecraft:brick_slab','minecraft:purpur_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 |= 0x08 elif palette_entry['Properties']['type'] == 'double': - if key in ['minecraft:oak_slab','minecraft:spruce_slab','minecraft:birch_slab','minecraft:jungle_slab', - 'minecraft:acacia_slab','minecraft:dark_oak_slab','minecraft:petrified_oak_slab']: + if key in wood_slabs: block = 125 # block_double_wooden_slab - elif 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 in ['minecraft:prismarine_slab','minecraft:prismarine_brick_slab','minecraft:dark_prismarine_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 @@ -867,14 +877,6 @@ class RegionSet(object): data = 1 elif key == 'minecraft:dark_prismarine_slab': data = 2 - 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 ['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]