Errors when trying to find dispenser owner using DB
Strahilchu opened this issue · comments
[04:58:29 ERROR]: Could not pass event BlockDispenseEvent to NetherWater v1.12.5
java.lang.NullPointerException: Cannot invoke "String.length()" because "name" is null
at java.util.UUID.fromString(UUID.java:237) ~[?:?]
at cz.ceskydj.netherwater.database.DB.getDispenserOwner(DB.java:314) ~[NetherWater-1.12.5.jar:?]
at cz.ceskydj.netherwater.listeners.WaterDispenseListener.onBlockDispense(WaterDispenseListener.java:54) ~[NetherWater-1.12.5.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor926.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:git-Purpur-1962]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.19.4.jar:git-Purpur-1962]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.19.4.jar:git-Purpur-1962]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?]
at net.minecraft.core.dispenser.DefaultDispenseItemBehavior.spawnItem(DefaultDispenseItemBehavior.java:78) ~[?:?]
at net.minecraft.core.dispenser.DefaultDispenseItemBehavior.execute(DefaultDispenseItemBehavior.java:45) ~[?:?]
at net.minecraft.core.dispenser.DefaultDispenseItemBehavior.dispense(DefaultDispenseItemBehavior.java:32) ~[?:?]
at net.minecraft.world.level.block.DropperBlock.dispenseFrom(DropperBlock.java:58) ~[?:?]
at net.minecraft.world.level.block.DispenserBlock.tick(DispenserBlock.java:124) ~[?:?]
at net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.tick(BlockBehaviour.java:1061) ~[?:?]
at net.minecraft.server.level.ServerLevel.tickBlock(ServerLevel.java:1241) ~[?:?]
at net.minecraft.world.ticks.LevelTicks.runCollectedTicks(LevelTicks.java:197) ~[?:?]
at net.minecraft.world.ticks.LevelTicks.tick(LevelTicks.java:94) ~[?:?]
at net.minecraft.server.level.ServerLevel.tick(ServerLevel.java:694) ~[?:?]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1575) ~[purpur-1.19.4.jar:git-Purpur-1962]
at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:487) ~[purpur-1.19.4.jar:git-Purpur-1962]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1424) ~[purpur-1.19.4.jar:git-Purpur-1962]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1195) ~[purpur-1.19.4.jar:git-Purpur-1962]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:325) ~[purpur-1.19.4.jar:git-Purpur-1962]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
[04:58:30 ERROR]: Could not pass event BlockDispenseEvent to NetherWater v1.12.5
java.lang.NullPointerException: null
[04:58:30 ERROR]: Could not pass event BlockDispenseEvent to NetherWater v1.12.5
java.lang.NullPointerException: null
[04:58:31 ERROR]: Could not pass event BlockDispenseEvent to NetherWater v1.12.5
java.lang.NullPointerException: null
[04:58:31 ERROR]: Could not pass event BlockDispenseEvent to NetherWater v1.12.5
java.lang.NullPointerException: null
Hi @Strahilchu, thanks for reporting! I'll look at it.
It is a bit weird behavior. I think it should not create this state in database. I created a fix with some checks and auto-repair mechanisms for these cases, I hope it will work. I would like to see how it really looks in your DB, because I couldn't reproduce the same error as you posted here. Could you send me data.db
file in some private way? It contains list of dispensers and water blocks on your server and player UUIDs, so it should not be shared publicly in this issue. You can send it as a private message on Discord (ceskyDJ#9732) or to ceskyDJ@seznam.cz.