Помогите Получение компонента сообщения в чате

  • Автор темы Автор темы iD3LSY
  • Дата начала Дата начала

iD3LSY

Активный участник
Пользователь
Баллы
76
Ку!

Нужно: при наведение на ник игрока выводить некую информацию. Т.е. мне нужно подменить при отправке сообщения пакет PacketType.Play.Client.CHAT. В этом и заключается вопрос: как получить компонент сообщения учитывая формат?

Должно получиться что-то похожее, на этот компонент:
PHP:
{
  "extra": [
    {
      "color": "red",
      "text": "[ADMIN] opy"
    },
    {
      "color": "white",
      "text": ": 1"
    }
  ],
  "text": ""
}
 
В общем, что я понял: лучше ловить серверный пакет. Столкнулся с проблемой, что WrapperPlayServerChat #getMessage кидает краш.

Не откажусь от идей с иной реализацией 🙂
 
В общем, что я понял: лучше ловить серверный пакет. Столкнулся с проблемой, что WrapperPlayServerChat #getMessage кидает краш.

Не откажусь от идей с иной реализацией 🙂
И че за краш, может кинешь?
 
И че за краш, может кинешь?
PHP:
[02:17:45] [Server thread/ERROR]: [MAVSynchronize] Unhandled exception occured in onPacketSending(PacketEvent) for MAVSynchronize
java.lang.IllegalStateException: Override onPacketSending to get notifcations of sent packets!
    at com.comphenix.protocol.events.PacketAdapter.onPacketSending(PacketAdapter.java:316) ~[ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:588) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:564) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:338) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:298) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:386) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector.access$500(ChannelInjector.java:77) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector$5.handleScheduled(ChannelInjector.java:352) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector$5.onMessageScheduled(ChannelInjector.java:320) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) [ProtocolLib.jar:4.3.0]
    at net.minecraft.server.v1_11_R1.NetworkManager.a(NetworkManager.java:194) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.NetworkManager.sendPacket(NetworkManager.java:143) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.PlayerConnection.sendPacket(PlayerConnection.java:1099) [core.jar:git-Spigot-625bc00-186c351]
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
    at com.comphenix.protocol.injector.netty.ChannelInjector.invokeSendPacket(ChannelInjector.java:679) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector.access$600(ChannelInjector.java:77) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector$6.run(ChannelInjector.java:504) [ProtocolLib.jar:4.3.0]
    at com.massivecraft.massivelag.inject.MassiveLagRunnable.run(MassiveLagRunnable.java:57) [MassiveLag.jar:?]
    at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) [core.jar:git-Spigot-625bc00-186c351]
    at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:738) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [core.jar:git-Spigot-625bc00-186c351]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
[02:17:45] [Server thread/ERROR]: Parameters: 
  net.minecraft.server.v1_11_R1.PacketPlayOutChat@472136ce[
    a=TextComponent{text='', siblings=[TextComponent{text='[ADMIN] opy', siblings=[], style=Style{hasParent=true, color=§c, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}, TextComponent{text=': 1', siblings=[], style=Style{hasParent=true, color=§f, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}
    components=<null>
    b=1
  ]
 
PHP:
[02:17:45] [Server thread/ERROR]: [MAVSynchronize] Unhandled exception occured in onPacketSending(PacketEvent) for MAVSynchronize
java.lang.IllegalStateException: Override onPacketSending to get notifcations of sent packets!
    at com.comphenix.protocol.events.PacketAdapter.onPacketSending(PacketAdapter.java:316) ~[ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokeSendingListener(SortedPacketListenerList.java:195) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.SortedPacketListenerList.invokePacketSending(SortedPacketListenerList.java:149) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.PacketFilterManager.handlePacket(PacketFilterManager.java:588) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.PacketFilterManager.invokePacketSending(PacketFilterManager.java:564) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ProtocolInjector.packetQueued(ProtocolInjector.java:338) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ProtocolInjector.onPacketSending(ProtocolInjector.java:298) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector.processSending(ChannelInjector.java:386) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector.access$500(ChannelInjector.java:77) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector$5.handleScheduled(ChannelInjector.java:352) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector$5.onMessageScheduled(ChannelInjector.java:320) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelProxy$2.schedulingRunnable(ChannelProxy.java:127) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.EventLoopProxy.execute(EventLoopProxy.java:95) [ProtocolLib.jar:4.3.0]
    at net.minecraft.server.v1_11_R1.NetworkManager.a(NetworkManager.java:194) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.NetworkManager.sendPacket(NetworkManager.java:143) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.PlayerConnection.sendPacket(PlayerConnection.java:1099) [core.jar:git-Spigot-625bc00-186c351]
    at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source) ~[?:?]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_151]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_151]
    at com.comphenix.protocol.injector.netty.ChannelInjector.invokeSendPacket(ChannelInjector.java:679) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector.access$600(ChannelInjector.java:77) [ProtocolLib.jar:4.3.0]
    at com.comphenix.protocol.injector.netty.ChannelInjector$6.run(ChannelInjector.java:504) [ProtocolLib.jar:4.3.0]
    at com.massivecraft.massivelag.inject.MassiveLagRunnable.run(MassiveLagRunnable.java:57) [MassiveLag.jar:?]
    at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftTask.run(CraftTask.java:71) [core.jar:git-Spigot-625bc00-186c351]
    at org.bukkit.craftbukkit.v1_11_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:353) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:738) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [core.jar:git-Spigot-625bc00-186c351]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [core.jar:git-Spigot-625bc00-186c351]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_151]
[02:17:45] [Server thread/ERROR]: Parameters:
  net.minecraft.server.v1_11_R1.PacketPlayOutChat@472136ce[
    a=TextComponent{text='', siblings=[TextComponent{text='[ADMIN] opy', siblings=[], style=Style{hasParent=true, color=§c, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}, TextComponent{text=': 1', siblings=[], style=Style{hasParent=true, color=§f, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}
    components=<null>
    b=1
  ]
Че то криво делаешь, код дай
 
Че то криво делаешь, код дай
Что я могу делать криво, если я только на PacketType.Play.Server.CHAT отправляю игроку врапнутое сообщение? Код даже давать нечего, ибо 3 строки...

Я бы скинул, но не могу. Это раньше писал, кода нету. Сейчас на идею подзабил. Будет ответ - добавлю, не будет - очевидно, не добавлю.
 
Что я могу делать криво, если я только на PacketType.Play.Server.CHAT отправляю игроку врапнутое сообщение? Код даже давать нечего, ибо 3 строки...

Я бы скинул, но не могу. Это раньше писал, кода нету. Сейчас на идею подзабил. Будет ответ - добавлю, не будет - очевидно, не добавлю.
ты юзаешь onPacketReceiving... Этот метод отвечает за ПРИНЯТИЕ пакета с клиента, но не его отправку.
 
Назад
Верх