Перейти к основному содержимому

Changelog

1.2​

  • Dungeon Mob Spawn: lootTable, spawnParticle, масштабирование по числу игроков (perExtraPlayer, maxCount, playerCountSource), maxSimultaneous, waves и триггеры onWaveCleared и onCleared.
  • Новая запись Dungeon Loot Table: одна таблица добычи для сундуков и мобов.
  • Dungeon Loot Chest: lootTableRef и additionalLocations для размещения нескольких сундуков из одной записи (в сгенерированном подземелье игнорируется).
  • Loot Chest Trigger: particleEffect с раздельными осями X, Y и Z и центром. Четыре поля triggerParticle устарели: они действуют, только если particleEffect не называет частицу.
  • Новое событие On Dungeon Mobs Cleared.
  • Новая запись Dungeon Restrictions, подключаемая через restrictions к Dungeon Instance или Dungeon Room: запрет элитр, лодок и вагонеток, жемчуга Края, плода хоруса и тридента с тягой, блокировка команд, сообщение об отказе и разрешение для обхода.
  • Требуется GUI (OmniGUI) 0.20. Новая Dungeon Leaderboard Source использует контракт источника рейтинга из GUI 0.20: со старым GUI рейтинг Dungeon не загружается. Сначала обновите GUI.
  • Несовместимое изменение API для аддонов: DungeonArtifactData, DungeonStats и PlayerDungeonStats перенесены в пакет btcrenaud.dungeons.core, а у DungeonArtifactEntry.getPlayerStats и DungeonArtifactEntry.update изменилась сигнатура. Аддон, скомпилированный под Dungeon 1.1.x, нужно перекомпилировать. Подземелья, собранные в веб-панели, это не затрагивает.
  • Статистика: 22 показателя на игрока (нанесённый и полученный урон, убийства мобов, смерти, время игры, зачищенные комнаты и волны, рекорды, прохождения в одиночку и без смертей...). Они считаются во время забега и выплачиваются один раз на участника, по артефакту, с общим итогом по нескольким артефактам. Урон — это урон, который реально отнял здоровье, не больше здоровья цели.
  • Dungeon Instance: statsMobScope выбирает, какие мобы учитываются в статистике: MARKED_ONLY (по умолчанию, мобы, созданные забегом) или ANY_MOB_IN_RUN_WORLD.
  • Новый факт Player Dungeon Statistic и плейсхолдеры dungeon_stat_<key> (с _raw для числа без форматирования), dungeon_total_<key> и dungeon_inst_<id>_<key>. Сниппеты content.dungeon_stats.duration_format и content.dungeon_stats.missing_value задают их вид.
  • Новая запись Dungeon Leaderboard Source, которую подключают к полю source рейтинга GUI (GUI 0.20): артефакты, scope (LIFETIME или CURRENT_RUN), rankBy, values, durationFormat, decimals, missingValue и unknownName. Токены строки: {value_<key>}, {value_<key>_raw} и {score_raw}.
  • Dungeon Instance: reconnectGrace (по умолчанию 2 минуты). Участник, потерявший соединение, сохраняет своё место на это время и, вернувшись вовремя, продолжает с тем же сайдбаром, скрытыми слотами и режимом игры. После этого он покидает забег и при повторном входе возвращается в точку входа. См. Отключения.
  • Dungeon Restrictions: gameMode (необязательно, например ADVENTURE; прежний режим игрока возвращается при выходе; CREATIVE и SPECTATOR отключают боевую статистику), limitInteractions с allowedInteractions (по умолчанию CHEST, TRAPPED_CHEST и BARREL) и protectedEntities (рамки, стойки для брони, картины), а также messageRepeatDelay (2 секунды). limitInteractions также запрещает ставить блоки, вёдра, транспорт, яйца призыва, огонь, костную муку и использовать инструменты на блоках.
  • Dungeon Restrictions: рывок трезубца с «Тягуном» и плод хоруса теперь запрещены уже при клике, а не только их эффект. Исключение даёт только право обхода: у оператора оно есть, пока узел явно не выставлен в false.
  • Dungeon Category: поля слота unlockedLore и lockedLore теперь называются unlockLore и lockLore. Страницы, сохранённые со старыми именами, читаются по-прежнему; если присутствуют оба, побеждает новое.
  • MMOProfiles: после выбора игроком профиля возвращение в точку входа и исходный режим игры применяются заново.
  • Исправления: runs_left больше не считает смерть, из-за которой игрок покидает забег (она остаётся в deaths); waves_cleared считает только группы, у которых задан waves; %typewriter_dungeon_stat_current_health% показывает текущее здоровье во время забега; запись статистики больше не перестаёт сохранять после ошибки; забег, закрытый при перезагрузке из-за того, что ни одного его участника нет в сети, засчитывает время игры отсутствующим участникам.
  • В существующих подземельях ничего не меняется, пока они не используют эти поля. О сундуке, который появляется после победы над всеми мобами, см. Сущности в подземельях.

