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

Команды EternalTD

EternalTD регистрирует корневую команду:

/eternaltd
/etd

Команды аккаунта Nightbreak, используемые при настройке, — это отдельные команды верхнего уровня, регистрируемые MagmaCore:

/nightbreaklogin <token>
/nightbreaklogout

Обе защищены правом nightbreak.login (default: op). /nightbreaklogout удаляет сохранённый токен аккаунта Nightbreak с сервера.

MagmaCore также регистрирует отдельную для каждого плагина команду списка изменений, /etdchangelog, как собственную команду верхнего уровня (см. Список изменений релиза).

Настройка и управление контентом

Большинство этих подкоманд регистрируются MagmaCore через NightbreakPluginBootstrap.registerStandardCommands. Они являются общими для всех плагинов Nightbreak и поставляются внутри EternalTD, потому что MagmaCore встроен (shaded) в плагин.

КомандаОтправительТекущее назначение
/etdЛюбойВыводит текущую краткую справку по настройке/контенту. Теперь действительно требует eternaltd.* — отправитель без него получает «You do not have permission to run this command!»
/etd initializeИгрокОткрывает меню начальной настройки. Требуется eternaltd.*.
/etd setupИгрокОткрывает меню настройки EternalTD (браузер пакетов плюс общие элементы управления обновлением плагина, рекомендуемыми плагинами и автоматическим обновлением)
/etd recommendedpluginsЛюбойОткрывает (игроку) или выводит (в консоли) рекомендуемые сопутствующие плагины для EternalTD
/etd downloadpluginupdateЛюбойЗагружает обновление плагина EternalTD, если оно доступно (применяется после следующего перезапуска)
/etd downloadallЛюбойЗагружает обновление плагина EternalTD и весь доступный контент
/etd downloadallcontentЛюбойЗагружает весь доступный контент EternalTD (без обновления плагина)
/etd updatecontentЛюбойЗагружает обновления для устаревшего контента EternalTD
/etd updateallcontentЛюбойПсевдоним для /etd updatecontent
/etd forcereinstallcontent <package&#124;all>ЛюбойПовторно загружает контент через обычный аутентифицированный конвейер импорта/перезагрузки, даже если установленная версия уже актуальна. all охватывает каждый пакет, определённый как загруженный; slug Nightbreak (доступен в автодополнении) нацеливается на один пакет и работает, даже если его файлы полностью отсутствуют. Используйте это, чтобы восстановить пакет, файлы которого были удалены или повреждены.
/etd installЛюбойПрименяет официальную настройку набора ресурсов EternalTD
/etd reloadЛюбойПерезапускает EternalTD на месте (полный цикл disable, load, enable)

Примечание для администраторов:

  • plugin.yml EternalTD объявляет один узел прав, eternaltd.* (default: op), описанный как дающий доступ к админским, настроечным и отладочным командам.
  • Всё, что относится к администрированию, сводится к этому единственному узлу: setup, recommendedplugins, downloadall, downloadallcontent, downloadpluginupdate, updatecontent/updateallcontent, forcereinstallcontent, install, reload, cheat, setwave, selectfloor, selectfloorcoordinates, showselection, register, register start, register end и голая /etd. (Общие команды MagmaCore разделяют это на права «admin», «setup» и «initialize», но EternalTD передаёт eternaltd.* для всех трёх, поэтому фактическое требование одинаково.)
  • Две команды аккаунта Nightbreak используют собственный узел, nightbreak.login (default: op), который MagmaCore регистрирует во время выполнения, а не через plugin.yml EternalTD.
  • initialize регистрируется общим bootstrap и также требует eternaltd.*; наличие готовых режимов не управляет регистрацией.
  • Неограниченными остаются только команды для игроков: hub/lobby, join, start/go и quit/stop.
  • Автодополнение первого аргумента также фильтруется по правам, поэтому игроки без eternaltd.* видят только подкоманды для игроков.

Игровые команды

