1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем iD3LSY, 4 янв 2018.

  1. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    Ку!

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

    Должно получиться что-то похожее, на этот компонент:
    PHP:
    {
      
    "extra": [
        {
          
    "color""red",
          
    "text""[ADMIN] opy"
        
    },
        {
          
    "color""white",
          
    "text"": 1"
        
    }
      ],
      
    "text"""
    }
     
  2. AtomicScience

    AtomicScience Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
  3. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    К чему это ты? Мне нужно подменить одну из экстра сообщения, алло
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Если цвета разные, будет не один компонент. Имей ввиду.
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Не осилит, только такие как я могут написать свой рпг чат D.
     
  6. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

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

    Не откажусь от идей с иной реализацией :)
     
  7. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    И че за краш, может кинешь?
     
  8. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    PHP:
    [02:17:45] [Server thread/ERROR]: [MAVSynchronizeUnhandled exception occured in onPacketSending(PacketEvent) for MAVSynchronize
    java
    .lang.IllegalStateExceptionOverride 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=truecolor=§cbold=nullitalic=nullunderlined=nullobfuscated=nullclickEvent=nullhoverEvent=nullinsertion=null}}, TextComponent{text=': 1'siblings=[], style=Style{hasParent=truecolor=§fbold=nullitalic=nullunderlined=nullobfuscated=nullclickEvent=nullhoverEvent=nullinsertion=null}}], style=Style{hasParent=falsecolor=nullbold=nullitalic=nullunderlined=nullobfuscated=nullclickEvent=nullhoverEvent=nullinsertion=null}}
        
    components=<null>
        
    b=1
      
    ]
     
  9. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Че то криво делаешь, код дай
     
  10. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    Что я могу делать криво, если я только на PacketType.Play.Server.CHAT отправляю игроку врапнутое сообщение? Код даже давать нечего, ибо 3 строки...

    Я бы скинул, но не могу. Это раньше писал, кода нету. Сейчас на идею подзабил. Будет ответ - добавлю, не будет - очевидно, не добавлю.
     
  11. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    ты юзаешь onPacketReceiving... Этот метод отвечает за ПРИНЯТИЕ пакета с клиента, но не его отправку.
     
  12. Автор темы
    iD3LSY

    iD3LSY Активный участник Пользователь

    Баллы:
    76
    Если я реально так тупанул, то будет очень стыдно... Ну проверим скоро :/
     

Поделиться этой страницей