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

Пакет СЕРВЕР к КЛИЕНТУ

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

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

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

    Баллы:
    103
    Здравствуйте дорогие рубаковцы! У меня к вам такой вопрос, может мне ктонибуть подсказать как реализовать? Мне нужно при вводе команды отправлять пакет клиенту а клиентом выводить в Gui! Допустим при вводе команды /test плагин шлет текст (VIP), и Gui принимает этот текст и выводит?
     
  2. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    GUIAPI и ClientGuiBridge
     
  3. Автор темы
    SaNIK

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

    Баллы:
    103
    Данный способ несовсем что надо! Есть еще идеи?
     
  4. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    Использование этих решений - как раз то, что вам нужно. Средствами ваниллы Gui рисовать невозможно.
     
  5. Автор темы
    SaNIK

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

    Баллы:
    103
    Я не имею ввиду ванилу я использую уже модифицированный клиент!
     
  6. Beshelmek

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

    Баллы:
    88
    Имя в Minecraft:
    Beshelmek
    Forge Docs копай. Есть офф документация его.
     
  7. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    По таким вопросам я бы советовал топать в эту сторону.
     
    ПриветОтЛайки нравится это.
  8. Автор темы
    SaNIK

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

    Баллы:
    103
    Спасибо очень помог)
    Не буду закрывать тему может у кого будут еще предложения?
     
  9. alexandrage

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

    Баллы:
    173
    На счет пакетов то protocollib, а клиентскую часть уже сам рисуй.
     
  10. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    1. Содаем плагин
    Подключаем интерфейс: PluginMessageListener

    В методе onEnable() добавить
    Код:
    Bukkit.getMessenger().registerOutgoingPluginChannel(this, "opengui");
    В теле команды
    Код:
    player.sendPluginMessage(this, "opengui", text.getBytes());
    2.Создаем мод, добавляем аннотации
    Код:
    @Mod(modid="OpenGuiMod", name="Lalala mod by K773", version="0.1")
    @NetworkMod(clientSideRequired=true, serverSideRequired=false, channels={"opengui"}, packetHandler=OpenGuiListener.class)
    
    Создаем класс OpenGuiListener
    Код:
    import cpw.mods.fml.common.network.IPacketHandler;
    import cpw.mods.fml.common.network.Player;
    import net.minecraft.client.Minecraft;
    import net.minecraft.network.INetworkManager;
    import net.minecraft.network.packet.Packet250CustomPayload;
    import net.minecraft.client.gui.MyGui;
    import net.minecraft.client.Minecraft;
    
    public class OpenGuiListener
      implements IPacketHandler
    {
      public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player)
      {
        if (packet.channel.equalsIgnoreCase("opengui"))
         Minecraft.getMinecraft().displayGuiScreen(new MyGui(new String(packet.data)));
      }
    }
    
    MyGui.class
    Код:
    package net.minecraft.client.gui;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import java.util.Iterator;
    import net.minecraft.client.multiplayer.WorldClient;
    import net.minecraft.client.resources.I18n;
    import net.minecraft.util.EnumChatFormatting;
    import org.lwjgl.opengl.GL11;
    
    @SideOnly(Side.CLIENT)
    public class MyGui extends GuiScreen
    {
         public MyGui(String text){
               this.text=text;
        }
        private String text = "";
        public void initGui()
        {
            this.buttonList.clear();
        }
    
        /**
         * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
         */
        protected void keyTyped(char par1, int par2) {}
    
        /**
         * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
         */
        protected void actionPerformed(GuiButton par1GuiButton)
        {
            switch (par1GuiButton.id)
            {
            }
        }
    
        /**
         * Draws the screen and all the components in it.
         */
        public void drawScreen(int par1, int par2, float par3)
        {
            GL11.glPushMatrix();
            GL11.glScalef(2.0F, 2.0F, 2.0F);
            GL11.glPopMatrix();
           this.mc.fontRenderer.drawString(this.text, this.width / 2, 10, 16777120);
            super.drawScreen(par1, par2, par3);
        }
    
        /**
         * Returns true if this GUI should pause the game when it is displayed in single-player
         */
        public boolean doesGuiPauseGame()
        {
            return false;
        }
    }
    
    Вот и все, при команде сервер отправляет пакет с текстом, при получении которого клиент открывает новое кастомное Gui и записывает в переменную текст.
     
    Последнее редактирование: 5 май 2014
    kirr9999, MegaFlary, sashabelii и 6 другим нравится это.
  11. Автор темы
    SaNIK

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

    Баллы:
    103
    Спасибо!!)
     
  12. agentik007

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

    Баллы:
    153
    Имя в Minecraft:
    agentik007
    @Konstantin773, с каких это пор ты людям помогать начал?
     
  13. DragoSFire

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

    Баллы:
    123
    Skype:
    dragosfire2012
    Имя в Minecraft:
    DragoSFire
    Совесть замучила :lol:
     
  14. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    За последний месяц сложилось чувство, что данный форум напрямую зависит от моих костылей.

    Например, написал в одной теме код запуска 1.6+ версий внутри процесса лаунчера и сразу же данная фишка появилась в SashokFix, JCR и других лаунчерах.
    Тоже касается и других костылей.
     
    DoG743 и DragoSFire нравится это.
  15. agentik007

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

    Баллы:
    153
    Имя в Minecraft:
    agentik007
    Создай тему своих костылей и в ней же не забудь кошельки свои поставить;)
     
  16. sashabelii

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

    Баллы:
    123
    Имя в Minecraft:
    sashabelii
    +
    Негоже полезным костылям в недрах тем лежать.
     

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