Пакеты контента EternalTD
EternalTD теперь отслеживает официальный контент через набор конфигурации content_packages и предоставляет доступ к этим пакетам через /etd setup.
Категории пакетов
Текущий код использует три категории пакетов:
FREEPREMIUMRESOURCES
Меню настройки в настоящее время отображает их как:
Free ContentPremium PacksResources
Проверенные готовые пакеты
Это готовые пакеты, определённые в текущем репозитории:
| Пакет | Категория | Переключаемый в /etd setup | Отслеживаемые ресурсы |
|---|---|---|---|
EternalTD Hub World | Free | Нет | Папка контейнера миров сервера etd_spawn |
EternalTD Tutorial | Free | Да | tutorial.yml, tutorial_waves.yml, tutorial_npc.yml, etd_tutorial |
Towers of the Grassy Lands | Free | Да | 5 файлов уровней, 1 файл волн, 1 файл NPC, 5 миров |
Towers from the Depths | Premium | Да | 5 файлов уровней, 1 файл волн, 1 файл NPC, 5 миров |
Towers of the Rising Sun | Premium | Да | 5 файлов уровней, 1 файл волн, 1 файл NPC, 5 миров |
EternalTD Custom Models | Resources | Нет | Только файл-маркер, плюс импортированный контент FreeMinecraftModels при наличии |
Жизненный цикл пакета
Браузер пакетов в настоящее время различает:
- не загружен
- не установлен
- установлен
- частично установлен
- устарел и доступен для обновления
- устарел, но недоступен
- требуется доступ
Это состояние вычисляется из отслеживаемых ресурсов на диске, флагов isEnabled внутри отслеживаемых файлов конфигурации и проверок доступа/обновления Nightbreak.
Когда пакет застревает на «частично установлен», значение имеют два правила определения:
-
Папки контейнера миров сопоставляются в обеих раскладках. Paper 26.1 и новее мигрируют миры плагинов в
<level-name>/dimensions/minecraft/<world>. EternalTD считает папку контейнера миров присутствующей, если она существует либо в устаревшем корне, либо в мигрированном расположении, и намеренно проверяет папку, а неlevel.dat— требованиеlevel.datпереключало бы пакет в «не установлен» во время частичной миграции и запускало переустановку, которую Paper затем отказывается объединить. -
У пакетов, отслеживаемых по маркеру, есть резервный вариант по контенту. Пакет, отслеживаемый только по файлу-маркеру, также может быть определён по наличию его папок контента в
plugins/. Когда это происходит, маркер записывается немедленно, чтобы состояние оставалось стабильным дальше. Именно благодаря этому пакет кастомных моделей читается как установленный, когда его модели были импортированы вручную, а не через меню. Список резервных папок определён в коде, а не читается из YAML пакета. -
Отслеживаемые файлы уровней, волн и NPC сопоставляются по имени файла в любом месте внутри
levels/,waves/иnpcs/, поэтому пакеты, поставляющие свои файлы в подпапке, всё равно определяются. -
Towers of the Rising Sunранее отслеживал свой файл волн какtowers_of_the_rising_sun.yml, тогда как пак на самом деле поставляетtowers_of_the_rising_sun_waves.yml, из-за чего он постоянно читался как не полностью установленный. Отслеживаемое имя теперь исправляется автоматически и записывается обратно в конфиг пакета при загрузке — ручное исправление не требуется.
Переключаемые и общие пакеты
Переключаемые пакеты работают путём переключения isEnabled внутри отслеживаемых файлов конфигурации в:
plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/
Общие пакеты не работают как обычные переключатели:
- Мир хаба рассматривается как общий установленный контент.
- Пакет пользовательских моделей рассматривается как общий ресурсный контент.
Для этих пакетов меню настройки предлагает удалить файлы вручную, а затем выполнить /etd reload.
Массовые операции
В настоящее время реализованы следующие массовые операции с контентом:
/etd downloadall— загружает обновление плагина EternalTD и весь доступный контент/etd downloadallcontent— загружает весь доступный контент (без обновления плагина)/etd updatecontent(псевдоним/etd updateallcontent) — загружает только устаревший контент
Команды загрузки/обновления контента:
- требуют привязанный токен Nightbreak
- загружают в
plugins/EternalTD/imports - пропускают пакеты, которые недоступны или уже актуальны
- автоматически перезагружают EternalTD после успешных загрузок
/etd downloadall дополнительно сначала проверяет и загружает обновление плагина; если токен не привязан или аутентификация не удалась, выполнение останавливается до этапа загрузки контента.
Практические замечания
- Проверки пакетов выполняют дедупликацию по slug Nightbreak перед массовой загрузкой/обновлением.
- Интерфейс настройки обновляет информацию о контенте и доступе с задержкой вместо обращения к Nightbreak при каждом открытии.
- Пакет пользовательских моделей записывает маркер в
plugins/EternalTD/content_markers/, чтобы EternalTD мог отслеживать, что общий ресурсный пакет был загружен.