From 5be1d62e152ca17fcce0c54e92a15690c3434baa Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Sat, 8 Mar 2014 13:02:01 -0500 Subject: [PATCH 1/5] New blocks for snapshot Granite, Diorite, Andesite (new data values for blockid:1) Iron trapdoor See #1062 --- overviewer_core/textures.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index e01ce08..999f2a8 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -864,7 +864,23 @@ def billboard(blockid=[], imagename=None, **kwargs): ## # stone -block(blockid=1, top_image="assets/minecraft/textures/blocks/stone.png") +@material(blockid=1, data=range(7), solid=True) +def stone(self, blockid, data): + if data == 0: # regular old-school stone + img = self.load_image_texture("assets/minecraft/textures/blocks/stone.png") + elif data == 1: # granite + img = self.load_image_texture("assets/minecraft/textures/blocks/stone_granite.png") + elif data == 2: # polished granite + img = self.load_image_texture("assets/minecraft/textures/blocks/stone_granite_smooth.png") + elif data == 3: # diorite + img = self.load_image_texture("assets/minecraft/textures/blocks/stone_diorite.png") + elif data == 4: # polished diorite + img = self.load_image_texture("assets/minecraft/textures/blocks/stone_diorite_smooth.png") + elif data == 5: # andesite + img = self.load_image_texture("assets/minecraft/textures/blocks/stone_andesite.png") + elif data == 6: # polished andesite + img = self.load_image_texture("assets/minecraft/textures/blocks/stone_andesite_smooth.png") + return self.build_block(img, img) @material(blockid=2, data=range(11)+[0x10,], solid=True) def grass(self, blockid, data): @@ -3216,7 +3232,7 @@ def comparator(self, blockid, data): # trapdoor # the trapdoor is looks like a sprite when opened, that's not good -@material(blockid=96, data=range(16), transparent=True, nospawn=True) +@material(blockid=[96,167], data=range(16), transparent=True, nospawn=True) def trapdoor(self, blockid, data): # rotation @@ -3238,7 +3254,10 @@ def trapdoor(self, blockid, data): elif (data & 0b0011) == 3: data = data & 0b1100 | 0 # texture generation - texture = self.load_image_texture("assets/minecraft/textures/blocks/trapdoor.png") + if blockid == 96: + texture = self.load_image_texture("assets/minecraft/textures/blocks/trapdoor.png") + else: + texture = self.load_image_texture("assets/minecraft/textures/blocks/iron_trapdoor.png") if data & 0x4 == 0x4: # opened trapdoor if data & 0x3 == 0: # west img = self.build_full_block(None, None, None, None, texture) From a6922e4ab71ce5f2e51de4c52806bd9affd2cea2 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Sat, 8 Mar 2014 13:09:15 -0500 Subject: [PATCH 2/5] New snapshot block: slime blocks See #1062 --- overviewer_core/textures.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 999f2a8..78b1d97 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -4224,6 +4224,9 @@ def hopper(self, blockid, data): return img +# slime block +block(blockid=165, top_image="assets/minecraft/textures/blocks/slime.png") + # hay block @material(blockid=170, data=range(9), solid=True) def hayblock(self, blockid, data): From 37711f6b798e1cf274a3544e2b4433987c70cace Mon Sep 17 00:00:00 2001 From: Dan Berglund Date: Fri, 20 Jun 2014 11:35:21 -0700 Subject: [PATCH 3/5] add new 14w25a prismarine and sea lantern blocks --- overviewer_core/textures.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 36e8a65..9c613fc 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -4227,6 +4227,24 @@ def hopper(self, blockid, data): # slime block block(blockid=165, top_image="assets/minecraft/textures/blocks/slime.png") +# prismarine block +@material(blockid=168, data=range(3), solid=True) +def prismarine_block(self, blockid, data): + + if data == 0: # prismarine + t = self.load_image_texture("assets/minecraft/textures/blocks/prismarine_rough.png") + elif data == 1: # prismarine bricks + t = self.load_image_texture("assets/minecraft/textures/blocks/prismarine_bricks.png") + elif data == 2: # dark prismarine + t = self.load_image_texture("assets/minecraft/textures/blocks/prismarine_dark.png") + + img = self.build_block(t, t) + + return img + +# sea lantern +block(blockid=169, top_image="assets/minecraft/textures/blocks/sea_lantern.png") + # hay block @material(blockid=170, data=range(9), solid=True) def hayblock(self, blockid, data): From df920e60decc87ee47b0a2d3ae68f5d5e151c377 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Tue, 26 Aug 2014 14:17:40 -0400 Subject: [PATCH 4/5] Added support for the difference fence colors --- overviewer_core/src/iterate.c | 7 +++++-- overviewer_core/textures.py | 22 +++++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/overviewer_core/src/iterate.c b/overviewer_core/src/iterate.c index fc52b78..0f02393 100644 --- a/overviewer_core/src/iterate.c +++ b/overviewer_core/src/iterate.c @@ -309,7 +309,8 @@ generate_pseudo_data(RenderState *state, unsigned short ancilData) { } data = (check_adjacent_blocks(state, x, y, z, state->block) ^ 0x0f) | data; return (data << 4) | (ancilData & 0x0f); - } else if (state->block == 85) { /* fences */ + } else if ((state->block == 85) || (state->block == 188) || (state->block == 189) || + (state->block == 190) || (state->block == 191) || (state->block == 192)) { /* fences */ /* check for fences AND fence gates */ return check_adjacent_blocks(state, x, y, z, state->block) | check_adjacent_blocks(state, x, y, z, 107); @@ -710,7 +711,9 @@ chunk_render(PyObject *self, PyObject *args) { (state.block == 111) || (state.block == 113) || (state.block == 139) || (state.block == 175) || (state.block == 160) || (state.block == 95) || - (state.block == 146) || + (state.block == 146) || (state.block == 188) || + (state.block == 189) || (state.block == 190) || + (state.block == 191) || (state.block == 192) || is_stairs(state.block)) { ancilData = generate_pseudo_data(&state, ancilData); state.block_pdata = ancilData; diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index ab8a192..55311cc 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -2738,7 +2738,7 @@ def jukebox(self, blockid, data): # nether and normal fences # uses pseudo-ancildata found in iterate.c -@material(blockid=[85, 113], data=range(16), transparent=True, nospawn=True) +@material(blockid=[85, 188, 189, 190, 191, 192, 113], data=range(16), transparent=True, nospawn=True) def fence(self, blockid, data): # no need for rotations, it uses pseudo data. # create needed images for Big stick fence @@ -2746,6 +2746,26 @@ def fence(self, blockid, data): fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_oak.png").copy() fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_oak.png").copy() fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_oak.png").copy() + elif blockid == 188: # spruce fence + fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_spruce.png").copy() + fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_spruce.png").copy() + fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_spruce.png").copy() + elif blockid == 189: # birch fence + fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_birch.png").copy() + fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_birch.png").copy() + fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_birch.png").copy() + elif blockid == 190: # jungle fence + fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_jungle.png").copy() + fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_jungle.png").copy() + fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_jungle.png").copy() + elif blockid == 191: # big/dark oak fence + fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_big_oak.png").copy() + fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_big_oak.png").copy() + fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_big_oak.png").copy() + elif blockid == 192: # acacia oak fence + fence_top = self.load_image_texture("assets/minecraft/textures/blocks/planks_acacia.png").copy() + fence_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_acacia.png").copy() + fence_small_side = self.load_image_texture("assets/minecraft/textures/blocks/planks_acacia.png").copy() else: # netherbrick fence fence_top = self.load_image_texture("assets/minecraft/textures/blocks/nether_brick.png").copy() fence_side = self.load_image_texture("assets/minecraft/textures/blocks/nether_brick.png").copy() From e82e7bf0b2cde77adfa71625a891dff8cc3a2fa1 Mon Sep 17 00:00:00 2001 From: Andrew Chin Date: Tue, 26 Aug 2014 15:48:05 -0400 Subject: [PATCH 5/5] added support for different door types --- overviewer_core/src/iterate.c | 13 ++++++++++--- overviewer_core/textures.py | 32 +++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/overviewer_core/src/iterate.c b/overviewer_core/src/iterate.c index 0f02393..f1a379f 100644 --- a/overviewer_core/src/iterate.c +++ b/overviewer_core/src/iterate.c @@ -398,7 +398,9 @@ generate_pseudo_data(RenderState *state, unsigned short ancilData) { /* portal and nether brick fences */ return check_adjacent_blocks(state, x, y, z, state->block); - } else if ((state->block == 64) || (state->block == 71)) { + } else if ((state->block == 64) || (state->block == 71) || (state->block == 193) || + (state->block == 194) || (state->block == 195) || (state->block == 196) || + (state->block ==197)) { /* use bottom block data format plus one bit for top/down * block (0x8) and one bit for hinge position (0x10) */ @@ -704,8 +706,13 @@ chunk_render(PyObject *self, PyObject *args) { * trapped chests, stairs */ if ((state.block == 2) || (state.block == 9) || (state.block == 20) || (state.block == 54) || - (state.block == 55) || (state.block == 64) || - (state.block == 71) || (state.block == 79) || + (state.block == 55) || + /* doors */ + (state.block == 64) || (state.block == 193) || + (state.block == 194) || (state.block == 195) || + (state.block == 196) || (state.block == 197) || + (state.block == 71) || /* end doors */ + (state.block == 79) || (state.block == 85) || (state.block == 90) || (state.block == 101) || (state.block == 102) || (state.block == 111) || (state.block == 113) || diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 55311cc..df14a67 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -2195,7 +2195,7 @@ def signpost(self, blockid, data): # wooden and iron door # uses pseudo-ancildata found in iterate.c -@material(blockid=[64,71], data=range(32), transparent=True) +@material(blockid=[64,71,193,194,195,196,197], data=range(32), transparent=True) def door(self, blockid, data): #Masked to not clobber block top/bottom & swung info if self.rotation == 1: @@ -2215,9 +2215,35 @@ def door(self, blockid, data): elif (data & 0b00011) == 3: data = data & 0b11100 | 2 if data & 0x8 == 0x8: # top of the door - raw_door = self.load_image_texture("assets/minecraft/textures/blocks/%s.png" % ("door_wood_upper" if blockid == 64 else "door_iron_upper")) + if blockid == 64: # classic wood door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_wood_upper.png") + elif blockid == 71: # iron door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_iron_upper.png") + elif blockid == 193: # spruce door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_spruce_upper.png") + elif blockid == 194: # birch door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_birch_upper.png") + elif blockid == 195: # jungle door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_jungle_upper.png") + elif blockid == 196: # acacia door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_acacia_upper.png") + elif blockid == 197: # dark_oak door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_dark_oak_upper.png") else: # bottom of the door - raw_door = self.load_image_texture("assets/minecraft/textures/blocks/%s.png" % ("door_wood_lower" if blockid == 64 else "door_iron_lower")) + if blockid == 64: + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_wood_lower.png") + elif blockid == 71: # iron door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_iron_lower.png") + elif blockid == 193: # spruce door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_spruce_lower.png") + elif blockid == 194: # birch door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_birch_lower.png") + elif blockid == 195: # jungle door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_jungle_lower.png") + elif blockid == 196: # acacia door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_acacia_lower.png") + elif blockid == 197: # dark_oak door + raw_door = self.load_image_texture("assets/minecraft/textures/blocks/door_dark_oak_lower.png") # if you want to render all doors as closed, then force # force closed to be True