- perf: кэширование regex-паттернов и уменьшение количества обращений к map (часть 2)
Кэширование скомпилированных regex в MobType и VariableScopedName, замена containsKey+put+get на computeIfAbsent при загрузке скиллов и в AuraExecutor, использование одного get() для выполнения сигналов и поиска аур- perf: кэширование regex и устранение двойных обращений к map в системе дропа
Кэширование regex как статических полей в DropExecutor, замена containsKey+get на один get() в DropMetadataImpl- perf: исправлена яркость текстовых снарядов
Исправление перенесено на уровень API- perf: замена HashSet на ArrayList при клонировании в SkillMetadataImpl
- Замена new HashSet<>(targets) на new ArrayList<>(targets) в deepClone() и deeperClone() (~в 5–24 раза быстрее)
- Замена пустых HashSet на Collections.emptySet()
- Замена одиночных HashSet на ArrayList(1)
- perf: однопроходная обработка строк плейсхолдеров
Замена цепочки .replace() на посимвольный проход (~в 3 раза быстрее при парсинге, ~в 2 раза при обратной операции). Дополнительные оптимизации в PlaceholderParser и PlaceholderExecutor- perf: уменьшение выделений памяти на тик в ProjectileMechanic
- Замена new ArrayList + add() на Collections.singletonList()
- Удалено лишнее targets.clone()
- Использование lengthSquared() вместо length()
- Кэширование hitRadius.get(context)
- Кэширование проверки bulletType == ARROW
- Удалены неиспользуемые переменные
- Замена обходного rotate(0.001F) на корректную проверку нулевого вектора
- perf: оптимизация targeter-ов, проверок дистанции и стримов
- Замена stream-операций на HashSet (до 25 раз быстрее)
- Использование distanceSquared вместо distance
- Вынос Math.pow и плейсхолдеров из циклов
- Удалено лишнее создание Location
- Добавлен новый компонент ауры projectilerebound, который отражает входящие снаряды (поддержка vanilla и mythic):
- returnMode=ORIGINAL_CASTER — возврат к стрелявшему
- returnMode=MIRROR — возврат к исходной точке
- reparseFaction=true — переназначение владельца/фракции
- cancelIncoming=true — отмена исходного попадания
- speedFactor — множитель скорости
- powerFactor — множитель урона
- reboundConditions — условия для отражения
- @ORIGIN — точка отражения
- @trigger — оригинальный стрелок (если есть)
- Добавлены переменные, например rebound-origin
- Добавлен колбэк onRebound
- Добавлены Happy Ghast и Nautilius в механику седла и условие isSaddled
- Добавлены математические операции в параметр chance для дропа (аналогично amount), а также добавлены inline-условия для дропа
- Добавлен damage-amount-post, который возвращает количество урона после учёта брони — фактический урон, получаемый существом
- Добавлен windcharge
- Добавлены несколько новых плейсхолдеров:
- ``: возвращает список UUID дочерних сущностей
- ``: возвращает фракцию сущности
- ``: возвращает глобальный кулдаун сущности
- ``: возвращает последний полученный сигнал сущности
- Исправлены проблемы с конкурентностью в PolymorphicPlaceholder
- Добавлена опция Variant: для Axolotl, поддерживающая все типы аксолотлей (lucy, wild, gold, cyan, blue)
- Добавлен компонент данных Instrument, теперь можно добавлять, например:
Instrument: minecraft:ponder_goat_hornс любым ключом инструмента
- fix: исправлено кодирование яркости отображаемой сущности
Улучшено предупреждение об устаревшем API для отображения более подробной информации
- Также предупреждение теперь появляется только один раз за время работы программы для каждого использования устаревшего API одним и тем же классом
- Используется Adventure в StopSoundEffect
- Расширена механика SetTongueTargetMechanic через NMS (экспериментально)
- В компоненте Repairable теперь можно использовать теги вида #minecraft:planks
- Добавлено предупреждение в консоль при регистрации аддоном устаревших плейсхолдеров
- Исправление работы Repairable
- Проверка, попадает ли bounding box в конус для @EIC{bb=true}
- Добавлена опция useBoundingBox/bb=true/false для таргетеров типа EntitiesNearOrigin
- Исправлена проблема, когда статические значения не учитывались как статические
Added runtime check against registering the same alias for multiple particles
- removed
dustalias fromBLOCK_DUSTparticle- it is now only the alias of the
DUSTparticle- removed
explosionalias fromPOOFparticle- it is now only the alias of the
EXPLOSIONparticle- removed
underwateralias fromSUSPENDED_DEPTHparticle- it is now only the alias of the
UNDERWATERparticle
perf: Optimize AbstractLocation#toString for common coordinate values