Destinos da Cápsula Espacial
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.
"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
- Adicione ou edite
data/<namespace>/spacepod/destinations.json. - Valide a sintaxe JSON (veja Como usar JSON).
- Execute o
/reloaddo vanilla ou reinicie. Isso não é coberto pelo/dmzreload(veja Recarregar e atualizar mudanças). - Abra o menu da Cápsula Espacial no jogo e confira se o destino aparece e é desbloqueado como esperado.