BentoBoxWorld / BentoBox

Expandable Minecraft server plugin for island-type games like SkyBlock or AcidIsland.
https://bentobox.world
Eclipse Public License 2.0
333 stars 137 forks source link

Cannot invoke "String.compareToIgnoreCase(String)" because "o1Name" is null #2378

Closed IAISI closed 4 months ago

IAISI commented 4 months ago

Expected behavior

I think new Island cache in BentoBox broke this?

Observed/Actual behavior

[22:24:29] [Server thread/INFO]: DavidGMZ issued server command: /is visit
[22:24:29] [Server thread/WARN]: com.destroystokyo.paper.exception.ServerCommandException: java.lang.NullPointerException: Cannot invoke "String.compareToIgnoreCase(String)" because "o1Name" is null
[22:24:29] [Server thread/WARN]:    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:164)
[22:24:29] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_20_R3.CraftServer.dispatchCommand(CraftServer.java:999)
[22:24:29] [Server thread/WARN]:    at org.bukkit.craftbukkit.v1_20_R3.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64)
[22:24:29] [Server thread/WARN]:    at com.mojang.brigadier.context.ContextChain.runExecutable(ContextChain.java:73)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.execution.tasks.ExecuteCommand.a(ExecuteCommand.java:31)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:19)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.execution.UnboundEntryAction.a(UnboundEntryAction.java:8)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.execution.CommandQueueEntry.a(CommandQueueEntry.java:5)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.execution.ExecutionContext.a(ExecutionContext.java:103)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:434)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.CommandDispatcher.performCommand(CommandDispatcher.java:336)
[22:24:29] [Server thread/WARN]:    at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:323)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:2230)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.network.PlayerConnection.lambda$handleChatCommand$14(PlayerConnection.java:2190)
[22:24:29] [Server thread/WARN]:    at net.minecraft.util.thread.IAsyncTaskHandler.b(IAsyncTaskHandler.java:59)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.TickTask.run(TickTask.java:18)
[22:24:29] [Server thread/WARN]:    at net.minecraft.util.thread.IAsyncTaskHandler.d(IAsyncTaskHandler.java:149)
[22:24:29] [Server thread/WARN]:    at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(IAsyncTaskHandlerReentrant.java:24)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1474)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:195)
[22:24:29] [Server thread/WARN]:    at net.minecraft.util.thread.IAsyncTaskHandler.x(IAsyncTaskHandler.java:123)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.bl(MinecraftServer.java:1451)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1374)
[22:24:29] [Server thread/WARN]:    at net.minecraft.util.thread.IAsyncTaskHandler.c(IAsyncTaskHandler.java:133)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.w_(MinecraftServer.java:1352)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1241)
[22:24:29] [Server thread/WARN]:    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:321)
[22:24:29] [Server thread/WARN]:    at java.base/java.lang.Thread.run(Thread.java:1583)
[22:24:29] [Server thread/WARN]: Caused by: java.lang.NullPointerException: Cannot invoke "String.compareToIgnoreCase(String)" because "o1Name" is null
[22:24:29] [Server thread/WARN]:    at Visit-1.7.0-SNAPSHOT-b102.jar//world.bentobox.visit.panels.player.VisitPanel.lambda$new$0(VisitPanel.java:92)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:360)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.TimSort.sort(TimSort.java:234)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.Arrays.sort(Arrays.java:1308)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.ArrayList.sort(ArrayList.java:1804)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[22:24:29] [Server thread/WARN]:    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
[22:24:29] [Server thread/WARN]:    at Visit-1.7.0-SNAPSHOT-b102.jar//world.bentobox.visit.panels.player.VisitPanel.<init>(VisitPanel.java:94)
[22:24:29] [Server thread/WARN]:    at Visit-1.7.0-SNAPSHOT-b102.jar//world.bentobox.visit.panels.player.VisitPanel.openPanel(VisitPanel.java:910)
[22:24:29] [Server thread/WARN]:    at Visit-1.7.0-SNAPSHOT-b102.jar//world.bentobox.visit.commands.player.VisitPlayerCommand.execute(VisitPlayerCommand.java:184)
[22:24:29] [Server thread/WARN]:    at BentoBox.jar//world.bentobox.bentobox.api.commands.CompositeCommand.call(CompositeCommand.java:292)
[22:24:29] [Server thread/WARN]:    at BentoBox.jar//world.bentobox.bentobox.api.commands.CompositeCommand.execute(CompositeCommand.java:260)
[22:24:29] [Server thread/WARN]:    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155)
[22:24:29] [Server thread/WARN]:    ... 28 more
[22:24:29] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing 'is visit' in world.bentobox.bskyblock.BSkyBlock$1(island)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:165) ~[sakura-api-1.20.4-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_20_R3.CraftServer.dispatchCommand(CraftServer.java:999) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at org.bukkit.craftbukkit.v1_20_R3.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:64) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at com.mojang.brigadier.context.ContextChain.runExecutable(ContextChain.java:73) ~[brigadier-1.2.9.jar:?]
    at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:31) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.commands.execution.tasks.ExecuteCommand.execute(ExecuteCommand.java:19) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.commands.execution.UnboundEntryAction.lambda$bind$0(UnboundEntryAction.java:8) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.commands.execution.CommandQueueEntry.a(CommandQueueEntry.java:5) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.commands.execution.ExecutionContext.runCommandQueue(ExecutionContext.java:103) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.commands.Commands.executeCommandInContext(Commands.java:434) ~[?:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:336) ~[?:?]
    at net.minecraft.commands.Commands.performCommand(Commands.java:323) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.performChatCommand(ServerGamePacketListenerImpl.java:2230) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleChatCommand$14(ServerGamePacketListenerImpl.java:2190) ~[?:?]
    at net.minecraft.util.thread.BlockableEventLoop.lambda$submitAsync$0(BlockableEventLoop.java:59) ~[?:?]
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:149) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1474) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.server.MinecraftServer.wrapRunnable(MinecraftServer.java:195) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:123) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1451) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1374) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:133) ~[?:?]
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1352) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1241) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:321) ~[sakura-1.20.4.jar:git-Sakura-"81399e4"]
    at java.lang.Thread.run(Thread.java:1583) ~[?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "String.compareToIgnoreCase(String)" because "o1Name" is null
    at world.bentobox.visit.panels.player.VisitPanel.lambda$new$0(VisitPanel.java:92) ~[Visit-1.7.0-SNAPSHOT-b102.jar:?]
    at java.util.TimSort.countRunAndMakeAscending(TimSort.java:360) ~[?:?]
    at java.util.TimSort.sort(TimSort.java:234) ~[?:?]
    at java.util.Arrays.sort(Arrays.java:1308) ~[?:?]
    at java.util.ArrayList.sort(ArrayList.java:1804) ~[?:?]
    at java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:392) ~[?:?]
    at java.util.stream.Sink$ChainedReference.end(Sink.java:261) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
    at world.bentobox.visit.panels.player.VisitPanel.<init>(VisitPanel.java:94) ~[Visit-1.7.0-SNAPSHOT-b102.jar:?]
    at world.bentobox.visit.panels.player.VisitPanel.openPanel(VisitPanel.java:910) ~[Visit-1.7.0-SNAPSHOT-b102.jar:?]
    at world.bentobox.visit.commands.player.VisitPlayerCommand.execute(VisitPlayerCommand.java:184) ~[Visit-1.7.0-SNAPSHOT-b102.jar:?]
    at world.bentobox.bentobox.api.commands.CompositeCommand.call(CompositeCommand.java:292) ~[BentoBox.jar:?]
    at world.bentobox.bentobox.api.commands.CompositeCommand.execute(CompositeCommand.java:260) ~[BentoBox.jar:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:155) ~[sakura-api-1.20.4-R0.1-SNAPSHOT.jar:?]
    ... 28 more

