Rothes / ProtocolStringReplacer

A Spigot plugin that allows you to edit the String in packet sends to players.
GNU General Public License v3.0
43 stars 10 forks source link

几率报错 #8

Closed DreamVoid closed 3 years ago

DreamVoid commented 3 years ago

Describe the bug 以下情况几率报错:

To Reproduce Steps to reproduce the behavior:

  1. 玩家进入服务器后1秒
  2. 报错

Expected behavior 玩家进入服务器后一切正常

Stacktrace Paste the stack trace in your console into here if exists.

[12:39:32 ERROR]: [ProtocolStringReplacer] Unhandled exception number 32 occured in onPacketSending(PacketEvent) for ProtocolStringReplacer
>java.lang.RuntimeException: Unable to clone object PacketContainer[type=ENTITY_METADATA[class=PacketPlayOutEntityMetadata, id=77], structureModifier=StructureModifier[fieldType=class java.lang.Object, data=[private final int net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata.a, private final java.util.List net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata.b]]] (com.comphenix.protocol.events.PacketContainer)
at com.comphenix.protocol.reflect.cloning.SerializableCloner.clone(SerializableCloner.java:44) ~[?:?]
at com.comphenix.protocol.events.PacketContainer.deepClone(PacketContainer.java:256) ~[?:?]
at me.rothes.protocolstringreplacer.packetlisteners.server.EntityMetadata$1.onPacketSending(EntityMetadata.java:32) ~[?:?]
at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) ~[?:?]
at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) ~[?:?]
at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:535) ~[?:?]
at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:516) ~[?:?]
at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:346) ~[?:?]
at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:308) ~[?:?]
at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:433) ~[?:?]
at com.comphenix.protocol.injector.netty.ChannelInjector.access$800(ChannelInjector.java:70) ~[?:?]
at com.comphenix.protocol.injector.netty.ChannelInjector$3.handleScheduled(ChannelInjector.java:373) ~[?:?]
at com.comphenix.protocol.injector.netty.ChannelInjector$3.onMessageScheduled(ChannelInjector.java:343) ~[?:?]
at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) ~[?:?]
at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) ~[?:?]
at net.minecraft.network.Connection.writePacket(Connection.java:423) ~[?:?]
at net.minecraft.network.Connection.send(Connection.java:370) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2044) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2030) ~[?:?]
at net.minecraft.server.level.ServerEntity.a(ServerEntity.java:302) ~[?:?]
at net.minecraft.server.level.ServerEntity.addPairing(ServerEntity.java:285) ~[?:?]
at net.minecraft.server.level.ChunkMap$TrackedEntity.updatePlayer(ChunkMap.java:2443) ~[?:?]
at net.minecraft.server.level.ChunkMap.addEntity(ChunkMap.java:2060) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.level.ServerChunkCache.addEntity(ServerChunkCache.java:1157) ~[?:?]
at net.minecraft.server.level.ServerLevel$EntityCallbacks.onTrackingStart(ServerLevel.java:2450) ~[?:?]
at net.minecraft.server.level.ServerLevel$EntityCallbacks.onTrackingStart(ServerLevel.java:2406) ~[?:?]
at net.minecraft.world.level.entity.PersistentEntitySectionManager.startTracking(PersistentEntitySectionManager.java:202) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.world.level.entity.PersistentEntitySectionManager.addEntity(PersistentEntitySectionManager.java:165) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.world.level.entity.PersistentEntitySectionManager.addNewEntity(PersistentEntitySectionManager.java:147) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.level.ServerLevel.addPlayer(ServerLevel.java:1427) ~[?:?]
at net.minecraft.server.level.ServerLevel.addRespawnedPlayer(ServerLevel.java:1415) ~[?:?]
at net.minecraft.server.players.PlayerList.moveToWorld(PlayerList.java:961) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.players.PlayerList.moveToWorld(PlayerList.java:821) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.players.PlayerList.respawn(PlayerList.java:816) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.network.ServerGamePacketListenerImpl.handleClientCommand(ServerGamePacketListenerImpl.java:2604) ~[?:?]
at net.minecraft.network.protocol.game.ServerboundClientCommandPacket.handle(ServerboundClientCommandPacket.java:24) ~[?:?]
at net.minecraft.network.protocol.game.ServerboundClientCommandPacket.handle(ServerboundClientCommandPacket.java:6) ~[?:?]
at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:56) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[patched_1.17.1.jar:git-Purpur-1296]
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:1422) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.MinecraftServer.shouldRun(MinecraftServer.java:190) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:122) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1400) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1393) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.util.thread.BlockableEventLoop.runAllTasks(BlockableEventLoop.java:110) ~[?:?]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1532) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1270) ~[patched_1.17.1.jar:git-Purpur-1296]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Purpur-1296]
at java.lang.Thread.run(Unknown Source) [?:?]
>Caused by: java.lang.IllegalArgumentException: Unable to find a method that matches {modifiers=[required: 1000, banned: 0], return=Exact class net.minecraft.network.protocol.game.PacketPlayOutEntityMetadata, params=[{Type: Exact class net.minecraft.network.PacketDataSerializer, Index: 0}], paramCount=1}
at com.comphenix.protocol.reflect.FuzzyReflection.getMethod(FuzzyReflection.java:174) ~[?:?]
at com.comphenix.protocol.events.PacketContainer.readObject(PacketContainer.java:330) ~[?:?]
at jdk.internal.reflect.GeneratedMethodAccessor148.invoke(Unknown Source) ~[?:?]
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source) ~[?:?]
at java.io.ObjectInputStream.readSerialData(Unknown Source) ~[?:?]
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) ~[?:?]
at java.io.ObjectInputStream.readObject0(Unknown Source) ~[?:?]
at java.io.ObjectInputStream.readObject(Unknown Source) ~[?:?]
at java.io.ObjectInputStream.readObject(Unknown Source) ~[?:?]
at com.comphenix.protocol.reflect.cloning.SerializableCloner.clone(SerializableCloner.java:42) ~[?:?]
... 50 more

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

Server Informations

Additional context Add any other context about the problem here.

Rothes commented 3 years ago

此错误为前置 ProtocolLib 的问题,且已经有人反馈 https://github.com/dmulloy2/ProtocolLib/issues/1337

实际上是由于某些未知情况下,显示名称的掉落物而导致。 下个版本添加一个配置,防止处理掉落物的物品名,以避免该问题。现在我要去睡晚觉了

Rothes commented 3 years ago

已在 Config.yml 添加配置来临时解决此问题. 待 ProtocolLib 解决该问题后将移除此配置.