Saltar al contenido principal

Party

Grupos temporales con invitaciones, un menú GUI, límites de tamaño y warps de servidor para todo el grupo.

Privadasv0.2.0Social
RequiereTypeWriter0.9.0-beta-177 (BTC build)Quest (TypeWriter extension)GUI (TypeWriter extension)MySQL (TypeWriter extension)opcionalRedis or Valkeyopcional

Creada para la red BornToCraft. Esta extensión está documentada como referencia y no se distribuye.

Descripción general​

Party permite a los jugadores formar un grupo de corta duración. El líder crea una party e invita a jugadores por nombre, y los jugadores invitados aceptan con /party join <leader>. Los sistemas de misiones, mazmorras y HUD pueden entonces preguntar "quién está en la misma party que este jugador". Un líder también puede teletransportar a toda la party a otro servidor de la red.

Las parties no se guardan en una base de datos: viven en memoria y se replican a los demás servidores de la red mediante Redis. Un miembro que se desconecta permanece en la party, de modo que la party sobrevive a un salto de servidor, y solo termina cuando los miembros se van, son expulsados o el líder la disuelve. Un reinicio de todos los servidores disuelve todas las parties.

El menú de la party es un menú de GUI que construyes en el panel web. Los miembros se muestran como cabezas de jugador y las invitaciones pendientes como cabezas clicables.

Características​

  • Crear, invitar, unirse, salir, expulsar, disolver — disponible como comandos, acciones de TypeWriter y botones de menú.
  • Menú de party — una entrada con pantallas de miembros e invitaciones, paginación y pestañas.
  • Invitaciones — introducción del nombre por chat, una pantalla de unirse con un filtro de búsqueda y caducidad a los 60 segundos.
  • Límites de tamaño — un máximo por defecto con límites más altos para permisos como typewriter.party.vip.
  • Warp a un servidor — el líder envía a todos los miembros a otro backend, estén donde estén en la red.
  • Parties entre servidores — la pertenencia, las invitaciones y los mensajes de chat de la party llegan a todos los servidores del grupo.
  • Enlaces con la historia — un fact indica si el jugador está en una party.
  • Placeholders — líder, rol, tamaño, nombres de miembros y salud de miembros para HUD.
  • Integraciones — otras extensiones de BTC, como las islas coop y las mazmorras, crean y leen parties.

Instalación​

  1. Instala la extensión GUI, que dibuja el menú, y la extensión Quest, que Party declara como dependencia.
  2. Opcional, para varios servidores: instala la extensión MySQL, activa Redis (o Valkey) y establece el mismo redis.group-id y un redis.server-name único en cada servidor. El warp necesita que el proxy gestione el canal btc:bridge.
  3. Coloca el JAR de Party en plugins/Typewriter/extensions/ y reinicia el servidor.

party.use se da a todos por defecto y party.admin a los operadores.

Primeros pasos​

Construye un menú de party y un límite de tamaño:

  1. En el panel web de TypeWriter, abre una página y añade una entrada Party Menu Config. Solo se usan sus límites (consulta Configuración): establece maxPartySize y, opcionalmente, maxPartySizePermissions.
  2. Añade una entrada Party Menu. /party abre la primera que encuentra.
  3. Establece inventoryTitle, inventoryRows y guiType, luego construye el layout en layoutPool y establece mainLayoutId. Consulta las guías de GUI.
  4. Declara pantallas en views (por ejemplo members y join). Lista los ids de las pantallas de miembros en memberListViewIds y el id de la pantalla de invitaciones en joinListViewIds.
  5. Añade items con un buttonType: PARTY_MEMBERS, PARTY_JOIN, PAGE_NAV y los botones que ejecutan comandos (consulta Menús).
  6. Publica y ejecuta /party.

Para iniciar una party desde una misión, usa la acción Create Party. Para reunir a jugadores, usa Invite Player con targetName, que acepta un placeholder, y Join Party con leaderName.

Mazmorras e instancias

Usa Warp Party to Server con targetServer establecido en el nombre del backend que conoce el proxy, por ejemplo dungeon-1. Solo el líder puede activarlo. Combínalo con el fact In Party como criterio para ofrecer el warp solo a los jugadores que están en una party.

Cómo funciona​

Cada cambio de party se envía a los demás servidores, que sustituyen su copia. Las invitaciones caducan a los 60 segundos, comprobado una vez por minuto, así que una invitación dura entre 60 y 120 segundos. Cuando el líder se va, el primer miembro restante pasa a ser líder. Una party sin ningún miembro se elimina.

Configuración​

La entrada Party Menu Config es opcional. Solo contiene los límites de tamaño de la party, mediante estos campos:

  • maxPartySize — número máximo de miembros por defecto. El valor por defecto es 5.
  • maxPartySizePermissions — permiso a tamaño máximo. Se aplica el tamaño coincidente más alto del líder. Los valores por defecto son typewriter.party.vip para 8 y typewriter.party.mvp para 12.

Sin esta entrada no hay límite de tamaño. El menú de la party en sí no se configura aquí, proviene de la entrada Party Menu.

El servicio de party no lee ni escribe el Party Artifact en esta versión, y no necesitas crear uno.

La entrada Party Menu es un menú de GUI con estos comportamientos específicos de party.

Panel de contenido. En una pantalla listada en memberListViewIds, cada miembro es una cabeza de jugador que muestra su rol y estado de conexión. Si eres el líder, el clic izquierdo sobre otro miembro lo expulsa. En una pantalla listada en joinListViewIds, cada invitación pendiente es la cabeza del líder que invita: el clic izquierdo se une y el clic derecho rechaza. El panel se coloca con contentX (por defecto 5), contentY, contentColumns (por defecto 4) y contentRows (por defecto 7).

