Команды EternalTD
EternalTD регистрирует корневую команду:
/eternaltd
/etd
Команды аккаунта Nightbreak, используемые при настройке, — это отдельные команды верхнего уровня, регистрируемые MagmaCore:
/nightbreaklogin [token]
/nightbreaklogout
Обе защищены правом nightbreak.login (default: op). /nightbreaklogin без токена выводит ссылку на nightbreak.io; после того как вы одобрите её там, сервер будет привязан. /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, если оно доступно. Оно применяется после следующего перезапуска, если только nightbreak.applyPluginUpdatesWithoutRestart не применит его раньше |
/etd applypluginupdate | Любой | Применяет загруженное обновление плагина EternalTD без перезапуска. EternalTD отключается и снова включается уже на новом jar-файле, поэтому идущие уровни завершаются. Команда отклоняется, если более нового обновления в ожидании нет, если уже выполняется подмена другого плагина или если от EternalTD зависит плагин другого автора; если новый jar-файл не включается, снова загружается предыдущий |
/etd downloadall | Любой | Загружает обновление плагина EternalTD и весь доступный контент |
/etd downloadallcontent | Любой | Загружает весь доступный контент EternalTD (без обновления плагина) |
/etd updatecontent | Любой | Загружает обновления для устаревшего контента EternalTD |
/etd updateallcontent | Любой | Псевдоним для /etd updatecontent |
/etd forcereinstallcontent <package|all> | Любой | Повторно загружает контент через обычный аутентифицированный конвейер импорта/перезагрузки, даже если установленная версия уже актуальна. all охватывает каждый пакет, определённый как загруженный; slug Nightbreak (доступен в автодополнении) нацеливается на один пакет и работает, даже если его файлы полностью отсутствуют. Используйте это, чтобы восстановить пакет, файлы которого были удалены или повреждены. |
/etd install | Любой | Регистрирует официальный ресурс-пак в ResourcePackManager и запрашивает его перезагрузку, если плагин доступен. Иначе скачивает пак, вычисляет хеш и обновляет server.properties; этот способ требует перезапуска сервера. При ошибке регистрации также используется server.properties. |
/etd reload | Любой | Перезапускает EternalTD на месте (полный цикл disable, load, enable) |
Примечание для администраторов:
plugin.ymlEternalTD объявляет два узла прав, оба сdefault: op.eternaltd.*даёт доступ к админским, настроечным и отладочным командам.eternaltd.match.bypassпозволяет игроку телепортироваться в мир уровня, где идёт игра другого игрока, и не быть оттуда выброшенным (см. Правила матча).- Каждая админская команда сводится к
eternaltd.*:setup,recommendedplugins,downloadall,downloadallcontent,downloadpluginupdate,applypluginupdate,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> | Игрок | Запрашивает создание сессии по загруженному файлу уровня. Шаблон мира копируется вне основного потока. Дождитесь «Created your world! We're ready to go.» перед началом; более раннее сообщение «Joined level!» не подтверждает успех и может появиться даже после ошибки подготовки. Второй запрос во время подготовки отклоняется, как и запрос игрока, который уже участвует в матче, в том числе в матче другого плагина Nightbreak. Отключение игрока или 10 минут без готового мира отменяют подготовку. |
/etd start | Игрок | Запускает первую волну активной сессии |
/etd go | Игрок | Псевдоним для /etd start |
/etd quit | Игрок | Завершает текущую сессию уровня |
/etd stop | Игрок | Псевдоним для /etd quit |
/etd hub | Игрок | Возвращает в настроенную точку появления хаба EternalTD. Активная сессия сначала завершается: состояние игрока восстанавливается, башни удаляются, запрашивается очистка экземпляра мира. Если хаб не настроен, команда останавливается, не завершая сессию. При отклонении телепортации сообщает об ошибке. |
/etd lobby | Игрок | Псевдоним для /etd hub |
Команды отладки и администрирования игрового процесса
| Команда | Отправитель | Текущее назначение |
|---|---|---|
/etd cheat | Игрок | Переключает режим читов и при каждом вызове, включая выключение, устанавливает 10 000 000 валюты и 1 000 000 жизней. Навсегда помечает забег как читерский, исключая его из рекордов. |
/etd setwave <wave> | Игрок | Задаёт сохранённый счётчик волн и помечает забег как читерский. Не заменяет текущих врагов и не запускает указанную волну немедленно; следующий обычный переход использует значение счётчика плюс один. |
Это инструменты отладки сессии. В режиме читов строительство и улучшение не списывают валюту, но проверка достаточности средств всё равно выполняется. Выключение режима не возвращает право на запись рекорда. setwave принимает целое число, не проверяя наличие соответствующей волны.
Команды создания карт
Эти команды всё ещё присутствуют в текущей кодовой базе для выбора этажей и регистрации уровней.
| Команда | Отправитель | Текущее назначение |
|---|---|---|
/etd selectfloor | Игрок | Переключает режим выделения пола. Левый щелчок по блоку задаёт угол 1, правый — угол 2, как и сказано во вводном сообщении команды. Выключение режима сбрасывает выделение. |
/etd selectfloorcoordinates <x1> <y1> <z1> <x2> <y2> <z2> | Игрок | Задаёт углы целыми координатами в текущем мире, вычитая 1 из каждого введённого Y, чтобы выбрать пол ниже. Углы должны иметь одинаковый Y, а длины по X/Z с учётом обоих краёв должны быть кратны 3. |
/etd showselection <level> | Игрок | Проверяет текущее выделение пола и сохраняет его. Показывает над каждым квадратом пола, который зарегистрировало бы выделение, одну частицу END_ROD, видимую только вам. Ничего не записывает в файлы. |
/etd register <level> | Игрок | Записывает в файл уровня по одной записи levelLocations на каждый квадрат пола в текущем выделении, заменяя существующий список, затем очищает выделение. Если выделение недействительно или в нём нет квадратов пола, ничего не записывается, а выделение сохраняется. |
/etd register <level> start | Игрок | Добавляет текущие целочисленные координаты блока игрока в startLocation и сохраняет файл. Требуется активная запись выделения; из Y не вычитается 1. |
/etd register <level> end | Игрок | Добавляет текущие целочисленные координаты блока игрока в endLocation и сохраняет файл. Требуется активная запись выделения; из Y не вычитается 1. |
Список изменений релиза
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.*иeternaltd.match.bypass. Подкоманды регистрируются через менеджер команд во время выполнения./etd reloadперезапускает EternalTD через отключение, загрузку и включение. Миграция папок, импорт, пакеты, волны, уровни, шаблоны миров, NPC и настройка ресурс-пака выполняются заново. FreeMinecraftModels перезагружается не при каждом вызове: если импортёр устанавливает модели или другие файлы в папки FMM при включённом FMM, общее событие установки моделей вызывает перезагрузку контента FMM.- Автодополнение имён уровней в
join,showselectionи командахregisterчитает текущий реестр загруженных уровней. Новые загруженные уровни появляются без пересоздания менеджера команд. При выполнении также проверяется наличие указанного уровня.