Gold Плагин Механика Косметика Мобы Model Engine Premium 4.x [R4.1.0 (DEV build 2299)]

  • fix: OBB related issues
  • fix: re-do the folia bullshits
  • fix: исправлена потокобезопасность системы маунтов для Folia
  • fix: исправлен NPE в привязке aura MEGmodeledEntity использовался до инициализации
  • fix: забыл закоммитить это раньше
  • perf: оптимизация горячей ветки getTrackedPlayer
  • Исправлено принудительное спавнение себя
  • Исправлена задержка смерти моделируемого снаряда
  • Небольшой рефакторинг механизма состояний
Use bukkit provided no alloc get location

Fixed MEG bullets not despawning when using state machines
  • Исправлена задержка появления модели при спавне
  • Отменены изменения в API регистрации плейсхолдеров
  • Добавлен атрибут modelid для механики lockmodel
  • Исправлено: ошибка Folia AsyncCatcher в sendPivotOverrides.
  • Исправлено: NPE при создании hitbox для незаcпавненных сущностей.
  • Исправлено: удалены лишние вызовы forceSpawn при снятии disguise, чтобы предотвратить рывки и «тремор» игрока.
  • Исправлено: pv=true теперь корректно снимает пассажиров базовой сущности.
Проблема: ClientboundSetPassengersPacket, отправляемый PivotOverrideRegistry, включал только пассажиров, управляемых PivotOverride.
Это приводило к игнорированию и снятию нативных Bukkit-пассажиров (например, попугай на плече или игрок верхом на другом игроке) на клиенте при применении модели с pv=true.
  • Исправлено: механика folia dismountall.
  • Производительность: ускорена обработка пакетов.
  • Производительность: оптимизация UpdateScheme за счёт уменьшения количества обращений к хеш-таблицам.
  • Откат: «Minor optimization on tracked player filtering».
  • Лёгкая оптимизация фильтрации отслеживаемых игроков.
  • Исправлена сборка проекта.
  • perf: удалён лишний Optional в StateMachineHandler.isGlobalRotation.
  • perf: убран ненужный CAS из SafeTransform.
  • perf: исключены лишние аллокации итераторов при обновлении пустого map-трекера.
  • perf: оптимизирован BoneSnapshotHandler — переиспользование snapshot и встроенное сравнение.
    • Больше не создаётся новый объект Snapshot для каждой кости каждый тик, если хэш-коды не изменились.
    • Snapshot.compare() заменён на прямую побитовую операцию OR вместо 4 вызовов TMath.setBit()
goob
Это либо ускорит деплой до максимума, либо всё взорвётся 😄
  • fix: использование ConcurrentHashMap в BoneSnapshotHandler для предотвращения race condition.
  • Исправлено некорректное сохранение ref-анимации.
  • Исправлен приоритет анимаций.
    • Теперь, если несколько анимаций запускаются в один тик, приоритет всегда получает последняя запущенная.
  • Добавлен Pre/Post send callback API.
  • Исправлены утечки памяти ByteBuf в ModelEngineChannelHandler.
    • Удалён неиспользуемый ByteBuf в handleEntityData.
    • Добавлен try-finally с release() в handleEntityId и handleInteract для предотвращения утечек direct-памяти.
  • Дополнительная защита от пустых metadata-пакетов и исправление утечки ByteBuf в парсерах v1_21_R1–R7.
    • Удалены утечки RegistryFriendlyByteBuf в VFXDisplayParser.
  • perf: кэширование иерархии BoneSequencer для устранения лишних вычислений.
    • Добавлен dirty-флаг, чтобы не пересчитывать статическую топологию модели каждый тик.
    • Примерно ~90x ускорение за счёт удаления аллокаций Map, Set и Iterator.
  • perf: устранены накладные расходы HashMap при обновлении keyframe.
    • Итерация по HashMap заменена на кэшированную обработку полей.
    • Удалены лишние аллокации памяти и достигнуто ~3x ускорение выполнения.
  • perf: оптимизирован ModelBoneImpl.tick() за счёт кэширования поведения.
    • HashSet и HashMap заменены на примитивные массивы и boolean-кэш.
    • Примерно ~3.1x прирост производительности за тик благодаря устранению математических операций, хэширования и аллокаций Iterator.
Оптимизация производительности ModeledEntityImpl.getModels
  • Кэширование внутренней карты models для предотвращения накладных расходов от ImmutableMap.copyOf при каждом вызове.
  • Кэш инвалидируется при событиях модификации.
Оптимизация обновлений BukkitEntityData для позиции и булевых значений
  • Дедупликация обновлений позиции: используется повторно используемый объект Location для запроса позиции сущности. Атомное хранилище обновляется только при фактическом изменении позиции, что снижает количество выделений памяти.
  • Дедупликация булевых обновлений: проверка текущих значений isEntityValid и isDataValid перед установкой, что уменьшает накладные расходы на volatile-записи, если значения не изменились.
  • Бенчмарки показывают ~26% улучшение логики позиции и ~86% для булевых значений в стабильном состоянии.
Оптимизация логики syncUpdate в BukkitEntityData
  • Ленивое создание очередей отслеживания для снижения давления на память.
  • Использование инкрементальных обновлений для syncTracking вместо полного очищения и повторного хэширования.
  • Повышение производительности примерно на ~19% по бенчмаркам в стабильном состоянии.
ВерхНиз