diff --git a/overviewer_core/src/primitives/edge-lines.c b/overviewer_core/src/primitives/edge-lines.c index 00f12ae..6114309 100644 --- a/overviewer_core/src/primitives/edge-lines.c +++ b/overviewer_core/src/primitives/edge-lines.c @@ -41,7 +41,7 @@ edge_lines_draw(void *data, RenderState *state, PyObject *src, PyObject *mask, P int x = state->x, y = state->y, z = state->z; int increment=0; - if (state->block == 44 && ((state->block_data & 0x8) == 0 )) // half-step BUT no upsidown half-step + if ((state->block == 44 || state->block == 126) && ((state->block_data & 0x8) == 0 )) // half-steps BUT no upsidown half-steps increment=6; else if ((state->block == 78) || (state->block == 93) || (state->block == 94)) // snow, redstone repeaters (on and off) increment=9; diff --git a/overviewer_core/textures.py b/overviewer_core/textures.py index ca891de..3b305c1 100644 --- a/overviewer_core/textures.py +++ b/overviewer_core/textures.py @@ -1336,6 +1336,8 @@ block(blockid=41, top_index=23) block(blockid=42, top_index=22) # 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], data=range(16), transparent=(44,), solid=True) def slabs(self, blockid, data): texture = data & 7 @@ -3169,3 +3171,52 @@ block(blockid=123, top_index=211) # active redstone lamp block(blockid=124, top_index=212) + +# wooden double and normal slabs +# these are the new wooden slabs, blockids 43 44 still have wooden +# slabs, but those are unobtainable without cheating +@material(blockid=[125, 126], data=range(16), transparent=(44,), solid=True) +def slabs(self, blockid, data): + texture = data & 7 + if texture== 0: # oak + top = side = self.terrain_images[4] + elif texture== 1: # spruce + top = side = self.terrain_images[198] + elif texture== 2: # birch + top = side = self.terrain_images[214] + elif texture== 3: # jungle + top = side = self.terrain_images[199] + else: + return None + + if blockid == 125: # double slab + return self.build_block(top, side) + + # cut the side texture in half + mask = side.crop((0,8,16,16)) + side = Image.new(side.mode, side.size, self.bgcolor) + alpha_over(side, mask,(0,0,16,8), mask) + + # plain slab + top = self.transform_image_top(top) + side = self.transform_image_side(side) + otherside = side.transpose(Image.FLIP_LEFT_RIGHT) + + sidealpha = side.split()[3] + side = ImageEnhance.Brightness(side).enhance(0.9) + side.putalpha(sidealpha) + othersidealpha = otherside.split()[3] + otherside = ImageEnhance.Brightness(otherside).enhance(0.8) + otherside.putalpha(othersidealpha) + + # upside down slab + delta = 0 + if data & 8 == 8: + delta = 6 + + img = Image.new("RGBA", (24,24), self.bgcolor) + alpha_over(img, side, (0,12 - delta), side) + alpha_over(img, otherside, (12,12 - delta), otherside) + alpha_over(img, top, (0,6 - delta), top) + + return img