Gold Плагин Косметика [ConxeptWorks] Model Engine [R4.0.8]

Я болею, но R4.0.8 (наконец-то, спустя полгода) вышел, и в этот раз с множеством новых функций и исправлений багов. Вот основные моменты:

Поддержка 1.21.4 с Composite Bones​

С выходом компонентов моделей предметов, ориентированных на данные, нам удалось избавиться от обычного ограничения на вращение кубов без добавления дополнительных костей.
Когда MEG обрабатывает кость, он пытается разделить модель на минимальное количество "групп". Группа — это модель предмета, которая будет композирована, то есть объединена с другими группами в единую модель. Это фактически убирает лимит углов, используя минимум ресурсов.
Технические блаблабла, не читал, делайте, что хотите. Примечание: хотя эта функция работает и на версиях ≤1.21.3, она создаст дополнительные сущности для представления нелегальных вращений. Имейте это в виду (или просто обновитесь, 1.21.4+ топ).

Компенсация клиентских лагов​

Вы замечали, как ваша модель немного дёргается после перемещения на несколько блоков? Да, я тоже. И я ненавидел себя за это. Но спустя столько лет я, наконец, нашёл решение (ну, почти).
Проблема в том, что клиент и сервер тикают с несовпадающим "смещением". Оба работают на 20 TPS, но сервер может тикать на 25 мс раньше или позже. Это само по себе не проблема, но если сервер отправляет 2 пакета с разных тиков, а клиент читает их в один тик, то модель внезапно подскакивает в последнюю позицию, а затем останавливается на тик. Худшее — эта проблема полностью зависит от FPS. Например, на 60 FPS всё будет гладко, а на 144 FPS модель начнёт дёргаться, из-за чего отладка была адом.
Но после долгих раздумий и внутренней битвы с шестилетним мной, я придумал компенсатор, который определяет, когда клиент дёргается, и задерживает пакеты менее чем на 1 тик для их синхронизации. Это не идеально — иногда лаги будут оставаться пару секунд, но потом исчезнут.

Система Animation LOD​

После того, как @Taiyou угрожающе встал в позу Ти, я согласился встроить его систему Animation LOD, и, чёрт возьми, это того стоило.
Если кто не знает, LOD — это "Уровень детализации". Проще говоря: "Чем дальше объект, тем менее детализированным он выглядит, потому что вы всё равно не заметите разницы :kekw_dog:". С этой системой модели, находящиеся далеко от игрока, будут отправлять меньше обновлений, что значительно снизит нагрузку на сеть в местах с большим количеством сущностей. Можно настроить этот параметр для каждой модели через cullconfig, а значения регулируются в конфиге.

Root Motion​

По просьбе @TugkanDeMan теперь можно анимировать передвижение мобов прямо через анимации! Пока что это работает только для позиции моба, но даже этого хватит для создания интересных движений.


Почему это заняло так много времени?​

На самом деле, нет. Обновление было готово ещё в конце декабря прошлого года, но из-за изменения важных внутренних компонентов и добавления новых крупных функций я решил оставить его в dev-builds, чтобы исправлять баги по ходу. Кроме того, я не видел смысла выпускать релиз, когда dev-версии доступны всем премиум-пользователям. А ещё я обещал добавить IK и Molang, так что хотел хотя бы один из них закончить перед релизом. Но кажется, я затянул это слишком надолго. Пора выпустить и двигаться дальше. По крайней мере, теперь у меня есть чёткое представление, как IK будет работать в MEG.

Всё, горло убито, монитор в соплях, я кашляю лёгкими. Полный список изменений на странице плагина. Удачи, я спать


Исправления багов:​

  • Исправлено, что хитбоксы не применялись к постоянным моделям.
  • Исправлено, что анимация смерти не воспроизводилась, если не было других активных анимаций во время смерти.
  • Исправлено, что OBB не работал на 1.20.5+.
  • Исправлена ошибка, из-за которой дальность взаимодействия сущностей использовала BlockInteractionRange вместо EntityInteractionRange.
  • Исправлено, что атрибут interactmount в механике mountmodel не использовался.
  • Исправлено, что модели сохранялись несколько раз при отключении плагина, из-за чего завершение работы занимало невероятно много времени.
  • Исправлено, что плагин отправлял пустые пакеты бандлов.
  • Исправлено дёргание моделей на клиенте (насколько возможно).
  • Исправлено, что плагин не загружался на Java 17.
  • Исправлены предупреждения о ресурс-паке на старых версиях.
  • Исправлено некорректное положение поводка на 1.21+ (спасибо, Mojang).
  • Исправлено, что поводок отставал от моделей.
  • Исправлено, что эффекты зелий у игроков не удалялись после истечения.
  • Исправлено, что игроки внезапно начинали дёргаться и телепортироваться.
  • Исправлено, что прерывистые кадры неправильно обрабатывались.
  • Исправлено, что изменения скорости не применялись к замаскированным игрокам.
  • Исправлено, что вращение модели не обновлялось, если рядом не было игроков.

Изменения:​

  • Имена над головами теперь используют Text Displays.
  • Обновление моделей теперь использует новую систему, обеспечивающую лучшую балансировку нагрузки и более стабильное тикание.
  • В механике model теперь step по умолчанию null, что означает использование оригинальной высоты шага моба.
  • Расширен механизм syncyaw, теперь он может синхронизировать любой тип угла поворота (yaw, body, head).

