Skip to content

Conversation

@jacob1
Copy link
Contributor

@jacob1 jacob1 commented Oct 1, 2025

All of the bukkit mappings are updated for 1.21.9/1/21.10. There were a lot of obfuscated method changes, as usual. No major api changes this time.

I did some initial testing and it loads / renders fine. Once the corresponding Fabric PR #4240 is merged, it will also render The Copper Age blocks.

I put a jar download on my fork for anyone that needs it before this PR is merged. (it's a combination of my and reusteur73's PRs so will render the new blocks).

Edit: Updated to 1.21.11. See my note on that down below

@jacob1 jacob1 changed the title Spigot/Paper 1.21.9 basic support Spigot 1.21.9 basic support Oct 1, 2025
@jacob1
Copy link
Contributor Author

jacob1 commented Oct 1, 2025

Update: Someone tested it on paper and it doesn't work. It gives this error:

java.lang.NoClassDefFoundError: net/minecraft/core/HolderLookup$a
	at java.base/java.lang.Class.forName0(Native Method) ~[?:?]
	at java.base/java.lang.Class.forName(Class.java:578) ~[?:?]
	at java.base/java.lang.Class.forName(Class.java:557) ~[?:?]
	at io.papermc.reflectionrewriter.runtime.AbstractDefaultRulesReflectionProxy.forName(AbstractDefaultRulesReflectionProxy.java:68) ~[reflection-rewriter-runtime-0.0.3.jar:?]
	at io.papermc.paper.pluginremap.reflect.PaperReflectionHolder.forName(Unknown Source) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.Helper.loadVersionHelper(Helper.java:13) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
	at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.Helper.getHelper(Helper.java:59) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
	at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.DynmapPlugin.onLoad(DynmapPlugin.java:900) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
	at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:59) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:18) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:39) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:39) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:554) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:323) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1096) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:317) ~[paper-1.21.9.jar:1.21.9-38-27f926e]
	at java.base/java.lang.Thread.run(Thread.java:1575) ~[?:?]
Caused by: java.lang.ClassNotFoundException: net.minecraft.core.HolderLookup$a
	at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:205) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:172) ~[paper-api-1.21.9-R0.1-SNAPSHOT.jar:?]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:528) ~[?:?]
	... 17 more

Not sure what it means yet. Paper 1.21.9 isn't officially released yet so if it's on their end, maybe it will be resolved.

@Tsoccerguy3
Copy link

Tsoccerguy3 commented Oct 1, 2025

Paper 1.21.9 build 41 is here https://papermc.io/downloads/paper . Paper is now a Hard Fork and new versions are developed along with the snapshots , that is why Paper gets releases on the same day as a Mojang release. 1.21.9 has been available for weeks for developers on the dev/1.21.9branch as was 1.21.8
Developers From Microsoft and Mojang contribute to the Code and to plugins Example Worldgard, worldedit Multicore Essentials etc..

Thanks Jacob for updating .

@jacob1
Copy link
Contributor Author

jacob1 commented Oct 1, 2025

I guess I was looking in the wrong places, then. I see now they have a button to show the 1.21.9 builds.

Maybe someone that knows more about paper internals could chime in about what this means. Do I just need to target the paper api instead of the spigot api? My server is Spigot though, so I don't want to drop compatibility with that. It's not my decision to make to drop Spigot support either. My end goal was to switch my server over to fabric once the hard fork started forcing me to choose between spigot / paper plugins.

I'd like to support both, but I know that will get harder over time.

@Tsoccerguy3
Copy link

Just include the Paper API . Its enough just to import to main java and then in your Listening code . Scenerios could be as simple as a name change or KennyTV may have found a optimized way of inputing and exporting data . Mike has a lot of experience with Dynmap and Im sure he looks at the PR's often

@jacob1
Copy link
Contributor Author

jacob1 commented Oct 2, 2025

I asked on the PaperMC discord and got this response

[8:39 PM] remapping from spigot mappings is not available on paper just yet, as we released the update before spigot was out
[8:39 PM] keep in mind that this won't be maintained forever and one day the mechanism will be dropped entirely
[8:39 PM] so you should keep separate modules for spigot v paper, or just drop spigot support entirely

So give it time, it should start working in paper in future versions.

Migrating to paper-api, and using paperweight to get Mojang mappings would definitely make it far easier to update to new versions. And it would avoid problems like this, which will be unavoidable for a certain amount of days after every new MC update. I tried for a bit to handle it (for the 1.21.9 helper) but it's not something I want to spend too much time on.

@jacob1 jacob1 changed the title Spigot 1.21.9 basic support Spigot/Paper 1.21.9 basic support Oct 6, 2025
@jacob1
Copy link
Contributor Author

jacob1 commented Oct 6, 2025

Now works on Paper again, if you download the latest paper jar from today or newer
https://papermc.io/downloads/paper

@jacob1 jacob1 changed the title Spigot/Paper 1.21.9 basic support Spigot/Paper 1.21.9-1.21.10 support Oct 8, 2025
@jacob1
Copy link
Contributor Author

jacob1 commented Oct 8, 2025

