From 3050f4099e6e8071a9c7c35d9c56fbbe8f0831e5 Mon Sep 17 00:00:00 2001 From: Jer Wilson Date: Thu, 12 Sep 2013 17:53:50 -0700 Subject: [PATCH 1/5] Adding blocks for new flowers and doublePlants --- overviewer_core/src/iterate.c | 20 +++++++++++--- overviewer_core/src/primitives/base.c | 14 +++++++++- overviewer_core/textures.py | 38 ++++++++++++++++++++++++--- 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/overviewer_core/src/iterate.c b/overviewer_core/src/iterate.c index ee88f69..2af2bfa 100644 --- a/overviewer_core/src/iterate.c +++ b/overviewer_core/src/iterate.c @@ -252,7 +252,7 @@ generate_pseudo_data(RenderState *state, unsigned char ancilData) { */ int x = state->x, y = state->y, z = state->z; unsigned char data = 0; - + if (state->block == 2) { /* grass */ /* return 0x10 if grass is covered in snow */ if (get_data(state, BLOCKS, x, y+1, z) == 78) @@ -416,6 +416,17 @@ generate_pseudo_data(RenderState *state, unsigned char ancilData) { pr = pr * pr * 42317861 + pr * 11; rotation = 3 & (pr >> 16); return rotation; + } else if (state->block == 175) { /* doublePlants */ + /* use bottom block data format plus one bit for top + * block (0x8) + */ + if( get_data(state, BLOCKS, x, y-1, z) == 175 ) { + data = get_data(state, DATA, x, y-1, z) | 0x8; + } else { + data = ancilData; + } + + return data; } @@ -564,7 +575,7 @@ chunk_render(PyObject *self, PyObject *args) { (state.block == 85) || (state.block == 90) || (state.block == 101) || (state.block == 102) || (state.block == 111) || (state.block == 113) || - (state.block == 139)) { + (state.block == 139) || (state.block == 175)) { ancilData = generate_pseudo_data(&state, ancilData); state.block_pdata = ancilData; } else { @@ -586,6 +597,7 @@ chunk_render(PyObject *self, PyObject *args) { if (t != NULL && t != Py_None) { PyObject *src, *mask, *mask_light; + int do_rand = (state.block == 31 /*|| state.block == 38 || state.block == 175*/); int randx = 0, randy = 0; src = PyTuple_GetItem(t, 0); mask = PyTuple_GetItem(t, 0); @@ -594,7 +606,7 @@ chunk_render(PyObject *self, PyObject *args) { if (mask == Py_None) mask = src; - if (state.block == 31) { + if (do_rand) { /* add a random offset to the postion of the tall grass to make it more wild */ randx = rand() % 6 + 1 - 3; randy = rand() % 6 + 1 - 3; @@ -604,7 +616,7 @@ chunk_render(PyObject *self, PyObject *args) { render_mode_draw(rendermode, src, mask, mask_light); - if (state.block == 31) { + if (do_rand) { /* undo the random offsets */ state.imgx -= randx; state.imgy -= randy; diff --git a/overviewer_core/src/primitives/base.c b/overviewer_core/src/primitives/base.c index e6e9515..e9fea88 100644 --- a/overviewer_core/src/primitives/base.c +++ b/overviewer_core/src/primitives/base.c @@ -74,6 +74,10 @@ static void base_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObject *mask_light) { PrimitiveBase *self = (PrimitiveBase *)data; + /* in order to detect top parts of doublePlant grass & ferns */ + unsigned char below_block = get_data(state, BLOCKS, state->x, state->y-1, state->z); + unsigned char below_data = get_data(state, DATA, state->x, state->y-1, state->z); + /* draw the block! */ alpha_over(state->img, src, mask, state->imgx, state->imgy, 0, 0); @@ -102,7 +106,11 @@ base_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObjec /* vines */ state->block == 106 || /* lily pads */ - state->block == 111) + state->block == 111 || + /* doublePlant grass & ferns */ + (state->block == 175 && (state->block_data == 2 || state->block_data == 3)) || + /* doublePlant grass & ferns tops */ + (state->block == 175 && below_block == 175 && (below_data == 2 || below_data == 3)) ) { /* do the biome stuff! */ PyObject *facemask = mask; @@ -155,6 +163,10 @@ base_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, PyObjec /* lily pads */ color_table = self->grasscolor; break; + case 175: + /* doublePlant grass & ferns */ + color_table = self->grasscolor; + break; default: break; }; diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 3d4418e..0ae904a 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -637,7 +637,7 @@ class Textures(object): """ img = Image.new("RGBA", (24,24), self.bgcolor) - front = tex.resize((14, 11), Image.ANTIALIAS) + front = tex.resize((14, 12), Image.ANTIALIAS) alpha_over(img, front, (5,9)) return img @@ -1368,8 +1368,16 @@ def wool(self, blockid, data): # dandelion sprite(blockid=37, imagename="assets/minecraft/textures/blocks/flower_dandelion.png") -# rose -sprite(blockid=38, imagename="assets/minecraft/textures/blocks/flower_rose.png") + +# flowers +@material(blockid=38, data=range(10), transparent=True) +def flower(self, blockid, data): + flower_map = ["rose", "blue_orchid", "allium", "houstonia", "tulip_red", "tulip_orange", + "tulip_white", "tulip_pink", "oxeye_daisy", "dandelion"] + texture = self.load_image_texture("assets/minecraft/textures/blocks/flower_%s.png" % flower_map[data]) + + return self.build_billboard(texture) + # brown mushroom sprite(blockid=39, imagename="assets/minecraft/textures/blocks/mushroom_brown.png") # red mushroom @@ -3774,7 +3782,7 @@ def beacon(self, blockid, data): return img -# cobbleston and mossy cobblestone walls +# cobblestone and mossy cobblestone walls # one additional bit of data value added for mossy and cobblestone @material(blockid=139, data=range(32), transparent=True, nospawn=True) def cobblestone_wall(self, blockid, data): @@ -4109,3 +4117,25 @@ def stained_clay(self, blockid, data): #coal block block(blockid=173, top_image="assets/minecraft/textures/blocks/coal_block.png") + +#doublePlant blocks +@material(blockid=175, data=range(16), transparent=True) +def flower(self, blockid, data): + doublePlant_map = ["sunflower", "syringa", "grass", "fern", "rose", "paeonia", "paeonia", "paeonia"] + plant = doublePlant_map[data & 0x7] + + if data & 0x8: + part = "top" + else: + part = "bottom" + + png = "assets/minecraft/textures/blocks/doublePlant_%s_%s.png" % (plant,part) + texture = self.load_image_texture(png) + img = self.build_billboard(texture) + + #sunflower top + if data == 8: + bloom_tex = self.load_image_texture("assets/minecraft/textures/blocks/doublePlant_sunflower_front.png") + alpha_over(img, bloom_tex.resize((14, 11), Image.ANTIALIAS), (5,5)) + + return img From 95336ce205078acc038ed398f294b8836eae1400 Mon Sep 17 00:00:00 2001 From: Dan Berglund Date: Fri, 13 Sep 2013 12:39:34 -0700 Subject: [PATCH 2/5] Add new grassless dirt and podzol block types for 13w36 --- overviewer_core/textures.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 88a8999..0056dd1 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -864,7 +864,18 @@ def grass(self, blockid, data): return img # dirt -block(blockid=3, top_image="assets/minecraft/textures/blocks/dirt.png") +@material(blockid=3, data=range(3), solid=True) +def dirt_blocks(self, blockid, data): + side_img = self.load_image_texture("assets/minecraft/textures/blocks/dirt.png") + if data == 0: # normal + img = self.build_block(self.load_image_texture("assets/minecraft/textures/blocks/dirt.png"), side_img) + if data == 1: # grassless + img = self.build_block(self.load_image_texture("assets/minecraft/textures/blocks/dirt.png"), side_img) + if data == 2: # podzol + side_img = self.load_image_texture("assets/minecraft/textures/blocks/dirt_podzol_side.png") + img = self.build_block(self.load_image_texture("assets/minecraft/textures/blocks/dirt_podzol_top.png"), side_img) + return img + # cobblestone block(blockid=4, top_image="assets/minecraft/textures/blocks/cobblestone.png") From 4e70751e619ba462157d2ca4cd138842dab7ecd9 Mon Sep 17 00:00:00 2001 From: Dan Berglund Date: Fri, 13 Sep 2013 17:00:57 -0700 Subject: [PATCH 3/5] add packed ice block for 13w36 --- overviewer_core/textures.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index 0056dd1..38387e8 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -2639,6 +2639,9 @@ def snow(self, blockid, data): # snow block block(blockid=80, top_image="assets/minecraft/textures/blocks/snow.png") +# packed ice block +block(blockid=174, top_image="assets/minecraft/textures/blocks/ice_packed.png") + # cactus @material(blockid=81, data=range(15), transparent=True, solid=True, nospawn=True) def cactus(self, blockid, data): From 942b0098e22110aee325fb77e2e0c6c1a7494801 Mon Sep 17 00:00:00 2001 From: Dan Berglund Date: Thu, 26 Sep 2013 16:12:03 -0700 Subject: [PATCH 4/5] add red sand. move packed ice so blockIds are in order --- overviewer_core/textures.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index bca0a85..be4632c 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -961,7 +961,14 @@ def lava(self, blockid, data): return self.build_block(lavatex, lavatex) # sand -block(blockid=12, top_image="assets/minecraft/textures/blocks/sand.png") +@material(blockid=12, data=range(2), solid=True) +def sand_blocks(self, blockid, data): + if data == 0: # normal + img = self.build_block(self.load_image_texture("assets/minecraft/textures/blocks/sand.png"), self.load_image_texture("assets/minecraft/textures/blocks/sand.png")) + if data == 1: # red + img = self.build_block(self.load_image_texture("assets/minecraft/textures/blocks/red_sand.png"), self.load_image_texture("assets/minecraft/textures/blocks/red_sand.png")) + return img + # gravel block(blockid=13, top_image="assets/minecraft/textures/blocks/gravel.png") # gold ore @@ -2647,9 +2654,6 @@ def snow(self, blockid, data): # snow block block(blockid=80, top_image="assets/minecraft/textures/blocks/snow.png") -# packed ice block -block(blockid=174, top_image="assets/minecraft/textures/blocks/ice_packed.png") - # cactus @material(blockid=81, data=range(15), transparent=True, solid=True, nospawn=True) def cactus(self, blockid, data): @@ -4207,6 +4211,9 @@ def stained_clay(self, blockid, data): #coal block block(blockid=173, top_image="assets/minecraft/textures/blocks/coal_block.png") +# packed ice block +block(blockid=174, top_image="assets/minecraft/textures/blocks/ice_packed.png") + #doublePlant blocks @material(blockid=175, data=range(16), transparent=True) def flower(self, blockid, data): From 08b6d40d630602650e038fe6f755e9d045ab1e06 Mon Sep 17 00:00:00 2001 From: Dan Berglund Date: Mon, 30 Sep 2013 14:00:19 -0700 Subject: [PATCH 5/5] fix double_plant image names --- overviewer_core/textures.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index bca0a85..50a3bd0 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -4207,24 +4207,24 @@ def stained_clay(self, blockid, data): #coal block block(blockid=173, top_image="assets/minecraft/textures/blocks/coal_block.png") -#doublePlant blocks +#double_plant blocks @material(blockid=175, data=range(16), transparent=True) def flower(self, blockid, data): - doublePlant_map = ["sunflower", "syringa", "grass", "fern", "rose", "paeonia", "paeonia", "paeonia"] - plant = doublePlant_map[data & 0x7] + double_plant_map = ["sunflower", "syringa", "grass", "fern", "rose", "paeonia", "paeonia", "paeonia"] + plant = double_plant_map[data & 0x7] if data & 0x8: part = "top" else: part = "bottom" - png = "assets/minecraft/textures/blocks/doublePlant_%s_%s.png" % (plant,part) + png = "assets/minecraft/textures/blocks/double_plant_%s_%s.png" % (plant,part) texture = self.load_image_texture(png) img = self.build_billboard(texture) #sunflower top if data == 8: - bloom_tex = self.load_image_texture("assets/minecraft/textures/blocks/doublePlant_sunflower_front.png") + bloom_tex = self.load_image_texture("assets/minecraft/textures/blocks/double_plant_sunflower_front.png") alpha_over(img, bloom_tex.resize((14, 11), Image.ANTIALIAS), (5,5)) return img