Skip to main content

EternalTD Custom Content Packaging

EternalTD still supports filesystem-driven custom content, but the current code expects a specific folder layout and package-tracking model.

Import Root

Manual imports still go through:

plugins/EternalTD/imports/

After importing content manually, run:

/etd reload

Canonical Content Folders

The current plugin scans these lowercase folders:

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

Legacy note:

  • Levels/ and NPCs/ are legacy folder names.
  • EternalTD now migrates them to levels/ and npcs/ during startup and reload.

World Packaging Rules

EternalTD treats the worlds under:

plugins/EternalTD/worlds/

as world templates.

When a player starts a level, EternalTD clones the matching template world into the server world container and runs the session in that cloned copy.

Practical implication:

  • package template worlds under plugins/EternalTD/worlds/
  • do not treat the runtime cloned worlds as the source of truth for packaged content

The official hub world is a special case and is tracked in the server world container directly as:

etd_spawn

What Makes a Package Toggleable

Package toggling in /etd setup only works for packages that expose tracked config files.

The current tracked asset fields are:

  • levelFiles
  • waveFiles
  • npcFiles
  • worldFolders
  • worldContainerFolders
  • markerFileName

In practice:

  • level, wave, and NPC packages can be enabled or disabled by writing isEnabled inside those YAML files
  • shared world-container content and marker-only resource packages are not toggleable in the same way

Package Metadata Fields

The current package config field model supports:

  • isEnabled
  • name
  • description
  • downloadLink
  • version
  • nightbreakSlug
  • levelFiles
  • waveFiles
  • npcFiles
  • worldFolders
  • worldContainerFolders
  • markerFileName
  • category
  • toggleable

If you want custom content to behave like a tracked package in the setup UI, you need package metadata that matches those fields.

Model-Packaging Notes

The current EternalTD Custom Models package is tracked with a marker file rather than normal EternalTD config files.

That means:

  • EternalTD can track whether the shared model pack was downloaded
  • the actual model assets live in the FreeMinecraftModels side of the setup when FMM is installed
  • cleanup is manual and followed by /etd reload

What This Page Does Not Claim

This page documents the current on-disk destinations and tracking model that are verified in the repo.

It does not define a first-party ZIP schema for Nightbreak package archives, because that packaging format is not spelled out in this repo as a standalone public authoring spec.