Unterstützte Software
Prefixes funktioniert mit und ohne SimpleCloud. Nur der Netzwerk-Sync braucht ein SimpleCloud-Netzwerk.
Plugin installieren
- Paper
- Minestom
1
2
Konfiguration erzeugen
Starte einen passenden Server. Prefixes legt
config.yml und messages.yml unter plugins/simplecloud-prefixes/ an.3
Konfiguration ins Template übernehmen
Bei einem Gruppenserver kopierst du
plugins/simplecloud-prefixes/ vom laufenden Server an denselben Pfad im Template, bevor der Server stoppt. Bearbeite danach die Kopie im Template.Wie das genau funktioniert, steht unter Templates.4
Konfiguration anwenden und prüfen
Hast du die Dateien auf einem laufenden Server geändert, führ
/scprefix reload aus. Hast du das Template bearbeitet, starte einfach einen neuen Server.Join auf den Server und prüf, ob dein Gruppen-Prefix im Chat, in der Tablist und über deinem Kopf angezeigt wird.
Konfiguration
Jeder Spieler gehört zu einer Gruppe, und die Gruppe bestimmt, wie er angezeigt wird. Prefixes holt sich die Gruppen aus der eigenen Config, aus LuckPerms oder von einem eigenen Group Provider.config.yml
In derconfig.yml legst du fest, woher die Gruppen kommen, welche Gruppen es gibt, welche Features aktiv sind und wie der Sync zwischen Servern läuft.
Gruppenquellen
Mitgeneral.source legst du fest, woher die Gruppen kommen.
LuckPerms-Mapping
Mit
source: luckperms liest Prefixes alles aus der LuckPerms-Gruppe. Von der Primärgruppe und den geerbten Gruppen eines Spielers gewinnt die mit dem höchsten Weight.
Platzhalter
Features
Unterfeatures schaltest du die einzelnen Teile des Plugins an oder aus:
chatformatiert Chatnachrichten mit demchat-formatder Gruppetablistzeigt Prefix, Spielernamen in der Gruppenfarbe und Suffix in der Tablist an, sortiert nach Prioritätdisplay-namezeigt dendisplay-nameder Gruppe über dem Kopf des Spielers an. Ist es aus, siehst du den normalen Minecraft-Nametag
Netzwerk-Sync
Über das SimpleCloud-Netzwerk kann Prefixes zwei Dinge teilen:- Chat: Chatnachrichten von Spielern auf anderen Servern
- Tablist: Tablist-Einträge von Spielern auf anderen Servern
sync.enabled: true schaltest du ihn ein. Unter channels wählst du, ob Chat, Tablist oder beides geteilt wird. Ein Channel funktioniert nur, wenn das passende Feature unter features auch an ist.
Über sources legst du fest, von welchen Servern dieser Server Updates bekommt:
CURRENT: von der eigenen Servergruppe bzw. bei einem Persistent Server nur von diesem ServerALL: von allen Servern im Netzwerk. Muss der einzige Eintrag in der Liste sein- Name einer Servergruppe oder ID eines Persistent Servers: genau von dieser Quelle
Den Sync einschalten oder
sync.sources ändern greift erst nach einem Neustart des Servers.Befehle
API
Mit der API liest und änderst du, wie Spieler angezeigt werden, und fügst eigene Gruppen hinzu.Dependency hinzufügen
Auf die API zugreifen
- Paper
- Minestom
PrefixesApiProvider.get(). Läuft Prefixes nicht, wirft das eine IllegalStateException.
Spieler abfragen
Die Beispiele nutzen dieapi von oben und einen Player von Paper oder Minestom.
Die Gruppe eines Spielers abfragen. Passt keine Gruppe, ist das Ergebnis null:
Anzeige eines Spielers ändern
Ändere Prefix, Suffix, Farbe oder die Position in der Tablist eines Spielers für alle. Die Änderung gilt für Chat, Tablist und Nametag.setGroup nimmt eine PrefixesGroup oder einen Gruppennamen. Gibt es keine Gruppe mit dem Namen, kommt false zurück:
Spieler für bestimmte Spieler anders anzeigen
Mit Per-Viewer-Änderungen sehen verschiedene Spieler denselben Spieler unterschiedlich. Das ist praktisch für alles, was von der Beziehung zwischen zwei Spielern abhängt:- Freunde: Ein Spieler sieht seine Freunde mit einem
[Friend]-Prefix - Partys: Party-Mitglieder sehen sich gegenseitig mit Party-Prefix ganz oben in der Tablist
- Teams: In einem Minigame sieht jedes Team die eigenen Leute grün und die Gegner rot
set-Methode und setGroup haben ein optionales viewers-Argument. Nur diese Spieler sehen die Änderung, alle anderen sehen weiter den normalen Prefix. viewers ist eine Adventure-Audience, du kannst also einen Spieler übergeben oder mehrere mit Audience.audience(players).
Einen Freund mit [Friend]-Prefix anzeigen, nur für den Spieler:
[Party]-Prefix ganz oben in der Tablist anzeigen, nur für die Party:
setGroup geht auch für mehrere Spieler auf einmal. In einem Minigame sieht so jedes Team die eigenen Leute mit der einen Gruppe und das andere Team mit einer anderen:
teammate und enemy müssen in deiner Gruppenquelle existieren.
Mit reset(targets, viewers) entfernst du nur die Änderungen, die bestimmte Spieler sehen, zum Beispiel wenn eine Freundschaft endet oder jemand die Party verlässt:
api.getPrefixData(friend.uniqueId, player).
Greifen mehrere Änderungen, gewinnt die für einen bestimmten Viewer vor der für alle, und die wiederum vor der Gruppe des Spielers. Per-Viewer-Änderungen sind weg, sobald einer der beiden Spieler den Server verlässt.
Gruppen auflisten und hinzufügen
Alle Gruppen der aktuellen Gruppenquelle auflisten, höchste Priorität zuerst:addGroup fügst du eine Gruppe hinzu. Bei config wird sie in der config.yml gespeichert, bei luckperms in LuckPerms angelegt. Gibt es schon eine Gruppe mit dem Namen, kommt false zurück.
config also zum Beispiel über ihre permission. Eine Gruppe implementiert PrefixesGroup:
Beispiel: VipGroup
Beispiel: VipGroup
Eigenen Group Provider erstellen
Ein Group Provider legt fest, welche Gruppen es gibt und in welcher Gruppe ein Spieler ist. Prefixes bringt die Providerconfig und luckperms mit. Mit einem eigenen Provider kommen die Gruppen direkt aus deinem Plugin, zum Beispiel aus deinem eigenen Rangsystem.
Implementiere dafür GroupProvider. Dieses Beispiel hält die Gruppen und das Team jedes Spielers im Speicher:
config.yml bei general.source ein:
config.yml
refreshPlayer auf, damit die neue Gruppe angezeigt wird. Änderungen über die API bleiben dabei erhalten.
Best Practices
- Vergib jede Priorität nur einmal, damit die Reihenfolge in der Tablist klar ist
- Nutz für alle Gruppen dasselbe
chat-format, außer ein Rang soll im Chat bewusst auffallen - Nutz
<color>indisplay-nameundchat-format, statt Hex-Codes zu wiederholen - Lass
default-groupauf eine Gruppe mit leererpermissionzeigen, damit jeder Spieler eine Gruppe hat - Nutz das
viewers-Argument für Freunde, Partys und Teams, statt für jedes eine eigene Gruppe anzulegen