- Исправлено: асинхронное сохранение и отложенное восстановление теперь безопасны для Folia благодаря использованию снимков данных в региональных потоках.
- Исправлено: исправлено восстановление моделей, которые удалялись из-за ложных событий выгрузки сущностей (entity unload events) (#355).
- Новое: условие hasmodel теперь также может проверять состояние воспроизведения (playing state).
- Исправлено: добавлена передача ID кости дочернего хитбокса в снаряды MythicMobs (#357).
- Новое: добавлено мифическое условие hasmodel для MythicMobs.
- Производительность: небольшие оптимизации и обновления MiniMessage.
- Исправлено: переработан Bundle-Everything (функция была нерабочей после переписывания R4.0.6 updater).
- Исправлено: NPE, из-за которого модели могли зависать при удалении queued-состояния в тот же тик, когда оно проигрывается (#352).
При выгрузке мира некоторые данные не очищались, постепенно накапливались в памяти и со временем могли привести к крашу сервера. Теперь это исправлено:
- Исправлено: теперь можно спешиваться с моделей, базовый моб которых имеет отключённый ИИ (#347).
- Исправлено: устранена утечка данных при выгрузке мира (#187).
- Визуальные эффекты сущностей (Entity VFX) теперь корректно исчезают и продолжают следовать за своей целью, вместо того чтобы оставаться навсегда.
- Невидимые базовые сущности моделей больше не оставляют «висячих» ссылок в памяти.
- Данные о pivot и mount теперь освобождаются одновременно с выгрузкой модели.
- Исправлено: анимации state machine (play/stop/query) теперь применяются в одном тике (#221).
- Производительность: уменьшены per-bone-per-tick аллокации в model tick и внесён ряд других оптимизаций.
- Исправлено: ModifyState теперь задаёт длительность lerp, а не накопитель прогресса (#348).
- Исправлено: ресурсы моделей игрока теперь зависят от Create-Shader (не отправляется player_head.json, если шейдеры отключены).
- Исправлено: добавлено снятие снапшота BoneItems для устранения race condition «Item is null» (#327).
- Улучшено логирование: теперь в ошибке Unable to find model with ID выводится сам ID модели.
- Исправлено: renderByDefault больше не связан с переключателем видимости Blockbench (editor-hidden части всегда скрыты).
- Исправлено: для PseudoThread используется nanoTime в tick guard, чтобы избежать throttling из-за неточных системных часов.
- Исправлено: добавлены недостающие определения (failsafe-инициализация для предотвращения потенциальных ошибок).
- Добавлена поддержка маунтов на небазовых сущностях (non-Mob bases), включая модели на основе ItemDisplay. Изменений поведения по умолчанию нет.
- Custom MountController теперь может работать на non-Mob базах. Для этого нужно переопределить MountController#shouldEngineTickMovement(), чтобы вернуть true — тогда движок будет вызывать updateDriverMovement и updatePassengerMovement каждый тик даже для не-Mob моделей. По умолчанию false, старые контроллеры не затрагиваются.
- MountManager#getSeat(String) теперь поддерживает имя сиденья в формате p_N, а также уже обработанный вариант N, поэтому больше не нужно вручную удалять префикс p_ перед посадкой.
- Теперь здоровье маунта повторно отправляется игрокам при повторном входе в радиус отслеживания, чтобы отображалось актуальное значение, а не полное здоровье по умолчанию.
fix: forgot to git add this lmao
feat: support MiniMessage/HEX in setmodeltag tag, keep legacy codes working (#205)
- Исправлено: генерация ResourcePack больше не отличается при каждом запуске из-за многопоточной обработки.
- Исправлено: getCollidableExemptions больше не вызывает NPE (NullPointerException).
- Исправление: modelHasDriver теперь определяется по всем активным моделям, а не через устаревший основной менеджер маунтов. (#259)
- Исправление: прекращён спам desync-пингами каждый тик
- Исправлены коллизии UUID и утечки entity у subhitbox
- Исправление: данные пассажиров теперь сохраняются при обновлении моделей
- Добавлены перегруженные методы setScale и setHitboxScale с поддержкой входных данных Vector3fc
- Исправлен некорректный поворот игрока в interaction packets для 26.1
- Исправлена потенциальная утечка памяти (miscodes сказал, что теперь всё ок, ну дай бог)
- Исправлена ручная translucency, не работавшая с новой конфигурацией вращения
- Исправлено масштабирование nametag, которое не было реализовано на более старых версиях
- Добавлен настраиваемый Texture-Path, который по умолчанию использует entity/models вместо entity, чтобы предотвратить поломку атласов