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

Помогите Изучение NMS

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

  1. Автор темы
    Energy warrior

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

    Баллы:
    76
    Недавно захотел изучить NMS, но я не знаю как работает майнкрафт. Есть ли какие-то статьи на тему NMS и работе майнкрафт? В интернете поискал, но нашёл только старые статьи!
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    NMS - это вся серверная сторона Minecraft. Естественно, что по всему NMS гайдов нет, только по отдельным темам. Что конкретно тебя интересует?
     
  3. alexandrage

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

    Баллы:
    173
    Нет и не будет доков по NMS. Там все под обфой прогуарда.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Так никто и не говорит про доки. Я видел вполне неплохие гайды по каким-то аспектам NMS. Другой вопрос, конечно, что часть из них уже устарела, но это неважно. Самое главное. что люди пишут о том, что их волнует. Вот нету в бакките какой-то фичи - поехали сразу на NMS костылить. А что делать-то?..
     
  5. Автор темы
    Energy warrior

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

    Баллы:
    76
    Недавно увидел плагин EntityTrackerFixer решил разобраться как он работает+хотел-бы наконец-то сделать StringArrayTag или ListTag для PersistentDataTagType. Долго сидел и не мог понять какую меременную взять и изменить, чтобы там был мой тег.
     
  6. alexandrage

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

    Баллы:
    173
    Это и без nms проворачивается. В байтах можно хранить все что душе угодно.
    Код:
    public class ItemTagTypeArray implements PersistentDataType<byte[], String[]> {
    
        @Override
        public Class<byte[]> getPrimitiveType() {
            return byte[].class;
        }
    
        @Override
        public Class<String[]> getComplexType() {
            return String[].class;
        }
    
        @Override
        public byte[] toPrimitive(String[] strings, PersistentDataAdapterContext tag) {
            ByteBuf buf = Unpooled.buffer();
            PacketBuffer pbuf = new PacketBuffer(buf);
            pbuf.writeVarInt(strings.length);
            for (String string : strings) {
                pbuf.writeString(string);
            }
            byte[] bytes = new byte[buf.readableBytes()];
            buf.readBytes(bytes);
            return bytes;
        }
    
        @Override
        public String[] fromPrimitive(byte[] bytes, PersistentDataAdapterContext tag) {
            ByteBuf buf = Unpooled.buffer();
            PacketBuffer pbuf = new PacketBuffer(buf);
            pbuf.writeBytes(bytes);
            int length = pbuf.readVarInt();
            List<String> tmp = new ArrayList<String>();
            for (int i = 0; i < length; i++) {
                tmp.add(pbuf.readString(256));
            }
            return tmp.toArray(new String[] {});
        }
    }
     
  7. Автор темы
    Energy warrior

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

    Баллы:
    76
    Так это и я могу сделать. Ванила-то могёт стринг массивы делать! И среди NBTBase есть NBTTagList!
    Но в адаптерах, невероятным образом листов нету!
     
  8. Автор темы
    Energy warrior

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

    Баллы:
    76
    Я до сих пор не понимаю каким образом удалось уменьшить время трекинга сущностей, почему их трекают, почему из-за этого лагает?
    И почему тпс засовывают в массив из 3 даблов?
     
  9. alexandrage

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

    Баллы:
    173
    Они нужны там околоникогда, может по этому. Да и это не безопасно, накидают 9000 таглистов.
     
  10. alexandrage

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

    Баллы:
    173
    А почитать нет? Там чел расписал как и почему. Там чел ясно и понятно расписал, поймет даже ребенок.
     
  11. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Массивы строк навскидку -- это рецепты в книге, описание предметов, тэги scoreboard'ов, страницы в книгах, ещё что-нибудь может быть. Да в принципе можно накидать 9000+ чего угодно, что будет не безопасно.
    Мне тоже разъяснения нужны. Высокоуровневый язык, java, поддерживает массивы строк, есть возможность их хранить в надлежащем виде, для чего спускаться до упаковки в байты? Я прекрасно понимаю для чего это делается при передаче данных и в железе, но не понимаю для чего это делать здесь?
     
  12. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Tps из 3 даблов - средний тпс за 5, 10 и 15 минут.
     
  13. alexandrage

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

    Баллы:
    173
    Там это и не нужно. Этот тег юзается от силы для подписи своего кастомного стака.
    Про книги ты правильно сказал, их и используют для експлоита креативщики.
    Думаю по этому тег контейер максимально безопасный, чтоб снять свой тег со стака и не улететь в краш из за ипанутого креативщика. Ибо распаковка километрового теглиста это плачевно для сервера. И nbt не дает чекнуть длину листа пока все не распакуешь.
    P.s А теперь маленький бонус, nbt и есть твой упаковщик в байты.
     
    Последнее редактирование: 28 ноя 2019
  14. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    Принципиально String тоже упаковывает в байты, а так же любой класс сам упаковывается в байты, так почему же всё не писать в op-кодах сразу, если результат один и тот же? (Известен мне один печальный кодер плагинов, который именно так и делает)
    А ещё для упрощения и рпг-серверов можно делать книги со списками рецептов. Для тех же нужд используются списки разрушаемых предметом блоков и списки блоков, на которые можно устанавливать, всё это в gamemode adventure.
    А вообще давать гранату (креатив) всяким недалёким тоже нужно думать. С тем же успехом можно давать сразу доступ к rcon. Опять же есть левые плагины с бэкдорами и т.д. Ещё можно сделать цикл while без выходного условия, который повесит сервер, может и циклы тоже лучше не использовать? Как-то несерьёзно это.
     
  15. alexandrage

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

    Баллы:
    173
    Ну да, сервак приносящий 40к в сутки ни разу не серьезно.
     

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