1.1.1​

  • Paper 26.x: забег в режиме WORLD_PER_RUN мог завершиться ошибкой The server did not create world 'dungeon_classic_...'. Копия шаблона сохраняла его идентификатор мира (data/paper/metadata.dat), и сервер отклонял её как дубликат. Теперь копия получает собственный идентификатор.

1.1​

  • Публичная версия переработки, описанной ниже. Исправление с версии 1.0: WORLD_PER_RUN теперь копирует мир-шаблон, сохранённый в формате Paper 26.x (dimensions/minecraft/<name>).

1.0​

Это переработка расширения, построенная вокруг модели забега. Прочитайте заметку о миграции, прежде чем обновлять сервер, использовавший 0.10.

Забеги и миры​

  • У забега теперь свой автомат состояний, реестр и журнал. Запуск забега — всё или ничего: если шаг не удался, ничего не сохраняется, а стоимость входа возвращается.
  • Три режима изоляции, задаются для каждого подземелья полем isolation: SLIME_CLONE, WORLD_PER_RUN, SHARED_WORLD_SLOTS и AUTO (по умолчанию). Режим, который не может работать, отклоняет забег. См. Забеги и изоляция мира.
  • Миры, хранящиеся по схеме Paper 26.x (dimensions/minecraft/<name>), находятся для SHARED_WORLD_SLOTS и копируются для WORLD_PER_RUN; проблема подготовки мира записывается в лог одной строкой, а не полным стеком вызовов.
  • typewriter reload или Publish подхватывает идущие забеги заново. Перезапуск сервера чисто их завершает.
  • cooldownSeconds — настоящий лимит времени: 0 или пусто означает отсутствие лимита.
  • Осиротевшие миры забегов очищаются при запуске с защитами (имя, файл-маркер, никогда не загруженный мир).
  • Статистика записывается: попытки, прохождения и лучшее время по подземельям и по игрокам.
  • damageMultiplier и criteria подземелья применяются.

Генерируемые подземелья​

Комнаты, события и факты​

Меню и лобби​

  • Меню обновляются вживую (autoRefreshTicks) и при изменении любого лобби.
  • Скорборд ожидания работает. Маркеры DUNGEON_LOBBY_SLOT размещают лобби. criteria слотов вычисляются для каждого игрока.
  • Меню отряда может называть своё подземелье (dungeonInstance); меню с пустым полем обслуживает все подземелья, которые не называет ни одно другое меню.
  • Отряды MMOCore, Parties и расширения отрядов Typewriter доступны только для чтения.

Сундуки​

  • Один бросок на игрока и сундук, visibility (AUTO, PER_PLAYER, SHARED), onDisappear, lootSelection и weightedPicks, анимация сундука, ориентация по yaw, блоки CraftEngine и Nexo, сундуки восстанавливаются после перезагрузки.

Сущности в подземельях​

Тексты для игрока и новые поля​

  • Тексты меню, лобби, боковой панели забега, сундуков с добычей и отказов в запуске — это сниппеты (content.dungeon_menu., content.dungeon_lobby., content.dungeon_run.sidebar., content.dungeon_chest., content.dungeon_launch.). Значения по умолчанию не изменились. Ответы команд /typewriter dungeon ... тоже являются сниппетами (content.dungeon_command.).
  • Новое поле lobbyIdleKickSeconds у Dungeon Instance (по умолчанию 120).
  • Новые поля у Loot Chest Trigger: triggerSoundVolume, triggerSoundPitch, triggerParticleCount, triggerParticleSpread, triggerParticleSpeed. broadcastMessage принимает цветовые коды.

Команды​

  • Удалена подкоманда start, которая никогда не работала. Команды описаны в индексе.

Известные ограничения​

  • Только Paper. Folia не поддерживается.
  • Генерируемые подземелья используют только WORLD_PER_RUN.
  • Кинематографическая сцена MythicMobsNPC в подземелье не проверялась.

0.10​

Автономная сборка. Триггеры комнат, два факта «в подземелье», экземпляр NPC и статистика были объявлены, но не работали.