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.4API line
Optional integrations:
FreeMinecraftModelsfor EternalTD's custom modelsResourcePackManagerif you want EternalTD to register its official resource pack there instead of writing toserver.propertiesFloodgateandLibsDisguisesare 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/andnpcs/as canonical folder names. - On startup and reload it will migrate legacy
Levels/andNPCs/folders into the lowercase paths automatically.
Recommended First-Time Flow
- Install EternalTD and start the server once.
- Link your Nightbreak account with
/nightbreaklogin <token>. - Run
/etd downloadallto download all accessible EternalTD packages intoplugins/EternalTD/imports. - Run
/etd installto apply the official EternalTD resource-pack setup. - Run
/etd setupany 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.autoDownloadPluginUpdatesconfig 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 (defaultfalse).spawnLocations— defaults toetd_spawn,0,65,0,0,0and is always written to the config. EternalTD only resolves and uses it when theetd_spawnworld exists.manageSpawn— defaults totrue. Teleports joining players to the EternalTD hub world when it is available.playerGuide— the in-game guide book text.nightbreak.autoDownloadPluginUpdates— defaults tofalse. Shared MagmaCore setting; whentruethe plugin automatically downloads available plugin and content updates on startup (used after the next restart). This is also toggleable in-game from the/etd setupmenu'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/andNPCs/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.