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

[Bug] 1.18.2登录服务器产生错误 #39

Closed Coquettishpig closed 1 year ago

Coquettishpig commented 1 year ago

检查清单

描述

19:30:16 ERROR: [ProtocolStringReplacer] Unhandled exception occurred in onPacketSending(PacketEvent) for ProtocolStringReplacer java.lang.reflect.InaccessibleObjectException: Unable to make field int java.awt.Color.value accessible: module java.desktop does not "opens java.awt" to unnamed module @5edc4657 at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[?:?] at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[?:?] at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?] at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?] at com.google.gson.internal.reflect.UnsafeReflectionAccessor.makeAccessible(UnsafeReflectionAccessor.java:44) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:159) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:489) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:489) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:117) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:166) ~[gson-2.8.9.jar:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:102) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.getAdapter(Gson.java:489) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.toJson(Gson.java:727) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.toJson(Gson.java:714) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.toJson(Gson.java:669) ~[gson-2.8.9.jar:?] at com.google.gson.Gson.toJson(Gson.java:649) ~[gson-2.8.9.jar:?] at me.rothes.protocolstringreplacer.utils.SpigotUtils.serializeComponents(SpigotUtils.java:70) ~[ProtocolStringReplacer v2.17.4.jar:?] at me.rothes.protocolstringreplacer.packetlisteners.server.AbstractServerComponentsPacketListener.processSpigotComponent(AbstractServerComponentsPacketListener.java:46) ~[ProtocolStringReplacer v2.17.4.jar:?] at me.rothes.protocolstringreplacer.packetlisteners.server.chat.Chat.process(Chat.java:71) ~[ProtocolStringReplacer v2.17.4.jar:?] at me.rothes.protocolstringreplacer.packetlisteners.server.AbstractServerPacketListener.access$100(AbstractServerPacketListener.java:41) ~[ProtocolStringReplacer v2.17.4.jar:?] at me.rothes.protocolstringreplacer.packetlisteners.server.AbstractServerPacketListener$1.onPacketSending(AbstractServerPacketListener.java:58) ~[ProtocolStringReplacer v2.17.4.jar:?] at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.PacketFilterManager.postPacketToListeners(PacketFilterManager.java:547) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:521) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.manager.NetworkManagerInjector.onPacketSending(NetworkManagerInjector.java:99) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector.processOutbound(NettyChannelInjector.java:571) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.channel.NettyChannelInjector$2.doProxyRunnable(NettyChannelInjector.java:472) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.proxyRunnable(NettyEventLoopProxy.java:43) ~[ProtocolLib.jar:?] at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.execute(NettyEventLoopProxy.java:252) ~[ProtocolLib.jar:?] at net.minecraft.network.Connection.writePacket(Connection.java:435) ~[?:?] at net.minecraft.network.Connection.send(Connection.java:382) ~[?:?] at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2123) ~[?:?] at net.minecraft.server.network.ServerGamePacketListenerImpl.send(ServerGamePacketListenerImpl.java:2109) ~[?:?] at org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer$2.sendMessage(CraftPlayer.java:2775) ~[purpur-1.18.2.jar:git-Purpur-1632] at com.sk89q.worldedit.util.formatting.text.adapter.bukkit.SpigotAdapter.lambda$sendMessage$0(SpigotAdapter.java:121) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.util.formatting.text.adapter.bukkit.SpigotAdapter.send(SpigotAdapter.java:141) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.util.formatting.text.adapter.bukkit.SpigotAdapter.sendMessage(SpigotAdapter.java:121) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.util.formatting.text.adapter.bukkit.TextAdapter0.sendComponent(TextAdapter.java:138) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.util.formatting.text.adapter.bukkit.TextAdapter.sendComponent(TextAdapter.java:82) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.util.formatting.text.adapter.bukkit.TextAdapter.sendMessage(TextAdapter.java:48) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.bukkit.BukkitPlayer.print(BukkitPlayer.java:230) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.fastasyncworldedit.core.util.UpdateNotification.doUpdateNotification(UpdateNotification.java:73) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.sk89q.worldedit.bukkit.WorldEditListener.onJoin(WorldEditListener.java:102) ~[FastAsyncWorldEdit-Bukkit-2.4.5-SNAPSHOT-278.jar:?] at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor35.execute(Unknown Source) ~[?:?] at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75) ~[purpur-api-1.18.2-R0.1-SNAPSHOT.jar:?] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[purpur-api-1.18.2-R0.1-SNAPSHOT.jar:git-Purpur-1632] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.18.2-R0.1-SNAPSHOT.jar:?] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:671) ~[purpur-api-1.18.2-R0.1-SNAPSHOT.jar:?] at net.minecraft.server.players.PlayerList.postChunkLoadJoin(PlayerList.java:363) ~[purpur-1.18.2.jar:git-Purpur-1632] at net.minecraft.server.players.PlayerList.lambda$placeNewPlayer$1(PlayerList.java:305) ~[purpur-1.18.2.jar:git-Purpur-1632] at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:320) ~[?:?] at net.minecraft.network.Connection.tick(Connection.java:576) ~[?:?] at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:231) ~[?:?] at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1651) ~[purpur-1.18.2.jar:git-Purpur-1632] at net.minecraft.server.dedicated.DedicatedServer.tickChildren(DedicatedServer.java:522) ~[purpur-1.18.2.jar:git-Purpur-1632] at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1483) ~[purpur-1.18.2.jar:git-Purpur-1632] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1247) ~[purpur-1.18.2.jar:git-Purpur-1632] at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:321) ~[purpur-1.18.2.jar:git-Purpur-1632] at java.lang.Thread.run(Thread.java:833) ~[?:?]

net.minecraft.network.protocol.game.PacketPlayOutChat@2bb46a03[ a= components={BaseComponent(color=, font=null, bold=null, italic=null, underlined=null, strikethrough=null, obfuscated=null, insertion=null, extra=null, clickEvent=null, hoverEvent=null)} b=SYSTEM c=00000000-0000-0000-0000-000000000000 ]

重现步骤

登录服务器提示此信息

预期行为

.

堆栈轨迹

No response

服务端版本

git-Purpur-1632 (MC: 1.18.2)*

ProtocolStringReplacer 版本

2.17.4

ProtocolLib 版本

5.0.0-SNAPSHOT-b606

其它插件

No response

额外内容

No response

Rothes commented 1 year ago

看起来是BungeeChat-API或Gson的问题。ZULU17未能复现,需要提供版本JAVA版本。 此错误是否必定发生?

Coquettishpig commented 1 year ago

看起来是BungeeChat-API或Gson的问题。ZULU17未能复现,需要提供版本JAVA版本。 此错误是否必定发生?

jdk17,是必定发生

Coquettishpig commented 1 year ago

jdk-17.0.5

Rothes commented 1 year ago

WorldEdit 采用 hacky 的方法修改 BungeeChat 的序列器以发送他们自己包装的 SpigotComponent, 与 PSR 自己创建的 Gson 序列器不兼容. db42434 会使用经过 WorldEdit 修改后的BungeeChat自己的序列器作为回滚.

Rothes commented 1 year ago

https://github.com/Rothes/ProtocolStringReplacer/suites/10995741884/artifacts/557459510 可下载最新构建