I updated this to 1.21.10, and renamed the directories to 1.21.10 (1.21.9 is now a dead version, quickly obsoleted by 1.21.10)

@jacob1 jacob1 mentioned this pull request Oct 12, 2025
@PetyXbron
Copy link

Thanks! ♥️ This works on the latest Paper release.
For others, you can download the .jar file of the unofficial dynmap update here.

Unfortunately, this PR doesn't support the latest Purpur version
v1_21_R6 - 1.21.10 - purpur 1.21.10-2531-b7b7ba2 (MC: 1.21.10).
I will leave the error log here if it is in the interest to correct this error.

[18:07:57 INFO]: [dynmap] Enabling dynmap v3.7-beta-11-1.21.9-spigot-Dev
[18:07:57 ERROR]: Error occurred while enabling dynmap v3.7-beta-11-1.21.9-spigot-Dev (Is it up to date?)
java.lang.NoSuchMethodError: 'net.minecraft.core.RegistryAccess$Frozen net.minecraft.server.MinecraftServer.bg()'
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.helper.v121_10.BukkitVersionHelperSpigot121_10.getBiomeReg(BukkitVersionHelperSpigot121_10.java:104) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.helper.v121_10.BukkitVersionHelperSpigot121_10.getBiomeBaseList(BukkitVersionHelperSpigot121_10.java:117) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.DynmapPlugin.loadExtraBiomes(DynmapPlugin.java:851) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.DynmapPlugin.onEnable(DynmapPlugin.java:936) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:279) ~[purpur-api-1.21.10-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:520) ~[purpur-api-1.21.10-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:653) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:610) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.MinecraftServer.initPostWorld(MinecraftServer.java:641) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:402) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1272) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[18:07:57 INFO]: [dynmap] Disabling dynmap v3.7-beta-11-1.21.9-spigot-Dev
[18:07:57 INFO]: [dynmap] Disabled

@jbm11208
Copy link

jbm11208 commented Dec 2, 2025

Thanks! ♥️ This works on the latest Paper release. For others, you can download the .jar file of the unofficial dynmap update here.

Unfortunately, this PR doesn't support the latest Purpur version v1_21_R6 - 1.21.10 - purpur 1.21.10-2531-b7b7ba2 (MC: 1.21.10). I will leave the error log here if it is in the interest to correct this error.

[18:07:57 INFO]: [dynmap] Enabling dynmap v3.7-beta-11-1.21.9-spigot-Dev
[18:07:57 ERROR]: Error occurred while enabling dynmap v3.7-beta-11-1.21.9-spigot-Dev (Is it up to date?)
java.lang.NoSuchMethodError: 'net.minecraft.core.RegistryAccess$Frozen net.minecraft.server.MinecraftServer.bg()'
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.helper.v121_10.BukkitVersionHelperSpigot121_10.getBiomeReg(BukkitVersionHelperSpigot121_10.java:104) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.helper.v121_10.BukkitVersionHelperSpigot121_10.getBiomeBaseList(BukkitVersionHelperSpigot121_10.java:117) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.DynmapPlugin.loadExtraBiomes(DynmapPlugin.java:851) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar/org.dynmap.bukkit.DynmapPlugin.onEnable(DynmapPlugin.java:936) ~[Dynmap-3.7-beta-11-1.21.9-spigot-spigot.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:279) ~[purpur-api-1.21.10-R0.1-SNAPSHOT.jar:?]
        at io.papermc.paper.plugin.manager.PaperPluginInstanceManager.enablePlugin(PaperPluginInstanceManager.java:202) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.enablePlugin(PaperPluginManagerImpl.java:109) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:520) ~[purpur-api-1.21.10-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.CraftServer.enablePlugin(CraftServer.java:653) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:610) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.MinecraftServer.initPostWorld(MinecraftServer.java:641) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:402) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1272) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388) ~[purpur-1.21.10.jar:1.21.10-2531-b7b7ba2]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
[18:07:57 INFO]: [dynmap] Disabling dynmap v3.7-beta-11-1.21.9-spigot-Dev
[18:07:57 INFO]: [dynmap] Disabled
image

It seems to work fine for me, do you have anything else running besides dynmap on Purpur?

shikendon pushed a commit to phateio/dynmap that referenced this pull request Dec 5, 2025
- MinecraftServer.registryAccess(): ba() -> bg()
- Biome registry constant: Registries.aK -> Registries.aN
- TileEntity.getBlockPos(): aA_() -> aD_()
- World.registryAccess(): K_() -> L_()
- NBT.Tag.asString(): p_() -> r_()

Based on official Dynmap PR webbukkit#4239 implementation
@PetyXbron
Copy link

@jbm11208 thanks for the message. I downloaded the latest Purpur build again, and it works. Idk what happened there

…ointing to the wrong field (BiomeFog::e), it was using the right method (BiomeFog::e()) all along
@jacob1 jacob1 changed the title Spigot/Paper 1.21.9-1.21.10 support Spigot 1.21.9-1.21.11, Paper 1.21.9-1.21.10 support Dec 12, 2025
@jacob1
Copy link
Contributor Author

