Zum Hauptinhalt springen

Unterstützte Software

Prefixes funktioniert mit und ohne SimpleCloud. Nur der Netzwerk-Sync braucht ein SimpleCloud-Netzwerk.

Plugin installieren

1

Plugin installieren

Lade Prefixes von GitHub oder Modrinth herunter und leg die JAR in den plugins/ Ordner deines Server-Templates.Wenn du general.source: luckperms nutzen willst, installiere zusätzlich LuckPerms.
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 der config.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

Mit general.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.
Ändern sich die LuckPerms-Gruppen eines Spielers oder die Daten einer Gruppe, aktualisiert Prefixes den Spieler automatisch.

Platzhalter

Nutz <color>, statt überall denselben Hex-Code zu schreiben. Der Platzhalter wird als Style angewendet, also übernimmt alles danach die Gruppenfarbe.

Features

Unter features schaltest du die einzelnen Teile des Plugins an oder aus:
  • chat formatiert Chatnachrichten mit dem chat-format der Gruppe
  • tablist zeigt Prefix, Spielernamen in der Gruppenfarbe und Suffix in der Tablist an, sortiert nach Priorität
  • display-name zeigt den display-name der 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
Der Sync ist standardmäßig aus. Mit 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 Server
  • ALL: 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
Du kannst mehrere Gruppennamen und Server-IDs kombinieren. Sollen zwei Server sich gegenseitig Updates schicken, trag bei beiden jeweils die Gruppe oder ID des anderen ein.
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

Auf jeder Plattform geht auch PrefixesApiProvider.get(). Läuft Prefixes nicht, wirft das eine IllegalStateException.

Spieler abfragen

Die Beispiele nutzen die api von oben und einen Player von Paper oder Minestom. Die Gruppe eines Spielers abfragen. Passt keine Gruppe, ist das Ergebnis null:
Abfragen, was gerade für einen Spieler angezeigt wird. Alle Änderungen über die API sind schon mit drin:

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:
Änderungen funktionieren nur bei Spielern, die online sind, und sind weg, sobald der Spieler den Server verlässt. Sollen sie bleiben, setz sie beim Join einfach neu.

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
Jede 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-Mitglieder mit [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:
Die Gruppen 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:
Was ein bestimmter Spieler sieht, bekommst du, wenn du ihn als Viewer übergibst: 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:
Mit 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.
Spieler bekommen eine neue Gruppe wie jede andere auch, bei config also zum Beispiel über ihre permission. Eine Gruppe implementiert PrefixesGroup:

Eigenen Group Provider erstellen

Ein Group Provider legt fest, welche Gruppen es gibt und in welcher Gruppe ein Spieler ist. Prefixes bringt die Provider config 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:
Registriere den Provider und trag seinen Namen in der config.yml bei general.source ein:
config.yml
Prefixes bekommt nicht mit, wenn dein Plugin die Gruppe eines Spielers ändert. Ruf danach refreshPlayer auf, damit die neue Gruppe angezeigt wird. Änderungen über die API bleiben dabei erhalten.
Wie die eingebauten Provider umgesetzt sind, inklusive LuckPerms, siehst du auf GitHub.

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> in display-name und chat-format, statt Hex-Codes zu wiederholen
  • Lass default-group auf eine Gruppe mit leerer permission zeigen, damit jeder Spieler eine Gruppe hat
  • Nutz das viewers-Argument für Freunde, Partys und Teams, statt für jedes eine eigene Gruppe anzulegen