Saltar al contenido principal

Profiles

Varios perfiles de personaje por jugador, cada uno con su propio inventario, cofre de ender, XP y hechos de TypeWriter.

Privadasv0.2.0RPG y progresión
RequiereTypeWriter0.9.0-beta-177 (BTC build)Basic (TypeWriter extension)GUI (TypeWriter extension)MySQL (TypeWriter extension)opcionalParty (TypeWriter extension)opcional

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

Descripción general​

Profiles da a cada jugador varios personajes independientes en la misma cuenta. Cambiar de perfil intercambia el inventario, el cofre de ender, la experiencia, la salud y la comida del jugador, y también sus hechos de TypeWriter, de modo que el progreso de las misiones, los desbloqueos y los contadores son independientes para cada personaje. Otras extensiones de BTC, como BTC Sky, asocian sus propios datos al perfil activo.

Los perfiles se crean y se eligen desde un menú que diseñas en el panel web. Un servidor puede obligar a los jugadores a elegir un perfil antes de poder moverse, construir, luchar o chatear. Los datos se almacenan en una base de datos cuando el puente MySQL está activado, lo que hace que los perfiles estén disponibles en todos los servidores de una red, y en archivos en caso contrario.

El sistema está ligado al modo de juego del servidor (mysql.game-mode.current): un jugador tiene una lista de perfiles distinta en cada modo de juego.

Características​

  • Personajes independientes: inventario, armadura, mano secundaria, cofre de ender, nivel, experiencia, salud, comida y saturación por perfil.
  • Estado de la historia independiente: los hechos de TypeWriter se guardan al cambiar y se restauran para el perfil.
  • Menú de perfiles: una GUI con una ranura por perfil y plantillas para las ranuras activas, inactivas, libres y bloqueadas.
  • Selección obligatoria: hasta que haya un perfil activo, el jugador no puede moverse, interactuar, romper, colocar, soltar, luchar ni chatear.
  • Solo y cooperativo: un perfil se crea como solo o cooperativo (isla compartida de BTC Sky), y un modo de juego sin cooperativo se salta la pregunta.
  • Límites: un máximo por defecto y límites más altos por permiso.
  • Protección de cambio: un cooldown entre cambios y un evento que otras extensiones pueden cancelar.
  • Entradas: acciones para abrir el menú, crear, cambiar, renombrar, eliminar y guardar, hechos sobre el estado del perfil y eventos.
  • Entre servidores: los perfiles y sus datos se comparten mediante el puente MySQL.
  • Placeholders: nombre, id, recuento, límites y detalles por perfil para menús y HUD.

Instalación​

  1. Instala la extensión GUI, que dibuja el menú. La extensión Basic está declarada como dependencia.
  2. Recomendado: instala la extensión MySQL y actívala (mysql.enabled: true). Sin ella, los perfiles se almacenan en archivos y no se comparten entre servidores.
  3. Coloca el JAR de Profiles en plugins/Typewriter/extensions/ y reinicia el servidor.
  4. Edita la sección profiles de plugins/Typewriter/mysql/config.yml; consulta Configuración. Profiles lee sus ajustes del archivo de configuración de la extensión MySQL incluso cuando no usas una base de datos.
  5. Crea las entradas de menú descritas en Primeros pasos.

Primeros pasos​

Configura una selección de perfil que los jugadores nuevos deban completar:

  1. En el panel web de TypeWriter, abre una página y añade una entrada Profile Menu Config. /profile abre la primera que encuentre y no hace nada cuando no existe ninguna.
  2. Establece inventoryTitle, inventoryRows y guiType. Construye el layout en layoutPool y establece mainLayoutId. Consulta las guías de GUI.
  3. Coloca objetos con buttonPrefix profile_button: y buttonType PROFILE_SLOT donde deban aparecer los perfiles. Cada marcador muestra un perfil, leído de izquierda a derecha y de arriba abajo. Las ranuras por debajo del límite del jugador que no contienen ningún perfil muestran createProfileTemplate, y las ranuras que superan el límite muestran maxProfilesTemplate.
  4. Establece defaultMaxProfiles y, si es necesario, permissionLimits.
  5. Crea las dos páginas de GUI que se usan para la creación, como entradas Open GUI con los ids profile_create_chooser (una elección entre Solo o Coop) y, para los modos de juego sin cooperativo, profile_create_solo. Un botón de estas páginas ejecuta profile create solo o profile create coop, y profile create solo, para los modos solo.
  6. En plugins/Typewriter/mysql/config.yml, comprueba profiles.force-profile-selection (por defecto true) y profiles.coop-supported.
  7. Publica, entra al servidor y elige o crea un perfil.

Usa Switch Profile Action o Open Profile Menu Action desde NPC y objetos. Reacciona a los cambios hechos por la acción de cambio o por comandos escritos con el Profile Switched Event.

Condiciona el contenido al perfil

