-
Notifications
You must be signed in to change notification settings - Fork 16
Open
Description
This is caused by unexpected param user passed.
To reproduce:
@Command("spectate <target>")
suspend fun spectate(sender: PlayerUser, @Argument("target") targetSelector: SingleEntitySelector)if passed /spectate @e, which may returns multiple entities, and execute the command,
[ESU] An unhandled exception was thrown during command execution
java.lang.StringIndexOutOfBoundsException: Range [9, 0) out of bounds for length 11
at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55) ~[?:?]
at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52) ~[?:?]
at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213) ~[?:?]
at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210) ~[?:?]
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98) ~[?:?]
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromToIndex(Preconditions.java:112) ~[?:?]
at java.base/jdk.internal.util.Preconditions.checkFromToIndex(Preconditions.java:349) ~[?:?]
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4937) ~[?:?]
at java.base/java.lang.String.substring(String.java:2899) ~[?:?]
at ESU-bukkit-0.12.3-dev.jar/org.incendo.cloud.context.CommandInput.difference(CommandInput.java:770) ~[ESU-bukkit-0.12.3-dev.jar:?]
at ESU-bukkit-0.12.3-dev.jar/org.incendo.cloud.context.CommandInput.difference(CommandInput.java:785) ~[ESU-bukkit-0.12.3-dev.jar:?]
at ESU-bukkit-0.12.3-dev.jar/org.incendo.cloud.context.ParsingContext.consumedInput(ParsingContext.java:131) ~[ESU-bukkit-0.12.3-dev.jar:?]
at ESU-bukkit-0.12.3-dev.jar/org.incendo.cloud.CommandTree.lambda$parseArgument$12(CommandTree.java:595) ~[ESU-bukkit-0.12.3-dev.jar:?]
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1171) ~[?:?]
at java.base/java.util.concurrent.CompletableFuture$Completion.exec(CompletableFuture.java:504) ~[?:?]
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511) ~[?:?]
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1450) ~[?:?]
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2019) ~[?:?]
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187) ~[?:?]
occurs. This is because net.minecraft.commands.arguments.EntityArgument#parse(com.mojang.brigadier.StringReader, boolean) set cursor to 0 on any exceptions.
If add any param behind the SingleEntitySelector argument, no matter if it's legal, it leads to a dead lock.
[15:46:46 ERROR]: Current Thread: Server thread
[15:46:46 ERROR]: PID: 53 | Suspended: false | Native: false | State: WAITING
[15:46:46 ERROR]: Stack:
[15:46:46 ERROR]: java.base@25/jdk.internal.misc.Unsafe.park(Native Method)
[15:46:46 ERROR]: java.base@25/java.util.concurrent.locks.LockSupport.park(LockSupport.java:223)
[15:46:46 ERROR]: java.base@25/java.util.concurrent.CompletableFuture$Signaller.block(CompletableFuture.java:1885)
[15:46:46 ERROR]: java.base@25/java.util.concurrent.ForkJoinPool.unmanagedBlock(ForkJoinPool.java:4364)
[15:46:46 ERROR]: java.base@25/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:4310)
[15:46:46 ERROR]: java.base@25/java.util.concurrent.CompletableFuture.waitingGet(CompletableFuture.java:1919)
[15:46:46 ERROR]: java.base@25/java.util.concurrent.CompletableFuture.join(CompletableFuture.java:2138)
[15:46:46 ERROR]: ESU-bukkit-0.12.3-dev.jar//org.incendo.cloud.suggestion.SuggestionFactory.suggestImmediately(SuggestionFactory.java:80)
[15:46:46 ERROR]: ESU-bukkit-0.12.3-dev.jar//org.incendo.cloud.bukkit.BukkitCommand.tabComplete(BukkitCommand.java:88)
[15:46:46 ERROR]: org.bukkit.command.Command.tabComplete(Command.java:100)
[15:46:46 ERROR]: io.papermc.paper.command.brigadier.bukkit.BukkitCommandNode$BukkitBrigSuggestionProvider.getSuggestions(BukkitCommandNode.java:109)
[15:46:46 ERROR]: com.mojang.brigadier.tree.ArgumentCommandNode.listSuggestions(ArgumentCommandNode.java:71)
[15:46:46 ERROR]: com.mojang.brigadier.CommandDispatcher.getCompletionSuggestions(CommandDispatcher.java:550)
[15:46:46 ERROR]: com.mojang.brigadier.CommandDispatcher.getCompletionSuggestions(CommandDispatcher.java:530)
[15:46:46 ERROR]: net.minecraft.server.network.ServerGamePacketListenerImpl.sendServerSuggestions(ServerGamePacketListenerImpl.java:904)
[15:46:46 ERROR]: net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleCustomCommandSuggestions0$2(ServerGamePacketListenerImpl.java:863)
[15:46:46 ERROR]: net.minecraft.server.network.ServerGamePacketListenerImpl$$Lambda/0x0000000040e00400.run(Unknown Source)
[15:46:46 ERROR]: net.minecraft.server.TickTask.run(TickTask.java:18)
[15:46:46 ERROR]: net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:155)
[15:46:46 ERROR]: net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1449)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:176)
[15:46:46 ERROR]: net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:129)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1429)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1423)
[15:46:46 ERROR]: net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:139)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.managedBlock(MinecraftServer.java:1380)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1388)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1265)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310)
[15:46:46 ERROR]: net.minecraft.server.MinecraftServer$$Lambda/0x000000003f551c00.run(Unknown Source)
[15:46:46 ERROR]: java.base@25/java.lang.Thread.runWith(Thread.java:1487)
[15:46:46 ERROR]: java.base@25/java.lang.Thread.run(Thread.java:1474)
Metadata
Metadata
Assignees
Labels
No labels