Saltar al contenido principal

Paquetes de contenido de EternalTD

EternalTD ahora rastrea el contenido oficial a través de un conjunto de configuración content_packages y expone esos paquetes a través de /etd setup.

Categorías de paquetes

El código actual utiliza tres categorías de paquetes:

  • FREE
  • PREMIUM
  • RESOURCES

El menú de configuración actualmente las muestra como:

  • Free Content
  • Premium Packs
  • Resources

Paquetes prefabricados verificados

Estos son los paquetes prefabricados actualmente definidos en el repositorio:

PaqueteCategoríaConmutable en /etd setupAssets rastreados
EternalTD Hub WorldFreeNoCarpeta del contenedor de mundos del servidor etd_spawn
EternalTD TutorialFreetutorial.yml, tutorial_waves.yml, tutorial_npc.yml, etd_tutorial
Towers of the Grassy LandsFree5 archivos de nivel, 1 archivo de oleadas, 1 archivo de NPC, 5 mundos
Towers from the DepthsPremium5 archivos de nivel, 1 archivo de oleadas, 1 archivo de NPC, 5 mundos
Towers of the Rising SunPremium5 archivos de nivel, 1 archivo de oleadas, 1 archivo de NPC, 5 mundos
EternalTD Custom ModelsResourcesNoSolo archivo marcador, más contenido importado de FreeMinecraftModels cuando está presente

Ciclo de vida del paquete

El explorador de paquetes actualmente distingue entre:

  • no descargado
  • no instalado
  • instalado
  • parcialmente instalado
  • desactualizado y actualizable
  • desactualizado pero inaccesible
  • necesita acceso

Ese estado se calcula a partir de los assets rastreados en disco, los flags isEnabled dentro de los archivos de configuración rastreados y las verificaciones de acceso/actualización de Nightbreak.

Hay dos reglas de detección que importan cuando un paquete parece atascado en «parcialmente instalado»:

  • Las carpetas del contenedor de mundos se buscan en ambas disposiciones. Paper 26.1 y posteriores migran los mundos de plugins a <level-name>/dimensions/minecraft/<world>. EternalTD cuenta una carpeta del contenedor de mundos como presente si existe en la raíz antigua o en la ubicación migrada, y comprueba deliberadamente la carpeta, no level.dat: exigir level.dat haría que el paquete pasara a «no instalado» durante una migración parcial y provocaría una reinstalación que Paper después se niega a fusionar.
  • Los paquetes rastreados por marcador tienen una alternativa de contenido. Un paquete rastreado solo por un archivo marcador también puede detectarse por la presencia de sus carpetas de contenido dentro de plugins/. Cuando eso ocurre, el marcador se escribe de inmediato para que el estado se mantenga estable después. Esto es lo que hace que el paquete de modelos personalizados figure como instalado cuando sus modelos se importaron a mano en lugar de a través del menú. La lista de carpetas de reserva está definida en código, no se lee del YAML del paquete.

Paquetes conmutables vs. compartidos

Los paquetes conmutables funcionan cambiando isEnabled dentro de los archivos de configuración rastreados bajo:

plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/

Los paquetes compartidos no se comportan como conmutadores normales:

  • El mundo hub se trata como contenido instalado compartido.
  • El paquete de modelos personalizados se trata como contenido de recursos compartido.

Para esos paquetes, el menú de configuración te indica que elimines los archivos manualmente y luego ejecutes /etd reload.

Operaciones masivas

Las operaciones masivas de contenido actualmente implementadas son:

  • /etd downloadall — descarga la actualización del plugin EternalTD y todo el contenido disponible
  • /etd downloadallcontent — descarga todo el contenido disponible (sin actualización del plugin)
  • /etd updatecontent (alias /etd updateallcontent) — descarga únicamente el contenido desactualizado

Los comandos de descarga/actualización de contenido:

  • requieren un token de Nightbreak vinculado
  • descargan en plugins/EternalTD/imports
  • omiten paquetes que son inaccesibles o ya están actualizados
  • recargan EternalTD automáticamente después de descargas exitosas

/etd downloadall además comprueba y descarga primero una actualización del plugin; si no hay ningún token vinculado o falla la autenticación, se detiene antes del paso de contenido.

Notas prácticas

  • Las verificaciones de paquetes se deduplican por slug de Nightbreak antes de la descarga/actualización masiva.
  • La interfaz de configuración actualiza la información de contenido y acceso con un tiempo de espera en lugar de consultar Nightbreak en cada apertura.
  • El paquete de modelos personalizados escribe un marcador bajo plugins/EternalTD/content_markers/ para que EternalTD pueda rastrear que el paquete de recursos compartido fue descargado.
  • Los archivos de nivel, oleada y NPC rastreados se buscan por nombre de archivo en cualquier punto por debajo de levels/, waves/ y npcs/, así que los paquetes que distribuyen sus archivos en una subcarpeta también se detectan.
  • Towers of the Rising Sun rastreaba antes su archivo de oleadas como towers_of_the_rising_sun.yml mientras que el paquete realmente incluye towers_of_the_rising_sun_waves.yml, lo que hacía que figurase permanentemente como no completamente instalado. El nombre rastreado ahora se corrige automáticamente y se vuelve a escribir en la configuración del paquete al cargar: no hace falta ninguna corrección manual.