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

  • Исправлено: обработка null для карты спавнеров в ClusterGenerator.tick (гонка Folia)
  • Исправлены Velocity-плейсхолдеры из-за бага в обработке скорости игрока на земле в Minecraft
  • Добавлена опция ThreatTable.DropUnreachableSeconds: 10 для мобов, позволяющая настроить, через сколько секунд моб перестанет преследовать недостижимую цель
  • Исправлена механика runaigoal, которая раньше устанавливала всё на приоритет 1 и некорректно обрабатывала наложение нескольких целей
Расширенная функциональность для Custom Equippable слотов:
  • Добавлен параметр Overrides: для условного изменения атрибутов слота, например Material или Display
  • Добавлена функция AllowStackedItems, позволяющая помещать в слот стопку предметов, а не только один
  • Добавлена функция AllowedItems, которая при передаче списка разрешает предметы с использованием ItemMatcher (mythic ID, vanilla ID, теги и т.д.)
    • Если установлено true, разрешены любые предметы
  • Исправлен баг с записью JSON данных игрока, из-за которого Equippables не сохранялись между рестартами/повторными подключениями
  • Исправлен баг, при котором ванильные предметы могли частично помещаться в слоты экипировки, вызывая потерю предметов
  • Рефакторинг выполнен через MM и Cruci
Автор: bobobo
  • Добавлено: начальная поддержка версии 26.1 (требуется Java 25)
  • Исправлено: угроза (threat) не спадала, даже если линия видимости (LOS) была заблокирована в течение 10 секунд
  • Исправлено: #2155
  • Исправлено: #2177
  • Исправлено: навыки предмета в руке сохранялись после смены предмета
  • Исправлено: ещё одно исправление для Folia
  • Исправлено: дополнительные исправления для Folia
  • Исправлено: пули display-пакетов не отображались при нулевой скорости снаряда
  • Исправлено: плейсхолдер не учитывал "cached" статы
    • Это происходило, когда механика навыка устанавливала атрибут snapshotcasterstats в true
    • Напоминание: эта функция работает только с областью caster в плейсхолдерах
  • Добавлено: пользовательские диалоги
Автор: bobobo
  • Исправлено: отложенный 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
ВерхНиз