ceskyDJ / NetherWater

Simple Spigot plugin that allows players to use water in nether worlds. They can use buckets, ice blocks and dispensers for spawning water.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.