Destinos da Cápsula Espacial

De DragonMineZ Wiki
Esta página é uma versão traduzida da página Space Pod Destinations e a tradução está 100% completa.

Os destinos da Cápsula Espacial são os lugares para onde um jogador pode viajar pelo menu da Cápsula Espacial. Eles são um sistema de datapacks, não um arquivo de config/dragonminez, o que os torna ideais para datapacks e addons que querem adicionar seus próprios destinos (por exemplo, um mod de dimensões personalizadas que adiciona sua própria entrada).

Carregador: SpacePodDestinationRegistry (src/main/java/com/dragonminez/common/spacepod/SpacePodDestinationRegistry.java), um SimpleJsonResourceReloadListener do vanilla sobre a pasta spacepod. Ele recarrega com o /reload do vanilla ou ao reiniciar, não com o /dmzreload, e é sincronizado com os clientes automaticamente quando os datapacks são sincronizados.

Local do arquivo

data/<namespace>/spacepod/destinations.json

Qualquer namespace pode contribuir com um destinations.json (ou qualquer outro nome de arquivo dentro dessa pasta). Todos são carregados juntos, ordenados por resource location. O arquivo que vem com o DragonMineZ é data/dragonminez/spacepod/destinations.json.

Destinos incluídos

O data/dragonminez/spacepod/destinations.json incluído no DragonMineZ usa "replace": true e contém:

id Nome no menu Dimensão Chega em Regra de desbloqueio
overworld Terra minecraft:overworld Mesmas X/Y/Z do jogador ALWAYS
namek Namekusei dragonminez:namek Mesmas X/Y/Z do jogador ALWAYS
otherworld Outro Mundo dragonminez:otherworld 54, 210, 1082 OTHERWORLD_ENABLED e a missão secundária bulma_otherworld_drive (Propulsor do Outro Mundo)
sacredkaiplanet Mundo Sagrado dos Kai dragonminez:sacredkaiplanet Mesmas X/Y/Z do jogador Missão de saga buu_saga:23 (Saga Boo)
cereal Planeta Cereal dragonminez:cereal_planet Mesmas X/Y/Z do jogador NEVER (reservado para uma dimensão de addon)
beerus Planeta de Bills dmzsuper:beerus_planet Mesmas X/Y/Z do jogador NEVER (reservado para uma dimensão de addon)
time_chamber Sala do Tempo dragonminez:time_chamber 0.5, 130, 0.5 Missão secundária bulma_time_chamber_link (Comunicador Temporal)
demon_realm Reino Demoníaco dragonminez:demon_realm 160.5, 745, 0.5 (acima do Terceiro Mundo Demoníaco) Missão de saga daima_saga:3 (Rumo ao Reino Demoníaco, Saga Daima)

Todas as entradas incluídas usam "show_when_locked": true, então os mundos bloqueados aparecem em cinza. Veja Dimensões para saber o que cada mundo oferece.

A ordem de carregamento importa Os arquivos são aplicados na ordem de resource location, e o arquivo incluído no DragonMineZ usa "replace": true. Um arquivo em um namespace que vem antes de dragonminez na ordem (por exemplo, addon:) é apagado por ele: use um namespace que venha depois de dragonminez, ou coloque seu próprio data/dragonminez/spacepod/destinations.json em um datapack para substituir a lista do DragonMineZ. As entradas não são mescladas por id: adicionar uma entrada com um id que já existe não altera a existente.

Estrutura geral

{
  "replace": false,
  "destinations": [ ... ]
}

replace é opcional e o padrão é false. Se for true, ele apaga todos os destinos carregados antes deste arquivo e depois adiciona os seus. Use-o se quiser que seu pacote seja a única fonte da lista de destinos, em vez de se somar aos outros.

Campos de um destino

Campo Tipo O que faz
id Texto Id único do destino.
name Texto Chave de tradução, ou um texto literal se translate for false.
translate Booleano O padrão é true (trata name como uma chave de tradução).
dimension Texto Id da dimensão de destino.
icon_index Inteiro Índice na folha de ícones embutida da Cápsula Espacial. É obrigatório exatamente um entre icon_index e icon_texture.
icon_texture Texto Resource location de uma textura personalizada, como alternativa a icon_index.
x, y, z Número Coordenadas de destino. Informe as três, ou apenas y (um caso especial que mantém o X e o Z atuais do jogador e muda só o Y), ou não informe nenhuma. Informar só x ou só z sem as outras é um erro.
show_when_locked Booleano O padrão é true. Se for true, um destino bloqueado continua aparecendo (em cinza); se for false, ele fica totalmente oculto até ser desbloqueado.
unlock_rules Texto ou objeto A condição de desbloqueio (veja Regras de desbloqueio).

Regras de desbloqueio

Primitivas

As primitivas são textos simples:

Regra Desbloqueia quando
"ALWAYS" Sempre.
"NEVER" Nunca. Na prática, desativa o destino, a menos que outro pacote o substitua.
"KAIO_UNLOCKED" O jogador desbloqueou o planeta do Rei Kai.
"OTHERWORLD_ENABLED" A geração do Outro Mundo está ativada na configuração do servidor.

Condições

As condições são objetos:

Regra Formato Desbloqueia quando
Missão { "quest": "<quest_id>" } O jogador concluiu essa missão. Funcionam tanto ids de missões secundárias quanto de missões de saga (por exemplo, "buu_saga:23").
Nível { "level": N } O nível do jogador é pelo menos N.
Raça { "race": "<race_name>" } A raça do jogador corresponde (sem diferenciar maiúsculas e minúsculas).
Tag { "tag": "<player_tag>" } O jogador tem esta tag do scoreboard do Minecraft.
Dimensão visitada { "visited_dimension": "<dimension_id>" } O jogador já visitou essa dimensão antes.
Estatística { "stat": { "name": "<STAT_NAME>", "min": N } } A estatística do jogador (por exemplo, STRENGTH) é pelo menos N.

Operadores compostos

Os operadores compostos podem ser aninhados em qualquer profundidade, misturando livremente primitivas, condições e outros operadores compostos:

{ "and": [ <rule>, <rule>, ... ] }
{ "or":  [ <rule>, <rule>, ... ] }
{ "not": <rule> }

Exemplos

Sempre disponível:

{
  "id": "overworld",
  "name": "gui.dragonminez.spacepod.overworld",
  "dimension": "minecraft:overworld",
  "icon_index": 0,
  "unlock_rules": "ALWAYS"
}

Bloqueado por um AND entre uma opção global e uma missão, com coordenadas fixas:

{
  "id": "otherworld",
  "name": "gui.dragonminez.spacepod.otherworld",
  "dimension": "dragonminez:otherworld",
  "icon_index": 2,
  "x": 54.0,
  "y": 210.0,
  "z": 1082.0,
  "unlock_rules": {
    "and": ["OTHERWORLD_ENABLED", { "quest": "bulma_otherworld_drive" }]
  }
}

Bloqueado por uma única missão de saga, com coordenadas fixas (a entrada incluída do Reino Demoníaco):

{
  "id": "demon_realm",
  "name": "gui.dragonminez.spacepod.demon_realm",
  "dimension": "dragonminez:demon_realm",
  "icon_index": 6,
  "x": 160.5,
  "y": 745.0,
  "z": 0.5,
  "unlock_rules": { "quest": "daima_saga:3" }
}

Bloqueado por uma missão secundária, com o formato de coordenadas "manter X e Z, mudar só Y" (my_pack:sky_island é um exemplo inventado):

{
  "id": "sky_island",
  "name": "My Sky Island",
  "translate": false,
  "dimension": "my_pack:sky_island",
  "icon_index": 2,
  "y": 130.0,
  "unlock_rules": { "quest": "bulma_time_chamber_link" }
}

Um destino que nunca pode ser desbloqueado por este pacote (útil se você quer que ele fique oculto, a menos que outro pacote o substitua):

{
  "id": "cereal",
  "name": "gui.dragonminez.spacepod.cereal",
  "dimension": "dragonminez:cereal_planet",
  "icon_index": 4,
  "unlock_rules": "NEVER"
}

Um exemplo mais aninhado que combina nível ou raça com a exclusão de uma tag:

{
  "unlock_rules": {
    "and": [
      { "or": [{ "level": 10 }, { "race": "saiyan" }] },
      { "not": { "tag": "tutorial_skipped" } }
    ]
  }
}

Tela do cliente

Os jogadores navegam pelos destinos em SpacePodScreen (lado do cliente), que mostra até 7 entradas por vez e deixa em cinza ou oculta as bloqueadas de acordo com show_when_locked.

Recarregar e validar

  1. Adicione ou edite data/<namespace>/spacepod/destinations.json.
  2. Valide a sintaxe JSON (veja Como usar JSON).
  3. Execute o /reload do vanilla ou reinicie. Isso não é coberto pelo /dmzreload (veja Recarregar e atualizar mudanças).
  4. Abra o menu da Cápsula Espacial no jogo e confira se o destino aparece e é desbloqueado como esperado.