PaperMC / Paper

The most widely used, high performance Minecraft server that aims to fix gameplay and mechanics inconsistencies
https://papermc.io/
Other
9.98k stars 2.32k forks source link

PluginRemapper is invasive to plugins! Can cause plugins to work improperly #10676

Closed RegotlyLong closed 5 months ago

RegotlyLong commented 6 months ago

Expected behavior

I wish PluginRemapper could be switched off in paper-global.yml or somewhere else, because in version 1.20.6 I found a lot of plugins being switched off due to problems caused by Remapper!

Observed/Actual behavior

[ModernPluginLoadingStrategy] Could not load plugin 'PlaceholderAPI.jar' in folder 'plugins.paper-remapped' org.bukkit.plugin.InvalidPluginException: java.lang.ExceptionInInitializerError at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:127) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.20.6.jar:git-Paper-53] at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:508) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:287) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1140) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:326) ~[paper-1.20.6.jar:git-Paper-53] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] Caused by: java.lang.ExceptionInInitializerError at java.base/java.lang.Class.forName0(Native Method) ~[?:?] at java.base/java.lang.Class.forName(Class.java:534) ~[?:?] at java.base/java.lang.Class.forName(Class.java:513) ~[?:?] at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:123) ~[paper-1.20.6.jar:git-Paper-53] ... 9 more Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 at PlaceholderAPI-2.11.3.jar/me.clip.placeholderapi.PlaceholderAPIPlugin.(PlaceholderAPIPlugin.java:58) ~[PlaceholderAPI-2.11.3.jar:?] at java.base/java.lang.Class.forName0(Native Method) ~[?:?] at java.base/java.lang.Class.forName(Class.java:534) ~[?:?] at java.base/java.lang.Class.forName(Class.java:513) ~[?:?] at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:123) ~[paper-1.20.6.jar:git-Paper-53] ... 9 more [13:55:40 ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'LoaderLib.jar' in folder 'plugins.paper-remapped' org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.loader.Loader' at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:80) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:123) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.20.6.jar:git-Paper-53] at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:508) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:287) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1140) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:326) ~[paper-1.20.6.jar:git-Paper-53] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] Caused by: java.lang.ClassNotFoundException: me.loader.Loader at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:197) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] at java.base/java.lang.Class.forName0(Native Method) ~[?:?] at java.base/java.lang.Class.forName(Class.java:534) ~[?:?] at java.base/java.lang.Class.forName(Class.java:513) ~[?:?] at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] ... 10 more

Steps/models to reproduce

none

Plugin and Datapack List

none

Paper version

: This server is running Paper version git-Paper-53 (MC: 1.20.6) (Implementing API version 1.20.6-R0.1-SNAPSHOT) (Git: 5729b29) Error obtaining version information

Other

none

Machine-Maker commented 6 months ago

Plugin & Datapack List none

I find that really hard to believe seeing as the error provided is because of plugin loading.

RegotlyLong commented 6 months ago

Plugin & Datapack List none

I find that really hard to believe seeing as the error provided is because of plugin loading.

[13:55:40 ERROR]: [ModernPluginLoadingStrategy] Could not load plugin 'LoaderLib.jar' in folder 'plugins.paper-remapped' org.bukkit.plugin.InvalidPluginException: Cannot find main class `me.loader.Loader' at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:80) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:123) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.provider.type.spigot.SpigotPluginProvider.createInstance(SpigotPluginProvider.java:35) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.entrypoint.strategy.modern.ModernPluginLoadingStrategy.loadProviders(ModernPluginLoadingStrategy.java:116) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:38) ~[paper-1.20.6.jar:git-Paper-53] at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.20.6.jar:git-Paper-53] at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:508) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:287) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1140) ~[paper-1.20.6.jar:git-Paper-53] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:326) ~[paper-1.20.6.jar:git-Paper-53] at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?] Caused by: java.lang.ClassNotFoundException: me.loader.Loader at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:197) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?] at java.base/java.lang.Class.forName0(Native Method) ~[?:?] at java.base/java.lang.Class.forName(Class.java:534) ~[?:?] at java.base/java.lang.Class.forName(Class.java:513) ~[?:?] at org.bukkit.plugin.java.PluginClassLoader.(PluginClassLoader.java:78) ~[paper-api-1.20.6-R0.1-SNAPSHOT.jar:?] ... 10 more

RegotlyLong commented 6 months ago

Plugin & Datapack List none

I find that really hard to believe seeing as the error provided is because of plugin loading.

There are some plug-ins that will lead to a lack of class files after being remapper, this problem will be very serious, not only will lead to the MD5 file has been modified, but also may make the plug-in author think that you may be in the magic of his plug-ins, and some plug-ins are not allowed to be remapper, be removed will be less class files.

electronicboy commented 6 months ago

You can disable plugin remapping by adding -Dpaper.disable-plugin-rewriting=true to your JVM args, however, this will break any plugins which are using internals which haven't been adopted specifically for paper

if the remapper is breaking stuff, then we'd generally like to be able to have the means to reproduce and investigate this stuff

lynxplay commented 6 months ago

Please provide a minimal replication plugin for your issue ^ We cannot debug failures of unknown plugins.

RegotlyLong commented 6 months ago

Please provide a minimal replication plugin for your issue ^ We cannot debug failures of unknown plugins. How can I send it to you?

lynxplay commented 6 months ago

Presumably have the plugin be open source (e.g. here on github) or provide the jar as is.

Malfrador commented 6 months ago

PlaceholderAPI is parsing the Craftbukkit package to determine the Minecraft version. However, Craftbukkit package relocation has been removed in recent versions of Paper, so this no longer works. This has been anounced quite a while ago so there was sufficient time to prepare for this change. PlaceholderAPI has already updated to support this. You currently need to use the dev builds, which you can download here. Using the dev build, PAPI loads fine on latest Paper 1.20.6

I am unable to find "LoaderLib" anywhere online, only a Fabric mod of the same name. We would need that plugin to reproduce the issue. If you don't want to post it publicly, you can also send it privately on the Paper Discord using /modmail.

RegotlyLong commented 6 months ago

The problem arises when plugins are obfuscated, and it is possible that an obfuscated plugin may not be remapper, which is why it causes noclassfound

RegotlyLong commented 6 months ago

If possible, it is recommended that the paper's config can be added to turn off the remapper by default.

kennytv commented 6 months ago

If a plugin wishes to not be remapped (and actually runs on a Mojang mapped server!), it can mark itself as such https://docs.papermc.io/paper/dev/userdev#1205

JasperTheMinecraftDev commented 4 months ago

If a plugin wishes to not be remapped (and actually runs on a Mojang mapped server!), it can mark itself as such https://docs.papermc.io/paper/dev/userdev#1205

Trying to do this at the moment but the last line doesn't even work, REOBF_PRODUCTION is non-existent. Can you give the code needed to mark a plugin as such?

Thanks in advance Kenny!

electronicboy commented 4 months ago

1) REOBF_PRODUCTION not being existent would suggest outdated paperweight, or, you're not using paperweight 2) REOBF_PROD would make the thing spigot mapped, and would just be subjected to remapping

you would want to manually add the manifest entry to your jar in your build tool if you're not using paperweight, for further support, please use the discord or forums

JasperTheMinecraftDev commented 4 months ago
  1. REOBF_PRODUCTION not being existent would suggest outdated paperweight, or, you're not using paperweight
  2. REOBF_PROD would make the thing spigot mapped, and would just be subjected to remapping

you would want to manually add the manifest entry to your jar in your build tool if you're not using paperweight, for further support, please use the discord or forums

I am using paperweight(only added it to be able to exclude it_ but that manual manifest entry sounds like the better choice. I'll move to Discord :)

rodwarjorn commented 3 months ago

It is definetely this Remapper, I am experiencing this. Remove this garbage thanks