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

Фикс Снятие ограничения размера NBT в пакете (фикс вылета) [1.7.10]

Тема в разделе "Управление сервером Bukkit", создана пользователем gamerforEA, 27 апр 2017.

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

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Многие уже знают о проблеме с "объёмными" (карты с кучей предметов в сумке, которая лежит в карте, которая лежит в сумке...) предметами: если дропнуть или поместить себе в инвентарь предмет с NBT, превышающим некоторый размер, то при попытке зайти на сервер игрок будет тут же вылетать.
    Данный мод решает эту проблему, снимая ограничение на размер NBT и позволяя успешно отправить и принять необходимые данные.

    Скачать: клик
    Исходники: клик
    Мод устанавливается и на сервер, и на клиент.

    1. Раньше длина сериализованного NBT записывалась двумя байтами, что позволяло прочитать только часть данных. Другая же часть "терялась" (на самом деле просто не читалась). Теперь при исчерпании этих двух байт дополнительная длина будет записана в специальное поле. Стоит отметить, что это будет происходить только при необходимости, так что в подавляющем большинстве случаев пакеты никак не изменятся.
    2. При десериализации NBT стояло ограничение в 2097152 байт, что так же не позволяло прочитать большие пакеты. Теперь размер ограничивается Long.MAX_VALUE.

    Старая запись NBT:
    Код:
    length: short
    data: byte[]
    Новая запись NBT:
    Код:
    length: short
    data: byte[]
    
    Optional:
    length1: int
    data1: byte[]
     
    Последнее редактирование: 27 апр 2017
  2. Хостинг MineCraft
    <
  3. yaroslavik

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

    Баллы:
    66
    Имя в Minecraft:
    yaroslavik
    Супер! Спасибо! =)

    А этот мод устанавливаеться на сервер?
     
  4. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Ставить и на сервер, и на клиент. Сейчас подправлю шапку.
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Никогда такого не случалось, кроме того случая с креатив крашем, стаки с 30к nbt.
     
  6. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Такой стак, конечно, создать сложно, но не невозможно. Я, например, был свидетелем, когда один из игроков при переносе дома сложил все свои МЕ Карты в Бездонную сумку. Думаю, вы догадываетесь, что было дальше.
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ну все прально, у сервера лимит сработал, чтоб какой то идиот его не положил овердлинным nbt.
     
    Последнее редактирование: 4 май 2017
  8. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    1. Он и так грузит большие объёмы. Не думаю, что станет хуже, если сервер будет загрузить 1 большой стак вместо нескольких стаков поменьше.
    2. Для создания такого стака нужно сильно постараться. Чтобы получить критический объём, от которого будет падать сервер, не хватит никакого терпения (проще соорудить большую энергосеть IC2 для создания лагов).
    3. А что помешает набить чанк заполненными контейнерами? И проще, и нагрузка больше.
    4. Простые игроки как создадут большой стак, так и в скором времени разберут его, когда он не потребуется (например, когда донесут вещи до места назначения).
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    [DOUBLEPOST=1493905834,1493905763][/DOUBLEPOST]
    Так достаточно просто слать пакеты на сервер. Они же тоже со снятым лимитом? Или нет?
     
  10. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    1. Да, тоже со снятым.
    2. Их можно было слать и раньше. Просто там вместо одного большого пакета спамили множеством мелких пакетов с большой вложенностью.
    3. Не спорю, моё решение имеет некоторые минусы. Впрочем, их можно частично нивелировать (сделать на сервере ограничение только на приём пакетов, а отправку оставить разблокированной; вернуть ограничение объём распакованных данных и т.д.).
    4. Полагаю, что мой мод чаще всего будет использоваться на серверах с лаунчерами. Задача защиты от вмешательства извне лежит на них.
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Таких лаунчеров уже не осталось, которые не обошли. Так что ограничь пакеты от клиента серверу.
     
  12. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Завтра, наверное, сделаю обновление.
     
  13. Saharo4ek

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

    Баллы:
    76
    Имя в Minecraft:
    tin
    Привет с SazHost'a
     
  14. Автор темы
    gamerforEA

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

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Мод обновлён до версии 1.1. Добавлены новые опции в конфиге.
    Приветствую.
     
  15. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Vime обходят?
     
  16. GoodCoder

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

    Баллы:
    76
    Безусловно да.
     
  17. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Давно слили же и продожлают сливать.
     

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