Quest Codex
Visão geral
O Quest Codex dá aos jogadores um livro de quests. Um menu principal lista categorias (História principal, Missões secundárias, Dungeons...), cada categoria abre uma lista das suas quests e clicar em uma quest ativa a rastreia. As quests em si são as que você cria com a extensão oficial Quest do TypeWriter: o Quest Codex apenas as organiza e exibe.
Você desenha cada tela por conta própria. Um menu é um layout da extensão GUI no qual você coloca itens marcadores: um marcador QUEST_SLOT é substituído pelas quests do jogador, um marcador CATEGORY_SLOT pelas categorias e um marcador SORT_SLOT pelo botão de ordenação. Tudo ao redor dos marcadores (bordas, títulos, botões, rolagem, páginas) é conteúdo comum do GUI.
Além do menu, a extensão adiciona rastreamento de várias quests que sobrevive a reconexões, recuperação de um diálogo ou cinemática interrompido, waypoints de GPS e pontos da locator bar no cliente, advancements personalizados do Minecraft concedidos a partir de uma page e ícones de quest no BlueMap.
Recursos
- Categorias — categorias aninhadas com ordem, ícone, visibilidade e criteria de conclusão, e mensagens por status.
- Atribuição de quests — coloque quests em uma categoria, defina a ordem delas e sobrescreva ícone, nome, lore e visibilidade por status.
- Pools de layouts — você desenha cada menu com layouts do GUI; o codex preenche os marcadores
QUEST_SLOT,CATEGORY_SLOT,TRACKED_QUEST_SLOTeSORT_SLOT. - Botão de ordenação — alterna entre All, Not started, In progress e Completed, com rótulo, ícone e lore por modo.
- Rastreamento múltiplo — rastreie várias quests ativas ao mesmo tempo; a última é a quest principal do rastreador oficial do HUD.
- Menu de quests rastreadas — um menu dedicado às quests que o jogador está rastreando.
- Waypoints — camadas de texto, bloco e beacon feitas apenas de pacotes que apontam para um objetivo, uma posição ou uma entidade, além de uma variante para a locator bar vanilla.
- Recuperação de interações — restaura o diálogo ou a cinemática ativos após uma desconexão.
- Advancements — defina abas de advancements do Minecraft no painel e conceda-os com uma ação.
- Ícones no BlueMap — coloque um ícone de quest com um popup no BlueMap.
Instalação
- Instale o TypeWriter em um servidor Paper ou Folia, com a extensão oficial Quest, que define as quests exibidas pelo Quest Codex.
- Instale a extensão GUI (versão 0.18 ou mais recente).
- Opcional: instale o PacketEvents (já exigido pelo TypeWriter) para os waypoints e o BlueMap para os ícones no mapa.
- Baixe o JAR do Quest Codex nas releases do GitHub (o botão no painel de resumo acima), coloque-o em
plugins/Typewriter/extensions/e reinicie o servidor. - Conceda aos seus jogadores a permissão
typewriter.codex.open; veja Permissões abaixo.
Primeiros passos
Monte um diário de quests com uma categoria:
- Em uma page static, adicione uma entry Quest Codex Tracking Data. É aqui que as quests rastreadas são salvas.
- Em uma page manifest, adicione uma entry Quest Codex Global Settings. Defina
trackingArtifactcomo o artifact e revisemaxTrackedQuestse os sons. - Adicione uma entry Quest Category com
categorymain_quests, umtitlecomo<gold>Main Storye umicon. - Adicione uma entry Quest Assignment com
categorymain_questse suas quests emquestRefs.ordersé opcional. - Crie duas entries Open GUI usadas apenas como contêineres de layouts. Na primeira,
main_gui, adicione um layoutsimplecom oidmain, definamainLayoutIdcomomain,guiTypecomoCUSTOMesizecomoSIZE_36. Adicione um item combuttonPrefixcodex_button:,buttonTypeCATEGORY_SLOT,x1,y1,count7 edirectionright. Na segunda,quests_gui, faça o mesmo com o marcadorQUEST_SLOTe adicione um itemCLOSEna linha inferior. - Adicione um Category Menu com
categoryvazio,rows4emenudefinido comomain_gui. Este é o menu principal. - Adicione um segundo Category Menu com
categorymain_quests,rows4emenudefinido comoquests_gui. - Publique e depois execute
/tw codexno jogo. Clique na categoria e depois clique em uma quest ativa para rastreá-la.
O inventário é construído a partir de rows do Category Menu e não a partir de size do Open GUI. Se forem diferentes, os slots abaixo da menor altura são descartados e o console avisa você na inicialização.
Um slot de marcador mostra uma quest. Use count, direction, gap e repeatY para distribuir um marcador em uma grade: count 7, direction right e repeatY 3 resultam em 21 slots de quest. Sem direction, o marcador continua sendo um único slot. As quests preenchem os marcadores em ordem de leitura, e a página seguinte de quests é alcançada com um botão PAGE_NEXT.
Como funciona
Na inicialização, a extensão carrega as categorias, os assignments e os menus. Quando um jogador abre um menu, ela reescreve cada marcador do layout como um marcador indexado (QUEST_SLOT#0, QUEST_SLOT#1, ...) antes de o layout ser interpretado, de modo que os marcadores se comportam como slots comuns dentro de layouts scrollable, paginated e frame. Na renderização, cada marcador é substituído pela n-ésima quest ou categoria.
Menus
Quais entries formam um menu
Um Category Menu é a entry que você abre. Seu campo menu aponta para uma entry Open GUI que fornece apenas o pool de layouts, o layout principal, o tipo de janela e os sons. Não dispare esse Open GUI por conta própria.
category do Category Menu | Menu | Marcador que deve conter |
|---|---|---|
| vazio | Menu principal listando as categorias raiz | CATEGORY_SLOT |
| o nome de uma categoria | Quests dessa categoria | QUEST_SLOT |
@tracked | Quests que o jogador está rastreando | TRACKED_QUEST_SLOT |
Toda categoria definida precisa de um Category Menu; caso contrário, abri-la não faz nada e o console informa isso na inicialização.
Marcadores e botões
Defina buttonPrefix como codex_button: e buttonType como um destes:
buttonType | Função |
|---|---|
CATEGORY_SLOT | O ícone de uma categoria, com seu título, progresso {completed}/{total}, dica de clique e mensagem de status. Clicar abre a categoria. |
QUEST_SLOT | Uma quest. O ícone segue o status dela; o nome e a lore vêm da quest, do assignment e das entries Quest Lore. Clicar em uma quest ativa a rastreia ou deixa de rastreá-la. |
TRACKED_QUEST_SLOT | Uma quest rastreada no menu @tracked. Um slot vazio mantém o seu próprio item e fica inerte, então é o seu estado vazio. |
SORT_SLOT | O botão de ordenação. Configure cada modo em sortDisplay do Category Menu. |
PAGE_NEXT, PAGE_PREV | Vão para a página seguinte ou anterior de quests ou categorias. |
SCROLL_UP, SCROLL_DOWN, SCROLL_LEFT, SCROLL_RIGHT | Rolam o menu. |
BACK | Volta ao menu principal quando existe um, senão à entry mainMenuTrigger, senão ao menu anterior, senão fecha. |
CLOSE | Fecha o menu. |
SORT | Um botão de ordenação colocado como um slot de navegação comum. |
Os botões de navegação mantêm o item, o nome e a lore que você configura; a seta, a barreira ou o funil embutido só é usado quando o slot não tem item.
Coloque os marcadores em layouts simple que pertençam ao Open GUI referenciado por menu. Marcadores em outros tipos de layout, ou nos layouts de um chassi compartilhado, não são indexados e ficam ocultos.
Chassi, views e abas
Para montar um livro de quests com abas, defina baseMenuId no Category Menu como um shell Open GUI compartilhado e adicione views, defaultViewId e breadcrumbSeparator, exatamente como em Views, abas e herança. pushHistoryOnViewSwitch faz o botão Voltar retornar à aba anterior. Um chassi cujo layout raiz tem uma variante _extended recebe automaticamente o canvas de dez linhas.
Exibição das quests
- O ícone de uma quest é, por padrão, um livro, um relógio ou uma esmeralda para não iniciada, em andamento e concluída. Sobrescreva-o por status no Quest Assignment (
notStartedItem,inProgressItem,completedItem). notStartedName,inProgressNameecompletedNamesubstituem o nome da quest, e os campos de lore correspondentes adicionam linhas. Oculte uma quest por status comhideWhenNotStarted,hideWhenInProgressehideWhenCompleted.- Uma entry Quest Lore adiciona linhas por status a uma quest, em uma categoria ou em todas.
- A ordem das quests segue primeiro
orderse depois a ordem dequestRefs. Uma categoria também lista as quests de suas subcategorias. - O menu principal lista apenas as categorias de nível superior (as sem
parent). Uma subcategoria é aberta com/tw codex <category>ou com um botão que executacodex:open <category>.
Configuração
A entry Quest Codex Global Settings guarda as opções que não estão ligadas a um menu. Crie apenas uma; sem ela, os padrões são usados.
- Sons —
soundOnOpen,soundOnSwitch,soundOnClick,soundOnTrack,soundOnUntrack. - Rastreamento —
multiTrackingEnabled,maxTrackedQuests(pelo menos 1) etrackingArtifact. Sem um artifact, as quests rastreadas são mantidas apenas na memória e o console avisa na inicialização. O artifact é um arquivo que deve manter seuartifactIddepois que os jogadores começam a usá-lo. - Recuperação —
recoveryEnabled,recoveryArtifact,recoveryRetentionSeconds(10 a 86400) erecoveryRestoreDelayTicks(1 a 20). Quando um jogador sai durante um diálogo ou uma cinemática, o snapshot é armazenado e restaurado logo depois que o jogador volta. Sem um artifact, a recuperação fica desativada. - Mensagens —
nowTrackingMessage,stoppedTrackingMessage,questInactiveMessage,questCompletedMessage,trackingLimitMessage({quest},{max}),categoryProgressMessage({completed},{total}) e as dicas da lore de categorias e quests. - Rótulos de navegação —
navLabelsdefine o nome de cada botão integrado (next,previous,up,down,left,right,back,close,sort). Só é usado quando o slot marcado não tem um item próprio: um slot que carrega um item mantém o próprio nome e lore. - Botão de ordenação —
sortTextsdefine o rótulo de cada modo de ordenação (allLabel,notStartedLabel,activeLabel,completedLabel) e a linha de lorehint. Um Category Menu que define umlabelouloreno seusortDisplaypara um modo mantém o seu próprio. - Títulos de menu —
mainMenuTitleetrackedQuestsTitlesão os títulos usados quando o Category Menu correspondente tem umtitlevazio. - Erro de comando —
unknownCategoryMessageé o erro que/tw codex <category>mostra para uma categoria que não existe ({category}). - Alternativa do menu principal —
mainMenuTriggeré disparado quando não há um Category Menu principal, por exemplo um Open GUI seu cujos botões executamcodex:open <category>.
Waypoints e locator bar
Quest Codex Waypoint é uma entry de audience: conecte-a a um filtro de audience para escolher quem a vê. Seu target é uma posição fixa, um objetivo localizável, o objetivo rastreado (seleção HIGHEST_PRIORITY, FIRST, CLOSEST, ALL ou ONE_PER_QUEST) ou uma entidade. Suas layers combinam uma camada de texto (placeholders {icon}, {distance}, {distance_m}, {distance_km}, {elevation}, {direction}, {vertical_direction}, {target}, {world_name}, {height_diff} e {eta}), uma camada de bloco e uma camada de beacon. displayMode é HUD_LOCKED (padrão), WORLD_DIRECTIONAL, TARGET_ANCHORED ou ADAPTIVE, e cada camada pode sobrescrevê-lo. Tudo é enviado por pacotes; nenhuma entidade é salva no mundo.
Quest Codex Locator Bar mostra os mesmos alvos como pontos na locator bar vanilla, que exige o Minecraft 1.21.6 ou mais recente, e combina com um waypoint 3D.
Advancements e BlueMap
- Advancement Definition descreve um advancement. Um sem
parentvira uma aba. Eles são gravados na inicialização em um datapack chamadoquestcodex_advancementsna pasta do mundo, e o servidor recarrega seus dados quando o conteúdo mudou, então uma nova definição exige reinício. O advancement só é obtido pela ação Grant Advancement. - BlueMap Icon coloca, na inicialização, um marcador com rótulo e popup nos mapas do BlueMap do seu mundo. Em
description,<objectives>é substituído pelos objetivos da quest.
Comandos
Todos os comandos são subcomandos de /typewriter, normalmente digitado como /tw, e exigem typewriter.codex.open.
| Comando | Descrição |
|---|---|
/tw codex | Abre o menu principal: o Category Menu com category vazio, senão a entry mainMenuTrigger. |
/tw codex tracked | Abre o menu de quests rastreadas. |
/tw codex <category> | Abre uma categoria. O autocompletar lista as categorias definidas. |
Os botões de menu também podem executar estes comandos internos: codex:open <category>, codex:tracked, codex:quest <quest_id> e codex:nav <action>. Use codex:open e codex:tracked nos botões dos seus próprios menus GUI.
Permissões
| Permissão | Concede |
|---|---|
typewriter.codex.open | Todos os comandos /tw codex. A extensão a declara com padrão apenas para operadores e ela aparece no seu plugin de permissões: conceda-a aos grupos que podem usar /tw codex. |
Abrir um menu a partir de uma ação Category Menu ou de um botão de menu não exige permissão.
Placeholders
Placeholders do PlaceholderAPI, com a expansão typewriter. Eles exigem um jogador.
| Placeholder | Retorna |
|---|---|
%typewriter_total_quests% | Número de quests em todas as categorias. |
%typewriter_total_completed%, %typewriter_total_in_progress%, %typewriter_total_not_started% | Número de quests em cada status para o jogador. |
%typewriter_total_progress% | Concluídas sobre o total, por exemplo 15/42. |
%typewriter_category_<name>% | Número de quests na categoria. |
%typewriter_category_<name>_completed%, _in_progress%, _not_started% | Quests da categoria nesse status. |
%typewriter_category_<name>_progress% | Concluídas sobre o total da categoria. |
%typewriter_codex_tracked_count%, _limit% | Número de quests rastreadas e o máximo. |
%typewriter_codex_tracked_multi_enabled%, _has_any% | true ou false. |
%typewriter_codex_tracked_ids%, _names%, _names_lines% | Ids ou nomes das quests rastreadas, separados por vírgula ou um por linha. |
%typewriter_codex_tracked_primary_id%, _primary_name% | A quest principal exibida pelo rastreador oficial. |
%typewriter_codex_tracked_has_<quest_id>% | Se essa quest está rastreada. |
%typewriter_codex_tracked_<n>_id%, _name%, _status%, _primary% | Detalhes da n-ésima quest rastreada, a partir de 1. Vazio quando não há nenhuma. |
%typewriter_codex_tracked_<n>_objective_count%, _objectives%, _objectives_lines%, _priority% | Objetivos visíveis da n-ésima quest rastreada. |
<name> é o nome da categoria, comparado sem diferenciar maiúsculas de minúsculas. Mais detalhes em Placeholders, Comandos e Permissões.
Entries
12 entradas, geradas a partir do código-fonte da extensão.
Ações2
- Category MenuCategory Menu Configuration
- Grant AdvancementGrant Advancement
Audiências2
- Quest Codex Locator BarQuest Codex Locator Bar
- Quest Codex WaypointQuest Codex Waypoint
Artefatos2
- Quest Codex Recovery ArtifactQuest Codex Recovery Data
- Quest Codex Tracking ArtifactQuest Codex Tracking Data
Manifestos6
- Advancement DefinitionAdvancement Definition
- Bluemap IconAdds an icon to BlueMap for a specific quest
- Quest AssignmentQuest Assignment to Category
- Quest CategoryQuest Category
- Quest CodexQuest Codex Global Settings
- Quest LoreQuest Additional Lore
Solução de problemas
/tw codex não faz nada. Não há nenhum Category Menu com category vazio e nenhum mainMenuTrigger. O console registra Main menu could not open com a causa. Para uma categoria, crie um Category Menu cujo category seja igual ao category da Quest Category.
Um menu abre vazio. O console informa isso na inicialização: nenhum slot do Open GUI referenciado tem o marcador de que o menu precisa (CATEGORY_SLOT, QUEST_SLOT ou TRACKED_QUEST_SLOT), menu está vazio ou não é um Open GUI, o pool de layouts está vazio ou mainLayoutId não está nele. Os marcadores precisam de buttonPrefix codex_button:.
Faltam slots nas linhas inferiores. O rows do Category Menu é menor que o size do Open GUI. Defina ambos com o mesmo número de linhas.
As quests aparecem com um slot de distância em vez de um slot vazio entre elas. gap é um passo: 1 é adjacente e 2 deixa um slot vazio. Os menus escritos antes do Quest Codex 0.3.0 usavam gap como espaçamento, então dobre o valor. Uma colisão com uma decoração é informada como um aviso Slot overlap.
Vários marcadores se empilham em uma célula. O marcador tem count mas não tem direction, ou a posição cai fora da grade. Defina uma direction.
Uma quest está faltando em uma categoria. A quest está oculta por uma opção hideWhen... para o status atual dela, o modo de ordenação atual a filtra, ou o assignment não conseguiu resolvê-la (Quest '...' could not be resolved no console).
Uma quest rastreada desaparece após um reinício. trackingArtifact está vazio, ou seu artifactId mudou. Uma quest que deixou de estar ativa é removida da lista de rastreadas.
Os waypoints não aparecem. A entry de waypoint deve estar dentro de uma audience à qual o jogador pertence, a quest deve estar rastreada e o objetivo deve ser localizável. Uma camada de texto com {icon} permanece vazia até que icon seja definido.
Um novo advancement é desconhecido para o servidor. As definições são gravadas na inicialização; reinicie depois de adicionar uma. Uma definição cujo ícone não é um item é ignorada com um aviso.