Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нем неправильно. Необходимо обновить браузер или попробовать использовать другой.
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 не сохранялись между рестартами/повторными подключениями
Исправлен баг, при котором ванильные предметы могли частично помещаться в слоты экипировки, вызывая потерю предметов
Исправлено: отложенный setVisibleByDefault выполняется в потоке региона сущности на Folia
Исправлено: активные мобы не удалялись при естественном исчезновении При естественном исчезновении сущности Bukkit (игрок уходит далеко, смена мира и т.д.) entity.isDead() возвращает true, но метод тика завершался раньше без очистки, из-за чего проверка isValid() не вызывала setUnloaded(). Эти «призрачные» мобы накапливались бесконечно в реестре активных мобов.
Исправлено: 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), чтобы события исцеления отправлялись в поток региона целевой сущности, а не в глобальный планировщик региона
fix: исправлено сохранение устаревших данных спавнера и очистка мёртвых мобов
Исправлено: saveSpawnerData() записывал CooldownTimer, WarmupTimer и ActiveMobs только если значение было > 0, из-за чего значения не сбрасывались обратно в 0 — устаревшие ненулевые значения сохранялись в YAML и загружались после перезапуска, вызывая «призрачные» кулдауны/прогрев и дублирование мобов
Исправлено: cleanMobList() проверял только am.isDead() для определения мёртвых мобов — сущности, удалённые без стандартного процесса смерти (например, при /mm r), не получали флаг dead, из-за чего спавнер продолжал учитывать их в maxMobs и блокировал повторный спавн
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 — возврат к стрелявшему