Botones. Estos valores de buttonType funcionan de serie:

buttonTypeClic
PARTY_MEMBERSAbre la pantalla members (party open members).
PARTY_JOINCambia a la vista join del mismo menú.
PAGE_NAVClic izquierdo avanza, clic derecho retrocede; el nombre muestra el contador de páginas. Oculto cuando basta una página.

Estos valores no asocian ninguna acción. Configura tú mismo el item y dale comandos: PARTY_INFO, PARTY_CREATE, PARTY_LEAVE, PARTY_DISBAND, PARTY_INVITE, PARTY_CLOSE, PARTY_ACCEPT_INVITE, PARTY_DECLINE_INVITE. Por ejemplo, ejecuta party create, party leave o party disband en los items correspondientes. Un botón de invitar necesita un nombre escrito: dale un diálogo input cuyo onInputCommands ejecute party invite {input}.

Comandos de ranura. Los items pueden ejecutar 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> y party joinsearch <text>. Se ejecutan como el jugador que hizo clic.

Idioma

El lore de las cabezas y algunos mensajes de administración están en francés. El placeholder <party_role> devuelve las palabras francesas Chef, Moderateur y Membre. Usa <party_role_raw> para los identificadores LEADER, MODERATOR y MEMBER.

Comandos​

Todos los comandos necesitan party.use. Alias: /p. El comando sin argumentos abre el primer Party Menu y no imprime nada cuando no existe ninguno.

ComandoDescripción
/partyAbre el menú de la party.
/party createCrea una party y te conviertes en su líder.
/party inviteCierra el inventario y escribe el nombre del jugador en el chat.
/party invite <player>Invita a un jugador (solo el líder).
/party join <leader>Únete a la party de ese líder, si te invitó.
/party accept <leader>Igual que join.
/party leaveAbandona tu party.
/party kick <player>Expulsa a un miembro (solo el líder).
/party disbandDisuelve la party (solo el líder).
/party infoImprime el líder y los miembros.
/party admin listLista todas las parties activas (requiere party.admin).
/party admin info <player>Muestra la party de un jugador.
/party admin disband <player>Disuelve la party de un jugador. Su líder debe estar conectado.
/party admin kick <player>Saca a un jugador de su party. El líder de la party debe estar conectado.

Permisos​

PermisoPor defectoConcede
party.useTodosTodos los comandos /party. Los clics del menú ejecutan las mismas acciones sin comprobarlo.
party.adminOperadoresLos comandos /party admin.
typewriter.party.vip, typewriter.party.mvpNingunoTamaños de party mayores, solo cuando figuran en maxPartySizePermissions de la entrada de configuración. Estos nombres son los valores por defecto y se pueden cambiar.

Placeholders​

Etiquetas de MiniPlaceholders para texto MiniMessage, como <party_leader>. Los índices empiezan en 0.

PlaceholderDevuelve
<party_in_party>1 cuando el jugador está en una party, 0 en caso contrario.
<party_leader>Nombre del líder.
<party_role>Chef, Moderateur o Membre.
<party_role_raw>LEADER, MODERATOR o MEMBER.
<party_size>Número de miembros.
<party_members>Número de miembros.
<party_members:index>Nombre del miembro en esa posición.
<party_members_exclude:index>Nombre del miembro en esa posición, sin el espectador.
<party_list>Nombres de los miembros separados por una coma.
<party_member_name:index>Nombre del miembro en esa posición.
<party_member_uuid:index>UUID de ese miembro.
<party_member_health:index>Salud actual de ese miembro cuando está conectado en este servidor, 0.0 en caso contrario.
<party_member_health_max:index>Salud máxima, 20.0 cuando se desconoce.
<party_member_health_percent:index>Salud como porcentaje.

Entradas​

10 entradas, generadas a partir del código fuente de la extensión.

Acciones7
Hechos1
Artefactos1
Manifiestos1

Solución de problemas​

/party no hace nada. No hay ninguna entrada Party Menu publicada. Los subcomandos como /party create funcionan sin ella.

"You do not have an invite to this party." La invitación caducó tras 60 a 120 segundos, o el nombre del líder estaba mal escrito. Pide al líder que invite de nuevo y luego usa /party join <leader>.

"Party is full! Limit: N". El líder alcanzó maxPartySize del Party Menu Config. Auméntalo, o concede al líder un permiso listado en maxPartySizePermissions. Sin la entrada de configuración no hay límite.

Los miembros de otro servidor no aparecen. Cada servidor necesita el mismo redis.group-id no vacío, un redis.server-name único y un Redis conectado. Sin un group-id no se difunde nada.

El warp falla con "Cross-server transport is unavailable." Redis no está conectado. Revisa la configuración de la extensión MySQL. El targetServer debe ser el nombre del backend que conoce el proxy, y el proxy debe aceptar el canal btc:bridge.

Los cambios en Party Menu Config (ranuras, botones, mensajes) no tienen efecto. Esos campos pertenecen a un menú antiguo que ya no está registrado. Usa la entrada Party Menu para diseñar el menú.

El siguiente mensaje de chat tras /party invite no se muestra. Es lo esperado: el comando sin un nombre espera un mensaje de chat y lo usa como nombre del jugador, y luego invita a ese jugador. Un nombre incorrecto solo da un error.

Extensiones relacionadas​

  • MySQL — mensajería de Redis y el transporte de proxy usado para los warps.
  • GUI — layouts y vistas usados por el menú de party.
  • Friend y Guild — los otros sistemas sociales.
  • BTC Sky — las islas coop ponen a los miembros en la misma party.
  • Dungeon — las instancias de mazmorra usan la party para agrupar jugadores.