Module & Presets

EternalSystem besteht aus einem Jar (Eternal-<Version>.jar) für Spigot/Paper und den Proxy (BungeeCord/Waterfall oder Velocity). Replay, Party, Lobby, Autonicker, Coins usw. sind keine eigenen Plugins mehr, sondern Module in diesem Jar. Jeder Server lädt nur die Module, die für ihn freigeschaltet sind. Ein abgeschaltetes Modul hat keine Befehle (sie antworten mit „Dieses Modul ist auf diesem Server nicht aktiv“), keine Listener und keine Hintergrund-Tasks.

Hinweis

Lizenz: Zur kostenlosen Base gehören gerade core, punishments, reports, lobby. Alle anderen Module brauchen eine EternalSystem-Lizenz. Welche Module frei sind, kann sich ändern – im Dashboard erscheinen gesperrte Module ausgegraut.

Dateien im Plugin-Ordner

Nach dem ersten Start liegt unter plugins/Eternal/:

Datei / OrdnerInhalt
config.ymlAlle Einstellungen, ein Abschnitt pro Modul (replay:, party:, lobby:, economy:, magic:, clan: …)
modules.ymlWelche Module dieser Server lädt (Fallback, siehe unten)
reasons.ymlBann-/Mute-Gründe, Report-Gründe, Verkürzungs-Vorlagen für Anträge
translations/<sprache>.ymlAlle Texte, inkl. Party-, Clan- und Cloud-Meldungen
names.txtNamens-Pool des Autonickers
replays/, lobby/, chatlogs/Daten der jeweiligen Module

Die Dateien werden bei Updates nicht überschrieben.

Wie ein Server seine Module bekommt

  1. Der Server startet und meldet sich per Heartbeat in der Datenbank (eternal_shared_config, Schlüssel server:<name>): Typ, Version, installierte Plugins, aktive Module. Danach alle 5 Minuten erneut.
  2. Ein neuer Server läuft nur mit core (Basis-Befehle).
  3. Im Dashboard unter Server → Module den Server links auswählen, ein Preset wählen und/oder Module einzeln schalten, Speichern. Das Dashboard legt dafür modules.yml:<server> in der Datenbank ab.
  4. Beim nächsten Neustart oder nach /eternal reload übernimmt der Server diese Datenbank-Kopie. Sie gewinnt immer über die lokale Datei.

Ohne Datenbank-Kopie gilt plugins/Eternal/modules.yml (Spigot) bzw. dieselbe Datei im Datenordner des Proxys.

Warnung

Der Proxy ist ein eigener Server mit eigener Modul-Liste. /ban, /mute, /lookup, /history, /modify, /resethistory registriert der Proxy nur mit punishments, /report nur mit reports, /invsee nur mit inventory-sync. Fehlt das Modul auf dem Proxy, landet der Befehl beim Spigot-Server (Einzelserver-Fallback) – das funktioniert, ist im Netzwerk aber nicht gewollt.

modules.yml

# zuerst ein Preset anwenden
preset: core
# danach einzelne Module an-/abschalten
modules: {}
#  market: false
#  magic-items: false

# eigene Presets
# presets:
#   bauserver:
#     modules: [core, punishments, reports, chatlog, inventory-sync, item-tracking, locks]

Ohne preset gilt core. Unbekannte Schlüssel unter modules: werden als eigene Module (siehe unten) behandelt. Die Datei ist zum Teilen gedacht: modules.yml exportieren im Dashboard liefert genau diese Datei, eigene Presets inklusive.

Alle Module

