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

Миграция с 0.10

Перед обновлением сделайте резервную копию папки pages Typewriter и данных plugins/Typewriter/. Записи читаются как есть: существующие страницы загружаются, но несколько вещей ведут себя иначе.

Удалено​

ЧтоЧем заменить
aggroMultiplier у Dungeon InstanceНичем. Он никогда не читался и удалён.
/typewriter dungeon start/typewriter dungeon enter <instance>.
Связь partyLobbyArtifactНичем. Она не используется: лобби больше не восстанавливаются после перезагрузки или перезапуска. Запись Dungeon Party Lobby Artifact по-прежнему загружается, но неактивна, и её планируется удалить в одной из следующих версий.
Создание отряда в MMOCore или Parties при входе в лоббиОтряды доступны только для чтения. Весь отряд игрока входит в лобби вместе с ним.

Изменения в поведении​

  • allowedDungeonIds у Dungeon NPC Instance. Теперь это список ссылок на экземпляры подземелий (то же имя поля, те же сохранённые данные, поэтому старые страницы загружаются). Пустой список теперь означает все забеги всех подземелий. В 0.10 NPC не показывался вообще. Список, содержавший id, продолжает работать, пока эти id существуют. Значение group по умолчанию теперь — участники забега.
  • Dungeon NPC Instance показывается. В 0.10 он никогда не появлялся. Если вы использовали сундук, привязанный к NPC другого расширения, как обходной путь, теперь можно привязать его к этому.
  • criteria у слотов категории вычисляются для каждого игрока. В 0.10 любой критерий закрывал слот для всех. Уберите критерии, которые вы использовали как жёсткую блокировку.
  • criteria и damageMultiplier подземелья теперь применяются (damageMultiplier по умолчанию 1).
  • cooldownSeconds: 0 или пусто означает отсутствие лимита времени.
  • Комнаты теперь срабатывают. onEnter, onLeave, модификаторы и критерии Dungeon Room выполняются. Перекрывающиеся комнаты входятся все, сначала с большим priority. verticalMargin новый, со значением по умолчанию 2,0 блока: игрок теперь считается внутри от 2 блоков ниже самого нижнего узла до 2 блоков выше самого верхнего, для каждой комнаты. Задайте 0, чтобы сохранить прежнюю точную высоту. Высокой комнате (большой зал, башня) может понадобиться большее значение, чтобы прыжок или транспорт оставались внутри.
  • Факты. indungeon и indungeon_instance возвращают реальные значения.
  • Статистика записывается. Она начинается с нуля.
  • Изоляция. Новое поле isolation по умолчанию AUTO: SLIME_CLONE с Advanced Slime Paper, иначе WORLD_PER_RUN (копия templateWorld, удаляемая после забега). В 0.10 обычный Paper использовал сам шаблонный мир и удалял из него все сущности, кроме игроков. Чтобы по-прежнему делить мир, задайте SHARED_WORLD_SLOTS и постройте подземелье в каждом слоте. См. Забеги и изоляция мира.
  • Меню отряда выбирается по его полю dungeonInstance, а меню с пустым полем обслуживает любое подземелье, которое не называет ни одно другое меню. Раньше это было «первое найденное меню».
  • Loot Chest Trigger ONCE — один раз за забег, а не до перезапуска сервера.
  • Забеги переживают перезагрузку, если связан runtimeArtifact (иначе runs.json). Перезапуск сервера их завершает.
  • Dungeon Enter и /typewriter dungeon enter проверяют размер группы, критерии, стоимость входа и лимит забегов.
  • Мобы расширения (новое): они не создаются, пока вы не добавите записи Dungeon Mob Spawn.

Новые сниппеты и поля​

Все тексты, которые игроки читают в меню, лобби, боковой панели, сундуках с добычей и отказах в запуске, теперь являются сниппетами Typewriter (content.dungeon_menu., content.dungeon_lobby., content.dungeon_run.sidebar., content.dungeon_chest., content.dungeon_launch.). Значения по умолчанию — это тексты, которые расширение уже показывало, поэтому ничего не меняется, пока вы их не отредактируете. Список находится в индексе. Ответы административных команд тоже являются сниппетами (content.dungeon_command.).

Две группы полей новые, с значениями по умолчанию, сохраняющими прежнее поведение:

  • lobbyIdleKickSeconds у Dungeon Instance (по умолчанию 120, прежние фиксированные 2 минуты).
  • У Loot Chest Trigger: triggerSoundVolume, triggerSoundPitch, triggerParticleCount, triggerParticleSpread, triggerParticleSpeed (по умолчанию 1, 1, 30, 0.5, 0.1). broadcastMessage теперь принимает цветовые коды.

Совместимость данных​

  • Журнал забегов читается в версиях с 1 по 3. Он записывается как версия 2, пока в нём нет генерируемого забега, и как версия 3, как только такой появляется (он также получает необязательные списки mobs и mobsOwed). Поэтому возврат к более старой сборке безопасен, только пока не сохранялся ни один генерируемый забег; не понижайте версию после использования генерируемых подземелий. Артефакт, который не удаётся прочитать, никогда не перезаписывается.
  • Список MarkerKind шаблона комнаты получил в конце NPC и MOB. Существующие шаблоны комнат сохраняют свою идентичность и не меняются.
  • Id записи сущности dungeon_npc_instance не изменился.

Чек-лист​

  1. Сделайте резервную копию ваших pages.
  2. Обновите JAR и запустите сервер. Прочитайте лог на предмет предупреждений об отсутствующем runtimeArtifact или меню отряда.
  3. Проверьте isolation каждого подземелья.
  4. Пересмотрите allowedDungeonIds у ваших экземпляров NPC.
  5. Пересмотрите criteria у слотов категории и verticalMargin у комнат.
  6. Замените использования /typewriter dungeon start.