ProtocolLib

3M Downloads

The latest version causes trouble when player join

SkyWave2022 opened this issue · 27 comments

commented
  • This issue is not solved in a development build

Describe the bug
The latest version causes trouble when player join

To Reproduce
Steps to reproduce the behavior:
delete protocol string replacer which depends on protocolLib.
works fine

Expected behavior
nothing

Screenshots
image

Version Info
config.yml.zip

commented

I don't see what the issue of ProtocolLib is? If you remove ProtocolStringReplacer and everything works fine then please report the issue to them.

commented

20220725044522
Catched stacktrace. I'd think it's a problem that not both of us can solve.

commented
java.lang.IllegalArgumentException: Can't find id for 'FrogVariant[texture=minecraft:textures/entity/frog/cold_frog.png]' in map Registry[ResourceKey[minecraft:root / minecraft:frog_variant] (Experimental)]
        at net.minecraft.network.FriendlyByteBuf.writeId(FriendlyByteBuf.java:139) ~[?:?]
        at net.minecraft.network.syncher.EntityDataSerializer.lambda$simpleId$1(EntityDataSerializer.java:43) ~[?:?]
        at net.minecraft.network.syncher.EntityDataSerializer$1.write(EntityDataSerializer.java:22) ~[?:?]
        at net.minecraft.network.syncher.SynchedEntityData.writeDataItem(SynchedEntityData.java:231) ~[?:?]
        at net.minecraft.network.syncher.SynchedEntityData.pack(SynchedEntityData.java:168) ~[?:?]
        at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.write(ClientboundSetEntityDataPacket.java:33) ~[?:?]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:41) ~[paper-1.19.jar:git-Paper-77]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[paper-1.19.jar:git-Paper-77]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-codec-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.ChannelDuplexHandler.write(ChannelDuplexHandler.java:115) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at me.neznamy.tab.platforms.bukkit.BukkitPipelineInjector$BukkitChannelDuplexHandler.write(BukkitPipelineInjector.java:91) ~[TAB.v3.1.2.jar:?]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:227) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:233) ~[ProtocolLib.jar:?]
        at net.minecraft.network.Connection.doSendPacket(Connection.java:463) ~[?:?]
        at net.minecraft.network.Connection.lambda$writePacket$11(Connection.java:437) ~[?:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

Another stacktrace. Different server

commented

I still don't understand how that problem is related to ProtocolLib? It is (if at all) related to a plugin using ProtocolLib...

commented

I still don't understand how that problem is related to ProtocolLib? It is (if at all) related to a plugin using ProtocolLib...

I guess ProtocolLib accessed the related fields? As ProtocolStringReplacer doesn't change these things
https://github.com/Rothes/ProtocolStringReplacer/blob/master/src/main/java/me/rothes/protocolstringreplacer/packetlisteners/server/EntityMetadata.java

commented

ProtocolLib isn't accessing any packet field unless a plugin is using methods to modify a packet field...

commented

ProtocolLib isn't accessing any packet field unless a plugin is using methods to modify a packet field...

I realized now dev version eased deepclone exception? ProtocolStringReplacer now can modify the itemstack of Item entity. But it shouldn't change ID.

commented

I honestly have no idea what you're talking about... I don't know about ProtocolStringReplacer 🤷

commented

I honestly have no idea what you're talking about... I don't know about ProtocolStringReplacer 🤷

I'm saying it may related to the fix of #1401 as this problem now only happens on 1.19 servers which can only use dev ProtocolLib. About ProtocolStringReplacer you can just check the link I sent. It doesn't change ID so shouldn't cause this kind of errors.

commented

So not cloning the packet resolves the issue?

commented

So not cloning the packet resolves the issue?

No confirmation, just conjecture. I don't have what it takes to test because only 3 people reported having this problem. I may try to get their world files.

commented

Confirmed. Caused by

packetEvent.setPacket(packetEvent.getPacket().deepClone());

on ProtocolLib dev b588
ZQ 255)D6}6}3T@WV QQ(F9
 Z~~OIC91APOVP)2X_4EK

commented

Further investigation:
Entity Type: FROG
Entity TypeId: -1

commented

Can you check if PacketContainer.FAST_CLONE_UNSUPPORTED (private field, use a debugger for that) contains the packet type of the cloned packet after cloning?

commented

Can you check if PacketContainer.FAST_CLONE_UNSUPPORTED (private field, use a debugger for that) contains the packet type of the cloned packet after cloning?

it returns false, still. (mistake fixed)