Usa los hechos Profile Count Fact e Is Profile Active Fact en los criterios. Por ejemplo, muestra un botón de "crear un perfil" solo mientras Can Create Profile Fact valga 1.

Cómo funciona​

En un cambio, la extensión comprueba el cooldown y después dispara un evento previo al cambio que se puede cancelar, para que un modo de juego pueda rechazarlo (por ejemplo durante una guerra o un minijuego). A continuación captura el estado actual del jugador, lo escribe en el repositorio, borra los hechos de TypeWriter y el inventario del jugador y restaura los datos del perfil de destino. El estado del perfil activo también se guarda cuando el jugador se desconecta.

Lo que se guarda depende de la configuración: inventario y cofre de ender (save-inventory, save-ender-chest) y estadísticas de Minecraft (save-statistics, desactivado por defecto por su tamaño). El nivel, la experiencia, la salud, la comida y los hechos de TypeWriter se guardan siempre.

Como los hechos se intercambian, todo lo que se almacena en un hecho pertenece al perfil. Los datos de otras extensiones siguen su propio profile-mode en la configuración de MySQL: los datos per-profile se conservan por separado para cada perfil y los datos shared son comunes a todos los perfiles.

Configuración​

Profiles no tiene archivo de configuración propio. Sus ajustes están en la sección profiles de plugins/Typewriter/mysql/config.yml, creado por la extensión MySQL.

ClaveValor por defecto en el archivo incluidoSignificado
profiles.enabledtrueActiva el sistema de perfiles.
profiles.max-profiles2Máximo de perfiles por jugador cuando no existe ninguna entrada Profile Menu Config. El defaultMaxProfiles de la entrada lo sustituye.
profiles.default-profile-namePrincipalNombre del perfil automático.
profiles.save-statisticstrueGuarda las estadísticas de Minecraft por perfil. Usa mucho almacenamiento.
profiles.save-inventorytrueIntercambia el inventario por perfil.
profiles.save-ender-chesttrueIntercambia el cofre de ender por perfil.
profiles.require-permissionfalseExige typewriter.profiles.create para crear un perfil.
profiles.auto-create-defaulttrueCrea un perfil por defecto en la primera entrada. Solo funciona cuando coop-supported es false.
profiles.force-profile-selectiontrueBloquea al jugador hasta que haya un perfil activo.
profiles.switch-cooldown-seconds60Retraso mínimo entre dos cambios de un jugador. 0 lo desactiva.
profiles.coop-supportedtrueSi este modo de juego tiene perfiles cooperativos. Cuando es false, se omite la pregunta Solo o Coop y todos los perfiles son en solitario.
profiles.creation-menu-entry-idvacíoId de la página de GUI que se abre para crear un perfil. Vacío significa profile_create_chooser cuando hay cooperativo y profile_create_solo en caso contrario.

Los valores anteriores son los del archivo incluido. Los valores de reserva integrados difieren cuando falta una clave (max-profiles 5, save-statistics true, auto-create-default false), así que conserva las claves en tu archivo.

Almacenamiento. Con mysql.enabled: true y profiles.enabled: true, los perfiles se almacenan en la tabla typewriter_profiles. En caso contrario, se almacenan como assets en profiles/<game mode>/<player uuid>.json. Los perfiles guardados en el antiguo artefacto Profile Storage Artifact se copian automáticamente al nuevo almacenamiento al arrancar.

Menús​

La entrada Profile Menu Config describe el menú. Un clic en un perfil cambia a él, Mayús + clic izquierdo lo elimina (tras una pantalla de confirmación, salvo que deleteConfirmation esté desactivado), y un clic en una ranura libre abre la página de creación. Al crear un perfil se pide su nombre en un yunque. {profile_name}, {profile_id}, {created_date}, {last_used}, {level}, {exp}, {health}, {food}, {profile_count} y {max_profiles} se pueden usar en títulos, nombres y lore.

Los objetos botón con buttonPrefix profile_button: admiten PROFILE_SLOT (un perfil) y los marcadores INFO y CLOSE, que ejecutan profile info y gui:close.

Las ranuras pueden ejecutar profile open, profile select <id>, profile create solo|coop y profile delete <id>, como el jugador que hace clic.

Idioma

Los textos por defecto del menú, los mensajes y el mensaje del cooldown están en francés. Cámbialos en la entrada del menú.

Comandos​

Todos los comandos necesitan profiles.use. Alias: /profil, /profiles.

