diff --git a/overviewer_core/rendermodes.py b/overviewer_core/rendermodes.py index c00ae04..8fff824 100644 --- a/overviewer_core/rendermodes.py +++ b/overviewer_core/rendermodes.py @@ -47,12 +47,12 @@ class Base(RenderPrimitive): "biomes": ("whether or not to use biomes", True), } +class NetherOld(RenderPrimitive): + name = "netherold" + class Nether(RenderPrimitive): name = "nether" -class NetherAlt(RenderPrimitive): - name = "nether2" - class HeightFading(RenderPrimitive): name = "height-fading" options = { @@ -230,10 +230,10 @@ lighting = [Base(), EdgeLines(), Lighting()] smooth_lighting = [Base(), EdgeLines(), SmoothLighting()] night = [Base(), EdgeLines(), Lighting(night=True)] smooth_night = [Base(), EdgeLines(), SmoothLighting(night=True)] +netherold = [Base(), EdgeLines(), NetherOld()] +netherold_lighting = [Base(), EdgeLines(), NetherOld(), Lighting()] +netherold_smooth_lighting = [Base(), EdgeLines(), NetherOld(), SmoothLighting()] nether = [Base(), EdgeLines(), Nether()] nether_lighting = [Base(), EdgeLines(), Nether(), Lighting()] nether_smooth_lighting = [Base(), EdgeLines(), Nether(), SmoothLighting()] -netheralt = [Base(), EdgeLines(), NetherAlt()] -netheralt_lighting = [Base(), EdgeLines(), NetherAlt(), Lighting()] -netheralt_smooth_lighting = [Base(), EdgeLines(), NetherAlt(), SmoothLighting()] cave = [Base(), EdgeLines(), Cave(), DepthTinting()] diff --git a/overviewer_core/src/primitives/nether.c b/overviewer_core/src/primitives/nether.c index 50f7c8f..0cc6706 100644 --- a/overviewer_core/src/primitives/nether.c +++ b/overviewer_core/src/primitives/nether.c @@ -16,40 +16,51 @@ */ #include "../overviewer.h" +#include "nether.h" + +static void +walk_chunk(RenderState *state, RenderPrimitiveNether *data) { + int x, y, z; + int id; + + for (x = 0; x < WIDTH; x++) { + for (z = 0; z < DEPTH; z++) { + id = get_data(state, BLOCKS, x, NETHER_ROOF - (state->chunky * 16), z); + if (id == 7) { + data->remove_block[x][NETHER_ROOF][z] = 1; + id = get_data(state, BLOCKS, x, (NETHER_ROOF + 1) - (state->chunky * 16), z); + if (id == 39 || id == 40) + data->remove_block[x][NETHER_ROOF + 1][z] = 1; + } + + for (y = NETHER_ROOF-1; y>=0; y--) { + id = get_data(state, BLOCKS, x, y - (state->chunky * 16), z); + if (id == 7 || id == 87) + data->remove_block[x][y][z] = 1; + else + break; + } + } + } + data->walked_chunk = 1; +} static int nether_hidden(void *data, RenderState *state, int x, int y, int z) { - /* hide all blocks above all air blocks - - due to how the nether is currently generated, this will also count - empty sections as 'solid' - */ - unsigned char missing_section = 0; - while (y < (SECTIONS_PER_CHUNK - state->chunky) * 16) - { - if (state->chunks[1][1].sections[state->chunky + (y / 16)].blocks == NULL) { - missing_section = 1; - y += 16; - continue; - } else { - /* if we passed through a missing section, but now are back in, - that counts as air */ - if (missing_section) - return 0; - missing_section = 0; - } - - if (!missing_section && get_data(state, BLOCKS, x, y, z) == 0) - { - return 0; - } - y++; - } - return 1; + RenderPrimitiveNether* self; + int real_y; + + self = (RenderPrimitiveNether *)data; + + if (!(self->walked_chunk)) + walk_chunk(state, self); + + real_y = y + (state->chunky * 16); + return self->remove_block[x][real_y][z]; } RenderPrimitiveInterface primitive_nether = { - "nether", 0, + "nether", sizeof(RenderPrimitiveNether), NULL, NULL, NULL, diff --git a/overviewer_core/src/primitives/nether2.h b/overviewer_core/src/primitives/nether.h similarity index 97% rename from overviewer_core/src/primitives/nether2.h rename to overviewer_core/src/primitives/nether.h index 000acf2..73ae26e 100644 --- a/overviewer_core/src/primitives/nether2.h +++ b/overviewer_core/src/primitives/nether.h @@ -27,4 +27,4 @@ typedef struct { int remove_block[WIDTH][HEIGHT][DEPTH]; -} RenderPrimitiveNether2; +} RenderPrimitiveNether; diff --git a/overviewer_core/src/primitives/nether2.c b/overviewer_core/src/primitives/nether2.c deleted file mode 100644 index 78b320b..0000000 --- a/overviewer_core/src/primitives/nether2.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of the Minecraft Overviewer. - * - * Minecraft Overviewer is free software: you can redistribute it and/or - * modify it under the terms of the GNU General Public License as published - * by the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Minecraft Overviewer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General - * Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with the Overviewer. If not, see . - */ - -#include "../overviewer.h" -#include "nether2.h" - -static void -walk_chunk(RenderState *state, RenderPrimitiveNether2 *data) { - int x, y, z; - int id; - - for (x = 0; x < WIDTH; x++) { - for (z = 0; z < DEPTH; z++) { - id = get_data(state, BLOCKS, x, NETHER_ROOF - (state->chunky * 16), z); - if (id == 7) { - data->remove_block[x][NETHER_ROOF][z] = 1; - id = get_data(state, BLOCKS, x, (NETHER_ROOF + 1) - (state->chunky * 16), z); - if (id == 39 || id == 40) - data->remove_block[x][NETHER_ROOF + 1][z] = 1; - } - - for (y = NETHER_ROOF-1; y>=0; y--) { - id = get_data(state, BLOCKS, x, y - (state->chunky * 16), z); - if (id == 7 || id == 87) - data->remove_block[x][y][z] = 1; - else - break; - } - } - } - data->walked_chunk = 1; -} - -static int -nether2_hidden(void *data, RenderState *state, int x, int y, int z) { - RenderPrimitiveNether2* self; - int real_y; - - self = (RenderPrimitiveNether2 *)data; - - if (!(self->walked_chunk)) - walk_chunk(state, self); - - real_y = y + (state->chunky * 16); - return self->remove_block[x][real_y][z]; -} - -RenderPrimitiveInterface primitive_nether2 = { - "nether2", sizeof(RenderPrimitiveNether2), - NULL, - NULL, - NULL, - nether2_hidden, - NULL, -}; diff --git a/overviewer_core/src/primitives/nether_old.c b/overviewer_core/src/primitives/nether_old.c new file mode 100644 index 0000000..32acd21 --- /dev/null +++ b/overviewer_core/src/primitives/nether_old.c @@ -0,0 +1,58 @@ +/* + * This file is part of the Minecraft Overviewer. + * + * Minecraft Overviewer is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * Minecraft Overviewer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General + * Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with the Overviewer. If not, see . + */ + +#include "../overviewer.h" + +static int +netherold_hidden(void *data, RenderState *state, int x, int y, int z) { + /* hide all blocks above all air blocks + + due to how the nether is currently generated, this will also count + empty sections as 'solid' + */ + unsigned char missing_section = 0; + while (y < (SECTIONS_PER_CHUNK - state->chunky) * 16) + { + if (state->chunks[1][1].sections[state->chunky + (y / 16)].blocks == NULL) { + missing_section = 1; + y += 16; + continue; + } else { + /* if we passed through a missing section, but now are back in, + that counts as air */ + if (missing_section) + return 0; + missing_section = 0; + } + + if (!missing_section && get_data(state, BLOCKS, x, y, z) == 0) + { + return 0; + } + y++; + } + return 1; +} + +RenderPrimitiveInterface primitive_nether_old = { + "netherold", 0, + NULL, + NULL, + NULL, + netherold_hidden, + NULL, +};