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.

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.

7 participants