- 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