Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Render below zero retrogen chunks again #2051

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 19 additions & 1 deletion overviewer_core/world.py
Original file line number Diff line number Diff line change
Expand Up @@ -1678,6 +1678,8 @@ def get_chunk(self, x, z):
# starting with 1.16 snapshot 20w17a, block states are packed differently
longarray_unpacker = self._packed_longarray_to_shorts_v116

include_chunk = False
below_zero_retrogen_target_status = None
# From the interior of a map to the edge, a chunk's status may be one of:
# - postprocessed (interior, or next to fullchunk)
# - fullchunk (next to decorated)
Expand All @@ -1688,8 +1690,18 @@ def get_chunk(self, x, z):
# Empty is self-explanatory, and liquid_carved and carved seem to correspond
# to SkyLight not being calculated, which results in mostly-black chunks,
# so we'll just pretend they aren't there.
if chunk_data.get("Status", "") not in ("full", "postprocessed", "fullchunk",
if chunk_data.get("Status", "") in ("full", "postprocessed", "fullchunk",
"mobs_spawned", "spawn", ""):
include_chunk = True

else:
below_zero_retrogen_target_status = (
chunk_data.get("below_zero_retrogen", {}).get("target_status")
)
if below_zero_retrogen_target_status in ("heightmaps", "spawn", "minecraft:heightmaps", "minecraft:spawn"):
include_chunk = True

if not include_chunk:
raise ChunkDoesntExist("Chunk %s,%s doesn't exist" % (x,z))

# Turn the Biomes array into a 16x16 numpy array
Expand Down Expand Up @@ -1725,6 +1737,12 @@ def get_chunk(self, x, z):
if 'SkyLight' in section:
skylight = numpy.frombuffer(section['SkyLight'], dtype=numpy.uint8)
skylight = skylight.reshape((16,16,8))
elif below_zero_retrogen_target_status and section["Y"] < 0:
# nonexistent section of incomplete pre-1.18 chunk
# if we don't do this, the terrain below Y=0 next to it will be
# painted black, and since this terrain isn't a red door and we
# aren't the rolling stones, we don't want that
skylight = numpy.full((16,16, 8), 255, dtype=numpy.uint8)
else: # Special case introduced with 1.14
skylight = numpy.zeros((16,16,8), dtype=numpy.uint8)
skylight_expanded = numpy.empty((16,16,16), dtype=numpy.uint8)
Expand Down