-
-
Notifications
You must be signed in to change notification settings - Fork 75
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
CommandAPI version
8.7.2
Minecraft version
1.16.5
Are you shading the CommandAPI?
Yes
What I did
Instantiate a WorldArgument in your onEnable() method and run this on a 1.16.5 server:
new WorldArgument();What actually happened
Fails due to WorldInfo class not existing
[13:34:14 ERROR]: Error occurred while enabling CommandAPI v9.0.0-SNAPSHOT (Is it up to date?)
java.lang.NoClassDefFoundError: org/bukkit/generator/WorldInfo
at dev.jorel.commandapi.CommandAPIMain.onEnable(CommandAPIMain.java:136) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:599) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:298) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Paper-794]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291) ~[patched_1.16.5.jar:git-Paper-794]
at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.ClassNotFoundException: org.bukkit.generator.WorldInfo
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:155) ~[patched_1.16.5.jar:git-Paper-794]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:114) ~[patched_1.16.5.jar:git-Paper-794]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
... 11 moreWhat should have happened
Loads normally
Server logs and CommandAPI config
No response
Other
This issue is caused by the method reference lambda in the WorldArgument constructor to convert a World to a String:
((Function<World, String>) World::getName).andThen(String::toLowerCase)The generated source code:
SourceFile: "WorldArgument.java"
Signature: #88 // Ldev/jorel/commandapi/arguments/SafeOverrideableArgument<Lorg/bukkit/World;Lorg/bukkit/World;>;
BootstrapMethods:
0: #96 REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
#98 (Ljava/lang/Object;)Ljava/lang/Object;
#105 REF_invokeInterface org/bukkit/generator/WorldInfo.getName:()Ljava/lang/String;
#107 (Lorg/bukkit/World;)Ljava/lang/String;
1: #96 REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
#108 (Ljava/lang/Object;)Ljava/lang/Object;
#114 REF_invokeVirtual java/lang/String.toLowerCase:()Ljava/lang/String;
#116 (Ljava/lang/String;)Ljava/lang/String;
InnerClasses:
public static final #122= #118 of #120; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandlesThe generated source code of just using a lambda directly:
world -> world.getName().toLowerCase() private static java.lang.String lambda$0(org.bukkit.World);
descriptor: (Lorg/bukkit/World;)Ljava/lang/String;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokeinterface #81, 1 // InterfaceMethod org/bukkit/World.getName:()Ljava/lang/String;
6: invokevirtual #85 // Method java/lang/String.toLowerCase:()Ljava/lang/String;
9: areturn
LineNumberTable:
line 42: 0
LocalVariableTable:
Start Length Slot Name Signature
0 10 0 world Lorg/bukkit/World;
}
SourceFile: "WorldArgument.java"
Signature: #94 // Ldev/jorel/commandapi/arguments/SafeOverrideableArgument<Lorg/bukkit/World;Lorg/bukkit/World;>;
BootstrapMethods:
0: #102 REF_invokeStatic java/lang/invoke/LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
#104 (Ljava/lang/Object;)Ljava/lang/Object;
#107 REF_invokeStatic dev/jorel/commandapi/arguments/WorldArgument.lambda$0:(Lorg/bukkit/World;)Ljava/lang/String;
#108 (Lorg/bukkit/World;)Ljava/lang/String;
InnerClasses:
public static final #114= #110 of #112; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandlesAs you can see, with the method reference it references the WorldInfo class which the World class extends in 1.19.2, but does not extend (or exist) in 1.16.5.
Akiranya
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working