Steps/models to reproduce

I think all the player did was /is visit

BentoBox version

bentobox ver 22:33:58 INFO: Running Invalid (SAKURA) 1.20.4.

22:33:58 INFO: BentoBox version: 2.4.0-SNAPSHOT-b2619 22:33:58 INFO: Database: JSON 22:33:58 INFO: Loaded Game Worlds: 22:33:58 INFO: bskyblock_world (BSkyBlock): Overworld, Nether, The End 22:33:58 INFO: Loaded Addons: 22:33:58 INFO: Bank 1.7.1-SNAPSHOT-b87 (ENABLED) 22:33:58 INFO: Biomes 2.2.0-SNAPSHOT-b258 (ENABLED) 22:33:58 INFO: Border 4.3.0 (ENABLED) 22:33:58 INFO: BSkyBlock 1.18.0-SNAPSHOT-b763 (ENABLED) 22:33:58 INFO: CauldronWitchery 2.1.0-SNAPSHOT-#62 (ENABLED) 22:33:58 INFO: Challenges 1.3.0 (ENABLED) 22:33:58 INFO: CheckMeOut 1.2.0-SNAPSHOT-b95 (ENABLED) 22:33:58 INFO: ControlPanel 1.13.1 (ENABLED) 22:33:58 INFO: DimensionalTrees 1.7.0 (ENABLED) 22:33:58 INFO: ExtraMobs 1.13 (ENABLED) 22:33:58 INFO: IslandFly 1.12.0 (ENABLED) 22:33:58 INFO: Level 2.13.0 (ENABLED) 22:33:58 INFO: Likes 2.4.0-SNAPSHOT-b102 (ENABLED) 22:33:58 INFO: MagicCobblestoneGenerator 2.5.2-SNAPSHOT-b272 (ENABLED) 22:33:58 INFO: TwerkingForTrees 1.5.1 (ENABLED) 22:33:58 INFO: Visit 1.7.0-SNAPSHOT (ENABLED) 22:33:58 INFO: Warps 1.15.0-SNAPSHOT-b362 (ENABLED)

Plugin list

No response

Other

No response

tastybento commented 4 months ago

@IAISI Thanks for the report. No, this is not due to changes due to island caching. This is a long standing bug where when doing a UUID lookup, unknown values would return a null instead of an empty string. In this case, you must have an island in your database that has an owner who has never logged in, or something. I don't know how that could have happened. Anyway, this bug shouldn't happen again with the latest build with this change in it.