本帖最后由 奥力給 于 2022-12-3 15:42 编辑
有报错问题一直没有方法解决,尝试了无数种方法,希望大佬们指点迷津
①java.lang.NullPointerException(NPE):
- [22:57:12] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to QuickShopFix v1.1
- org.bukkit.event.EventException: null
- at top.iseason.bukkit.model.PLoader.lambda$createRegisteredListeners$1(PLoader.java:113) ~[?:?]
- at top.iseason.bukkit.model.PLoader$Lambda$150/0x0000000000000000.execute(Unknown Source) ~[?:?]
- at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at top.iseason.bukkit.listener.PLRegisteredListener.callEvent(PLRegisteredListener.java:26) ~[?:?]
- at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:517) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:502) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:228) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:195) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:191) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1227) [?:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:18) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:1) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_292]
- at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_292]
- at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:774) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [%5b2%5dPaperSpigot-1.8.8.jar:git-PaperSpigot-445]
- at java.lang.Thread.run(Thread.java:823) [?:1.8.0_292]
- Caused by: java.lang.NullPointerException
- at qq3328429240.QuickShopFix.onClick(QuickShopFix.java:21) ~[?:?]
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_292]
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_292]
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_292]
- at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_292]
- at top.iseason.bukkit.model.PLoader.lambda$createRegisteredListeners$1(PLoader.java:111) ~[?:?]
- ... 20 more
复制代码
|
本帖最后由 2000000 于 2022-12-3 03:00 编辑
第一个请在获取方块Type之前判断方块是不是null,e.getClickedBlock == null 如果真则 return
以及您在遍历Lore的时候也应该检查,ItemMeta 是否含有 Lore, ItemMeta#hasLore 如果为假则return
第二个在e.getDamager的时候 先判断这个damager到底是不是玩家,这个是EntityDamageByEntityEvent,damager不一定就是玩家
以及关于您这段代码的问题,您套了太多的if导致整个代码看上去非常凌乱,您可以更多的使用 return 使您的代码整洁度变高
NPE问题你应该清楚是有个null对象调用了方法,比如你报错里的
Caused by: java.lang.NullPointerException
at qq3328429240.QuickShopFix.onClick(QuickShopFix.java:21) ~[?:?]
表明调用 onClick 方法的对象是null,请检查代码逻辑或者进行判空