- Добавлена поддержка плейсхолдеров в параметре chance= для механик. (#2293)
- Исправлено: условия заклинателя (caster conditions) теперь корректно обрабатываются в evaluateEntity, благодаря чему serverBefore работает в меню как ожидается. (#2297)
- Скорректирована работа именованных условий времени — теперь они используют корректный цикл в 24 000 тиков без перекрытий и пропусков.
- Исправлено: мобы, полностью заменяющие ванильных существ (vanilla override mobs), теперь корректно сбрасывают своё естественное снаряжение при смерти. (#2296)
- Добавлена механика addDamageTag{t=...} для триггеров onAttack, аур и характеристик атаки.
- Исправлено: на версиях 1.20.5+ флаг HIDE_POTION_EFFECTS теперь корректно сопоставляется с HIDE_ADDITIONAL_TOOLTIP.
- Исправлено: генератор случайного спавна больше не блокирует глобальный поток регионов на Folia.
- Исправлено: устранены проблемы с попаданием снарядов между разными регионами на Folia.
- Исправлено: анимация эффекта Geyser теперь выполняется в потоке региона цели на Folia.
feat: add DefaultMobOptions defaults for Prevent* mob options
- DefaultMobOptions.PreventJockeyMounts, PreventConversion, PreventLeashing, PreventItemPickup: global defaults for the matching per-mob options, shipped with the previously hardcoded values
- another little fix; DefaultMobOptions.PreventVanillaDamage never being loaded from config, so setting it had no effect
- Оптимизация: добавлено кэширование скомпилированных выражений exp4j в математике плейсхолдеров, условий и переменных (ускорение до ~20 раз).
- Новое: добавлены настройки спавнера Chance, RandomRotation и UseWorldScaling, а также поддержка диапазонов значений через плейсхолдеры.
- Исправлено: исправлена передача кости (bone) дочернего хитбокса ModelEngine в условия хитбоксов при попадании снарядов.
- Снижено количество выделений памяти за тик при обработке навыков, систем выбора целей и снарядов.
- Кэшируется обработка статических плейсхолдеров длительности вместо их повторного разбора при каждой задержке, интервале или повторении навыка.
- Проверка MobsInRadius больше не создаёт список ID шаблонов, если проверка шаблонов отключена.
- Убрано повторное создание начального состояния перезарядки.
- Оптимизировано создание списка результатов в ProjectileForward.
- Разбор идентификаторов переменных теперь выполняется через indexOf вместо регулярных выражений.
- Удалён лишний набор целевых объектов в условии variableContains.
- Отключён учёт уникальности сущностей, если ограничение никогда не может быть достигнуто.
- Поиск ближайшей точки для целей патрулирования и следования переписан без Stream API, используя обычный цикл.
- Отправка пакетов обновления снарядов переведена на фиксированный путь без использования массивов varargs, что снижает накладные расходы.
- Исправлено: добавлена ленивая загрузка RPG-компонентов.
- Исправлено: blockmask теперь по умолчанию скрывает все блоки, кроме воздуха, а не только блоки с непрозрачностью (occluding). (#2277)
- Исправлено: исправлены проблемы с тёмным текстом голограмм и NPE при одновременном обновлении отображаемых игроков (updateRenderedPlayers). (#2199)
- Исправлено: добавлена защита rayTraceBlock от координат, которые могли привести к зависанию сервера.
- Исправлено: attack_cooldown теперь корректно получает значение после сброса на версиях 26.1+. (#2257)
- Прочее: обновлены внутренние тесты.
- Прочее: ускорена система CI/CD за счёт оптимизации зависимостей.
- Добавлено: новый тип точного сравнения для variableContains.
- Добавлено: поддержка списков UUID в uuid targeter.
- Исправлена утечка памяти, из-за которой метаданные снарядов сохранялись до перезапуска сервера.
- Добавлены параметры target=vanilla, target=mythic и ignore=mythic для повышения удобства настройки.
- Добавлена поддержка фильтров целей Mythic и Vanilla.
- Исправлено: триггер ~onHear теперь корректно реагирует на снаряды (#2278).
- Исправлено: устранена забытая мелкая ошибка (forgor).
- Исправлено: “forgor” (да, просто забыли).
- Исправлено: onDeath aura при ce=true больше не «воскрешала» игроков бесконечно (#2279).
Они позволяют ограничивать число прямо в строке, без цепочек variableSet + variableInRange.
- Добавлены мета-плейсхолдеры min/max/clamp для числовых значений.
Работают с любыми числовыми плейсхолдерами и переменными (целые и дробные значения).Код:.min{amount=X} # не даёт значению опуститься ниже X .max{amount=X} # не даёт значению превысить X .clamp{min=A;max=B} # одновременно ограничивает снизу и сверхуПримеры
Ограничение значения в диапазоне 0–100:Односторонние варианты:Код:- setvariable{var=caster.spawn_chance;value=} @selfКод:.clamp{min=0} # только нижняя граница .clamp{max=100} # только верхняя граница