SchlüsselName im DashboardInhaltbraucht
coreBasistp, home, warp, spawn, fly, gamemode, msg, vanish, /settings, /trade, Chat-Kanäle–
punishmentsStrafen/ban, /mute, /history, /lookup, Bann-Screen, Entbannungsanträge–
reportsReports/report, Report-Bearbeitung im Dashboard–
replayReplayAufnahmen zu Reports, Replay ingame und im Browserreports
chatlogChat-LogsNetzwerkweite Chat-/Befehls-Logs, Log-Aufräumen–
socialspySocial Spy/socialspy für private Nachrichtencore
inventory-syncInventar-SyncInventare in der Datenbank, /invsee überall–
item-trackingItem-TrackingItem-IDs, Historie, Kisten-Registry, Statistik, Zuordnung, /deleteiteminventory-sync
locksSperrenItem- und Kisten-Sperren, Auto-Sperren nach Mengenitem-tracking
economyCoins/money, /pay, /baltop, /eco, Vault-Anbindung–
marketAktienmarktAuf Item-Kurse setzen (im Dashboard)economy + item-tracking
shopAdminShopHändler-NPCs, Verkauf/Kauf, feste oder dynamische Preise, Auszahlungs-Kontingenteconomy
magic-itemsMagicItemsElite-/Epic-/Legendary-Werkzeuge mit Fähigkeiten–
perksPerks/perks: Auto-Aufsammeln, XP-Boost, Eile, Fliegen …–
nickAutonickerTarnen mit Zufallsnamen–
partyParty & Freunde/party, /friend, Party-Kopf (nur in der Lobby in der Hotbar)–
clansClans/clan: Tag, Ränge, Einladungen, Bank, Clan-Home, Clan-Chat–
lobbyLobbyNavigator, Cosmetics, Doppelsprung, Lobby-Schutz, Hotbar-Items von Nick/Party–
plotsPlotsCityBuild auf PlotSquared: /plotflags (Flag-GUI), /rand (Plotrand), Districts (Ringe um den Spawn) und /plot merge gegen Coins. PlotSquared selbst kommt aus der Plugin-Bibliothek–
farm-worldsFarmwelten/farm: Farmwelten mit Spawn-Teleport, automatischem Reset, eigenen Perks und Einstellungen–
gamemodesSpielmodiSpielmodi wie TTT: Runden, Karten-Setup (/gsetup), Pässe. Auf Servern eines Spielmodus-Tasks automatisch an (außer ausdrücklich gamemodes: false). Ohne eigene Lizenz, jeder Modus hat seine (gm:<id>)–

Abhängigkeiten werden transitiv geprüft: Wer locks ohne inventory-sync einschaltet, verliert erst item-tracking und dadurch auch locks. Das Dashboard zeigt fehlende Voraussetzungen rot („braucht: …“), der Server loggt „Modul X bleibt aus — braucht Y“.

Tipp

Die Bann-Prüfung beim Join läuft immer, unabhängig vom Modul punishments. Ein gebannter Spieler kommt auch auf einen Server ohne Bann-Befehle nicht drauf.

Presets

PresetModule
corecore
fullalle Module
survivalcore, punishments, reports, replay, chatlog, socialspy, inventory-sync, item-tracking, locks, economy, market, magic-items, perks, nick, party
lobbycore, punishments, reports, chatlog, socialspy, nick, party, lobby
minigamecore, punishments, reports, replay, chatlog, socialspy, nick, party, gamemodes
moderationpunishments, reports, replay, chatlog
economycore, inventory-sync, item-tracking, locks, economy, market
citybuildcore, punishments, reports, replay, chatlog, socialspy, inventory-sync, item-tracking, locks, economy, market, magic-items, perks, nick, party, clans, plots, shop, farm-worlds

clans ist in full und citybuild enthalten – für Survival-Server zusätzlich einschalten.

Eigene Presets entstehen im Dashboard über Aktuelle Auswahl als Preset speichern. Sie landen in modules-presets.yml in der Datenbank und werden in jede exportierte modules.yml eingebettet. Eingebaute Presets lassen sich nicht löschen.

Dashboard: Server → Module

Recht: eternal.web.modules (Standard-Stufe Admin, braucht eternal.web.admin).

  • Server-Liste links: grüner Punkt = online, Tooltip mit „zuletzt gesehen“. Ein durchgestrichener Stift heißt „noch nicht im Dashboard konfiguriert – nutzt lokale modules.yml“.
  • Preset-Auswahl oben rechts setzt alle Schalter neu.
  • Pro Modul: Schalter, Beschreibung, „braucht: …“ (grün erfüllt, rot fehlt), Status-Chip läuft (aktiv auf dem Server) oder ausstehend (gespeichert, aktiv nach Neustart bzw. /eternal reload).
  • Speichern, modules.yml exportieren, Vergessen (entfernt den Server aus der Liste, er meldet sich beim nächsten Start neu).
  • Unten steht, wie viele Module nach Auflösung der Abhängigkeiten aktiv sind.

Zuordnung & eigene Module (Server → Zuordnung)

Jede schaltbare Einheit des Plugins ist ein Feature mit stabilem Schlüssel:

PräfixArtBeispiel
cmd:Befehlcmd:trackitem
listener:Listenerlistener:report-gui
svc:Dienstsvc:item-tracking
task:Hintergrund-Tasktask:money-tags
perms:Rechte-Kategorieperms:inventory
config:Abschnitt in config.ymlconfig:lobby

Die Seite listet alle Features mit dem Modul, in dem sie ausgeliefert werden. Recht: eternal.web.modules.

  • Umhängen: Jedes Feature lässt sich in ein anderes Modul verschieben (eingebaut oder eigen). Der Server schaltet es dann zusammen mit diesem Modul.
  • Eigene Module: Schlüssel (a-z, 0-9, -), Name, Icon, Beschreibung. Ein eigenes Modul ist auf jedem Server aus, bis es unter Module pro Server eingeschaltet wird.
  • Gespeichert wird netzwerkweit als features.txt in der Datenbank; wirksam nach Neustart bzw. /eternal reload.

Befehle anderer Plugins: Ist ein Befehl aus (sein Modul auf diesem Server aus), übernimmt ihn ein anderes Plugin, das denselben Befehl hat – z. B. /msg von Essentials. Eternals Version bleibt als /eternal:msg erreichbar. Ist der Befehl an, gehört er Eternal, auch wenn das andere Plugin später geladen wurde (dessen Version: /<plugin>:<befehl>). Beispiel: cmd:msg und cmd:reply in ein eigenes, ausgeschaltetes Modul hängen → Essentials übernimmt Privatnachrichten.

Warnung

Befehle brauchen oft einen Dienst aus einem anderen Feature. Wer cmd:trackitem in ein eigenes Modul hängt, muss svc:item-tracking ebenfalls einschalten – sonst antwortet der Befehl mit dem Modul-Hinweis.

Einige Beispiele für die Standard-Zuordnung, die nicht offensichtlich sind:

FeatureModul
cmd:settings, cmd:trade, cmd:chat, cmd:teamchat, cmd:group, cmd:globalmutecore
cmd:partychatparty
cmd:deleteitem, cmd:trackitem, cmd:trackchestitem-tracking
cmd:itemlock, cmd:chestlocklocks
task:tab-teams (Rang-Farbe im Tab)nick
task:money-tags (Coins unter dem Namen)economy
config:log-cleanupchatlog

Clearlag (Teil von core)

Entfernt Bodenitems: automatisch im Intervall (Feature task:clearlag) mit Ansage vorher, oder sofort mit /clearlag (Recht eternal.clearlag). /clearlag info zeigt allen die Restzeit. MagicItems, Custom Items und gesperrte Items bleiben liegen; getrackte Items bekommen in ihrer Historie den Eintrag „Clearlag“.

clearlag:
  auto: true
  interval-minutes: 15
  warn-seconds: [60, 10]
  arrows: true          # steckende Pfeile ebenfalls
  xp-orbs: false        # XP-Kugeln ebenfalls
  worlds-excluded: []   # Welten, in denen nichts entfernt wird

Typische Stolperfallen

  • Änderung greift nicht: Module werden nur beim Start und bei /eternal reload gelesen. Im Dashboard steht dann „ausstehend“.
  • Modul bleibt aus: Voraussetzung fehlt (Log-Zeile „bleibt aus — braucht …“).
  • Server taucht nicht auf: Der Heartbeat landet in der Datenbank des Servers. Nur wenn Server und REST-API dieselbe MySQL-Datenbank nutzen, sieht das Dashboard ihn – mit der lokalen H2-Datei (database.type: h2) nicht.
  • Hotbar-Items von Nick und Party fehlen: Namensschild und Party-Kopf gibt es nur auf Servern mit dem Modul lobby. Auf Spielservern funktionieren nur die Befehle. Siehe Lobby-Modul.
  • Gleicher Servername doppelt: server-name in config.yml muss pro Server eindeutig sein und dem Namen im Proxy entsprechen – sonst überschreiben sich Heartbeat und Modul-Liste.