Chat Reactor
Der ChatReactor ist ein Event-System, das auf Chat-Nachrichten reagiert und verschiedene Aktionen ausführen kann, basierend auf definierten Bedingungen und Textmustern.
Event Aufbau
| System-Name | Art | Validierung | Data-Typ | Beschreibung |
|---|---|---|---|---|
| systemname | String | Erforderlich | Text | Eindeutiger Systemname für den ChatReactor |
| displayname | String | Erforderlich | Text | Anzeigename für die Benutzeroberfläche |
| minimalReqVersion | Float | Erforderlich | Nummer | Mindestversion des Plugins, die für diesen ChatReactor erforderlich ist |
| comment | String | Optional | Text | Kommentar oder Beschreibung für den ChatReactor |
| conditions | JsonArray | Optional | Array | Liste von Bedingungen, die erfüllt sein müssen |
| variables | JsonArray | Optional | Array | Liste von Variablen, die verwendet werden |
| actions | JsonArray | Erforderlich | Array | Liste von Aktionen, die ausgeführt werden sollen |
| searchText | String | Erforderlich | Text | Der Text, nach dem in Chat-Nachrichten gesucht wird |
| textIsWithColorCodes | Boolean | Optional | Boolean | Bestimmt, ob Farbcodes im Text berücksichtigt werden (Standard: false) |
| textIsCaseSensitive | Boolean | Optional | Boolean | Bestimmt, ob die Suche case-sensitive ist (Standard: false) |
| chatReactorMode | Enum | Erforderlich | ChatReactorMode | Suchmodus für den Text |
SuchText / Chat mit Farbcodes
Der searchText kann Farbcodes enthalten, die in den Chat-Nachrichten berücksichtigt werden. Um Farbcodes zu aktivieren, muss die Option textIsWithColorCodes auf true gesetzt werden.
Groß und Kleinschreibung beachten
Die Groß- und Kleinschreibung kann die Suche beeinflussen. Mit der Option textIsCaseSensitive kann festgelegt werden, ob die Suche zwischen Groß- und Kleinschreibung unterscheidet. Standardmäßig ist diese Option deaktiviert.
Beispiel: textIsCaseSensitive == false
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "spieler"
- Ergebnis: ✅ Trifft zu - Der Text enthält "spieler" (case-insensitive)
Beispiel: textIsCaseSensitive == true
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "spieler"
- Ergebnis: ❌ Trifft nicht zu - Der Text enthält nicht "spieler" (case-sensitive)
Suchtext
Der searchText ist der Text, nach dem in den Chat-Nachrichten gesucht wird. Er kann verschiedene Muster und Bedingungen enthalten, um die Suche zu verfeinern.
ChatReactor Modi
Der chatReactorMode bestimmt, wie der searchText mit den Chat-Nachrichten verglichen wird:
STARTWITH
Die Chat-Nachricht muss mit dem angegebenen searchText beginnen.
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "Spieler"
- Ergebnis: ✅ Trifft zu - Der Text beginnt mit "Spieler"
- SearchText: "TestSpielername"
- Ergebnis: ❌ Trifft nicht zu - Der Text beginnt nicht mit "TestSpielername"
CONTAINS
Die Chat-Nachricht muss den searchText irgendwo enthalten.
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "gekickt"
- Ergebnis: ✅ Trifft zu - Der Text enthält "gekickt"
- SearchText: "TestSpielername"
- Ergebnis: ✅ Trifft zu - Der Text enthält "TestSpielername"
- SearchText: "gebannt"
- Ergebnis: ❌ Trifft nicht zu - Der Text enthält nicht "gebannt"
NOTCONTAINS
Die Chat-Nachricht darf den searchText nicht enthalten.
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "gebannt"
- Ergebnis: ✅ Trifft zu - Der Text enthält nicht "gebannt"
- SearchText: "gekickt"
- Ergebnis: ❌ Trifft nicht zu - Der Text enthält "gekickt"
ENDSWITH
Die Chat-Nachricht muss mit dem searchText enden.
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "gekickt"
- Ergebnis: ✅ Trifft zu - Der Text endet mit "gekickt"
- SearchText: "Grundstück"
- Ergebnis: ❌ Trifft nicht zu - Der Text endet nicht mit "Grundstück"
EQUALS
Die Chat-Nachricht muss exakt dem searchText entsprechen.
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "Spieler TestSpielername wurde von Grundstück gekickt"
- Ergebnis: ✅ Trifft zu - Exakte Übereinstimmung
- SearchText: "Spieler TestSpielername wurde gekickt"
- Ergebnis: ❌ Trifft nicht zu - Nicht exakt identisch (fehlt "von Grundstück")
NOTEQUALS
Die Chat-Nachricht darf nicht exakt dem searchText entsprechen.
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- SearchText: "Spieler TestSpielername wurde gekickt"
- Ergebnis: ✅ Trifft zu - Nicht exakt identisch
- SearchText: "Spieler TestSpielername wurde von Grundstück gekickt"
- Ergebnis: ❌ Trifft nicht zu - Exakte Übereinstimmung (aber wir wollen NICHT gleich)
EMPTY
Reagiert auf leere Chat-Nachrichten (der searchText wird ignoriert).
Beispiel:
- Eingabe-Text: "Spieler TestSpielername wurde von Grundstück gekickt"
- Ergebnis: ❌ Trifft nicht zu - Die Nachricht ist nicht leer
- Eingabe-Text: "" (leerer String)
- Ergebnis: ✅ Trifft zu - Die Nachricht ist leer
Beispiel-Konfiguration
{
"systemname": "welcome_reactor",
"displayname": "Willkommens Reactor",
"minimalReqVersion": 1.0,
"comment": "Reagiert auf Willkommensnachrichten",
"conditions": [],
"variables": [],
"actions": [
{
"actionname": "ChatMessageAction",
"actiondisplayname": "ChatMessageAction",
"minimalReqVersion": 1,
"data": {
"message": "Willkommen auf dem Server!",
"cmdPrio": "NORMAL"
}
}
],
"searchText": "hallo",
"textIsWithColorCodes": false,
"textIsCaseSensitive": false,
"chatReactorMode": "CONTAINS"
}
Funktionsweise
- Text-Erkennung: Der ChatReactor überwacht alle Chat-Nachrichten auf den angegebenen
searchText - Modus-Vergleich: Je nach
chatReactorModewird der Text unterschiedlich verglichen - Bedingungsprüfung: Zusätzliche
conditionsmüssen erfüllt sein - Aktion-Ausführung: Bei erfolgreicher Erkennung werden die definierten
actionsausgeführt
Wichtige Hinweise
- Case-Sensitivity: Mit
textIsCaseSensitivekann gesteuert werden, ob Groß-/Kleinschreibung beachtet wird. Wenn deaktiviert wird sowol Such-Test als auch InputText auf Lower_Case gesetzt. - Farbcodes:
textIsWithColorCodesbestimmt, ob Minecraft-Farbcodes (§-Codes) berücksichtigt werden (FarbCodes werden hier mit § Paragraph Zeichen geschrieben)
Debuging
Um dieses Event zu Debuggen, schalte in der 'mainconfig.json' die "debug": true, und die Logger "logger": "CHATREACTOREVENT,CHATEVENT", auf an.