JorelAli / CommandAPI

A Bukkit/Spigot API for the command UI introduced in Minecraft 1.13
https://commandapi.jorel.dev
MIT License
529 stars 66 forks source link

java.lang.NoClassDefFoundError: net/minecraft/world/level/World #599

Closed alazeprt closed 2 weeks ago

alazeprt commented 2 weeks ago

CommandAPI version

9.5.3

Minecraft version

1.20.4

Are you shading the CommandAPI?

Yes

What I did

I added this code in my onEnable() method:

override fun onEnable() {
    CommandAPI.onEnable()
    registerCommand() // a method that written by myself
    // ...

What actually happened

When i start my server, an error message appears.

What should have happened

Successfully loaded plugin

Server logs and CommandAPI config

[07:39:19 ERROR]: [ISeeYou] Error initializing plugin 'ISeeYou-1.2.1-all.jar' in folder 'plugins' (Is it up to date?)
java.lang.NoClassDefFoundError: net/minecraft/world/level/World
        at ISeeYou-1.2.1-all.jar/cn.xor7.iseeyou.commandapi.CommandAPIVersionHandler.getPlatform(CommandAPIVersionHandler.java:71) ~[ISeeYou-1.2.1-all.jar:?]
        at ISeeYou-1.2.1-all.jar/cn.xor7.iseeyou.commandapi.CommandAPI.onLoad(CommandAPI.java:103) ~[ISeeYou-1.2.1-all.jar:?]
        at ISeeYou-1.2.1-all.jar/cn.xor7.iseeyou.ISeeYou.onLoad(ISeeYou.kt:43) ~[ISeeYou-1.2.1-all.jar:?]
        at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:59) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:18) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:39) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at org.bukkit.craftbukkit.v1_20_R3.CraftServer.loadPlugins(CraftServer.java:531) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:318) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1138) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:308) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at java.base/java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassNotFoundException: net.minecraft.world.level.World
        at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:142) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at io.papermc.paper.plugin.entrypoint.classloader.PaperPluginClassLoader.loadClass(PaperPluginClassLoader.java:103) ~[leaf-1.20.4.jar:git-Leaf-"83c2468"]
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
        ... 12 more

Other

No response

willkroboth commented 2 weeks ago

This appears to be a mappings error. If I try to run the Mojang-mapped CommandAPI plugin on Paper 1.20.4, I get a similar error:

[CommandAPI] Error initializing plugin 'CommandAPI-9.5.3-Mojang-Mapped.jar' in folder 'plugins' (Is it up to date?)
java.lang.NoClassDefFoundError: net/minecraft/world/level/Level
        at dev.jorel.commandapi.CommandAPIVersionHandler.getPlatform(CommandAPIVersionHandler.java:68) ~[CommandAPI-9.5.3-Mojang-Mapped.jar:?]
        at dev.jorel.commandapi.CommandAPI.onLoad(CommandAPI.java:112) ~[CommandAPI-9.5.3-Mojang-Mapped.jar:?]
        at dev.jorel.commandapi.CommandAPIMain.onLoad(CommandAPIMain.java:67) ~[CommandAPI-9.5.3-Mojang-Mapped.jar:?]
        at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:59) ~[paper-1.20.4.jar:git-Paper-497]
        at io.papermc.paper.plugin.storage.ServerPluginProviderStorage.processProvided(ServerPluginProviderStorage.java:18) ~[paper-1.20.4.jar:git-Paper-497]
        at io.papermc.paper.plugin.storage.SimpleProviderStorage.enter(SimpleProviderStorage.java:39) ~[paper-1.20.4.jar:git-Paper-497]
        at io.papermc.paper.plugin.entrypoint.LaunchEntryPointHandler.enter(LaunchEntryPointHandler.java:36) ~[paper-1.20.4.jar:git-Paper-497]
        at org.bukkit.craftbukkit.v1_20_R3.CraftServer.loadPlugins(CraftServer.java:507) ~[paper-1.20.4.jar:git-Paper-497]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:274) ~[paper-1.20.4.jar:git-Paper-497]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1131) ~[paper-1.20.4.jar:git-Paper-497]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[paper-1.20.4.jar:git-Paper-497]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.ClassNotFoundException: net.minecraft.world.level.Level
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:197) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:526) ~[?:?]
        ... 12 more

If you want your plugin to run on Paper 1.20.4 (which is Spigot-mapped), make sure you are using the commandapi-bukkit-shade, not commandapi-bukkit-shade-mojang-mapped.

If you would like your plugin to run on both Spigot-mapped pre-1.20.5 Paper and Mojang-mapped 1.20.5+ Paper, you should use the Spigot-mapped CommandAPI dependency. If you tell 1.20.5+ Paper that your plugin is Spigot-mapped (Paper's documentation describes how to do that: https://docs.papermc.io/paper/dev/project-setup#plugin-remapping), then it will correctly remap the included CommandAPI files to be Mojang-mapped when needed.

alazeprt commented 2 weeks ago

Thanks!