Gold Плагин MythicMobs Dev Builds Premium [5.12.0 (BUILD 5780)]

  • Исправлено: отложенный setVisibleByDefault выполняется в потоке региона сущности на Folia
  • Исправлено: активные мобы не удалялись при естественном исчезновении
    При естественном исчезновении сущности Bukkit (игрок уходит далеко, смена мира и т.д.) entity.isDead() возвращает true, но метод тика завершался раньше без очистки, из-за чего проверка isValid() не вызывала setUnloaded(). Эти «призрачные» мобы накапливались бесконечно в реестре активных мобов.
  • Исправлено: яркость текстовых дисплеев (ещё раз — обновите локальную ветку, ash)
  • Исправлено: тоты для Folia
  • Исправлено: healpercent (евлад сломал >:()
  • Добавлен компонент ауры ChunkLoadAuraComponent
Автор: bobobo
  • Исправлено: движение аксолотля
  • Исправлено: alias onThrown не работал для onThrownByMechanic, добавлен параметр triggers=false для механики броска, чтобы предотвратить срабатывание навыка, а также для плейсхолдеров throwstrength.horizontal/throwstrength.vertical
  • Исправлено: безопасность потоков Folia для выгрузки чанков, событий исцеления и методов BukkitEntity
  • Исправлены множественные нарушения владения потоками Folia, вызывавшие ошибки «Accessing entity state off owning region's thread»
ChunkListeners:
  • unloadChunkEntities теперь использует Schedulers.of(entity) вместо Schedulers.sync() на Folia, чтобы проверка задержанного исчезновения выполнялась в потоке региона сущности
  • То же исправление применено к unloadChunkEntitiesOld и unloadWorld
MythicHealMechanicEvent:
  • Заменён Events.callSync(event) на Events.callSyncAndJoin(entity, event), чтобы события исцеления отправлялись в поток региона целевой сущности, а не в глобальный планировщик региона
BukkitEntity – добавлены отсутствующие проверки потоков Folia для:
  • setMovementSpeed, setAttackSpeed
  • getVelocity
  • setRemoveWhenFarAway, setPersistent, setSaveToDisk
  • hasLineOfSight (оба перегружаемых метода)
  • lookAt (оба перегружаемых метода)
  • Исправлено: ещё одно небольшое исправление
Автор: bobobo
  • fix: исправлены NPE в Proj
  • fix: очистка кэша плейсхолдеров при внешней регистрации для предотвращения устаревших данных при запуске
Автор: bobobo
fixed drop table stuff

Updated to accomodate c working for conditions in drops just removed it from cmd and color in drops
Автор: bobobo
  • fix: исправлено сохранение устаревших данных спавнера и очистка мёртвых мобов
  • Исправлено: saveSpawnerData() записывал CooldownTimer, WarmupTimer и ActiveMobs только если значение было > 0, из-за чего значения не сбрасывались обратно в 0 — устаревшие ненулевые значения сохранялись в YAML и загружались после перезапуска, вызывая «призрачные» кулдауны/прогрев и дублирование мобов
  • Исправлено: cleanMobList() проверял только am.isDead() для определения мёртвых мобов — сущности, удалённые без стандартного процесса смерти (например, при /mm r), не получали флаг dead, из-за чего спавнер продолжал учитывать их в maxMobs и блокировал повторный спавн
Автор: bobobo
  • Добавлено условие armor trim
  • Добавлен триггер ~onEffectApply и связанные с ним плейсхолдеры
Автор: bobobo
  • 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-условия для дропа
Автор: bobobo
  • Добавлен damage-amount-post, который возвращает количество урона после учёта брони — фактический урон, получаемый существом
  • Добавлен windcharge
  • Добавлены несколько новых плейсхолдеров:
    • ``: возвращает список UUID дочерних сущностей
    • ``: возвращает фракцию сущности
    • ``: возвращает глобальный кулдаун сущности
    • ``: возвращает последний полученный сигнал сущности
  • Исправлены проблемы с конкурентностью в PolymorphicPlaceholder
Автор: bobobo
  • Добавлена опция Variant: для Axolotl, поддерживающая все типы аксолотлей (lucy, wild, gold, cyan, blue)
  • Добавлен компонент данных Instrument, теперь можно добавлять, например:
    Instrument: minecraft:ponder_goat_horn с любым ключом инструмента
Автор: bobobo
  • fix: исправлено кодирование яркости отображаемой сущности
Автор: bobobo
ВерхНиз