Umbau zu proxy: Appliances wie in spawn
Kern (Main, Config, Servers, Appliance) lädt die Appliances mute, chat und tablist; weitere kommen in Main.APPLIANCES dazu. Plugin-ID und Datenordner heißen jetzt proxy, Kanal craftattack:chat und chatbridge.muted bleiben. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6d383eaca1
commit
ad532c8b99
26 files changed
+1052
-595
No files matched your search
@@ -1,7 +1,46 @@
|
||||
# chat-bridge
|
||||
# proxy
|
||||
|
||||
Velocity-Plugin für CraftAttack: Chat und Tabliste gelten im ganzen Netzwerk (craftattack, arena, Limbo, Event).
|
||||
Velocity verteilt jede Zeile als Systemnachricht an alle Spieler; die Backends verwerfen den Chat
|
||||
Velocity-Plugin des CraftAttack-Netzwerks (craftattack, arena, Limbo, Event, Weltmuseum). Aufgebaut wie
|
||||
spawn auf den Backends: Ein kleiner Kern lädt **Appliances**, jede ist ein Teil-Plugin mit eigenen
|
||||
Listenern, Befehlen und eigenem Config-Abschnitt. Braucht LuckPerms auf Velocity.
|
||||
|
||||
| Appliance | Was | Braucht |
|
||||
|---|---|---|
|
||||
| `mute` | `/mute`, `/unmute`, LuckPerms-Permission `chatbridge.muted` | – |
|
||||
| `chat` | öffentlicher Chat, `/msg`, `/r`, `/adminchat`, Join/Leave, Chat-Einstellungen | `mute` |
|
||||
| `tablist` | Spieler anderer Server in der Tabliste | `chat` |
|
||||
|
||||
## Aufbau
|
||||
|
||||
```
|
||||
src/main/java/eu/mhsl/craftattack/proxy/
|
||||
core/ Main (Velocity-Plugin), Config, Servers
|
||||
core/appliance/ Appliance, ApplianceCommand, PlayerCommand
|
||||
appliances/<name>/ eine Appliance je Package
|
||||
```
|
||||
|
||||
**Neue Appliance** (z. B. der Anmeldecheck, der zwischen Login-Server und echtem Server entscheidet):
|
||||
|
||||
1. Package `appliances/<name>/` mit einer Klasse `extends Appliance`.
|
||||
2. `onEnable()` für den Aufbau, `listeners()` für Objekte mit `@Subscribe`, `commands()` für Befehle
|
||||
(`ApplianceCommand.of("name", command, "alias")`), `onDisable()` beim Herunterfahren.
|
||||
3. In `Main.APPLIANCES` eintragen. Die Reihenfolge ist die Startreihenfolge: `queryAppliance(X.class)`
|
||||
geht nur für Appliances, die davor stehen.
|
||||
4. Einstellungen als `<name>.<schlüssel>` in `src/main/resources/config.properties`, lesen mit
|
||||
`config().string(…)`, `integer`, `bool`, `list`, `pairs`. Daten in `dataDirectory()`
|
||||
(`plugins/proxy/<name>/`).
|
||||
|
||||
Der Name einer Appliance ist der Klassenname mit kleinem Anfangsbuchstaben (`Mute` → `mute`), änderbar
|
||||
über `name()`. Schlägt `onEnable()` fehl, fällt nur diese Appliance aus und der Fehler steht im Log;
|
||||
Velocity und die anderen Appliances laufen weiter. Eine Appliance, die Spieler blockieren soll, muss
|
||||
deshalb selbst dafür sorgen, dass sie bei einem Fehler nicht stillschweigend alle durchlässt.
|
||||
|
||||
Globale Schlüssel: `disabled-appliances`, `admin-permission`, `server-symbols`, `server-where` (letztere
|
||||
über `servers()` in jeder Appliance).
|
||||
|
||||
## Chat (`chat`, `mute`, `tablist`)
|
||||
|
||||
Chat und Tabliste gelten im ganzen Netzwerk. Velocity verteilt jede Zeile als Systemnachricht an alle Spieler; die Backends verwerfen den Chat
|
||||
selbst („Silencer“), sonst stünde er dort doppelt.
|
||||
|
||||
Warum so herum: Velocity kann eine signierte Chat-Nachricht (ab 1.19.1) weder ändern noch abbrechen,
|
||||
@@ -21,9 +60,9 @@ verteilt sie selbst.
|
||||
dürfen weder öffentlich noch per /msg schreiben, außer an Admins.
|
||||
- **Join/Leave** nur beim Ein- und Ausloggen ins Netzwerk, nicht beim Serverwechsel.
|
||||
- **Einstellungen** in `/settings` auf spawn (Join/Leave anzeigen, Erwähnungen hervorheben, Erwähnungston):
|
||||
Velocity speichert sie in `plugins/chat-bridge/settings.properties` und gibt sie beim Join an spawn
|
||||
Velocity speichert sie in `plugins/proxy/chat/settings.properties` und gibt sie beim Join an spawn
|
||||
zurück, damit die Arena dieselben Werte zeigt. Unbekannte Spieler übernimmt Velocity nur vom
|
||||
`settings-server` (craftattack), damit die Defaults der Arena keine echten Werte verdrängen.
|
||||
`chat.settings-server` (craftattack), damit die Defaults der Arena keine echten Werte verdrängen.
|
||||
- **Tabliste:** Spieler anderer Server stehen unten, mit Symbol, grau und als Spectator (kursiv).
|
||||
Die Einträge vom eigenen Server schickt weiter das Backend (Skins, Spielmodus, Prefixe). Abgleich
|
||||
alle 2 s und kurz nach Join, Wechsel und Quit.
|
||||
@@ -37,11 +76,10 @@ Silencer auf den Backends:
|
||||
| limbo | EndlessJumper |
|
||||
| event | Minigames (ab `develop` 8dc1659), `velocity.chat-via-proxy: true` in `resources/config.yml` |
|
||||
|
||||
Server ohne Silencer stehen in `unsilenced-servers`: Deren Spieler bekommen den Chat vom eigenen
|
||||
Server ohne Silencer stehen in `chat.unsilenced-servers`: Deren Spieler bekommen den Chat vom eigenen
|
||||
Server nicht noch einmal, dort greift der Mute aber nur für die anderen Server.
|
||||
|
||||
Einstellungen: `plugins/chat-bridge/config.properties` (wird beim ersten Start angelegt, kommentiert).
|
||||
Braucht LuckPerms auf Velocity.
|
||||
Einstellungen: `plugins/proxy/config.properties` (wird beim ersten Start angelegt, kommentiert).
|
||||
|
||||
## Bauen und Deploy
|
||||
|
||||
@@ -49,5 +87,23 @@ Java 25, Gradle-Wrapper.
|
||||
|
||||
```bash
|
||||
./gradlew build # inkl. Tests
|
||||
./gradlew uploadPlugin # nach ~/velocity/plugins/chat-bridge.jar, danach: sudo systemctl restart velocity
|
||||
./gradlew uploadPlugin # nach ~/velocity/plugins/proxy.jar, danach: sudo systemctl restart velocity
|
||||
```
|
||||
|
||||
### Umstellung von chat-bridge (einmalig)
|
||||
|
||||
Plugin-ID und Datenordner haben sich geändert (`chat-bridge` → `proxy`). Auf dem Proxy (10.20.9.3), bei
|
||||
gestopptem Velocity:
|
||||
|
||||
```bash
|
||||
cd ~/velocity/plugins
|
||||
mkdir -p proxy/chat
|
||||
mv chat-bridge/settings.properties proxy/chat/settings.properties
|
||||
mv chat-bridge.jar ~/backup/ # sonst laufen beide Plugins und jede Zeile kommt doppelt
|
||||
mv chat-bridge ~/backup/chat-bridge-config
|
||||
```
|
||||
|
||||
`proxy/config.properties` legt das Plugin beim ersten Start aus der Vorlage an. Eigene Änderungen aus der
|
||||
alten `config.properties` übernehmen: `unsilenced-servers`, `settings-server` und `marker-permission`
|
||||
heißen jetzt `chat.…`, die übrigen Schlüssel bleiben gleich. Kanal `craftattack:chat` und die Permission
|
||||
`chatbridge.muted` bleiben gleich, an spawn und an laufenden Mutes ändert sich nichts.
|
||||
Reference in new issue
Block a user