Party
Vue d'ensemble
Party permet aux joueurs de former un groupe éphémère. Le chef crée un groupe et invite des joueurs par leur nom, et les joueurs invités acceptent avec /party join <leader>. Les systèmes de quêtes, de donjons et de HUD peuvent alors demander « qui est dans le même groupe que ce joueur ». Un chef peut aussi téléporter tout le groupe vers un autre serveur du réseau.
Les groupes ne sont pas enregistrés dans une base de données : ils vivent en mémoire et sont répliqués vers les autres serveurs du réseau via Redis. Un membre qui se déconnecte reste dans le groupe, qui survit donc à un changement de serveur, et il ne se termine que lorsque les membres partent, sont expulsés, ou que le chef le dissout. Le redémarrage de tous les serveurs dissout tous les groupes.
Le menu de groupe est un menu GUI que vous construisez dans le panel web. Les membres sont affichés sous forme de têtes de joueurs, et les invitations en attente sous forme de têtes cliquables.
Fonctionnalités
- Créer, inviter, rejoindre, quitter, expulser, dissoudre — disponibles sous forme de commandes, d'actions TypeWriter et de boutons de menu.
- Menu de groupe — une seule entrée avec des écrans de membres et d'invitations, pagination et onglets.
- Invitations — saisie du nom via le chat, un écran de jonction avec filtre de recherche, et expiration à 60 secondes.
- Limites de taille — un maximum par défaut avec des limites plus élevées pour des permissions comme
typewriter.party.vip. - Téléportation vers un serveur — le chef envoie tous les membres vers un autre backend, où qu'ils soient sur le réseau.
- Groupes inter-serveurs — l'appartenance, les invitations et les messages de chat de groupe atteignent chaque serveur du groupe.
- Hooks d'histoire — un fact indique si le joueur est dans un groupe.
- Placeholders — chef, rôle, taille, noms des membres et santé des membres pour les HUD.
- Intégrations — d'autres extensions BTC, comme les îles coop et les donjons, créent et lisent des groupes.
Installation
- Installez l'extension GUI, qui dessine le menu, et l'extension Quest, que Party déclare comme dépendance.
- Facultatif, pour plusieurs serveurs : installez l'extension MySQL, activez Redis (ou Valkey) et définissez le même
redis.group-idet unredis.server-nameunique sur chaque serveur. La téléportation nécessite que le proxy gère le canalbtc:bridge. - Placez le JAR de Party dans
plugins/Typewriter/extensions/et redémarrez le serveur.
party.use est accordée à tout le monde par défaut et party.admin aux opérateurs.
Premiers pas
Construisez un menu de groupe et une limite de taille :
- Dans le panel web TypeWriter, ouvrez une page et ajoutez une entrée Party Menu Config. Seules ses limites sont utilisées (voir Configuration) : définissez
maxPartySizeet éventuellementmaxPartySizePermissions. - Ajoutez une entrée Party Menu.
/partyouvre la première qu'il trouve. - Définissez
inventoryTitle,inventoryRowsetguiType, puis construisez la disposition danslayoutPoolet définissezmainLayoutId. Voir les guides GUI. - Déclarez les écrans dans
views(par exemplemembersetjoin). Listez les identifiants des écrans de membres dansmemberListViewIdset l'identifiant de l'écran d'invitations dansjoinListViewIds. - Ajoutez des objets avec un
buttonType:PARTY_MEMBERS,PARTY_JOIN,PAGE_NAV, et les boutons qui exécutent des commandes (voir Menus). - Publiez et exécutez
/party.
Pour démarrer un groupe depuis une quête, utilisez l'action Create Party. Pour rassembler des joueurs, utilisez Invite Player avec targetName, qui accepte un placeholder, et Join Party avec leaderName.
Utilisez Warp Party to Server avec targetServer défini sur le nom du backend connu du proxy, par exemple dungeon-1. Seul le chef peut la déclencher. Combinez-la avec le fact In Party comme critère pour ne proposer la téléportation qu'aux joueurs dans un groupe.
Fonctionnement
Chaque changement de groupe est envoyé aux autres serveurs, qui remplacent leur copie. Les invitations expirent après 60 secondes, vérifiées une fois par minute : une invitation dure donc entre 60 et 120 secondes. Lorsque le chef part, le premier membre restant devient chef. Un groupe sans membre est supprimé.
Configuration
L'entrée Party Menu Config est facultative. Elle ne contient que les limites de taille du groupe, via ces champs :
maxPartySize— nombre maximal de membres par défaut. La valeur par défaut est5.maxPartySizePermissions— association permission vers taille maximale. La plus grande taille correspondante du chef s'applique. Les valeurs par défaut sonttypewriter.party.vippour 8 ettypewriter.party.mvppour 12.
Sans cette entrée, il n'y a pas de limite de taille. Le menu de groupe lui-même ne se configure pas ici, il provient de l'entrée Party Menu.
Le Party Artifact n'est ni lu ni écrit par le service de groupe dans cette version, et vous n'avez pas besoin d'en créer un.
Menus
L'entrée Party Menu est un menu GUI avec ces comportements propres aux groupes.
Panneau de contenu. Sur un écran listé dans memberListViewIds, chaque membre est une tête de joueur affichant son rôle et son état de connexion. Si vous êtes le chef, un clic gauche sur un autre membre l'expulse. Sur un écran listé dans joinListViewIds, chaque invitation en attente est la tête du chef qui invite : un clic gauche rejoint, un clic droit refuse. Le panneau est placé avec contentX (5 par défaut), contentY, contentColumns (4 par défaut) et contentRows (7 par défaut).
Boutons. Ces valeurs de buttonType fonctionnent d'emblée :
buttonType | Clic |
|---|---|
PARTY_MEMBERS | Ouvre l'écran members (party open members). |
PARTY_JOIN | Bascule vers la vue join du même menu. |
PAGE_NAV | Clic gauche en avant, clic droit en arrière ; le nom affiche le compteur de pages. Masqué lorsqu'une seule page suffit. |
Ces valeurs n'attachent aucune action. Configurez l'objet vous-même et donnez-lui des commandes : PARTY_INFO, PARTY_CREATE, PARTY_LEAVE, PARTY_DISBAND, PARTY_INVITE, PARTY_CLOSE, PARTY_ACCEPT_INVITE, PARTY_DECLINE_INVITE. Par exemple, exécutez party create, party leave ou party disband sur les objets correspondants. Un bouton d'invitation a besoin d'un nom saisi : donnez-lui une boîte de dialogue input dont onInputCommands exécute party invite {input}.
Commandes d'emplacement. Les objets peuvent exécuter 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> et party joinsearch <text>. Elles s'exécutent en tant que joueur qui a cliqué.
Le lore des têtes et certains messages d'administration sont en français. Le placeholder <party_role> renvoie les mots français Chef, Moderateur et Membre. Utilisez <party_role_raw> pour les identifiants LEADER, MODERATOR et MEMBER.
Commandes
Toutes les commandes nécessitent party.use. Alias : /p. La commande seule ouvre le premier Party Menu et n'affiche rien lorsqu'il n'en existe pas.
| Commande | Description |
|---|---|
/party | Ouvre le menu de groupe. |
/party create | Crée un groupe et en devient le chef. |
/party invite | Ferme l'inventaire et attend que vous saisissiez le nom du joueur dans le chat. |
/party invite <player> | Invite un joueur (chef uniquement). |
/party join <leader> | Rejoint le groupe de ce chef, si vous y êtes invité. |
/party accept <leader> | Identique à join. |
/party leave | Quitte votre groupe. |
/party kick <player> | Expulse un membre (chef uniquement). |
/party disband | Dissout le groupe (chef uniquement). |
/party info | Affiche le chef et les membres. |
/party admin list | Liste tous les groupes actifs (nécessite party.admin). |
/party admin info <player> | Affiche le groupe d'un joueur. |
/party admin disband <player> | Dissout le groupe d'un joueur. Son chef doit être en ligne. |
/party admin kick <player> | Retire un joueur de son groupe. Le chef du groupe doit être en ligne. |
Permissions
| Permission | Par défaut | Autorise |
|---|---|---|
party.use | Tout le monde | Toutes les commandes /party. Les clics de menu exécutent les mêmes actions sans la vérifier. |
party.admin | Opérateurs | Les commandes /party admin. |
typewriter.party.vip, typewriter.party.mvp | Aucune | Des tailles de groupe plus élevées, uniquement lorsqu'elles sont listées dans maxPartySizePermissions de l'entrée de configuration. Ces noms sont les valeurs par défaut et peuvent être modifiés. |
Placeholders
Balises MiniPlaceholders pour du texte MiniMessage, comme <party_leader>. Les index commencent à 0.
| Placeholder | Renvoie |
|---|---|
<party_in_party> | 1 lorsque le joueur est dans un groupe, sinon 0. |
<party_leader> | Nom du chef. |
<party_role> | Chef, Moderateur ou Membre. |
<party_role_raw> | LEADER, MODERATOR ou MEMBER. |
<party_size> | Nombre de membres. |
<party_members> | Nombre de membres. |
<party_members:index> | Nom du membre à cette position. |
<party_members_exclude:index> | Nom du membre à cette position, sans le spectateur. |
<party_list> | Noms des membres séparés par une virgule. |
<party_member_name:index> | Nom du membre à cette position. |
<party_member_uuid:index> | UUID de ce membre. |
<party_member_health:index> | Santé actuelle de ce membre lorsqu'il est en ligne sur ce serveur, sinon 0.0. |
<party_member_health_max:index> | Santé maximale, 20.0 lorsqu'elle est inconnue. |
<party_member_health_percent:index> | Santé en pourcentage. |
Entrées
10 entrées, générées depuis la source de l'extension.
Actions7
- 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
Faits1
- In PartyCheck if player is in a party
Artefacts1
- Party ArtifactArtifact for storing party and friend data
Manifestes1
- Party size limitsMaximum party size, with optional permission-based overrides
Dépannage
/party ne fait rien. Aucune entrée Party Menu n'est publiée. Les sous-commandes comme /party create fonctionnent sans elle.
« You do not have an invite to this party. » L'invitation a expiré après 60 à 120 secondes, ou le nom du chef a été mal orthographié. Demandez au chef d'inviter à nouveau, puis utilisez /party join <leader>.
« Party is full! Limit: N ». Le chef a atteint maxPartySize du Party Menu Config. Augmentez-le, ou accordez au chef une permission listée dans maxPartySizePermissions. Sans l'entrée de configuration, il n'y a pas de limite.
Les membres d'un autre serveur n'apparaissent pas. Chaque serveur a besoin du même redis.group-id non vide, d'un redis.server-name unique, et d'un Redis connecté. Sans group-id, rien n'est diffusé.
La téléportation échoue avec « Cross-server transport is unavailable. » Redis n'est pas connecté. Vérifiez la configuration de l'extension MySQL. Le targetServer doit être le nom du backend connu du proxy, et le proxy doit accepter le canal btc:bridge.
Les modifications dans le Party Menu Config (emplacements, boutons, messages) n'ont aucun effet. Ces champs appartiennent à un ancien menu qui n'est plus enregistré. Utilisez l'entrée Party Menu pour concevoir le menu.
Le message de chat suivant /party invite n'est pas affiché. C'est normal : la commande sans nom attend un message de chat et l'utilise comme nom du joueur, puis invite ce joueur. Un nom erroné produit simplement une erreur.
Extensions associées
- MySQL — messagerie Redis et transport via le proxy utilisé pour les téléportations.
- GUI — dispositions et vues utilisées par le menu de groupe.
- Friend et Guild — les autres systèmes sociaux.
- BTC Sky — les îles coop placent les membres dans le même groupe.
- Dungeon — les instances de donjon utilisent le groupe pour rassembler les joueurs.