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

Модели и набор ресурсов EternalTD

EternalTD использует FreeMinecraftModels для моделей, а /etd install — для настройки распространения набора ресурсов.

FreeMinecraftModels​

FreeMinecraftModels является мягкой зависимостью.

  • EternalTD загружается и без него.
  • При его наличии EternalTD может заменять стандартные тела башен статическими моделями FMM. Если модель не найдена, записывается предупреждение и стандартное тело остаётся на месте.
  • При его отсутствии используются стандартные тела башен без блокировки запуска. Флаг интеграции проверяет присутствие плагина: отключённая или несовместимая установка FMM не равнозначна его отсутствию.

Текущий общий пакет моделей:

  • EternalTD Custom Models

Этот пакет загружается через поток контента EternalTD и описан в коде как контент, который импортируется в FreeMinecraftModels, когда FMM доступен.

Учёт пакетов EternalTD также принимает любую из этих непустых папок FMM за установленный контент:

plugins/FreeMinecraftModels/models/EternalTD default towers/
plugins/FreeMinecraftModels/Models/EternalTD default towers/

Вариант с заглавной буквы — старое имя папки. Обнаружение любой непустой папки делает контент установленным для учёта и запускает попытку записи plugins/EternalTD/content_markers/eternaltd_custom_models.marker; ошибка записи попадает в журнал. Существующий маркер тоже учитывается, даже если модели позднее удалены. Ни одна из этих проверок не проверяет содержимое моделей и не доказывает их успешную загрузку.

Что делает /etd reload для моделей​

/etd reload перезапускает EternalTD внутри сервера и обрабатывает ожидающие импорты. Когда общий импортёр устанавливает модели или другие файлы в папки FMM (например, scripts) и FMM включён, уведомление об установке вызывает перезагрузку импортированного контента FMM. Это условный вызов, а не перезагрузка FMM при каждом /etd reload. Отдельный метод переадресации в самом EternalTD не имеет вызывающего кода.

Если вы редактируете или копируете файлы прямо в папки FMM, используйте собственную команду перезагрузки FMM. Проверьте журналы и реальную модель в игре: одного маркера пакета недостаточно.

/etd install​

/etd install не загружает пакет моделей. Он применяет официальные настройки распространения набора ресурсов EternalTD.

Текущий официальный URL набора ресурсов:

https://www.magmaguy.com/downloads/eternaltd_resource_pack.zip

Если ResourcePackManager установлен​

Если ResourcePackManager включён, EternalTD регистрирует официальный набор и запрашивает перезагрузку состояния наборов.

В этом режиме:

  • EternalTD не записывает URL набора в server.properties
  • ResourcePackManager управляет распространением среди игроков
  • EternalTD регистрирует /etd reload как команду последующей перезагрузки

Сообщение о регистрации подтверждает вызовы API, но не доставку клиенту. При запуске EternalTD лишь считает включённый ResourcePackManager активной настройкой набора ресурсов; регистрация при этом не выполняется. Запросите её через /etd install и проверьте набор с подключённым игроком.

Если ResourcePackManager недоступен или регистрация не удалась​

Если ResourcePackManager отключён, отсутствует или регистрация через API вызывает ошибку, EternalTD редактирует server.properties напрямую.

Он записывает:

  • resource-pack
  • resource-pack-sha1

Перед изменением любого свойства EternalTD скачивает набор и вычисляет его SHA1 по мере поступления данных, не сохраняя набор на диск. Для загрузки используется тайм-аут подключения 10 секунд и тайм-аут чтения 30 секунд. При сбое загрузки или расчёта хеша server.properties остаётся без изменений. При успехе оба значения записываются вместе через временный файл с атомарной заменой, если её поддерживает операционная система. Если оба значения уже совпадают, файл не перезаписывается.

В этом резервном режиме команда сообщает о необходимости перезапуска сервера для применения новых настроек набора.

Проверка обновления SHA1​

Если EternalTD использует путь server.properties вместо ResourcePackManager, при запуске (и при /etd reload) также проверяется, изменился ли SHA1 официального набора ресурсов.

Проверка выполняется, только если resource-pack в точности равен официальному URL EternalTD, указанному выше; набор с любого другого URL не затрагивается. Если хеш изменился, EternalTD записывает новый resource-pack-sha1, предварительно убедившись, что в resource-pack всё ещё указан официальный URL. Об изменении не объявляется: сервер отправит игрокам новый хеш после следующего перезапуска. Если запись пропущена или не удалась, в консоль записывается, что контрольная сумма не обновлена. При включённом ResourcePackManager эта ветка запуска пропускается.

Поведение предупреждения оператора​

Когда все следующие условия выполняются:

  • FreeMinecraftModels установлен
  • подключающийся игрок является оператором
  • EternalTD не обнаруживает активную настройку набора ресурсов

EternalTD планирует предупреждение через пять секунд, если игрок к тому моменту ещё действителен. В нём указаны команды:

  • /etd install
  • /etd initialize (открывает меню начальной настройки; требуется eternaltd.*)
  • /etd setup

Обнаружение означает только, что ResourcePackManager включён или в server.properties есть непустое значение resource-pack. Принятие клиентом и наличие ресурсов EternalTD в наборе не проверяются. Предупреждение описывает путь через server.properties, но /etd install всё равно сначала пробует ResourcePackManager.

Примечания по очистке​

Пакет пользовательских моделей рассматривается как общий ресурсный контент, а не как обычный переключаемый пакет.

Если вы хотите его удалить:

  1. Удалите нужные импортированные модели, проверив текущие и старые папки FMM.
  2. Удалите plugins/EternalTD/content_markers/eternaltd_custom_models.marker, если пакет больше не должен считаться установленным. Оставшаяся непустая резервная папка восстановит этот статус при следующей проверке.
  3. Перезагрузите FMM, чтобы применить прямое удаление файлов, затем выполните /etd reload. При необходимости проверьте /fmm setup. Эти действия не удаляют регистрацию набора ресурсов или настройки в server.properties.