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).
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]).
| Kanal | Reichweite | Schreiben | Voraussetzung | Chat-Log |
|---|---|---|---|---|
| Global | normaler Chat, serverlokal | Chat oder /chat global | – | CHAT |
| Slow | wie Global, mit Pause pro Spieler (chat.slow-seconds) | /chat slow | – | SLOW |
| Lokal | nur 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 local | eternal.chat.local | LOCAL |
| Team | netzwerkweit an alle mit eternal.team | /tc <Text> oder /chat team | eternal.team | TEAM |
| Clan | netzwerkweit an den eigenen Clan | /cc <Text> oder /chat clan | Modul clans, Clan-Mitglied | CLAN |
| Party | netzwerkweit an die eigene Party | /pc <Text> oder /chat party | Modul party, in einer Party | PARTY |
| Gruppe | netzwerkweit an die private Gruppe | /gr <Text> oder /chat group | Mitglied einer Gruppe | GROUP |
| Privat | /msg, /reply | /msg <Spieler> <Text> | Empfänger hat „Private Nachrichten“ an | MSG |
| 18+ | netzwerkweit an freigeschaltete Spieler, ohne Filter | /18 <Text> oder /18 | Altersfreigabe durch das Team, siehe 18+ Chat | ADULT |
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
| Befehl | Aliase | Recht | Beschreibung |
|---|---|---|---|
/chat [Kanal] | /channel, /channels, /kanal | – | Menü bzw. aktiven Kanal wechseln |
/localchat [on|off] | /lc, /local, /lokal, /umkreis | eternal.chat.local | Lokal-Modus an/aus |
/teamchat <Text> | /tc, /staffchat, /sc | eternal.team | Einmal 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.globalmute | Global und Slow netzwerkweit sperren | |
/colors | /colours, /farben | – | Zeigt die Farbcodes, die man nutzen darf |
/msg <Spieler> <Text> | /tell, /w, /whisper | eternal.base.msg | Private Nachricht |
/reply <Text> | /r | eternal.base.msg | Antworten |
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
| Recht | Standard-Stufe | Wirkung |
|---|---|---|
eternal.chat.owner | Admin | Global-Nachrichten erreichen alle, auch Spieler, die Global ausgeblendet haben |
eternal.chat.globalmute | Admin | /globalmute |
eternal.chat.globalmute.bypass | Team | Schreibt trotz Globalmute |
eternal.chat.slow.bypass | Team | Keine Wartezeit im Slow-Chat |
eternal.base.msg.bypass | Team | Erreicht 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.
| Recht | Standard-Stufe | Codes |
|---|---|---|
eternal.chat.color | Team | &0–&9, &a–&f |
eternal.chat.color.hex | Team | &#RRGGBB, beliebige Farbe (ab 1.16) |
eternal.chat.format | Team | &l fett, &m durchgestrichen, &n unterstrichen, &o kursiv, &r zurücksetzen |
eternal.chat.magic | Admin | &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)
/msgund/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):
| Kategorie | Standard-Aktion | Punkte | Beispiele |
|---|---|---|---|
| Beleidigung | Blocken | 3 | Schimpfnamen, „kill yourself“, „deine Mutter …“ |
| Hassrede / Diskriminierung | Blocken | 6 | rassistische und homophobe Begriffe, NS-Parolen |
| Sexuelles | Blocken | 4 | Porno-, Sex- und Körperbegriffe |
| Unangebrachte Wörter | Zensieren | 1 | Schimpfwörter wie „Scheiße“ |
| Werbung | Blocken | 2 | fremde 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
| Tab | Was du dort machst |
|---|---|
| Regeln | Filter an/aus, was gefiltert wird, Mute-Grenze und Stufen, Caps, Whitelist, Kategorien mit Wörtern und Ausdrücken |
| Testen | Eine Nachricht eintippen und sofort sehen, was der Filter daraus macht – auch mit ungespeicherten Änderungen |
| Treffer | Jeder 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:
- Der Spieler stellt mit
/18 antrag [Notiz]einen Antrag, z. B./18 antrag Discord: name#1. Das Team bekommt ingame Bescheid. - Das Team prüft das Alter außerhalb von Eternal, z. B. per Ausweis im Discord-Ticket.
- Unter Moderation → 18+ Freigaben schaltet das Team frei oder lehnt ab, jeweils mit Notiz. Dort geht es auch ohne Antrag direkt per Name.
- Nach spätestens 30 Sekunden kann der Spieler
/18nutzen. Wer, wann und warum, bleibt gespeichert. Entziehen wirft den Spieler sofort aus dem Kanal.
| Befehl | Wirkung |
|---|---|
/18 | 18+ Chat als Kanal an/aus: normaler Chat geht dann dorthin |
/18 <Text> | eine Nachricht in den 18+ Chat |
/18 an · /18 aus | Kanal an bzw. zurück zum normalen Chat |
/18 antrag [Notiz] | Freischaltung beantragen |
/18 status | Stand 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.
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. Rechteternal.web.chatlogs.sensitive(Standard-Stufe Admin, brauchteternal.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, brauchtcore. Der Befehl ist nur da, wennchatlogodersocialspyauf dem Server läuft. /socialspy [on|off](Alias/spy), Rechteternal.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-formatin 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.teamhat (über den Rang, eine Wildcard wie*oder als OP), sieht und schreibt im Teamchat. Das Recht ist nicht in derplugin.ymlvorbelegt. - 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-networksteht auffalse.