CRITICAL FIX: Gitea repo was missing the canOcclude()/isAir() changes that
prevent Guava LoadingCache deadlock with modernfix/ferritecore.
Added inline comments to explain all API changes:
- canOcclude()/isAir() deadlock prevention (lines 248, 259)
- ServerTickEvent.Post event API change (line 919)
- getLatestChunk()/getPersistedStatus() chunk API (lines 1860, 1863)
- NBT contains() reimplementation (line 30)
- NBT getAsString() null safety (line 96)
This is now fully synced with the tested/working monorepo version.
- Fix ServerTickEvent: register listener for ServerTickEvent.Post instead of
abstract ServerTickEvent base class (NeoForge 21.x requirement)
- Fix null BlockGetter: replace null with EmptyBlockGetter.INSTANCE in
isSolidRender() and propagatesSkylightDown() calls (1.21+ actually uses param)
- Fix chunk iteration: replace direct visibleChunkMap field access with
getChunks() iteration and getChunkToSend() with getLatestChunk() (1.21.1 API)
- Build: fix shadowJar config to properly bundle DynmapCore into fat jar
(was producing 80KB hollow jar missing all core classes)
- Build: cap Gradle daemon and forked javac heap to prevent OOM on large hosts
- Tested: server starts cleanly, Dynmap web UI accessible, maps rendered