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

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

Тема в разделе "Модификации клиента", создана пользователем Snak3, 25 май 2014.

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

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

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

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Клиентом отправляй:
    Код:
    Minecraft.getMinecraft().getNetHandler().addToSendQueue(new Packet250CustomPayload("НАЗВАНИЕ_ПАКЕТА", "ТЕКСТ".getBytes()));
    Плагином лови (Обязательно юзай конструктор PluginMessageListener) :
    Код:
    @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);////ТЕКСТ
                    ............................
              }
    }
    
    Плагином отправлять пакет так:
    Код:
    Bukkit.getMessenger().registerOutgoingPluginChannel(this, "НАЗВАНИЕ_ПАКЕТА");
    .....................
    player.sendPluginMessage(this, "НАЗВАНИЕ_ПАКЕТА", "ТЕКСТ2".getBytes());
    
    Клиентом ловить так:
    1. Создаем класс - слушатель
    Код:
    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. Добавляем аннотацию в шапку мода
    Код:
    @NetworkMod(clientSideRequired = true, serverSideRequired = false, channels = {"НАЗВАНИЕ_ПАКЕТА","НАЗВАНИЕ_ПАКЕТА2"}, packetHandler = Packet.class)
    
    Данным способом легче всего юзать 250 пакет.
     
    Последнее редактирование: 25 май 2014
    kirr9999, MegaFlary и Snak3 нравится это.
  3. Автор темы
    Snak3

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

    Баллы:
    78
    Не совсем то.
    Я хочу клиентом с сервера получить ивенты WG, ну и дальше уже их обрабатывать.
     
    ПриветОтЛайки и HoShiMin нравится это.
  4. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Это так не работает.
     
  5. Автор темы
    Snak3

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

    Баллы:
    78
    Как тогда мне это сделать?
     
    Лайка нравится это.
  6. Shevchik

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

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

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