ComandoDescripción
/profileAbre el menú de perfiles.
/profile menuAbre el menú de perfiles.
/profile select <id>Cambia a un perfil.
/profile create solo o coopCrea y activa un perfil; el nombre se pide en un yunque. Sin modo, solo para los modos de juego sin cooperativo.
/profile delete <id> [confirm]Elimina un perfil que no esté activo. Abre antes la pantalla de confirmación si deleteConfirmation está activado, salvo que se indique confirm.
/profile admin list <player>Lista los perfiles de un jugador conectado (requiere profiles.admin).
/profile admin create <player> <name>Crea un perfil en solitario para un jugador.
/profile admin delete <player> <id>Elimina un perfil de un jugador.
/profile admin switch <player> <id>Cambia a un jugador a un perfil.
/profile admin rename <player> <id> <name>Renombra un perfil.
/profile headless list, select <id>, create <name>Gestiona tus propios perfiles sin menú (requiere profiles.headless).
Interceptación de comandos en el juego

Un listener del menú gestiona /profile cuando lo escribe un jugador, antes que el árbol de comandos: admite select, create, delete y la apertura del menú, e ignora los demás. Por tanto, /profile admin ... y /profile headless ... funcionan de forma fiable desde la consola o mediante los alias /profil y /profiles.

Permisos​

PermisoPor defectoConcede
profiles.useTodosLos comandos /profile.
profiles.adminOperadores/profile admin.
profiles.headlessNadie/profile headless, para clientes sin pantalla como los bots de prueba.
profiles.switch.bypasscooldownNadieCambiar sin cooldown.
typewriter.profiles.createNadieCrear perfiles cuando profiles.require-permission es true.
Permisos de permissionLimitsTú eligesElevan el límite de perfiles. Prevalece el límite más alto.

Placeholders​

Etiquetas de MiniPlaceholders para texto MiniMessage. Una referencia es una posición en la lista (dígitos, desde 0) o un id de perfil.

PlaceholderDevuelve
<profile_active_id>, <profile_active_name>Id y nombre del perfil activo.
<profile_active>1 cuando hay un perfil activo. Con una referencia, <profile_active:0> indica si ese perfil es el activo.
<profile_count>Número de perfiles.
<profile_max>Número máximo de perfiles del jugador.
<profile_can_create>1 cuando el jugador puede crear otro perfil.
<profile_remaining>Número de perfiles aún disponibles.
<profile_friend_count>Número de amigos, 0 sin la extensión Friend.
<profile_enabled>1 cuando el sistema está activado.
<profile_name:ref>, <profile_id:ref>Nombre e id de un perfil.
<profile_created:ref>, <profile_last_used:ref>Fechas con el formato dd/MM/yyyy HH:mm.
<profile_created_timestamp:ref>, <profile_last_used_timestamp:ref>Milisegundos de época.
<profile_level:ref>, <profile_exp:ref>Nivel y progreso de experiencia como porcentaje.
<profile_health:ref>, <profile_food:ref>Salud guardada y nivel de comida.

Entradas​

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

Acciones6
Eventos5
Hechos7
Artefactos1
Manifiestos1

Resolución de problemas​

/profile no hace nada. No existe ninguna entrada Profile Menu Config. Crea y publica una.

Los jugadores nuevos están congelados y no pueden chatear. profiles.force-profile-selection es true y no hay ningún perfil activo. Al jugador se le envía a la página de creación tras entrar; asegúrate de que existe la entrada de GUI profile_create_chooser (o profile_create_solo, o tu creation-menu-entry-id). Establece la opción en false para desactivar el bloqueo.

"Choisissez d'abord Solo ou Coop dans le menu des profils." El jugador intentó un comando mientras estaba forzado. Hasta que haya un perfil activo solo se permiten /profile ... y el comando de la página de creación.

"Vous devez attendre N s avant de changer à nouveau de profil." El cooldown de cambio está en marcha. Reduce profiles.switch-cooldown-seconds o concede profiles.switch.bypasscooldown.

No se crea ningún perfil por defecto en la primera entrada. auto-create-default solo funciona cuando coop-supported es false. Con cooperativo, un jugador debe elegir Solo o Coop, y el registro dice "No implicit profile was created; disable the setting."

Los perfiles difieren entre servidores. La extensión MySQL debe estar activada (mysql.enabled: true) en todos los servidores, con la misma base de datos y el mismo modo de juego. Sin ella, los perfiles están en archivos locales. Si MySQL está activado pero falta la fuente de datos, el registro dice "MySQL enabled for profiles but DataSource not found. Falling back to JSON."

Los jugadores pierden objetos tras un cambio. Comprueba save-inventory y save-ender-chest. Cuando son false, el inventario no se intercambia y tampoco se borra, por lo que los objetos se comparten entre perfiles.

Un cambio se rechaza con un mensaje. Otra extensión lo canceló mediante el evento previo al cambio, por ejemplo durante un combate o un minijuego. El mensaje procede de esa extensión.

Extensiones relacionadas​

  • MySQL: almacenamiento, modos de juego y los ajustes que lee Profiles.
  • GUI: layouts y vistas del menú de perfiles.
  • BTC Sky: islas cooperativas y datos de isla asociados a un perfil.
  • Party y Friend: funciones sociales que siguen al perfil activo.