Pular para o conteúdo principal

Profiles

Vários perfis de personagem por jogador, cada um com seu próprio inventário, baú do Ender, XP e fatos do TypeWriter.

Privadasv0.2.0RPG e progressão
RequerTypeWriter0.9.0-beta-177 (BTC build)Basic (TypeWriter extension)GUI (TypeWriter extension)MySQL (TypeWriter extension)opcionalParty (TypeWriter extension)opcional

Criada para a rede BornToCraft. Esta extensão é documentada como referência e não é distribuída.

Visão geral​

O Profiles dá a cada jogador vários personagens independentes na mesma conta. Trocar de perfil troca o inventário, o baú do ender, a experiência, a vida e a fome do jogador, e também os seus facts do TypeWriter, de modo que o progresso em quests, os desbloqueios e os contadores são separados para cada personagem. Outras extensões da BTC, como o BTC Sky, anexam seus próprios dados ao perfil ativo.

Os perfis são criados e escolhidos a partir de um menu que você desenha no painel web. Um servidor pode obrigar os jogadores a escolher um perfil antes de poderem se mover, construir, lutar ou conversar. Os dados são armazenados em um banco de dados quando a ponte MySQL está ativada, o que torna os perfis disponíveis em todos os servidores de uma rede, e em arquivos caso contrário.

O sistema está ligado ao modo de jogo do servidor (mysql.game-mode.current): um jogador tem uma lista separada de perfis em cada modo de jogo.

Recursos​

  • Personagens separados — inventário, armadura, mão secundária, baú do ender, nível, experiência, vida, fome e saturação por perfil.
  • Estado de história separado — os facts do TypeWriter são salvos na troca e restaurados para o perfil.
  • Menu de perfis — um GUI com um slot por perfil, com templates para slots ativos, inativos, livres e bloqueados.
  • Seleção obrigatória — até que um perfil esteja ativo, o jogador não pode se mover, interagir, quebrar, colocar, soltar, lutar nem conversar.
  • Solo e coop — um perfil é criado como solo ou coop (ilha compartilhada do BTC Sky), e um modo de jogo sem coop pula a pergunta.
  • Limites — um máximo padrão e limites maiores por permissão.
  • Proteção na troca — um cooldown entre trocas e um evento que outras extensões podem cancelar.
  • Entries — ações para abrir o menu, criar, trocar, renomear, excluir e salvar, facts sobre o estado do perfil e eventos.
  • Entre servidores — os perfis e seus dados são compartilhados pela ponte MySQL.
  • Placeholders — nome, id, contagem, limites e detalhes por perfil para menus e HUDs.

Instalação​

  1. Instale a extensão GUI, que desenha o menu. A extensão Basic é declarada como dependência.
  2. Recomendado: instale a extensão MySQL e ative-a (mysql.enabled: true). Sem ela, os perfis são armazenados em arquivos e não são compartilhados entre servidores.
  3. Coloque o JAR do Profiles em plugins/Typewriter/extensions/ e reinicie o servidor.
  4. Edite a seção profiles de plugins/Typewriter/mysql/config.yml; veja Configuração. O Profiles lê suas configurações do arquivo de configuração da extensão MySQL mesmo quando você não usa um banco de dados.
  5. Crie as entries de menu descritas em Primeiros passos.

Primeiros passos​

Configure uma seleção de perfil que os novos jogadores devem concluir:

  1. No painel web do TypeWriter, abra uma page e adicione uma entry Profile Menu Config. /profile abre a primeira encontrada e não faz nada quando não existe nenhuma.
  2. Defina inventoryTitle, inventoryRows e guiType. Monte o layout em layoutPool e defina mainLayoutId. Veja os guias do GUI.
  3. Coloque itens com buttonPrefix profile_button: e buttonType PROFILE_SLOT onde os perfis devem aparecer. Cada marcador mostra um perfil, lidos da esquerda para a direita e depois de cima para baixo. Os slots abaixo do limite do jogador que não têm perfil mostram createProfileTemplate, e os slots além do limite mostram maxProfilesTemplate.
  4. Defina defaultMaxProfiles e, se necessário, permissionLimits.
  5. Crie as duas pages de GUI usadas na criação, como entries Open GUI com os ids profile_create_chooser (uma escolha entre Solo ou Coop) e, para modos de jogo sem coop, profile_create_solo. Um botão nessas pages executa profile create solo ou profile create coop e, para modos somente solo, apenas profile create.
  6. Em plugins/Typewriter/mysql/config.yml, verifique profiles.force-profile-selection (padrão true) e profiles.coop-supported.
  7. Publique, entre no servidor e escolha ou crie um perfil.

Use Switch Profile Action ou Open Profile Menu Action a partir de NPCs e itens. Reaja às trocas feitas pela ação de troca ou por comandos digitados com o Profile Switched Event.

