commands icon indicating copy to clipboard operation
commands copied to clipboard

Parsing double null pointer with @Default

Open Proximyst opened this issue 6 years ago • 1 comments

When the signature of the command is as follows:

@Default
public void test(Player sender, String string, @Default("1") int integer) {

and then run /command it won't error. This changes as soon as you change the order of the arguments to:

@Default
public void test(Player sender, @Default("1") int integer, String string) {

it will error upon /command with:

[18:45:17 INFO]: whats_this[/0:0:0:0:0:0:0:1:58540] logged in with entity id 127 at ([world]39.6617281820209, 94.0, 120.08754182863834)
[18:45:27 INFO]: whats_this issued server command: /test
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF] Exception in command: test
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF] java.lang.NullPointerException
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at java.lang.Double.parseDouble(Unknown Source)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.ACFUtil.parseNumber(ACFUtil.java:444)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.CommandContexts.parseAndValidateNumber(CommandContexts.java:256)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.CommandContexts.lambda$new$4(CommandContexts.java:72)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.RegisteredCommand.resolveContexts(RegisteredCommand.java:262)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.RegisteredCommand.resolveContexts(RegisteredCommand.java:197)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.RegisteredCommand.invoke(RegisteredCommand.java:146)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.BaseCommand.executeCommand(BaseCommand.java:663)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.BaseCommand.findAndExecuteCommand(BaseCommand.java:837)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.BaseCommand.execute(BaseCommand.java:525)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.RootCommand.execute(RootCommand.java:107)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at com.proximyst.redeemmcmmo.dependencies.co.aikar.commands.BukkitRootCommand.execute(BukkitRootCommand.java:62)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at org.bukkit.craftbukkit.v1_13_R2.CraftServer.dispatchCommand(CraftServer.java:734)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.PlayerConnection.handleCommand(PlayerConnection.java:1797)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1605)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(PacketPlayInChat.java:45)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(PacketPlayInChat.java:5)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:15)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at java.util.concurrent.FutureTask.run(Unknown Source)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.SystemUtils.a(SystemUtils.java:108)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:1011)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:439)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:938)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:836)
[18:45:27 ERROR]: [mcMMO-Redeem] [ACF]  at java.lang.Thread.run(Unknown Source)

This is with acf-paper 0.5.0-SNAPSHOT.

Proximyst avatar Feb 15 '19 17:02 Proximyst

This is an illegal method format. there can not be a required parameter following Optional parameters.

I'll need to see about improving validation to detect this, though it is curious why its even triggering that error though

aikar avatar Feb 15 '19 18:02 aikar