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

Помогите Что надо знать о NMS и как его получить?

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Krong
    Привет. Мне надо отправлять игроку пакеты(и работать с ними) для этого как я понял надо подключать классы net.minecraft.***, но для этого сказали нужно установить зависимость nms, вот у меня необходимость появилась получить его на maven api. Мне дали его но на 1.17+ но версия другая мне нужна. И так, Вершион - 1.12.2/1.16.5, что я хочу узнать, что Nms, в каких случаях его вообще применять и как его получить. :ninja: Но ещё один моментик, что такое BuildTools, видел что с помощи него как-то получают нмс, и поподробнее про BuildTools тоже прошу.
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Не обязательно. Ты можешь использовать ProtocolLib. И есть даже шанс, что при выходе новой версии ядра твой плагин даже не сломается.

    Желательно ни в каких. Если есть возможность сделать что-либо без НМС, то надо делать это без НМС.
    НМС - это последнее решение, если все предыдущие не помогли решить задачу.
    Поэтому если ты не знаешь, для чего может быть полезен нмс, то наслаждайся и дальше не используй его.
    К нмс прибегают, когда для решения задачи недостаточно функционала баккит апи.

    При помощи BuildTools собирают ядро Spigot. При этом в локальный мавен-репозиторий добавляется зависимость от CraftBukkit, которая как раз содержит в себе NMS.

    Ещё один вариант подключения NMS к мавен-проекту - это добавить jar-зависимость от patched.jar, который находится в папке cache сервера.

    Но ещё раз повторюсь - если ты не знаешь, зачем тебе нужен NMS, то тебе явно и НЕ следует подключать его к проекту
     
  3. Автор темы
    Krongss_fur

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

    Баллы:
    76
    Имя в Minecraft:
    Krong
    Ну допустим взять такой код, можно ли его отправить вообще через ProtocolLib систему? Вот как полу
    тить CraftWorld если это относиться nms, а с ним надо взаимодействовать?
    Код:
            WorldServer s = ((CraftWorld)p.getWorld()).getHandle();
            EntityArmorStand stand = new EntityArmorStand(s);
    
            stand.setLocation(loc.getX(), loc.getY(), loc.getZ(), 0, 0);
            stand.setCustomName(name);
            stand.setCustomNameVisible(true);
            stand.setGravity(true);
            stand.setSmall(true);
            stand.setInvisible(true);
    
    
            PacketPlayOutSpawnEntityLiving packet = new PacketPlayOutSpawnEntityLiving(stand);
            ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet);
     
  4. DestKoder

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

    Баллы:
    66
    Имя в Minecraft:
    DestKoder
    Ась? А org.bukkit.world.spawnEntity уже не в моде чтоль? Или я не совсем понял что делает этот код...
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Зачем ты спаунишь стойку таким образом? Для этого есть баккит апи
     
  6. Автор темы
    Krongss_fur

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

    Баллы:
    76
    Имя в Minecraft:
    Krong
    А чем вообще плох такой способ?
     
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Минусы у NMS и CraftBukkit следующие:

    1) Отсутствие какой-либо документации (требуется значительно больше времени на реализацию). Сюда же отнесу обфускацию

    2) Крайне малое количество людей захотят и смогут оказать тебе помощь с NMS на форумах

    3) Твой плагин абсолютно точно сломается после выхода новой версии ядра. Теоретически можно использовать рефлексию, но и она не даёт гарантию стабильной работы, а вот на производительность влияет сильно
     
    Последнее редактирование: 24 ноя 2022
  8. Автор темы
    Krongss_fur

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

    Баллы:
    76
    Имя в Minecraft:
    Krong
    Спасибо за рассказ, буду полностью знать.
     

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