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

Команды 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&#124;all>ЛюбойПовторно загружает контент через обычный аутентифицированный конвейер импорта/перезагрузки, даже если установленная версия уже актуальна. all охватывает каждый пакет, определённый как загруженный; slug Nightbreak (доступен в автодополнении) нацеливается на один пакет и работает, даже если его файлы полностью отсутствуют. Используйте это, чтобы восстановить пакет, файлы которого были удалены или повреждены.
/etd installЛюбойРегистрирует официальный ресурс-пак в ResourcePackManager и запрашивает его перезагрузку, если плагин доступен. Иначе скачивает пак, вычисляет хеш и обновляет server.properties; этот способ требует перезапуска сервера. При ошибке регистрации также используется server.properties.
/etd reloadЛюбойПерезапускает EternalTD на месте (полный цикл disable, load, enable)

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

  • plugin.yml EternalTD объявляет два узла прав, оба с 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.yml EternalTD.
  • 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.yml EternalTD объявляет только корневую команду и права eternaltd.* и eternaltd.match.bypass. Подкоманды регистрируются через менеджер команд во время выполнения.
  • /etd reload перезапускает EternalTD через отключение, загрузку и включение. Миграция папок, импорт, пакеты, волны, уровни, шаблоны миров, NPC и настройка ресурс-пака выполняются заново. FreeMinecraftModels перезагружается не при каждом вызове: если импортёр устанавливает модели или другие файлы в папки FMM при включённом FMM, общее событие установки моделей вызывает перезагрузку контента FMM.
  • Автодополнение имён уровней в join, showselection и командах register читает текущий реестр загруженных уровней. Новые загруженные уровни появляются без пересоздания менеджера команд. При выполнении также проверяется наличие указанного уровня.