Paper 26.x support, update Gradle to 9.5.1, migrate deprecated APIs - #4262
taranovegor wants to merge 16 commits into
Conversation
|
Awesome port! Lots of big changes around the codebase for gradle, but they are definitely necessary. Now that it uses official mappings + paperweight, I think the paper wrapper should work for most future versions, rarely needing changes. The forge builds requiring gradle 8 is a bit weird. I see an announcement on their forums about ForgeGradle 7.x which should work with gradle 9. I don't build or use forge plugins though, no experience there. Wonder if it's even worth fixing, with NeoForge replacing Forge for modern MC versions. |
|
Thanks! Keeping the Gradle 8 workaround for Forge for now is on purpose. I don't have a Forge setup to test the builds. It's probably worth opening a separate issue for the ForgeGradle 7.x migration, especially considering where NeoForge seems to be heading for newer MC versions. |
|
26.2 came out recently and I noticed your PR could also be compatible with it (and potentially some future versions). Currently, in I have tested this idea under Spigot and it seems to work. |
|
Good point. Now that it's on official mappings + paperweight the helper isn't pinned to one minor version, so widening to 26. makes sense, thanks for testing it on 26.2. I'll get it in next time I'm on this. The next major should make things clearer, and this same approach might well carry over. |
i compiled your fork and had to add this updated |
|
I'm unable to build this branch, getting this error: |
you need to compile the 26.x with JDK 25 |
|
I am, otherwise it would have failed earlier |
compile Paper and Spigot to local maven on your computer . Do gradlew tasks for commands ,edit settings.gradle for stuff you don't want . start with JDK21 then switch to JDK25 . you need to update the models+1.txt . or get the compiled jar above. |
|
zipped jar zipped checksum updated texture_1.txt |
i think those are lighting errors get this plugin https://github.com/bergerhealer/Light-Cleaner , /tp to the center of the affected region and run the command . |
|
then run a /radiusrender |
Thanks so much! It worked |
PR webbukkit#4262 was written against the 26.1.2 dev bundle, where LevelChunk.loaded was accessible. In 26.2 (build 112) the field is declared private and there is no public getter, so :paper-helper-26x:compileJava fails with "loaded has private access in LevelChunk". ServerLevel.getChunkIfLoaded() returns null unless the chunk is loaded, so the extra field check was already redundant. Drop it rather than reaching for reflection. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@blackfist666, quick follow-up: point 1 is done and pushed - dev bundle bumped to 26.2.build.112-stable, and the loaded field access in MapChunkCache26x is removed. Builds clean on 26.2 and I've verified rendering works on a Paper 26.1 and 26.2 servers. Thanks you for detailed report 👍 Build of the current branch: Dynmap-3.9-SNAPSHOT-spigot.zip |
Hello! I don't see any file with that name in my Dynmap folder. Can this issue be fixed on my end, or should I switch back to a different fork? It's a shame, because your version seems technically much better 😥 |
You could try using one of the versions listed here: https://github.com/reusteur73/dynmap/releases/tag/26.1.fix1 It contains the fixes mentioned above, as well as a fix for bed rendering. Let me know if you run into any issues with it. |
Thanks a lot for your help. Unfortunately, I tested your build—as well as the one provided by taranovegor that included the two fixes—but in every case, I ran into a strange issue: Otherwise, upon the next restart, Dynmap indicates "resuming full render..." during startup, but nothing actually resumes since it had already finished before the reboot. Plus, the web interface stops working. I’ve been using Dynmap on my server for over 15 years and have never encountered this problem. In any case, Pl3xmap is still working perfectly (I use it alongside Dynmap), and just to check, I tested Bluemap, which works correctly too. I’m not sure why Dynmap is struggling so much... Regardless, thank you all for your work on developing Dynmap ❤ |
|
@Chevels why would you run dynmap with storage type sqlite? After solving the lighting issues mentioned above on one world I'm running extremely well in filetree storage-type. I'm about 10 GB with my biggest world 4000 radius rendered in flat and surface. I'm extremely thankful for taranovegor and reusteur73 for this PR. Thank you so much! |
|
@taranovegor @Chevels — I think there are two separate faults tangled together here, and only one of them belongs to this PR. 1.
|
|
Thanks @blackfist666 for the detailed writeups — they've been a big help closing these out quickly. The Invalid rotate error in @reusteur73, I've cherry-picked Fresh builds with all of the above are attached if anyone would like to test. |
|
Hello, and thanks for the replies! I did actually use the file-based directory structure for storage for over 10 years, but I switched to the Thanks for all the explanations; I think I’ll just revert to my old build for now, hoping that in the future I’ll be able to install the newer builds you’re working on while still keeping my database intact 😬 Good luck with the development, and take care! |
|
I agree that the file-based storage is bad for those same reasons. It was wasting a ton of space due to all the small filesizes, I switched to mysql and that brought the size way down. Never used sqlite. Haven't seen those issues on my version, although I will say I started a fullrender about a month ago and it's still going lol. I can tell it makes very slight progress every day. I've never seen it go so slow, but it really doesn't bother me since I was only fixing a few small black areas and the biome colors, but I'll report back if the webapp goes unresponsive once it finishes. |
Dynmap has no official Minecraft 26.x release. Pull the PR author's 2026-09-02 build from webbukkit/dynmap#4262 through MODPACK (downloadModpackUrl), since it is shipped as a zip with the jar at top level. Restore the dynmap service port and HTTPRoute at owen.${SECRET_DOMAIN}, matching cicada. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Tested Paper 26.3 Pre 2 with this Dynmap build and it seems to be working. Will still need to add new textures #4262 (comment) |
Good to hear 26.3 runs on the current build, that points to a stable internal API from 26.2.
Meanwhile, I've put the new 26.3 block models/textures in a temporary PR on my fork: taranovegor#1. I'm not sure I'll be able to test it myself anytime soon, so I'd really appreciate any help with testing and feedback. |
|
Just tested your 26.3 compiled PR only 1 missing texture error reported in console [23:16:56 ERROR]: [dynmap] Block minecraft:poplar_sign[rotation=0,waterlogged=true] - not enough textures for faces (10 > 6) |
|
@taranovegor I haven't tested your 26.3 jar, but looking at the commit in taranovegor#1 (models/textures only), I don't think it can work as-is: 26.3-pre-2 also changes things at runtime, not just block content. Here is what I had to change on my side to get 26.3-pre-2 rendering on Fabric: https://github.com/reusteur73/dynmap/tree/26.3 Platform-independent (DynmapCore):
Fabric only:
The palette changes are in Since #4263 already sits on top of your branch, the simplest is probably that you cherry-pick the DynmapCore commits (175be39, 13f105e) and the paper-helper-26x part (43101c7) into #4262, and I keep the Fabric/Forge parts in #4263 and rebase once you've pushed, as we did last time. |
Two corners used vmin/vmax on the U axis, rejecting valid faces with partial UVs (hanging signs, shelf mushroom, straw bed).
Palette entries can be strings, {"": id} or {id, properties}. Add lookupBlockState hook so platforms can resolve default states through the game registry.
Cherry-picked from reusteur73/dynmap@43101c7e, keeping only the paper-helper-26x portion (fabric-26.1/forge-26.1 modules don't exist on this branch). Co-authored-by: reusteur73 <92535962+reusteur73@users.noreply.github.com>
|
@reusteur73 Cherry-picked all three: 175be39 ( While testing on top, also fixed a few things in my own 26.3 additions:
All pushed on top of your three commits. Thanks you.
|
|
The copper Golem statues got missed in texture and models . They dont get rendered |
|
Thanks for flagging this. You're right, and to be clear that's not something this PR ever addressed, it's a separate, pre-existing gap. Originally noted in #4240: the textures live under I spent a bit of time on it and got something a little more detailed working, pulled the face sprite out separately and modeled actual leg/torso/head/arm boxes instead of a flat cube:
Still just an approximation though, not a proper fix, no per- Since it's unrelated to what this PR is actually about, I think it'd make more sense as its own PR rather than folding it in here. |





Adds paper-helper-26x, a new helper module for Paper 26.x with Mojang mappings, using SerializableChunkData for thread-safe chunk access.
Paper 26.x requires paperweight 2.x, which requires Gradle 9. To support this: