Chat, Kanäle, Chat-Logs & Social Spy

Diese Seite deckt drei Bereiche ab: die Chat-Kanäle (Teil von core), die netzwerkweiten Chat-Logs (Modul chatlog) und Social Spy (Modul socialspy).

Hinweis

Lizenz: Die Chat-Kanäle gehören zu core und damit standardmäßig zur kostenlosen Base (wie punishments, reports, lobby). chatlog und socialspy brauchen eine EternalSystem-Lizenz. Welche Module frei sind, kann sich ändern – gesperrte Module zeigt das Dashboard ausgegraut.

Chat-Kanäle

Jeder Spieler hat einen aktiven Kanal zum Schreiben (normaler Chat geht dorthin) und beliebig viele Kanäle, die er empfängt. /chat öffnet das Kanal-Menü: Linksklick = in diesem Kanal schreiben, Rechtsklick = Empfang an/aus. Jede Nachricht trägt ihren Kanal-Tag ([G], [Slow], [Team], [Clan], [Party], [Gruppe], [MSG]).

KanalReichweiteSchreibenVoraussetzungChat-Log
Globalnormaler Chat, serverlokalChat oder /chat global–CHAT
Slowwie Global, mit Pause pro Spieler (chat.slow-seconds)/chat slow–SLOW
Lokalnur Spieler im Umkreis (chat.local.radius, Standard 20 Blöcke, gleiche Welt). Solange Lokal aktiv ist, sind alle anderen Kanäle stumm/localchat oder /chat localeternal.chat.localLOCAL
Teamnetzwerkweit an alle mit eternal.team/tc <Text> oder /chat teameternal.teamTEAM
Clannetzwerkweit an den eigenen Clan/cc <Text> oder /chat clanModul clans, Clan-MitgliedCLAN
Partynetzwerkweit an die eigene Party/pc <Text> oder /chat partyModul party, in einer PartyPARTY
Gruppenetzwerkweit an die private Gruppe/gr <Text> oder /chat groupMitglied einer GruppeGROUP
Privat/msg, /reply/msg <Spieler> <Text>Empfänger hat „Private Nachrichten“ anMSG
18+netzwerkweit an freigeschaltete Spieler, ohne Filter/18 <Text> oder /18Altersfreigabe durch das Team, siehe 18+ ChatADULT

Kurzformen für /chat <Kanal>: g, s, l/lc/lokal, t/tc/staff, c/cc, p/pc, gr.

Lokal-Chat

/localchat (Aliase /lc, /local, /lokal, /umkreis) schaltet den Lokal-Modus an und beim zweiten Mal wieder aus; /localchat on|off setzt ihn fest. Beim Verlassen schreibst du wieder in dem Kanal, den du vorher aktiv hattest. Im Kanal-Menü steht Lokal neben Global und Slow, ein Linksklick schaltet ihn ebenso an und aus.

chat:
  local:
    radius: 20          # Blöcke
    keep-private: true  # /msg kommt im Lokal-Modus trotzdem an (false = wirklich alles aus)

Owner-Nachrichten im Global-Kanal (eternal.chat.owner) erreichen weiterhin alle, auch Spieler im Lokal-Modus. Hört niemand im Umkreis mit, bekommt der Schreiber einen Hinweis.

Befehle

BefehlAliaseRechtBeschreibung
/chat [Kanal]/channel, /channels, /kanal–Menü bzw. aktiven Kanal wechseln
/localchat [on|off]/lc, /local, /lokal, /umkreiseternal.chat.localLokal-Modus an/aus
/teamchat <Text>/tc, /staffchat, /sceternal.teamEinmal in den Teamchat schreiben
/partychat <Text>/pc–Einmal in den Party-Chat schreiben
/groupchat <Text>/gr–Einmal in den Gruppen-Chat schreiben
/group create [Name]/gruppe–Private Gruppe anlegen
/group invite <Spieler>–Klickbare Einladung, netzwerkweit
/group join <Gruppe> · /group leave · /group list–Beitreten (setzt den aktiven Kanal auf Gruppe), verlassen, auflisten
/globalmute [on|off]eternal.chat.globalmuteGlobal und Slow netzwerkweit sperren
/colors/colours, /farben–Zeigt die Farbcodes, die man nutzen darf
/msg <Spieler> <Text>/tell, /w, /whispereternal.base.msgPrivate Nachricht
/reply <Text>/reternal.base.msgAntworten

Spieler im Vanish gelten für alle, die sie nicht sehen können, als offline: /msg, /tell, /reply, /pay und die Tab-Vervollständigung melden „Spieler nicht gefunden“.

Sonderrechte

RechtStandard-StufeWirkung
eternal.chat.ownerAdminGlobal-Nachrichten erreichen alle, auch Spieler, die Global ausgeblendet haben
eternal.chat.globalmuteAdmin/globalmute
eternal.chat.globalmute.bypassTeamSchreibt trotz Globalmute
eternal.chat.slow.bypassTeamKeine Wartezeit im Slow-Chat
eternal.base.msg.bypassTeamErreicht per /msg auch Spieler, die private Nachrichten abgeschaltet haben

Der Globalmute-Schalter liegt in der Datenbank; alle Server übernehmen ihn innerhalb von 10 Sekunden.

config.yml

chat:
  # Sekunden zwischen zwei Nachrichten im Slow-Chat
  slow-seconds: 10
  # Chat-Format mit Rang aus Eternal Perms.
  # Platzhalter: {prefix} {suffix} {color} {name} {group} {message}
  # Leer lassen, wenn ein anderes Chat-Plugin das Format setzen soll.
  format: "{prefix}{color}{name}{suffix} &8» &7{message}"

Kanal-Tags und Formate stehen in translations/<sprache>.yml: chat-tag-*, chat-team-format, chat-party-format, chat-group-format, clan-chat-format. Der Clan-Tag ([TAG]) steht im Global- und Slow-Chat vor dem Namen.

Farben im Chat

Farbcodes in Chat, /msg, Team-, Clan-, Party- und Gruppenchat wirken nur mit Recht – sonst bleibt &a als Text stehen. /colors (/farben) zeigt jedem, was er nutzen darf, jeweils in der Farbe.

RechtStandard-StufeCodes
eternal.chat.colorTeam&0–&9, &a–&f
eternal.chat.color.hexTeam&#RRGGBB, beliebige Farbe (ab 1.16)
eternal.chat.formatTeam&l fett, &m durchgestrichen, &n unterstrichen, &o kursiv, &r zurücksetzen
eternal.chat.magicAdmin&k wechselnde Zeichen

Abschaltbar als Feature listener:chat-colors (Server → Zuordnung).

Chat-Format, Tab- und Anzeigename

Das Chat-Format aus chat.format, der Rang im Tab und der Anzeigename kommen aus Eternal Perms. Ist Eternal Perms nicht lizenziert, setzt Eternal davon nichts – dann formatiert, wer sonst da ist (CloudNet-Chat, LuckPerms mit einem Chat-Plugin, Essentials …). Mute, Globalmute, Kanäle und Farben bleiben trotzdem aktiv.

Chatfilter

Der Chatfilter blockt oder zensiert automatisch Beleidigungen, Hassrede, Sexuelles, Schimpfwörter und Werbung. Er prüft:

  • den Chat (Global, Slow, Lokal)
  • /msg und /reply
  • Team-, Clan-, Party- und Gruppen-Chat
  • Schilder und Bücher

Einstellen kannst du alles im Dashboard unter Moderation → Chatfilter. Der 18+ Chat wird nie gefiltert.

Kategorien (alle änderbar, eigene lassen sich anlegen):

KategorieStandard-AktionPunkteBeispiele
BeleidigungBlocken3Schimpfnamen, „kill yourself“, „deine Mutter …“
Hassrede / DiskriminierungBlocken6rassistische und homophobe Begriffe, NS-Parolen
SexuellesBlocken4Porno-, Sex- und Körperbegriffe
Unangebrachte WörterZensieren1Schimpfwörter wie „Scheiße“
WerbungBlocken2fremde Domains, IP-Adressen, Discord-Einladungen

Aktionen:

  • Blocken: Die Nachricht geht nicht raus, der Spieler sieht warum.
  • Zensieren: Das Wort wird zu ****, der Rest geht raus.
  • Nur melden: Die Nachricht geht raus, das Team sieht den Treffer.

Der Filter erkennt die üblichen Tricks:

  • Groß/klein und Umlaute
  • Zahlen statt Buchstaben (4rschl0ch)
  • wiederholte Buchstaben (aaarschloch)
  • getrennte Buchstaben (a r s c h, a.r.s.c.h)

Ein Eintrag wort trifft das ganze Wort, wort* den Anfang, *wort das Ende und *wort* jede Stelle. Wörter auf der Whitelist (z. B. dein Servername) treffen nie. Für Links und IPs gibt es reguläre Ausdrücke.

Caps: Eine Nachricht aus fast nur Großbuchstaben wird kleingeschrieben (Standard: mehr als 70 %, ab 8 Buchstaben).

Punkte und Auto-Mute

Jeder Treffer gibt die Punkte seiner Kategorie. Kommen innerhalb von 60 Minuten 10 Punkte zusammen, wird der Spieler automatisch gemutet:

  • 1\. Mal 10 Minuten
  • 2\. Mal 1 Stunde
  • 3\. Mal 1 Tag
  • danach jedes Mal 7 Tage

Stufen, Grenze und Zeitraum stellst du im Dashboard ein (10m, 1h, 1d, 7d, perm). Nach einem Auto-Mute zählen die Punkte von vorn. Der Mute steht wie jeder andere unter Aktive Strafen, Grund „Chatfilter: …“, Aussteller „Chatfilter“.

Ein Mute gilt jetzt auch in Team-, Clan-, Party-, Gruppen- und 18+ Chat.

Dashboard: Moderation → Chatfilter

TabWas du dort machst
RegelnFilter an/aus, was gefiltert wird, Mute-Grenze und Stufen, Caps, Whitelist, Kategorien mit Wörtern und Ausdrücken
TestenEine Nachricht eintippen und sofort sehen, was der Filter daraus macht – auch mit ungespeicherten Änderungen
TrefferJeder Treffer und jeder Auto-Mute mit Spieler, Kanal, Server und der Original-Nachricht

Gespeichert gilt nach spätestens 30 Sekunden auf allen Servern.

18+ Chat

Ein netzwerkweiter Kanal ohne Filter. Hinein kommt nur, wessen Alter das Team geprüft hat:

  1. Der Spieler stellt mit /18 antrag [Notiz] einen Antrag, z. B. /18 antrag Discord: name#1. Das Team bekommt ingame Bescheid.
  2. Das Team prüft das Alter außerhalb von Eternal, z. B. per Ausweis im Discord-Ticket.
  3. Unter Moderation → 18+ Freigaben schaltet das Team frei oder lehnt ab, jeweils mit Notiz. Dort geht es auch ohne Antrag direkt per Name.
  4. Nach spätestens 30 Sekunden kann der Spieler /18 nutzen. Wer, wann und warum, bleibt gespeichert. Entziehen wirft den Spieler sofort aus dem Kanal.
BefehlWirkung
/1818+ Chat als Kanal an/aus: normaler Chat geht dann dorthin
/18 <Text>eine Nachricht in den 18+ Chat
/18 an · /18 ausKanal an bzw. zurück zum normalen Chat
/18 antrag [Notiz]Freischaltung beantragen
/18 statusStand des Antrags

Aliase: /ue18, /adult; im Kanal-Menü (/chat) steht der 18+ Chat ebenfalls. Nachrichten landen im Chat-Log als ADULT (Filter „18+“).

Sprache pro Spieler

Jeder Spieler kann die Sprache aller Plugin-Nachrichten selbst wählen: /settings lang <server|auto|de|en|…>. Details auf der Seite Einstellungen.

Chat-Logs (Modul chatlog)

Das Modul speichert Chat, Befehle und private Nachrichten netzwerkweit in der Datenbank und zusätzlich in Dateien pro Server. Es liefert außerdem den Chat-Verlauf zu Reports.

  • Modul-Schlüssel: chatlog (keine Abhängigkeiten). Auf allen Servern einschalten, deren Chat geloggt werden soll, auch auf dem Proxy.
  • Auch für das Aufräumen alter Server-Logs (log-cleanup) zuständig.
