retrooper / packetevents

PacketEvents is a fast and efficient multi-platform packet processing library for Minecraft. Our packet wrappers are easy to use with multi-version support.
GNU General Public License v3.0
461 stars 135 forks source link

Disconnect when going near a player with an item enchanted using EcoEnchants #869

Open freausan opened 1 week ago

freausan commented 1 week ago

Describe the bug A clear and concise description of what the bug is.

Player disconnects when going near another player with an item enchanted with a custom EcoEnchants enchant.

image [LibsDisguises] Task #13907 for LibsDisguises v10.0.44-SNAPSHOT generated an exception java.lang.NullPointerException: Cannot invoke "com.github.retrooper.packetevents.protocol.item.enchantment.type.EnchantmentType.getId(com.github.retrooper.packetevents.protocol.player.ClientVersion)" because "enchantment" is null at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.protocol.component.builtin.item.ItemEnchantments.lambda$write$1(ItemEnchantments.java:62) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.wrapper.PacketWrapper.writeMap(PacketWrapper.java:438) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.protocol.component.builtin.item.ItemEnchantments.write(ItemEnchantments.java:61) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.protocol.component.ComponentTypes$1.write(ComponentTypes.java:94) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.wrapper.PacketWrapper.writeItemStackModern(PacketWrapper.java:553) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.wrapper.PacketWrapper.writeItemStack(PacketWrapper.java:578) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityEquipment.write(WrapperPlayServerEntityEquipment.java:85) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.wrapper.PacketWrapper.prepareForSend(PacketWrapper.java:242) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.wrapper.PacketWrapper.prepareForSend(PacketWrapper.java:247) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.manager.protocol.ProtocolManager.transformWrappers(ProtocolManager.java:107) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.manager.protocol.ProtocolManager.sendPacketSilently(ProtocolManager.java:121) ~[packetevents-spigot-2.4.0.jar:?] at packetevents-spigot-2.4.0.jar/com.github.retrooper.packetevents.manager.player.PlayerManager.sendPacketSilently(PlayerManager.java:53) ~[packetevents-spigot-2.4.0.jar:?] at LibsDisguises.jar/me.libraryaddict.disguise.utilities.packets.LibsPackets.lambda$sendDelayed$2(LibsPackets.java:86) ~[LibsDisguises.jar:?] at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.21.jar:1.21-37-dd49fba] at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:482) ~[paper-1.21.jar:1.21-37-dd49fba] at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1654) ~[paper-1.21.jar:1.21-37-dd49fba] at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:471) ~[paper-1.21.jar:1.21-37-dd49fba] at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1538) ~[paper-1.21.jar:1.21-37-dd49fba] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1246) ~[paper-1.21.jar:1.21-37-dd49fba] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:329) ~[paper-1.21.jar:1.21-37-dd49fba] at java.base/java.lang.Thread.run(Unknown Source) ~[?:?]

Software brand Paper version 1.21-37-master@dd49fba (2024-06-24T02:08:49Z) (Implementing API version 1.21-R0.1-SNAPSHOT)

Plugins image eco 6.71.3 EcoEnchants 12.10.1 packetevents 2.4.0 ProtocolLib 5.3.0-SNAPSHOT-721 LibsDisguises 10.0.44-SNAPSHOT

How To Reproduce Steps to reproduce the behavior: Example:

  1. Enchant an item with a custom EcoEnchants enchantment
  2. Have another play go near the player with the enchanted item in inventory
  3. Disconnect image

Expected behavior no crash?

Screenshots If applicable, add screenshots to help explain your problem.

Additional context Probably not specific to ecoenchants enchants but i would imagine generally all enchants registered with the new 1.21 system.

dawon commented 1 week ago

Known issue, being fixed in #866...