Новые функции:​

  • Поддержка 1.21.3 и 1.21.4.
  • Кубы больше не имеют ограничения угла. В версиях ≤1.21.3 будут добавляться дополнительные кости, в ≥1.21.4 новых сущностей не создаётся.
  • Полулегальные кубы теперь автоматически исправляются (например, 67.5° и 90°).
  • Поддержка MM ModelEngine bullet.
  • Добавлена генерация нескольких базовых предметов.
  • Механика AnimateModel — позволяет управлять трансформацией костей через навыки.
  • Добавлено движение через анимации (Root Motion) — можно анимировать передвижение мобов через модели.
  • Добавлен атрибут child к механикам brightness, enchant, glow, partvis, tint.
  • Улучшен API для парсинга кастомных моделей.
  • Улучшен API для парсинга кастомного поведения костей.
  • Добавлен атрибут skipLastFrame к механике состояний.
  • Текстуры с нелегальными символами в названии теперь автоматически исправляются (создаётся уникальный UUID в качестве имени).
  • Система Animation LOD — модели отправляют меньше обновлений для игроков, которые находятся далеко.
Новые возможности:
  • - Поддержка 1.20.5+
  • - Механика модели теперь допускает радиус рендера 0, если значение установлено в отрицательное значение
  • - Сегмент и хвостовая кость
  • - [MM] Механика сегмента, которая позволяет более тонко контролировать поведение сегмента/хвостовой кости
  • - [MM] Обновлена система слотов до версии 5.7
  • - Крепления на моделях теперь будут точно отображать здоровье
  • - [MM] Placeholder для получения вращения тела

Изменения:
  • - Оптимизирована генерация хитбоксов

Исправления ошибок:
  • - Исправлено, что эффекты не удалялись, когда они не были замаскированы
  • - Исправлено, что OBB не обнаруживал взаимодействия внутри OBB
  • - Исправлена утечка памяти, когда данные о сущностях не удалялись
  • - Исправлено обнаружение манекена игроками, когда местоположение равно null
  • - Исправлено то, что плагин полностью ломается, когда одна модель выдает ошибку (теперь он все еще выдает ошибку, но мег любезно игнорирует ее и продолжает работать)
  • - Исправлено обновление данных о сущностях во время расчета анимации
  • - [MM] Исправлено то, что значения Model.Id не зачеркивались
  • - Исправлен NPE playerQueue
  • Лайк 0
Реакции:1 пользователя

Исправления ошибок:​

  • - Исправление сбоя в последних сборках 1.20.4 Paper
  • - Исправление множества ошибок

Изменения:​

  • - Пустые кости бейджиков теперь не будут видны

Новые возможности:​

  • - Бейджики теперь поддерживают минимизацию/киори
  • - Добавлена bStats
  • Лайк 0
Реакции:3 пользователей

Исправления ошибок:​

  • - Исправлено покачивание головой
  • - Исправлены многочисленные ошибки NPE

Новые возможности:​

  • - Поддержка 1.20.3 - 1.20.4
  • - Поддержка модели Blockbench версии 4.9
Автор: Black
  • Лайк 0
Реакции:1 пользователя

Исправления ошибок:​

  • - Исправлена утечка памяти
  • - Исправлено исчезновение анимации моделей граждан после перезагрузки/изменения мира
  • - Модели больше не плавают при использовании ViaVersion с хоста <1.20.2 для клиентов 1.20.2+

Новые возможности:​

  • - Поддержка 1.20.2
Исправление ошибок:
  • - Исправлен игрок, бьющий ногой в субхитбоксе
  • - Исправлено 1.16.5 пинание игроков с пакетом табло
  • - Исправлен контроллер вращения тела по умолчанию, не инициализированный с правильными значениями

Новая функция:
  • - Поддержка 1.20
  • Лайк 0
Реакции:1 пользователя

Исправление ошибок:​

  • - Исправлен игрок, бьющий ногой в субхитбоксе
  • - Исправлено 1.16.5 пинание игроков с пакетом табло
  • - Исправлен контроллер вращения тела по умолчанию, не инициализированный с правильными значениями

Новая функция:​

  • - Поддержка 1.20

Исправление ошибок:​

  • - Исправлено отсутствие порождения субхитбокса

Новая функция:​

  • - Добавлен аргумент "self" в команду select
  • Лайк 0
Реакции:2 пользователей

Исправление ошибок:​

  • - Исправлена ошибка вхождения/выхода в лерп, которая не срабатывала
  • - Возможное исправление условия гонки суб-хитбоксов
  • - Исправлено расстояние рендеринга VFX 0
  • - Исправлено, что механик состояния не опускал название анимации в нижнем регистре

Новая функция:​

  • - Поддержка 1.19.4 (пока нет поддержки display entity)

Исправление ошибок:​

  • - Возможное исправление условий гонки
  • - Исправлено блокирование взаимодействия игрока с монтировкой
  • - Исправлен динамический хитбокс, который не реагирует на нажатие кнопки
  • - Возможное исправление исчезновения суб-хитбокса при выгрузке чанка
  • - Исправлен атлас, игнорирующий пространство имен minecraft
  • - Исправлено сохранение расстояния рендеринга как 0 блоков (из-за чего мобы становились невидимыми)

Изменения:​

  • - Отключено прыгание мобов по воде (модели будут вести себя более похоже на лодки)

Новая функция:​

  • - Добавлен заголовок потока в журналы ([A] = async, = sync)
ВерхНиз