chatlog:
  enabled: true
  directory: "chatlogs"               # relativ zu plugins/Eternal/
  log-chat: true
  log-commands: true
  report-context-before: 10
  report-context-after: 10
  report-context-window-seconds: 120
  flush-interval-ticks: 40            # Schreib-Takt (~2 s)
  sensitive-commands:                 # erstes Wort ohne Slash, Groß/klein egal
    - "login"
    - "l"
    - "register"
    - "reg"
    - "changepassword"
    - "changepass"
    - "2fa"
    - "authme"
  socialspy-network: true

Befehle aus sensitive-commands landen getrennt und sind im Dashboard nur mit eigenem Recht sichtbar.

Warnung

l steht standardmäßig in sensitive-commands (Login-Plugins). Mit Eternal Cloud ist /l aber auch ein Proxy-Befehl für die Lobby – diese Aufrufe landen dann ebenfalls im sensiblen Bereich.

Log-Aufräumen

Läuft auf Spigot und Proxy und löscht rotierte Server-Logs:

log-cleanup:
  enabled: true
  directory: logs              # relativ zum Server-Ordner
  max-age-days: 7
  interval-minutes: 120
  patterns: ["*.log.gz", "*.log", "proxy.log.*"]
  keep: ["latest.log"]

Dashboard: Moderation → Chat-Logs

Recht: eternal.web.chatlogs (Standard-Stufe Team).

  • Filter: Server, Freitext-Suche, Zeitraum (Von/Bis) und Arten CHAT, COMMAND, MSG, GROUP, TEAM, CLAN, PARTY, SLOW.
  • Sensibler Modus: zeigt nur die Befehle aus sensitive-commands. Recht eternal.web.chatlogs.sensitive (Standard-Stufe Admin, braucht eternal.web.chatlogs).
  • Im Spielerprofil (eternal.web.player.view) gibt es den Chat-Verlauf pro Sitzung.

Nicknamen im Log

Log-Zeilen speichern immer den echten Namen. War der Spieler genickt, steht der angezeigte Name zusätzlich dabei; das Dashboard zeigt ihn als lila Chip „als Nickname“ hinter dem Namen, die Dateien als Name (als Nick). Die Suche findet auch Nicknamen. Jede Nick-Phase steht außerdem unter Moderation → Nicknamen (Recht eternal.web.nicks). Siehe Autonicker.

Social Spy (Modul socialspy)

Teammitglieder lesen private Nachrichten (/msg, /reply) netzwerkweit mit.

  • Modul-Schlüssel: socialspy, braucht core. Der Befehl ist nur da, wenn chatlog oder socialspy auf dem Server läuft.
  • /socialspy [on|off] (Alias /spy), Recht eternal.socialspy (Standard-Stufe Admin). Ohne Argument wird umgeschaltet.
  • Der Zustand wird gespeichert und an den Proxy gemeldet; mit chatlog.socialspy-network: true (Standard) sieht man Nachrichten aller Server.
  • Alternativ in /settings → Social Spy (nur für Teammitglieder mit dem Recht sichtbar).
  • Format: Schlüssel socialspy-format in den Übersetzungen.

Typische Stolperfallen

  • Chat doppelt formatiert: Ein anderes Chat-Plugin setzt ebenfalls das Format. Ohne Eternal-Perms-Lizenz formatiert Eternal nicht; mit Lizenz chat.format: "" setzen, wenn das andere Plugin gewinnen soll.
  • Teamchat leer: Nur wer eternal.team hat (über den Rang, eine Wildcard wie * oder als OP), sieht und schreibt im Teamchat. Das Recht ist nicht in der plugin.yml vorbelegt.
  • Globalmute wirkt nicht sofort: bis zu 10 s Verzögerung pro Server.
  • Keine Chat-Logs im Dashboard: Server und REST-API müssen dieselbe MySQL-Datenbank nutzen.
  • Social Spy sieht nur den eigenen Server: chatlog.socialspy-network steht auf false.