Describe the Bug When trying to create a packet that requires a DataWatcher to be added (i.e. metadata packets), the method Packet#setDataWatcherItems() returns an error due to the datawatcher list being an ArrayList and the packet's field requiring a List object. This bug is critical since it prevents metadata packets from being sent, rendering classes such as the HologramBuilder entirely useless.
To Reproduce Steps:
Compile and Run latest commit of this Plugin
Execute /debug in-game
See Error
Expected BehaviorPacket#setDataWatcherItems should simply set the List<DataWatcher.Items<?>> field within packets, all done via reflection (or optionally a DataWatcher wrapper)
Console Logs
[13:42:08 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'debug' in plugin Warrior v1.4.0-alpha
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[patched_1.16.4.jar:git-Paper-416]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.4.jar:git-Paper-416]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:807) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2021) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1832) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1785) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.16.4.jar:git-Paper-416] at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:23) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1132) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1125) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeAll(IAsyncTaskHandler.java:95) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1261) ~[patched_1.16.4.jar:git-Paper-416]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:996) ~[patched_1.16.4.jar:git-Paper-416] at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:173) ~[patched_1.16.4.jar:git-Paper-416]
at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
at com.dumbdogdiner.warrior.api.WarriorUser._sendPacket(WarriorUser.java:473) ~[?:?]
at com.dumbdogdiner.warrior.api.WarriorUser.sendPacket(WarriorUser.java:460) ~[?:?]
at com.dumbdogdiner.warrior.api.builders.HologramBuilder.sendTo(HologramBuilder.java:87) ~[?:?]
at com.dumbdogdiner.warrior.commands.DebugCommand.onCommand(DebugCommand.java:28) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.4.jar:git-Paper-416]
... 19 more
Describe the Bug When trying to create a packet that requires a DataWatcher to be added (i.e. metadata packets), the method
Packet#setDataWatcherItems()
returns an error due to the datawatcher list being an ArrayList and the packet's field requiring a List object. This bug is critical since it prevents metadata packets from being sent, rendering classes such as the HologramBuilder entirely useless.To Reproduce Steps:
/debug
in-gameExpected Behavior
Packet#setDataWatcherItems
should simply set theList<DataWatcher.Items<?>>
field within packets, all done via reflection (or optionally a DataWatcher wrapper)Console Logs