Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Мод Как получить нужную инфу от сервера?

Discussion in 'Модификации клиента' started by Snak3, May 25, 2014.

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

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

    Trophy Points:
    78
    При входе на сервер мне нужно как то отловить определенные ивенты, по 250-му пакету.
    Общее представление получения и обработки имею, хотелось бы увидеть пример получения инфы по данному пакету от сервера (код).
    Буду признателен за помощь.
     
    Лайка likes this.
  2. Хостинг MineCraft
    <
  3. Konstantin773

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

    Trophy Points:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Клиентом отправляй:
    Code:
    Minecraft.getMinecraft().getNetHandler().addToSendQueue(new Packet250CustomPayload("НАЗВАНИЕ_ПАКЕТА", "ТЕКСТ".getBytes()));
    Плагином лови (Обязательно юзай конструктор PluginMessageListener) :
    Code:
    @Override
    public void onEnable(){
          ..........................
         Bukkit.getMessenger().registerIncomingPluginChannel(this, "НАЗВАНИЕ_ПАКЕТА", this);
    }
    ..........................
    @Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message){
              if(channel.equals("НАЗВАНИЕ_ПАКЕТА")){
                    String data = new String(message);////ТЕКСТ
                    ............................
              }
    }
    
    Плагином отправлять пакет так:
    Code:
    Bukkit.getMessenger().registerOutgoingPluginChannel(this, "НАЗВАНИЕ_ПАКЕТА");
    .....................
    player.sendPluginMessage(this, "НАЗВАНИЕ_ПАКЕТА", "ТЕКСТ2".getBytes());
    
    Клиентом ловить так:
    1. Создаем класс - слушатель
    Code:
    import net.minecraft.network.INetworkManager;
    import net.minecraft.network.packet.Packet250CustomPayload;
    import cpw.mods.fml.common.network.IPacketHandler;
    import cpw.mods.fml.common.network.Player;
    
    public class Packet  implements IPacketHandler
    {
         public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player)
         {
           if (packet.channel.equalsIgnoreCase("НАЗВАНИЕ_ПАКЕТА")){
                    ................................
            }
         }
    
    }
    
    2. Добавляем аннотацию в шапку мода
    Code:
    @NetworkMod(clientSideRequired = true, serverSideRequired = false, channels = {"НАЗВАНИЕ_ПАКЕТА","НАЗВАНИЕ_ПАКЕТА2"}, packetHandler = Packet.class)
    
    Данным способом легче всего юзать 250 пакет.
     
    Last edited: May 25, 2014
    kirr9999, MegaFlary and Snak3 like this.
  4. Автор темы
    Snak3

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

    Trophy Points:
    78
    Не совсем то.
    Я хочу клиентом с сервера получить ивенты WG, ну и дальше уже их обрабатывать.
     
  5. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Это так не работает.
     
  6. Автор темы
    Snak3

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

    Trophy Points:
    78
    Как тогда мне это сделать?
     
    Лайка likes this.
  7. Shevchik

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

    Trophy Points:
    173
    Имя в Minecraft:
    _Shevchik_
    Слушаем эвенты на сервере, обрабатываем и посылаем нужную инфу на клиент.
     

Share This Page