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

Помогите Отправка пакета с плагина на мод

Тема в разделе "Разработка плагинов для новичков", создана пользователем Matey, 22 июн 2019.

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

    Matey Новичок

    Баллы:
    6
    Имя в Minecraft:
    FXG
    Я должен отправлять пакет плагином на сервер в мод.
    Код:
    //отправка this.buildPacket(new boolean[]{sendFirst, true, sendArm, sendArm, sendArm, sendArm}, new String[]{"up=" + this.lv0 + ",eqpd=1", "up=" + this.lv1 + ",eqpd=1", "M_EXO=4,M_PLATE=20,M_CRIT=10,charge=50000", "M_EXO=4,M_PLATE=20,M_CRIT=10,charge=50000", "M_EXO=4,M_PLATE=20,M_CRIT=10,charge=50000", "M_EXO=4,M_PLATE=20,M_CRIT=10,charge=50000"}, p);
            
    
    public void buildPacket(boolean[] id, String[] tags, Player p) {
            //FORMAT DATA ==
            //type=NaN/Work=Tags
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            DataOutputStream in = new DataOutputStream(bytes);
            int cout = 0;
            for (boolean r : id)
                if (r) cout++;
            try {
                in.writeInt(cout);
                for (int i = 0; i != cout; i++) {
                    String build = i + "=" + (id[i] ? "Work" : "NaN") + "=" + tags[i];
                    in.writeUTF(build);
                }
                in.close();
                bytes.close();
                p.sendPluginMessage(this, "lwz", bytes.toByteArray());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    При этом я зарегистрировал канал lwz.
    Далее я должен получать его в моде, и заменять предметы в инвентаре(НБТ теги заменять, и после вставлять новый предмет уже с тегами через мод, мод серверный.)
    Код:
    @Override
        public void onPacketData(INetworkManager manager, Packet250CustomPayload packet, Player player) {
            String pn = ((EntityPlayer)player).username;
            EntityPlayer ep = FMLCommonHandler.instance().getSidedDelegate().getServer().getConfigurationManager().getPlayerForUsername(pn);
            ItemStack wk = new ItemStack(1, 1, 0);
            if (packet.channel.equals("lwz")) {
                DataInputStream out = new DataInputStream(new ByteArrayInputStream(packet.data));
                try {
                    //FORMAT DATA ==
                    //type=NaN/Work=Tags
                    int cout = out.readInt();
                    String[] data = new String[8];
                    for (int i = 0; i != cout; i++)
                        data[i] = out.readUTF();
                    if (!data[0].split("=")[1].equals("NaN")) {
                        String[] KV = data[0].split("=")[2].split(",");
                        ep.inventory.currentItem = 0;
                        wk = ep.getHeldItem();
                        NBTTagCompound nbt = Lmao.getOrCreateNbtData(wk);
                        for (int i = 0; i != KV.length; i++)
                            nbt.setInteger(KV[i].split("=")[0], Integer.valueOf(KV[i].split("=")[1]));
                        ep.setCurrentItemOrArmor(0, wk);
                    }
                    if (!data[1].split("=")[1].equals("NaN")) {
                        String[] KV = data[0].split("=")[2].split(",");
                        ep.inventory.currentItem = 1;
                        wk = ep.getHeldItem();
                        NBTTagCompound nbt = Lmao.getOrCreateNbtData(wk);
                        for (int i = 0; i != KV.length; i++)
                            nbt.setInteger(KV[i].split("=")[0], Integer.valueOf(KV[i].split("=")[1]));
                        ep.setCurrentItemOrArmor(0, wk);
                        ep.inventory.currentItem = 0;
                    }
                    if (!data[2].split("=")[1].equals("NaN")) {
                        String[] KV = data[0].split("=")[2].split(",");
                        wk = ep.getCurrentItemOrArmor(4);
                        NBTTagCompound nbt = Lmao.getOrCreateNbtData(wk);
                        for (int i = 0; i != KV.length; i++)
                            nbt.setInteger(KV[i].split("=")[0], Integer.valueOf(KV[i].split("=")[1]));
                        ep.setCurrentItemOrArmor(4, wk);
                    }
                    if (!data[3].split("=")[1].equals("NaN")) {
                        String[] KV = data[0].split("=")[2].split(",");
                        wk = ep.getCurrentItemOrArmor(3);
                        NBTTagCompound nbt = Lmao.getOrCreateNbtData(wk);
                        for (int i = 0; i != KV.length; i++)
                            nbt.setInteger(KV[i].split("=")[0], Integer.valueOf(KV[i].split("=")[1]));
                        ep.setCurrentItemOrArmor(3, wk);
                    }   
                    if (!data[4].split("=")[1].equals("NaN")) {
                        String[] KV = data[0].split("=")[2].split(",");
                        wk = ep.getCurrentItemOrArmor(2);
                        NBTTagCompound nbt = Lmao.getOrCreateNbtData(wk);
                        for (int i = 0; i != KV.length; i++)
                            nbt.setInteger(KV[i].split("=")[0], Integer.valueOf(KV[i].split("=")[1]));
                        ep.setCurrentItemOrArmor(2, wk);
                    }
                    if (!data[5].split("=")[1].equals("NaN")) {
                        String[] KV = data[0].split("=")[2].split(",");
                        wk = ep.getCurrentItemOrArmor(1);
                        NBTTagCompound nbt = Lmao.getOrCreateNbtData(wk);
                        for (int i = 0; i != KV.length; i++)
                            nbt.setInteger(KV[i].split("=")[0], Integer.valueOf(KV[i].split("=")[1]));
                        ep.setCurrentItemOrArmor(1, wk);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    При отправке пакета с плагина на серверный мод ничего не происходит, консоль пустует.
    Понять почему так я не могу, 'плагинщик' я начинающий и подозревать почему так происходит к сожалению тоже не могу.
    Прошу помощи обьяснить и(или) найти мою ошибку.
     
  2. Хостинг MineCraft
    <

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