jacob1 commented Dec 12, 2025

I updated this PR to support 1.21.11 as well. Lots of obfuscation changes as usual, but nothing too different.

This will probably be the last PR I send in for spigot, for a few reasons:

  • I've been sending PRs recently because I like to upgrade my personal server ASAP, but I'm going to switch it to Fabric starting with 1.21.11
  • Mojang will deobfuscate their jars starting in 26.1, so the build architecture will need work
  • Paper hard fork means we can't maintain compat with both versions forever. It might be manageable in 26.1 but won't be forever.
  • Version number change to 26.1 could break things around the plugin that check version numbers

Basically, I just do this for my own use because it's easy. But the next update will be hard, and I don't have the time or need to do that.

I'm also hoping that if I say now I'm not updating for 26.1, someone else will come along and figure out the right way to handle that update. I know enough to see that targetting obfuscated method names like this is unsustainable. I think targetting Spigot is unsustainable as well. I'd like to see the next update target Paper, drop support for legacy versions, and modernize the build infrastructure. But I'm not the one to do that, this isn't my personal project and who knows what will be merged.

Edit:
Forgot to mention one important bit. This PR WILL NOT WORK IN PAPER YET, until PaperMC/Paper#13388 is merged. At that point you'll also have to download a new version of paper. The Paper team is actively reviewing the Spigot -> Paper obfuscation mappings now but it probably won't be ready for a few days to a week like last time.
With some build infra updates it would be possible to support now, but not planning on that (see the rest of this comment).

@SongOfCarp
Copy link

Oh no that's a bad news for community. You are the only person now updating this for spigot, while fabric versions are maintained by so many people. But anyway, thank you for your continuously updating for spigot❤️

@rautamiekka
Copy link
Contributor

Oh no that's a bad news for community. You are the only person now updating this for spigot, while fabric versions are maintained by so many people. But anyway, thank you for your continuously updating for spigot❤️

To me it always seemed Spigot is a dead-end by comparison (no thanks to md-5), especially to Paper (not to mention the upcoming Folia), so I reckon Spigot will only spiral after Paper hard-forked away, and likewise I wouldn't think losing Spigot support will be a loss to anyone, except md-5 himself.

@MiniDigger
Copy link
Contributor

MiniDigger commented Dec 23, 2025

hey, Mini from the PaperMC team here.
As somebody who has been using dynmap 15 years ago, it pains me to see the paper version without maintenance going forward.
I briefly looked over the code and it doesn't seem terribly hard. the project already uses gradle, so supporting mojang mapped builds should be as easy as replacing these two dependencies with the paperweight-userdev gradle plugin and then changing all the names.
https://github.com/webbukkit/dynmap/blob/v3.0/bukkit-helper-121-6/build.gradle#L15-L18
docs for that are available here: https://docs.papermc.io/paper/dev/userdev/
for whoever wants to try to tackle this: the paper community on discord is happy to help out with getting userdev to work and explaining any issues that come up.

obviously cutting off legacy crud and modernizing the codebase, code architecture and build pipeline sound like a great idea, but also way more work, which needs people to step up and do all that. I don't know much about the current state of dynmap, but if the goal is to just make it work, then using userdev should be enough and way less work.

edit: about spigot support I am obviously biased, but you can also see that the majority of users moved on from spigot to paper or forks of papers. dynmap doesn't seem to track server software on bstats, but other popular plugins do, for example FAWE has spigot at 2.5% of users, with paper or forks of paper making up for the rest. additionally, a more practical reason to stop supporting spigot is that while spigot has not even mentioned plugin that access internals (like dynmap) in their note about 26.1, paper has been providing tooling to use mojang mappings and preparing the community for this change for over two years now. we aren't ignorant to the fact that there are legitimate reasons to mess with internals and we want to help plugin authors to do that in the easiest and nicest way possible (even tho we obviously prefer people would use the api whenever possible).

@jacob1
Copy link
Contributor Author

jacob1 commented Dec 24, 2025

Thanks for the comment! Hmm ... it's good to know that just to keep things running, it isn't too hard. There are a lot of supported versions, each with tons of NMS calls, that's where the problem comes in. It's why I think we should just have one new jar for paper, and not update the old jar (can leave it there for legacy versions I suppose).

If I ever have time (which is very limited these days), I may try to do what you said to those lines.

I'm definitely a novice when it comes to gradle, but I've been trying to touch a lot of different plugins to learn more Minecraft dev.

@Schneidertm
Copy link

Thank you so much for the last couple of updates, Jacob1! I really appreciated them. It's perfectly understandable that interests change. I looked through the forks and found an active one from JLyne who has already migrated to Mojang mappings: https://github.com/JLyne/dynmap. If anyone has the time to pick up this project, it's definitely a good way to get oriented as well. However, the fork itself won't be suitable for most users as it requires an external web server configuration.

@jacob1 jacob1 changed the title Spigot 1.21.9-1.21.11, Paper 1.21.9-1.21.10 support Spigot/Paper 1.21.9-1.21.11 support Dec 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants