Команды 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|all> | Любой | Повторно загружает контент через обычный аутентифицированный конвейер импорта/перезагрузки, даже если установленная версия уже актуальна. all охватывает каждый пакет, определённый как загруженный; slug Nightbreak (доступен в автодополнении) нацеливается на один пакет и работает, даже если его файлы полностью отсутствуют. Используйте это, чтобы восстановить пакет, файлы которого были удалены или повреждены. |
/etd install | Любой | Применяет официальную настройку набора ресурсов EternalTD |
/etd reload | Любой | Перезапускает EternalTD на месте (полный цикл disable, load, enable) |
Примечание для администраторов:
plugin.ymlEternalTD объявляет один узел прав,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.ymlEternalTD. 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.ymlEternalTD объявляет только корневую команду и правоeternaltd.*. Подкоманды регистрируются через менеджер команд во время выполнения./etd reload— это настоящий перезапуск плагина: он вызывает путь disable, load и enable плагина, а не лёгкий повторный импорт контента. Всё, что делает запуск (миграция папок, импортёр, пакеты контента, волны, уровни, шаблоны миров, NPC, помощник ресурс-пака), выполняется заново. Он не вызывает путь перезагрузки FreeMinecraftModels — метод, который делал бы это, есть в исходном коде, но его никто не вызывает.- Аргументы с именем уровня в
join,showselectionи командахregisterразрешаются при автодополнении, а не при старте плагина, поэтому уровни, добавленные загрузкой или перезагрузкой, появляются без перезапуска.