diff --git a/overviewer_core/src/overviewer.h b/overviewer_core/src/overviewer.h index e7057e7..4a273bf 100644 --- a/overviewer_core/src/overviewer.h +++ b/overviewer_core/src/overviewer.h @@ -26,7 +26,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 8 +#define OVERVIEWER_EXTENSION_VERSION 9 /* Python PIL, and numpy headers */ #include diff --git a/overviewer_core/src/rendermode-lighting.c b/overviewer_core/src/rendermode-lighting.c index 057331a..2c8b9b1 100644 --- a/overviewer_core/src/rendermode-lighting.c +++ b/overviewer_core/src/rendermode-lighting.c @@ -185,9 +185,14 @@ get_lighting_coefficient(RenderModeLighting *self, RenderState *state, /* stairs and half-blocks take the skylevel from the upper block if it's transparent */ if (local_z != 127) { - upper_block = getArrayByte3D(blocks, local_x, local_y, local_z + 1); + int upper_counter = 0; + /* but if the upper_block is one of these special half-steps, we need to look at *its* upper_block */ + do { + upper_counter++; + upper_block = getArrayByte3D(blocks, local_x, local_y, local_z + upper_counter); + } while ((upper_block == 44 || upper_block == 54 || upper_block == 67) && local_z < 127); if (is_transparent(upper_block)) { - skylevel = getArrayByte3D(skylight, local_x, local_y, local_z + 1); + skylevel = getArrayByte3D(skylight, local_x, local_y, local_z + upper_counter); } } else { upper_block = 0; @@ -195,7 +200,7 @@ get_lighting_coefficient(RenderModeLighting *self, RenderState *state, } /* the block has a bad blocklevel, estimate it from neigborhood - /* use given coordinates, no local ones! */ + * use given coordinates, no local ones! */ blocklevel = estimate_blocklevel(self, state, x, y, z, NULL); }