Code:

        PacketContainer ognPacket = packetEvent.getPacket();
        PacketContainer packet = ognPacket.deepClone();

                Field fast_clone_unsupported = PacketContainer.class.getDeclaredField("FAST_CLONE_UNSUPPORTED");
                fast_clone_unsupported.setAccessible(true);
                Set<PacketType> o = (Set<PacketType>) fast_clone_unsupported.get(null);
                System.out.println(o.contains(packet.getType()));

Log:

[17:16:55 信息]: false
[17:16:55 错误]: Packet encoding of packet ID 77 threw (skippable? false)
java.lang.IllegalArgumentException: Can't find id for 'FrogVariant[texture=minecraft:textures/entity/frog/temperate_frog.png]' in map Registry[ResourceKey[minecraft:root / minecraft:frog_variant] (Experimental)]
        at net.minecraft.network.FriendlyByteBuf.writeId(FriendlyByteBuf.java:139) ~[?:?]
        at net.minecraft.network.syncher.EntityDataSerializer.lambda$simpleId$1(EntityDataSerializer.java:43) ~[?:?]
        at net.minecraft.network.syncher.EntityDataSerializer$1.write(EntityDataSerializer.java:22) ~[?:?]
        at net.minecraft.network.syncher.SynchedEntityData.writeDataItem(SynchedEntityData.java:231) ~[?:?]
        at net.minecraft.network.syncher.SynchedEntityData.pack(SynchedEntityData.java:168) ~[?:?]
        at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.write(ClientboundSetEntityDataPacket.java:33) ~[?:?]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:41) ~[paper-1.19.jar:git-Paper-43]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[paper-1.19.jar:git-Paper-43]
        at jdk.internal.reflect.GeneratedMethodAccessor36.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at com.viaversion.viaversion.util.PipelineUtil.callEncode(PipelineUtil.java:93) ~[ViaVersion-4.4.1.jar:?]
        at com.viaversion.viaversion.bukkit.handlers.BukkitEncodeHandler.encode(BukkitEncodeHandler.java:71) ~[ViaVersion-4.4.1.jar:?]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-codec-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:227) ~[ProtocolLib19.jar:?]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:233) ~[ProtocolLib19.jar:?]
        at net.minecraft.network.Connection.doSendPacket(Connection.java:463) ~[?:?]
        at net.minecraft.network.Connection.lambda$writePacket$11(Connection.java:437) ~[?:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
[17:16:55 信息]: false
[17:16:55 信息]: false
[17:16:55 信息]: Rothes[/***] logged in with entity id 67 at ([world]21.5, 48.0, 5.5)
[17:16:55 信息]: Rothes lost connection: Internal Exception: io.netty.handler.codec.EncoderException: java.lang.IllegalArgumentException: Can't find id for 'FrogVariant[texture=minecraft:textures/entity/frog/temperate_frog.png]' in map Registry[ResourceKey[minecraft:root / minecraft:frog_variant] (Experimental)]
[17:16:55 信息]: Rothes left the game
commented

Thanks 👍

commented

Thanks 👍

np. thanks for your work ;)

commented

Are you running on a spigot mapped server? From your screenshot it seems like the server files are Mojang Mapped 🤔

commented

Are you running on a spigot mapped server? From your screenshot it seems like the server files are Mojang Mapped 🤔

paper

commented

Yea I saw that, but it seems that your paper version is mojangmapped not spigotmapped...

commented

Yea I saw that, but it seems that your paper version is mojangmapped not spigotmapped...

Not sure about it so I tested on Spigot 1.19.2 again.

[04:25:56] [Server thread/INFO]: Rothes[/***] logged in with entity id 67 at ([world]15.5, 48.0, 8.5)
[04:25:56] [Netty Server IO #1/ERROR]: Error receiving packet 80
[04:25:57] [Server thread/INFO]: Rothes lost connection: Internal Exception: io.netty.handler.codec.EncoderException: java.lang.IllegalArgumentException: Can't find id for 'FrogVariant[texture=minecraft:textures/entity/frog/temperate_frog.png]' in map Registry[ResourceKey[minecraft:root / minecraft:frog_variant] (Experimental)]
[04:25:57] [Server thread/INFO]: Rothes left the game

This server is running CraftBukkit version 3566-Spigot-584b459-c379a6b (MC: 1.19.2) (Implementing API version 1.19.2-R0.1-SNAPSHOT)

commented

🤔 Still not sure what the issue is... I just opened #1822 which now tests that writing a packet after cloning is still possible, and the entity meta packet now includes a frog variant as well... But I was unable to reporoduce the issue :(

Can you test with https://github.com/derklaro/ProtocolLib/suites/7751342324/artifacts/325500206 again? If the cloning still fails, can you send me some kind of data which items are in the data watcher item list in the entity meta packet?

commented

🤔 Still not sure what the issue is... I just opened #1822 which now tests that writing a packet after cloning is still possible, and the entity meta packet now includes a frog variant as well... But I was unable to reporoduce the issue :(

Can you test with https://github.com/derklaro/ProtocolLib/suites/7751342324/artifacts/325500206 again? If the cloning still fails, can you send me some kind of data which items are in the data watcher item list in the entity meta packet?

deepcloned data watcher

[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Before deepclone Entity:CraftFrog
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Byte
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:2
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:Optional.empty
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.util.Optional
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:6
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:CROAKING
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:net.minecraft.world.entity.EntityPose
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:4
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:15
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Byte
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:14
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:Optional.empty
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.util.Optional
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:12
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:13
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:8
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Byte
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:9
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:10.0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Float
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:11
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:10
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:1
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:300
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:3
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:7
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:5
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:16
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:17
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:FrogVariant[texture=minecraft:textures/entity/frog/temperate_frog.png]
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:net.minecraft.world.entity.animal.FrogVariant
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Index:18
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value:OptionalInt.empty
[21:59:23 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.util.OptionalInt
[21:59:23 错误]: Packet encoding of packet ID 77 threw (skippable? false)
java.lang.IllegalArgumentException: Can't find id for 'FrogVariant[texture=minecraft:textures/entity/frog/temperate_frog.png]' in map Registry[ResourceKey[minecraft:root / minecraft:frog_variant] (Experimental)]
        at net.minecraft.network.FriendlyByteBuf.writeId(FriendlyByteBuf.java:139) ~[?:?]
        at net.minecraft.network.syncher.EntityDataSerializer.lambda$simpleId$1(EntityDataSerializer.java:43) ~[?:?]
        at net.minecraft.network.syncher.EntityDataSerializer$1.write(EntityDataSerializer.java:22) ~[?:?]
        at net.minecraft.network.syncher.SynchedEntityData.writeDataItem(SynchedEntityData.java:231) ~[?:?]
        at net.minecraft.network.syncher.SynchedEntityData.pack(SynchedEntityData.java:168) ~[?:?]
        at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.write(ClientboundSetEntityDataPacket.java:33) ~[?:?]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:41) ~[paper-1.19.jar:git-Paper-43]
        at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[paper-1.19.jar:git-Paper-43]
        at jdk.internal.reflect.GeneratedMethodAccessor38.invoke(Unknown Source) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at com.viaversion.viaversion.util.PipelineUtil.callEncode(PipelineUtil.java:93) ~[ViaVersion-4.4.1.jar:?]
        at com.viaversion.viaversion.bukkit.handlers.BukkitEncodeHandler.encode(BukkitEncodeHandler.java:71) ~[ViaVersion-4.4.1.jar:?]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-codec-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:764) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:790) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:758) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1020) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:311) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:227) ~[ProtocolLib.jar:?]
        at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.writeAndFlush(NettyChannelProxy.java:233) ~[ProtocolLib.jar:?]
        at net.minecraft.network.Connection.doSendPacket(Connection.java:463) ~[?:?]
        at net.minecraft.network.Connection.lambda$writePacket$11(Connection.java:437) ~[?:?]
        at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[netty-transport-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

before deepclone

[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Entity(Before deepclone):CraftFrog
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Entity(After deepclone):CraftFrog
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Byte
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:2
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:Optional.empty
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.util.Optional
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:6
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:STANDING
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:net.minecraft.world.entity.EntityPose
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:4
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:15
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Byte
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:14
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:Optional.empty
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.util.Optional
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:12
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:13
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:8
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Byte
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:9
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:10.0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Float
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:11
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:10
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:1
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:300
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:3
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:7
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:0
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Integer
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:5
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:16
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:false
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.lang.Boolean
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:17
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:FrogVariant[texture=minecraft:textures/entity/frog/temperate_frog.png]
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:net.minecraft.world.entity.animal.FrogVariant
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Index:18
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value:OptionalInt.empty
[22:03:20 信息]: [ProtocolStringReplacer] [STDOUT] Value Class:java.util.OptionalInt
commented

🤦 I'm sorry, there was a cloning issue with VillagerData in that test which caused it to use a different cloning method... Can reproduce that now :)

commented

It should be fixed in https://github.com/derklaro/ProtocolLib/suites/7753494764/artifacts/325639845 🙏

Can confirm it's fixed👍

commented

Fix has been merged into master 👍