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

Самый быстрый способ получения блока?

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Если устанавливать большое количество блоков, то быстрым способом является через nms и отправлять игроку пакет об обновлении уже всего сразу.

    Но, нужно получить все блоки кубоида, и даже через нмс (обходя баккит апи), это очень медленно. К примеру, кубоид размером 40 на 38 обрабатывается примерно 2 секунды (чисто получение всех блоков).
    Есть какие-то утилиты\способы обработать это быстро?
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Больно долго. Кубоид со стороной в 40 блоков - это всего 64 тысячи блоков объёма. Чанки, из которых получаешь блоки, прогружены? С железом всё в порядке?

    Если тебе нужно "всё и сразу" - произвести замену буквально за один тик, то тут ты в любом случае упрёшься в ограничения своего железа/сети. У всего есть предел. Но есть обходные пути.

    Например, заменять блоки не за один тик, а за несколько - в итоге замена занимает несколько тиков, однако по факту затраченное время будет не сильно больше, чем при выполнении всех замен за один тик. Так делает, например, FAWE. Так и нагрузка на клиент меньше, и простой сервера меньше.

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

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

    Будет лучше, если ты более подробно опишешь, для чего конкретно тебе заменять блоки
     
  3. Автор темы
    OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Мне как раз таки не нужно заменять блоки, а просто получить их и записать в свою мапу. С железом все окей, просто обычные методы получения блока по координате довольно медленны.
    С фэйвом есть конкретная проблема, он конечно добавил возможность использовать кастомые блоки (которых нет в ванилле), но из-за сжатия блоки с айди выше 4к просто не работают, ибо после преобразования там айди не верный, Я пытаюсь исправить эту ситуацию записав Clipboard такие блоки вручную.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    ???
    Что нужно-то по итогу? Опиши нормально свою конечную цель.

    Это совершенно меняет суть вопроса. Речь про Clipboard из FAWE? Если проблема с FAWE, то в чем сложность пропатчить его? И что за сервер и клиент?
     
  5. Автор темы
    OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Я просто написал, что в случае с установкой блоков, быстрым способом будет через нмс. И есть ли быстрый способ получения блока по координатам.
    1.12 ядро. Проблема в том, что добавлены как на клиент так и на сервер дополнительные блоки, у которых айди выше 4к, а поскольку фэйв везде использует сжатие, то они херятся.
    Фэйв можно переписать, но больно много нужно всего менять. Поэтому, я хочу пройтись по всем блокам кубоид региона и записать добавленные блоки вручную. Таким образом, это бы полностью решило мою проблему.
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Я правильно понимаю, что принцип работы FAWE полностью устраивает за исключением того, что он не поддерживает кастомные блоки? В этом случае возвращаемся к изначальному предложению о том, чтобы выполнять операцию с блоками не за один тик, а за несколько - как раз так и делает FAWE. Можно обрабатывать, например, по 50К блоков за тик.

    И даже через баккит такое будет работать нормально. Никак иначе ты не ускоришь "получение блоков", если чанки уже загружены в оперативку
     
    Последнее редактирование: 25 сен 2023
  7. alexandrage

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

    Баллы:
    173
    Перейди на версию выше 1.12 и не будет проблем с кастомными блоками, там теперь используется палитра.
     
  8. Автор темы
    OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Не советуй, пожалуйста, в темах, где вопрос касается конкретной версии, перейти на версию выше. Постоянно одно и то же от тебя.
     
  9. alexandrage

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

    Баллы:
    173
    Радуйся что тебе хоть кто то помогает со старыми версиями, на официальных форумах такие темы просто в дроп летят.
     
  10. SlenderMix

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

    Баллы:
    76
    На 1.12.1 норм?
     
  11. alexandrage

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

    Баллы:
    173
    Рофл засчимтан.
     
  12. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    ChunkSnapshot не подходит? Если нужны только данные о блоках, то из него они берутся быстрее, чем через NMS.
    Не всегда возможно перейти, да и не всегда просто. На старых ноутах 1.12 летает с 8 чанками, но 1.20 даже на 2-х чанках лагает, если речь про клиент. Далее не все моды переписаны на более новые версии, есть заброшенные. А ещё есть плагины такие же. Лично у меня проблема в обновлении -- переписывание тонны NMS кода с версию на версию, а по другому нельзя. Ни в одном ядре нет необходимого функционала на уровне API.
     
  13. alexandrage

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

    Баллы:
    173
    Вот как раз таки в новой бумаге уже достаточное апи что бы не влезать в нмс.
     
  14. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Не так давно смотел. API для кастомных верстаков нет. API для подмены локации нет. API для множественных рецептов нет.
    Специально залез в доку. Оказывается, там всё ещё нет API для функций спавнеров, которые добавили в 1.4. 1.4, Карл! 16 версий назад. Нет, я вижу API, через которое до этого можно достучаться. Пока снова не переименуют какое-нибудь поле, но всё же...
     

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