Condicione conteúdo ao perfil

Use os facts Profile Count Fact e Is Profile Active Fact em criteria. Por exemplo, mostre um botão "create a profile" apenas enquanto Can Create Profile Fact for 1.

Como funciona​

Em uma troca, a extensão verifica o cooldown e depois dispara um evento de pré-troca cancelável para que um modo de jogo possa recusar (por exemplo, durante uma guerra ou um minigame). Em seguida, captura o estado atual do jogador, grava-o no repositório, limpa os facts do TypeWriter e o inventário do jogador e restaura os dados do perfil de destino. O estado do perfil ativo também é salvo quando o jogador sai.

O que é salvo depende da configuração: inventário e baú do ender (save-inventory, save-ender-chest) e estatísticas do Minecraft (save-statistics, desativado por padrão por causa do tamanho). Nível, experiência, vida, fome e facts do TypeWriter são sempre salvos.

Como os facts são trocados, tudo o que é armazenado em um fact pertence ao perfil. Os dados de outras extensões seguem o próprio profile-mode na configuração do MySQL: os dados per-profile são mantidos separadamente para cada perfil, e os dados shared são comuns a todos os perfis.

Configuração​

O Profiles não tem arquivo de configuração próprio. Suas configurações ficam na seção profiles de plugins/Typewriter/mysql/config.yml, criado pela extensão MySQL.

ChavePadrão no arquivo fornecidoSignificado
profiles.enabledtrueLiga o sistema de perfis.
profiles.max-profiles2Máximo de perfis por jogador quando não existe uma entry Profile Menu Config. O defaultMaxProfiles da entry o substitui.
profiles.default-profile-namePrincipalNome do perfil automático.
profiles.save-statisticstrueSalva as estatísticas do Minecraft por perfil. Usa muito armazenamento.
profiles.save-inventorytrueTroca o inventário por perfil.
profiles.save-ender-chesttrueTroca o baú do ender por perfil.
profiles.require-permissionfalseExige typewriter.profiles.create para criar um perfil.
profiles.auto-create-defaulttrueCria um perfil padrão na primeira entrada. Só funciona quando coop-supported é false.
profiles.force-profile-selectiontrueBloqueia o jogador até que um perfil esteja ativo.
profiles.switch-cooldown-seconds60Atraso mínimo entre duas trocas de um jogador. 0 o desativa.
profiles.coop-supportedtrueSe este modo de jogo tem perfis coop. Quando false, a pergunta Solo ou Coop é pulada e todo perfil é solo.
profiles.creation-menu-entry-idvazioId da page de GUI aberta para criar um perfil. Vazio significa profile_create_chooser quando coop é suportado e profile_create_solo caso contrário.

Os valores acima são os do arquivo fornecido. Os valores de reserva embutidos diferem quando uma chave está ausente (max-profiles 5, save-statistics true, auto-create-default false), então mantenha as chaves no seu arquivo.

Armazenamento. Com mysql.enabled: true e profiles.enabled: true, os perfis são armazenados na tabela typewriter_profiles. Caso contrário, são armazenados como assets em profiles/<game mode>/<player uuid>.json. Os perfis salvos no antigo artifact Profile Storage Artifact são copiados para o novo armazenamento automaticamente na inicialização.

A entry Profile Menu Config descreve o menu. Um clique em um perfil troca para ele, Shift + clique esquerdo o exclui (após uma tela de confirmação, a menos que deleteConfirmation esteja desativado), e um clique em um slot livre abre a página de criação. Criar um perfil pede o nome em uma bigorna. {profile_name}, {profile_id}, {created_date}, {last_used}, {level}, {exp}, {health}, {food}, {profile_count} e {max_profiles} podem ser usados em títulos, nomes e lore.

Os itens de botão com buttonPrefix profile_button: suportam PROFILE_SLOT (um perfil) e os marcadores INFO e CLOSE, que executam profile info e gui:close.

Os slots podem executar profile open, profile select <id>, profile create solo|coop e profile delete <id>, como o jogador que clicou.

Idioma

Os textos padrão do menu, das mensagens e da mensagem de cooldown estão em francês. Altere-os na entry do menu.

Comandos​

Todos os comandos exigem profiles.use. Aliases: /profil, /profiles.

ComandoDescrição
/profileAbre o menu de perfis.
/profile menuAbre o menu de perfis.
/profile select <id>Troca para um perfil.
/profile create solo ou coopCria e ativa um perfil; o nome é pedido em uma bigorna. Sem um modo, apenas para modos de jogo sem coop.
/profile delete <id> [confirm]Exclui um perfil que não está ativo. Abre antes a tela de confirmação se deleteConfirmation estiver ativado, a menos que confirm seja informado.
/profile admin list <player>Lista os perfis de um jogador online (exige profiles.admin).
/profile admin create <player> <name>Cria um perfil solo para um jogador.
/profile admin delete <player> <id>Exclui um perfil de um jogador.
/profile admin switch <player> <id>Troca um jogador para um perfil.
/profile admin rename <player> <id> <name>Renomeia um perfil.
/profile headless list, select <id>, create <name>Gerencia seus próprios perfis sem um menu (exige profiles.headless).
Interceptação de comandos no jogo

Um listener do menu trata o /profile digitado por um jogador antes da árvore de comandos: ele suporta select, create, delete e a abertura do menu, e ignora os demais. /profile admin ... e /profile headless ... funcionam, portanto, de forma confiável pelo console ou pelos aliases /profil e /profiles.

Permissões​

PermissãoPadrãoConcede
profiles.useTodosOs comandos /profile.
profiles.adminOperadores/profile admin.
profiles.headlessNinguém/profile headless, para clientes sem tela, como bots de teste.
profiles.switch.bypasscooldownNinguémTrocar sem cooldown.
typewriter.profiles.createNinguémCriar perfis quando profiles.require-permission é true.
Permissões de permissionLimitsVocê escolheAumentam o limite de perfis. O maior limite prevalece.

Placeholders​

Tags do MiniPlaceholders para texto MiniMessage. Uma referência é uma posição na lista (dígitos, a partir de 0) ou um id de perfil.

PlaceholderRetorna
<profile_active_id>, <profile_active_name>Id e nome do perfil ativo.
<profile_active>1 quando um perfil está ativo. Com uma referência, <profile_active:0> informa se esse perfil é o ativo.
<profile_count>Número de perfis.
<profile_max>Número máximo de perfis para o jogador.
<profile_can_create>1 quando o jogador pode criar outro perfil.
<profile_remaining>Número de perfis ainda disponíveis.
<profile_friend_count>Número de amigos, 0 sem a extensão Friend.
<profile_enabled>1 quando o sistema está ligado.
<profile_name:ref>, <profile_id:ref>Nome e id de um perfil.
<profile_created:ref>, <profile_last_used:ref>Datas no formato dd/MM/yyyy HH:mm.
<profile_created_timestamp:ref>, <profile_last_used_timestamp:ref>Milissegundos desde a época Unix.
<profile_level:ref>, <profile_exp:ref>Nível e progresso de experiência em porcentagem.
<profile_health:ref>, <profile_food:ref>Vida e nível de fome salvos.

Entries​

20 entradas, geradas a partir do código-fonte da extensão.

Ações6
Eventos5
Fatos7
Artefatos1
Manifestos1

Solução de problemas​

/profile não faz nada. Não existe uma entry Profile Menu Config. Crie e publique uma.

Os novos jogadores ficam congelados e não conseguem conversar. profiles.force-profile-selection é true e nenhum perfil está ativo. O jogador é enviado à página de criação depois de entrar; confirme que a entry de GUI profile_create_chooser (ou profile_create_solo, ou o seu creation-menu-entry-id) existe. Defina a opção como false para desativar o bloqueio.

"Choisissez d'abord Solo ou Coop dans le menu des profils." O jogador tentou um comando enquanto estava forçado. Apenas /profile ... e o comando da página de criação são permitidos até que um perfil esteja ativo.

"Vous devez attendre N s avant de changer à nouveau de profil." O cooldown de troca está em andamento. Reduza profiles.switch-cooldown-seconds ou conceda profiles.switch.bypasscooldown.

Nenhum perfil padrão é criado na primeira entrada. auto-create-default só funciona quando coop-supported é false. Com coop, o jogador deve escolher Solo ou Coop, e o log diz "No implicit profile was created; disable the setting."

Os perfis diferem entre servidores. A extensão MySQL deve estar ativada (mysql.enabled: true) em todo servidor, com o mesmo banco de dados e o mesmo modo de jogo. Sem ela, os perfis ficam em arquivos locais. Se o MySQL estiver ativado mas a fonte de dados estiver ausente, o log diz "MySQL enabled for profiles but DataSource not found. Falling back to JSON."

Os jogadores perdem itens após uma troca. Verifique save-inventory e save-ender-chest. Quando são false, o inventário não é trocado nem limpo, então os itens são compartilhados entre perfis.

Uma troca é recusada com uma mensagem. Outra extensão a cancelou pelo evento de pré-troca, por exemplo durante uma luta ou um minigame. A mensagem vem dessa extensão.

Extensões relacionadas​

  • MySQL — armazenamento, modos de jogo e as configurações lidas pelo Profiles.
  • GUI — layouts e views do menu de perfis.
  • BTC Sky — ilhas coop e dados de ilha anexados a um perfil.
  • Party e Friend — recursos sociais que acompanham o perfil ativo.