Dynmap NeoForge 1.21.1 port
Find a file
Kayos 77162c3ebd fix: sync with monorepo canOcclude() fix, add [1.21.1] inline comments
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.
2026-03-07 11:51:53 -08:00
gradle initial: neoforge 1.21.1 port - first compile fix pass 2026-03-06 19:07:14 -08:00
libs initial: neoforge 1.21.1 port - first compile fix pass 2026-03-06 19:07:14 -08:00
runs/junit initial: neoforge 1.21.1 port - first compile fix pass 2026-03-06 19:07:14 -08:00
src/main fix: sync with monorepo canOcclude() fix, add [1.21.1] inline comments 2026-03-07 11:51:53 -08:00
.gitignore initial: neoforge 1.21.1 port - first compile fix pass 2026-03-06 19:07:14 -08:00
build.gradle neoforge-1.21.1: runtime fixes and build improvements 2026-03-07 09:41:38 -08:00
CHANGES.md docs: correct CHANGES.md - visibleChunkMap fix was not actually applied 2026-03-07 11:30:05 -08:00
gradle.properties neoforge-1.21.1: runtime fixes and build improvements 2026-03-07 09:41:38 -08:00
gradlew initial: neoforge 1.21.1 port - first compile fix pass 2026-03-06 19:07:14 -08:00
README.md docs: add README and project overview 2026-03-07 11:26:21 -08:00
settings.gradle initial: neoforge 1.21.1 port - first compile fix pass 2026-03-06 19:07:14 -08:00

Dynmap — NeoForge 1.21.1 Port

Port of Dynmap to NeoForge 21.1.219 / Minecraft 1.21.1.

This standalone build is used for deployment on an ATM10 server. The goal is to eventually submit this as a PR back to the upstream webbukkit/dynmap repository.


Building

Requires Java 21 and Docker (build container: dynmap-neoforge-build).

# Inside build container
cd /workspace
./gradlew shadowJar --no-daemon

Output: build/libs/Dynmap-neoforge-1.21.1-3.7-SNAPSHOT-Dev-all.jar

Memory notes

  • Gradle daemon heap: capped at -Xmx2g (see gradle.properties)
  • forked javac: capped at -Xmx3g (see build.gradle)
  • Without these caps, JVM defaults to 25% of host RAM — causes OOM on high-RAM hosts

Changes from upstream neoforge-1.20.6

See CHANGES.md for the full changelog.


Test status

Environment Result
Vanilla NeoForge 1.21.1 (clean server) Passes
ATM10 5.5 (445 mods, NeoForge 21.1.219) Passes

Deployment

Copy the fat jar into the server's mods/ directory. Remove any old Dynmap*.jar first.

docker cp build/libs/Dynmap-neoforge-1.21.1-3.7-SNAPSHOT-Dev-all.jar <container>:/data/mods/

Note: Always remove old jars before copying a new one. The container data volume may retain old versions.


Containers (internal, Lucy/Unraid)

Container Purpose Ports
dynmap-neoforge-build Gradle build environment
neoforge-test Vanilla NeoForge 1.21.1 test server 25566 (MC), 8124 (web)
atm10-55-test ATM10 5.5 test server, 445 mods
a6860a8008ed (prod) Production ATM10 — DO NOT TOUCH

PR Plan

Once ATM10 testing is confirmed:

  1. Mirror all changes to monorepo (dynmap-upstream/neoforge-1.21.1/)
  2. Push to Cobbert/dynmap fork on GitHub
  3. Open PR: Cobbert/dynmap:neoforge-1.21.1webbukkit/dynmap:neoforge

PR description draft is in DYNMAP.md (workspace copy).