КомандаОтправительТекущее назначение
/etd join <level>ИгрокЗапускает новую сессию уровня из загруженного файла уровня. Мир-шаблон копируется вне основного потока, поэтому команда сначала отвечает «Preparing world - hang tight!», а затем «Created your world! We're ready to go.», когда инстанс готов. Повторный запуск, пока копирование в процессе, отклоняется сообщением «Your level is already being prepared. Please wait!»
/etd startИгрокЗапускает первую волну активной сессии
/etd goИгрокПсевдоним для /etd start
/etd quitИгрокЗавершает текущую сессию уровня
/etd stopИгрокПсевдоним для /etd quit
/etd hubИгрокТелепортирует вас обратно в точку появления хаба EternalTD. Если выполнить во время забега, активная сессия сначала корректно завершается (инвентарь восстанавливается, башни удаляются, мир инстанса удаляется). Требует, чтобы точка появления хаба была настроена в config.yml; если сервер отклоняет телепортацию, команда сообщает об этой ошибке вместо того, чтобы объявить об успехе.
/etd lobbyИгрокПсевдоним для /etd hub

Команды отладки и администрирования игрового процесса

КомандаОтправительТекущее назначение
/etd cheatИгрокПереключает режим читов для активной сессии
/etd setwave <wave>ИгрокПеремещает активную сессию к определённой волне

Это не обычные команды настройки для игроков. Это инструменты сессии/отладки.

Команды создания карт

Эти команды всё ещё присутствуют в текущей кодовой базе для выбора этажей и регистрации уровней.

КомандаОтправительТекущее назначение
/etd selectfloorИгрокЗапускает или останавливает выбор углов этажа кликами
/etd selectfloorcoordinates <x1> <y1> <z1> <x2> <y2> <z2>ИгрокЗадаёт область выбора напрямую по координатам
/etd showselection <level>ИгрокПроверяет и сохраняет текущее выделение пола. Визуализация частицами в текущей реализации отключена.
/etd register <level>ИгрокПроверяет выделение, затем очищает его. Не показывает частицы и не сохраняет levelLocations; область пола нужно записать в YAML уровня вручную.
/etd register <level> startИгрокДобавляет блок, на котором стоит игрок, в список startLocation уровня
/etd register <level> endИгрокДобавляет блок, на котором стоит игрок, в список endLocation уровня

Список изменений релиза

MagmaCore регистрирует по одной дополнительной команде верхнего уровня на каждый плагин Nightbreak, названной по корневой команде плюс changelog:

/etdchangelog
/etdchangelog dismiss
/etdchangelog disable
ФормаЭффект
/etdchangelogОткрывает заметки о выпуске тех версий EternalTD (и отслеживаемых пакетов контента), которые вы ещё не прочитали
/etdchangelog dismissОтмечает показанные сейчас выпуски как прочитанные и переходит к следующей непрочитанной партии, если она есть
/etdchangelog disableНавсегда отключает уведомление о списке изменений для этого игрока

Что стоит знать о поведении:

  • Команда доступна только игрокам и только администраторам. «Администратор» здесь означает op, eternaltd.* или любое из прав admin/setup/initialize из спецификации — все три EternalTD задаёт как eternaltd.*.
  • Администраторы, заходящие на сервер, примерно через 2 секунды после входа получают в чат уведомление с кликабельной кнопкой view, но только если есть что-то непрочитанное и они не выполняли disable.
  • Состояние прочтения/отклонения, версия, с которой началось отслеживание, и кэшированный текст выпуска хранятся в plugins/EternalTD/nightbreak-changelogs.yml.
  • Если меткой etdchangelog уже владеет другой плагин, MagmaCore вместо неё регистрирует запасной вариант с пространством имён (eternaltd:etdchangelog).

Примечания

  • plugin.yml EternalTD объявляет только корневую команду и право eternaltd.*. Подкоманды регистрируются через менеджер команд во время выполнения.
  • /etd reload — это настоящий перезапуск плагина: он вызывает путь disable, load и enable плагина, а не лёгкий повторный импорт контента. Всё, что делает запуск (миграция папок, импортёр, пакеты контента, волны, уровни, шаблоны миров, NPC, помощник ресурс-пака), выполняется заново. Он не вызывает путь перезагрузки FreeMinecraftModels — метод, который делал бы это, есть в исходном коде, но его никто не вызывает.
  • Аргументы с именем уровня в join, showselection и командах register разрешаются при автодополнении, а не при старте плагина, поэтому уровни, добавленные загрузкой или перезагрузкой, появляются без перезапуска.