Fabricio20 / HubBasics

Bukkit Plugin For Hub Owners
GNU Lesser General Public License v3.0
22 stars 11 forks source link

1.18 support? #178

Closed Spiderjockey02 closed 2 years ago

Spiderjockey02 commented 2 years ago
[21:55:41] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to HubBasics v6.11.9
java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "net.notfab.hubbasics.spigot.nms.nbt.NBTItem.hasKey(String)" is null
    at net.notfab.hubbasics.spigot.listeners.v1_9.ItemListener.onRightClick(ItemListener.java:103) ~[HubBasics-Spigot.jar:?]
    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor60.execute(Unknown Source) ~[?:?]
    at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:?]
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:git-Paper-36]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:543) ~[paper-1.18.jar:git-Paper-36]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:506) ~[paper-1.18.jar:git-Paper-36]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:501) ~[paper-1.18.jar:git-Paper-36]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:497) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItem(ServerGamePacketListenerImpl.java:1806) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:28) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundUseItemPacket.a(ServerboundUseItemPacket.java:8) ~[?:?]
    at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:56) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:149) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:23) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1413) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.server.MinecraftServer.c(MinecraftServer.java:189) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:122) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1391) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1384) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:132) ~[?:?]
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1362) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1268) ~[paper-1.18.jar:git-Paper-36]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.18.jar:git-Paper-36]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]

Version: This server is running Paper version git-Paper-36 (MC: 1.18) (Implementing API version 1.18-R0.1-SNAPSHOT)

Spiderjockey02 commented 2 years ago

Also for some reason right-clicking the menu item causes you TP at the position u were looking at

Fabricio20 commented 2 years ago

Hello, I'll be checking this soon! 1.17 also still not supported. The TP thing is caused by World Edit, right clicking the compass will teleport you if you have World Edit and the appropriate permissions.

Fabricio20 commented 2 years ago

Hello, I believe this should be fixed on the latest 6.11.10 version I released a few minutes ago. Let me know if it's fine!

Spiderjockey02 commented 2 years ago

Still the same error:

[16:45:46] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to HubBasics v6.11.10
java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()" because the return value of "net.notfab.hubbasics.spigot.nms.nbt.NBTItem.hasKey(String)" is null
    at net.notfab.hubbasics.spigot.listeners.v1_9.ItemListener.onRightClick(ItemListener.java:103) ~[HubBasics-Spigot.jar:?]
    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor67.execute(Unknown Source) ~[?:?]
    at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:?]
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:git-Paper-57]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:628) ~[paper-api-1.18-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:543) ~[paper-1.18.jar:git-Paper-57]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:506) ~[paper-1.18.jar:git-Paper-57]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:501) ~[paper-1.18.jar:git-Paper-57]
    at org.bukkit.craftbukkit.v1_18_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:497) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItem(ServerGamePacketListenerImpl.java:1872) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundUseItemPacket.handle(ServerboundUseItemPacket.java:28) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundUseItemPacket.a(ServerboundUseItemPacket.java:8) ~[?:?]
    at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:56) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:149) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:23) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1413) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.server.MinecraftServer.c(MinecraftServer.java:189) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:122) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1391) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1384) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:132) ~[?:?]
    at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1362) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1268) ~[paper-1.18.jar:git-Paper-57]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:317) ~[paper-1.18.jar:git-Paper-57]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]

Version: Paper version git-Paper-57 (MC: 1.18) (Implementing API version 1.18-R0.1-SNAPSHOT)

Fabricio20 commented 2 years ago

Hm, I'll take another look at this maybe today, it should be fixed though as I was unable to reproduce the issue yesterday after changing the nbt classes location.

Spiderjockey02 commented 2 years ago

I can send my list of plugins if u want, to see if it's conflicting anything?

Jelcoo commented 2 years ago

Also for some reason right-clicking the menu item causes you TP at the position u were looking at

You can remove this by holding the compass and typing /none in chat

Fabricio20 commented 2 years ago

Looks like Spigot stopped remapping Mojang classes in 1.17 and that completely broke NBT in 1.18, I thought 1.17 had finally added proper NBT support but looks like they just made it even harder to use in 1.18. Not sure why Spigot still doesn't have an abstracted API for adding NBT tags to items.

Anyhow, the way NBT works in 1.18 is EXTREMELY complex and requires me tinkering with the build system for remapping the classes myself and then back, this is too much work and would likely be a pain to make functional without crippling older versions.

With that said I've opted to use NBTAPI for 1.18 and above as a soft dependency. In 1.17 HubBasics will use net.minecraft.nbt as available and below 1.17 it will just use the reflection method that has worked since the beginning of time. This means that for HubBasics to work properly in 1.18 (Item-related features) you MUST install NBTAPI.

HubBasics will throw a custom Unsupported Minecraft Version error if you attempt to run on 1.18 without NBTAPI installed.

Fabricio20 commented 2 years ago

This should now be fixed in release 6.11.11, don't forget to install NBTAPI.