Skip to main content

EternalTD Setup

The current EternalTD setup flow is built around Nightbreak-managed content, optional model support through FreeMinecraftModels, and a resource-pack helper command.

Requirements

  • EternalTD 1.7.1
  • Java 21
  • A Paper/Spigot-compatible server on the current 1.21.4 API line

Optional integrations:

  • FreeMinecraftModels for EternalTD's custom models
  • ResourcePackManager if you want EternalTD to register its official resource pack there instead of writing to server.properties
  • Floodgate and LibsDisguises are soft-depends, not setup requirements for the current setup flow

plugin.yml declares exactly four soft-depends: FreeMinecraftModels, LibsDisguises, Floodgate, and ResourcePackManager. ModelEngine is no longer referenced anywhere in the plugin.

What EternalTD Creates

On startup, EternalTD initializes or uses these paths:

plugins/EternalTD/config.yml
plugins/EternalTD/content_packages/
plugins/EternalTD/imports/
plugins/EternalTD/levels/
plugins/EternalTD/waves/
plugins/EternalTD/npcs/
plugins/EternalTD/worlds/

Legacy note:

  • The plugin now treats levels/ and npcs/ as canonical folder names.
  • On startup and reload it will migrate legacy Levels/ and NPCs/ folders into the lowercase paths automatically.
  1. Install EternalTD and start the server once.
  2. Link your Nightbreak account with /nightbreaklogin <token>.
  3. Run /etd downloadall to download all accessible EternalTD packages into plugins/EternalTD/imports.
  4. Run /etd install to apply the official EternalTD resource-pack setup.
  5. Run /etd setup any time you want to browse, enable, disable, or update individual packages.

/nightbreaklogin <token> is part of the shared Nightbreak/MagmaCore account flow, not a command declared in EternalTD's plugin.yml.

The /etd setup menu

/etd setup opens the shared MagmaCore setup menu. Alongside the EternalTD content packages (filtered by Free Content, Premium Packs, and Resources), the menu also exposes these standard MagmaCore controls:

  • a Plugin Update entry that shows the installed vs. latest EternalTD version and downloads a plugin update when one is available,
  • a Recommended Plugins entry that opens the companion-plugin recommendation view (also reachable with /etd recommendedplugins),
  • an Automatic Updates toggle button that flips the nightbreak.autoDownloadPluginUpdates config value on or off,
  • a Download All entry that runs /etd downloadall (plugin update plus all available content).

Spawn and Hub Behavior

config.yml currently includes:

  • setupDone — flag tracking whether first-time setup guidance has been completed (default false).
  • spawnLocations — defaults to etd_spawn,0,65,0,0,0 and is always written to the config. EternalTD only resolves and uses it when the etd_spawn world exists.
  • manageSpawn — defaults to true. Teleports joining players to the EternalTD hub world when it is available.
  • playerGuide — the in-game guide book text.
  • nightbreak.autoDownloadPluginUpdates — defaults to false. Shared MagmaCore setting; when true the plugin automatically downloads available plugin and content updates on startup (used after the next restart). This is also toggleable in-game from the /etd setup menu's "Automatic Updates" button.

When manageSpawn: true and the etd_spawn world exists, joining players are teleported to the configured EternalTD spawn location.

The official hub package is tracked separately from gameplay maps and is installed as the etd_spawn world in the server's world container.

On Paper 26.1 and newer, worlds get migrated out of the world-container root into <level-name>/dimensions/minecraft/<world>. EternalTD looks for etd_spawn in both the legacy root and the migrated location, so a migrated hub is still detected as installed and loaded. Half-migrated leftovers are quarantined before the world is created, because Paper's migration refuses to merge a legacy copy sitting next to a migrated one.

Reloading After Imports

Use /etd reload after manual imports or manual file cleanup.

/etd reload is a full in-place restart of the plugin — it runs EternalTD's disable, load, and enable path — so everything startup does happens again:

  • legacy Levels/ and NPCs/ folders are migrated to lowercase
  • the importer re-runs
  • content packages, waves, levels, world templates, and NPCs are reloaded
  • package update/access state is refreshed
  • the resource-pack helper re-initializes

Two consequences worth knowing:

  • Any level session in progress is torn down, because the reload goes through the plugin's normal shutdown.
  • FreeMinecraftModels is not reloaded by /etd reload. Reload FMM's own content with its own command if you imported model assets by hand.

Players Already Online

manageSpawn normally teleports players to the hub on join, but players who connect while EternalTD is still initializing miss that (the hub world and the join listener only exist once initialization finishes). When initialization completes, EternalTD sweeps everyone already online and teleports anyone who is not already in the hub world to the configured spawn.