Party
Überblick
Mit Party bilden Spieler eine kurzlebige Gruppe. Der Anführer erstellt eine Party und lädt Spieler per Namen ein, und eingeladene Spieler nehmen mit /party join <leader> an. Quest-, Dungeon- und HUD-Systeme können dann fragen: „Wer ist in derselben Party wie dieser Spieler?“ Ein Anführer kann außerdem die ganze Party auf einen anderen Server des Netzwerks warpen.
Parties werden nicht in einer Datenbank gespeichert: Sie leben im Speicher und werden über Redis auf die anderen Server des Netzwerks repliziert. Ein Mitglied, das die Verbindung trennt, bleibt in der Party, sodass die Party einen Serverwechsel übersteht, und sie endet nur, wenn Mitglieder gehen, gekickt werden oder der Anführer sie auflöst. Ein Neustart aller Server löst alle Parties auf.
Das Party-Menü ist ein GUI-Menü, das du im Web-Panel baust. Mitglieder werden als Spielerköpfe angezeigt und ausstehende Einladungen als anklickbare Köpfe.
Funktionen
- Erstellen, einladen, beitreten, verlassen, kicken, auflösen — verfügbar als Befehle, TypeWriter-Actions und Menü-Buttons.
- Party-Menü — ein Entry mit Mitglieder- und Einladungsbildschirmen, Seiten und Tabs.
- Einladungen — Namenseingabe im Chat, ein Beitritts-Bildschirm mit Suchfilter und 60 Sekunden Ablaufzeit.
- Größenlimits — ein Standardmaximum mit höheren Limits für Berechtigungen wie
typewriter.party.vip. - Warp zu einem Server — der Anführer schickt alle Mitglieder zu einem anderen Backend, wo auch immer sie im Netzwerk sind.
- Serverübergreifende Parties — Mitgliedschaft, Einladungen und Party-Chatnachrichten erreichen jeden Server der Gruppe.
- Story-Hooks — ein Fact gibt an, ob der Spieler in einer Party ist.
- Platzhalter — Anführer, Rolle, Größe, Mitgliedsnamen und Mitglieder-Gesundheit für HUDs.
- Integrationen — andere BTC-Erweiterungen, etwa Coop-Inseln und Dungeons, erstellen und lesen Parties.
Installation
- Installiere die GUI-Erweiterung, die das Menü zeichnet, und die Quest-Erweiterung, die Party als Abhängigkeit deklariert.
- Optional, für mehrere Server: Installiere die MySQL-Erweiterung, aktiviere Redis (oder Valkey) und setze auf jedem Server dieselbe
redis.group-idund einen eindeutigenredis.server-name. Das Warpen erfordert, dass der Proxy den Kanalbtc:bridgeverarbeitet. - Lege die Party-JAR in
plugins/Typewriter/extensions/ab und starte den Server neu.
party.use wird standardmäßig an alle vergeben und party.admin an Operatoren.
Erste Schritte
So baust du ein Party-Menü und ein Größenlimit:
- Öffne im TypeWriter-Web-Panel eine Seite und füge einen Party Menu Config-Entry hinzu. Nur seine Limits werden verwendet (siehe Konfiguration): Setze
maxPartySizeund optionalmaxPartySizePermissions. - Füge einen Party Menu-Entry hinzu.
/partyöffnet den ersten gefundenen. - Setze
inventoryTitle,inventoryRowsundguiType, baue dann das Layout inlayoutPoolund setzemainLayoutId. Siehe die GUI-Anleitungen. - Deklariere Bildschirme in
views(zum Beispielmembersundjoin). Trage die IDs der Mitglieder-Bildschirme inmemberListViewIdsein und die ID des Einladungs-Bildschirms injoinListViewIds. - Füge Items mit einem
buttonTypehinzu:PARTY_MEMBERS,PARTY_JOIN,PAGE_NAVund die Buttons, die Befehle ausführen (siehe Menüs). - Veröffentliche und führe
/partyaus.
Um eine Party aus einer Quest heraus zu starten, verwende die Create Party-Action. Um Spieler zusammenzubringen, verwende Invite Player mit targetName, das einen Platzhalter akzeptiert, und Join Party mit leaderName.
Verwende Warp Party to Server mit targetServer auf den dem Proxy bekannten Backend-Namen gesetzt, zum Beispiel dungeon-1. Nur der Anführer kann es auslösen. Kombiniere es mit dem Fact In Party als Criteria, um den Warp nur Spielern in einer Party anzubieten.
So funktioniert es
Jede Party-Änderung wird an die anderen Server gesendet, die ihre Kopie ersetzen. Einladungen laufen nach 60 Sekunden ab, einmal pro Minute geprüft, sodass eine Einladung zwischen 60 und 120 Sekunden gilt. Verlässt der Anführer die Party, wird das erste verbleibende Mitglied Anführer. Eine Party ohne Mitglied wird entfernt.
Konfiguration
Der Party Menu Config-Entry ist optional. Er enthält nur die Größenlimits der Party, über diese Felder:
maxPartySize— maximale Anzahl an Mitgliedern als Standard. Der Standardwert ist5.maxPartySizePermissions— Berechtigung zu maximaler Größe. Es gilt die höchste passende Größe des Anführers. Die Standardwerte sindtypewriter.party.vipfür 8 undtypewriter.party.mvpfür 12.
Ohne diesen Entry gibt es kein Größenlimit. Das Party-Menü selbst wird hier nicht konfiguriert, es stammt aus dem Party Menu-Entry.
Das Party Artifact wird vom Party-Dienst in dieser Version weder gelesen noch geschrieben, du musst also keines erstellen.
Menüs
Der Party Menu-Entry ist ein GUI-Menü mit diesen Party-spezifischen Verhaltensweisen.
Inhaltsbereich. Auf einem in memberListViewIds aufgeführten Bildschirm ist jedes Mitglied ein Spielerkopf mit Rolle und Online-Status. Bist du der Anführer, kickt ein Linksklick ein anderes Mitglied. Auf einem in joinListViewIds aufgeführten Bildschirm ist jede ausstehende Einladung der Kopf des einladenden Anführers: Linksklick tritt bei, Rechtsklick lehnt ab. Der Bereich wird mit contentX (Standard 5), contentY, contentColumns (Standard 4) und contentRows (Standard 7) platziert.
Buttons. Diese buttonType-Werte funktionieren von Haus aus:
buttonType | Klick |
|---|---|
PARTY_MEMBERS | Öffnet den Bildschirm members (party open members). |
PARTY_JOIN | Wechselt zur View join desselben Menüs. |
PAGE_NAV | Linksklick vorwärts, Rechtsklick zurück; der Name zeigt den Seitenzähler. Ausgeblendet, wenn eine Seite genügt. |
Diese Werte hängen keine Aktion an. Konfiguriere das Item selbst und gib ihm Befehle: PARTY_INFO, PARTY_CREATE, PARTY_LEAVE, PARTY_DISBAND, PARTY_INVITE, PARTY_CLOSE, PARTY_ACCEPT_INVITE, PARTY_DECLINE_INVITE. Führe zum Beispiel party create, party leave oder party disband bei den passenden Items aus. Ein Einladen-Button benötigt einen eingetippten Namen: Gib ihm einen input-Dialog, dessen onInputCommands party invite {input} ausführt.
Slot-Befehle. Items können party open [view], party page next|prev|<number>, party info, party create, party leave, party disband, party kick <name>, party invite <name>, party join <leader>, party declineinvite <leader> und party joinsearch <text> ausführen. Sie werden als der Spieler ausgeführt, der geklickt hat.
Kopf-Lore und einige Admin-Nachrichten sind auf Französisch. Der Platzhalter <party_role> liefert die französischen Wörter Chef, Moderateur und Membre. Verwende <party_role_raw> für die Bezeichner LEADER, MODERATOR und MEMBER.
Befehle
Alle Befehle erfordern party.use. Alias: /p. Der bloße Befehl öffnet das erste Party Menu und gibt nichts aus, wenn keines existiert.
| Befehl | Beschreibung |
|---|---|
/party | Öffnet das Party-Menü. |
/party create | Erstellt eine Party und macht dich zu ihrem Anführer. |
/party invite | Schließt das Inventar, und du tippst den Namen des Spielers im Chat. |
/party invite <player> | Lädt einen Spieler ein (nur Anführer). |
/party join <leader> | Tritt der Party dieses Anführers bei, wenn du eingeladen bist. |
/party accept <leader> | Wie join. |
/party leave | Verlässt deine Party. |
/party kick <player> | Kickt ein Mitglied (nur Anführer). |
/party disband | Löst die Party auf (nur Anführer). |
/party info | Gibt Anführer und Mitglieder aus. |
/party admin list | Listet alle aktiven Parties auf (erfordert party.admin). |
/party admin info <player> | Zeigt die Party eines Spielers an. |
/party admin disband <player> | Löst die Party eines Spielers auf. Ihr Anführer muss online sein. |
/party admin kick <player> | Entfernt einen Spieler aus seiner Party. Der Party-Anführer muss online sein. |
Berechtigungen
| Berechtigung | Standard | Erlaubt |
|---|---|---|
party.use | Alle | Jeden /party-Befehl. Menüklicks führen dieselben Aktionen aus, ohne sie zu prüfen. |
party.admin | Operatoren | Die /party admin-Befehle. |
typewriter.party.vip, typewriter.party.mvp | Keine | Höhere Party-Größen, nur wenn sie in maxPartySizePermissions des Konfigurations-Entrys aufgeführt sind. Diese Namen sind die Standardwerte und können geändert werden. |
Platzhalter
MiniPlaceholders-Tags für MiniMessage-Text, etwa <party_leader>. Indizes beginnen bei 0.
| Platzhalter | Liefert |
|---|---|
<party_in_party> | 1, wenn der Spieler in einer Party ist, sonst 0. |
<party_leader> | Name des Anführers. |
<party_role> | Chef, Moderateur oder Membre. |
<party_role_raw> | LEADER, MODERATOR oder MEMBER. |
<party_size> | Anzahl der Mitglieder. |
<party_members> | Anzahl der Mitglieder. |
<party_members:index> | Mitgliedsname an dieser Position. |
<party_members_exclude:index> | Mitgliedsname an dieser Position, ohne den Betrachter. |
<party_list> | Mitgliedsnamen, durch Kommas getrennt. |
<party_member_name:index> | Mitgliedsname an dieser Position. |
<party_member_uuid:index> | UUID dieses Mitglieds. |
<party_member_health:index> | Aktuelle Gesundheit dieses Mitglieds, wenn es auf diesem Server online ist, sonst 0.0. |
<party_member_health_max:index> | Maximale Gesundheit, 20.0, wenn unbekannt. |
<party_member_health_percent:index> | Gesundheit als Prozentsatz. |
Entries
10 Einträge, aus dem Quellcode der Erweiterung generiert.
Aktionen7
- Create PartyCreate a new party
- Invite PlayerInvite a player to your party
- Join PartyJoin a party
- Kick Party MemberKick a member from your party
- Leave PartyLeave your current party
- Party MenuOpen Party Menu
- Warp Party to ServerWarp the player's party to a server
Fakten1
- In PartyCheck if player is in a party
Artefakte1
- Party ArtifactArtifact for storing party and friend data
Manifeste1
- Party size limitsMaximum party size, with optional permission-based overrides
Fehlerbehebung
/party bewirkt nichts. Es ist kein Party Menu-Entry veröffentlicht. Unterbefehle wie /party create funktionieren auch ohne ihn.
„You do not have an invite to this party.“ Die Einladung ist nach 60 bis 120 Sekunden abgelaufen, oder der Name des Anführers war falsch geschrieben. Bitte den Anführer, erneut einzuladen, und verwende dann /party join <leader>.
„Party is full! Limit: N“. Der Anführer hat maxPartySize des Party Menu Config erreicht. Erhöhe es oder gib dem Anführer eine in maxPartySizePermissions aufgeführte Berechtigung. Ohne den Konfigurations-Entry gibt es kein Limit.
Mitglieder auf einem anderen Server erscheinen nicht. Jeder Server benötigt dieselbe nicht leere redis.group-id, einen eindeutigen redis.server-name und ein verbundenes Redis. Ohne group-id wird nichts übertragen.
Der Warp schlägt mit „Cross-server transport is unavailable.“ fehl. Redis ist nicht verbunden. Prüfe die Konfiguration der MySQL-Erweiterung. Das targetServer muss der dem Proxy bekannte Backend-Name sein, und der Proxy muss den Kanal btc:bridge akzeptieren.
Änderungen im Party Menu Config (Slots, Buttons, Nachrichten) haben keine Wirkung. Diese Felder gehören zu einem früheren Menü, das nicht mehr registriert wird. Verwende den Party Menu-Entry, um das Menü zu gestalten.
Die nächste Chatnachricht nach /party invite wird nicht angezeigt. Das ist erwartet: Der Befehl ohne Namen wartet auf eine Chatnachricht und verwendet sie als Spielernamen, dann lädt er diesen Spieler ein. Ein falscher Name ergibt einfach einen Fehler.
Verwandte Erweiterungen
- MySQL — Redis-Messaging und der Proxy-Transport, der für Warps verwendet wird.
- GUI — Layouts und Views, die das Party-Menü verwendet.
- Friend und Guild — die anderen sozialen Systeme.
- BTC Sky — Coop-Inseln setzen Mitglieder in dieselbe Party.
- Dungeon — Dungeon-Instanzen nutzen die Party, um Spieler zu gruppieren.