Repository navigation
Fix server compatibility: use modern post-1.18 chunk format - #855
Conversation
|
⏱️ Benchmark run finished in 0m 34s 📈 Compared against baseline: 30s 🟢 Generation time is unchanged. 📅 Last benchmark: 2026-03-31 18:53:41 UTC You can retrigger the benchmark by commenting |
There was a problem hiding this comment.
Pull request overview
Updates Java Anvil chunk serialization to the modern (post-1.18) root-level chunk NBT layout to improve dedicated server compatibility (e.g., PaperMC), addressing cases where servers treat generated chunks as ungenerated/corrupt.
Changes:
- Switch chunk NBT output from the deprecated
Levelwrapper to root-level fields (e.g.,DataVersion,Status,yPos). - Emit a full vertical section set (24 sections) and add required chunk metadata scaffolding (structures, ticks, post-processing).
- Add computed heightmaps to the written chunk NBT.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Arnis-generated worlds appeared empty on servers (PaperMC, etc.) because
chunks used the deprecated pre-1.18 Level wrapper format and were missing
critical metadata. Servers don't auto-repair chunks like the singleplayer
client does, so they treated the chunks as corrupt/ungenerated.
Changes:
- Remove Level compound wrapper, write chunk data at root level
- Add DataVersion (3955/MC 1.21.1), Status ("minecraft:full"), yPos (-4)
- Emit all 24 sections (Y=-4 to Y=19) with biomes, not just sections with blocks
- Compute MOTION_BLOCKING/WORLD_SURFACE/OCEAN_FLOOR heightmaps from block data
- Add required empty structures, PostProcessing, block_ticks, fluid_ticks
- Set isLightOn=1, InhabitedTime=0, LastUpdate=0
Fixes #844
Co-Authored-By: Claude Opus 4.6 <[email protected]>
5c9bad1 to
4c32a1f
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
PR #855 validation reportI tested PR #855 ( Test environment
Important caveat: What was broken beforeOlder Arnis-generated Java worlds on my side produced chunk NBT that looked like this:
Typical missing fields in raw old worlds:
Example old raw worlds checked:
Validation results for old raw worlds:
Typical primed-format failure on old worlds:
So the old issue was real on my side: the raw Java output was too minimal for direct modern Paper use. What changed with PR #855After rebuilding Arnis with PR #855, newly generated worlds looked fundamentally different. Representative new chunk structure now contains fields like:
This is exactly the category of metadata that was missing before. Representative example from a new generated world:
New-world test resultsI generated and tested these new worlds with the patched build:
Primed-format quick-check results:
So on my side, 5 out of 6 newly generated test worlds passed directly. Important nuance about the one failure
That world still had the new modern chunk format:
So this does not look like the old server-compatibility issue anymore. Runtime behavior on PaperThis was the most important practical result for me: With the new worlds generated from the patched Arnis build, I no longer saw the old behavior where Paper had to rely on expensive fallback preparation for every new map. In multiple cases:
That is the behavior I originally wanted. Side-by-side summaryOld raw Arnis output
New output with PR #855
ConclusionOn my local stack, PR #855 appears to fix the original Paper/Java compatibility issue. More specifically:
So my conclusion is: PR #855 solves the main issue for me on Paper 1.21.11, but I would still describe it as “confirmed on my environment”, not “universally confirmed everywhere”. |
|
PR #855: Chunk Validation Re-Review (Large Maps) The only validation issues reported are: missing-heightmaps |
Avoids recomputing has_air, bits_per_block, values_per_long, and mask for the same section on every (x,z) column iteration. Precomputes all section metadata once and sorts by Y descending for the top-down scan. Co-Authored-By: Claude Opus 4.6 <[email protected]>
|
retrigger-benchmark |
1 similar comment
|
retrigger-benchmark |
|
retrigger-benchmark |
2 similar comments
|
retrigger-benchmark |
|
retrigger-benchmark |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Set isLightOn=0 (no light arrays emitted, server computes lighting) - Derive PostProcessing length from sections.len() - Rename level_data -> chunk_nbt for clarity - Fix doc comment to list all four heightmap types Co-Authored-By: Claude Opus 4.6 <[email protected]>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Arnis-generated worlds appeared empty on servers (PaperMC, etc.) because chunks used the deprecated pre-1.18 Level wrapper format and were missing critical metadata. Servers don't auto-repair chunks like the singleplayer client does, so they treated the chunks as corrupt/ungenerated.
Changes: