Destinos de la Cápsula Espacial

De DragonMineZ Wiki
Esta página es una versión traducida de la página Space Pod Destinations. La traducción está completa al 100 %.

Los destinos de la Cápsula Espacial son los lugares a los que un jugador puede viajar desde el menú de la Cápsula Espacial. Son un sistema de datapacks, no un archivo de config/dragonminez, así que encajan bien con datapacks y addons que quieren añadir sus propios destinos (por ejemplo, un mod de dimensiones personalizadas que añade su propia entrada).

Cargador: SpacePodDestinationRegistry (src/main/java/com/dragonminez/common/spacepod/SpacePodDestinationRegistry.java), un SimpleJsonResourceReloadListener de vanilla sobre la carpeta spacepod. Se recarga con el /reload de vanilla o al reiniciar, no con /dmzreload, y se sincroniza automáticamente con los clientes cuando se sincronizan los datapacks.

Ubicación del archivo

data/<namespace>/spacepod/destinations.json

Cualquier namespace puede aportar un destinations.json (o cualquier otro nombre de archivo dentro de esa carpeta). Todos se cargan juntos, ordenados por resource location. El archivo que incluye DragonMineZ es data/dragonminez/spacepod/destinations.json.

Destinos incluidos

El data/dragonminez/spacepod/destinations.json incluido en DragonMineZ usa "replace": true y contiene:

id Nombre en el menú Dimensión Llega a Regla de desbloqueo
overworld Tierra minecraft:overworld Mismas X/Y/Z que el jugador ALWAYS
namek Namek dragonminez:namek Mismas X/Y/Z que el jugador ALWAYS
otherworld Otro Mundo dragonminez:otherworld 54, 210, 1082 OTHERWORLD_ENABLED y la misión secundaria bulma_otherworld_drive (Motor del Otro Mundo)
sacredkaiplanet Planeta Sagrado de los Kaioshins dragonminez:sacredkaiplanet Mismas X/Y/Z que el jugador Misión de saga buu_saga:23 (Saga Buu)
cereal Planeta Cereal dragonminez:cereal_planet Mismas X/Y/Z que el jugador NEVER (reservado para una dimensión de un addon)
beerus Planeta de Beerus dmzsuper:beerus_planet Mismas X/Y/Z que el jugador NEVER (reservado para una dimensión de un addon)
time_chamber Cámara del Tiempo dragonminez:time_chamber 0.5, 130, 0.5 Misión secundaria bulma_time_chamber_link (Enlace Temporal)
demon_realm Reino Demoníaco dragonminez:demon_realm 160.5, 745, 0.5 (sobre el Tercer Mundo Demoníaco) Misión de saga daima_saga:3 (Al Reino Demoníaco, Saga Daima)

Todas las entradas incluidas usan "show_when_locked": true, así que los mundos bloqueados aparecen en gris. Consulta Dimensiones para ver qué ofrece cada mundo.

El orden de carga importa Los archivos se aplican en orden de resource location, y el archivo incluido en DragonMineZ usa "replace": true. Un archivo en un namespace que queda antes de dragonminez en el orden (por ejemplo addon:) queda borrado por él: usa un namespace que quede después de dragonminez, o pon tu propio data/dragonminez/spacepod/destinations.json en un datapack para reemplazar la lista de DragonMineZ. Las entradas no se combinan por id: añadir una entrada con un id que ya existe no cambia la existente.

Estructura general

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

replace es opcional y por defecto es false. Si es true, borra todos los destinos cargados antes de este archivo y luego añade los suyos. Úsalo si quieres que tu paquete sea la única fuente de la lista de destinos en lugar de sumarse a los demás.

Campos de un destino

Campo Tipo Qué hace
id Texto Id único del destino.
name Texto Clave de traducción, o un texto literal si translate es false.
translate Booleano Por defecto es true (trata name como una clave de traducción).
dimension Texto Id de la dimensión de destino.
icon_index Entero Índice en la hoja de íconos incluida de la Cápsula Espacial. Se requiere exactamente uno de icon_index e icon_texture.
icon_texture Texto Resource location de una textura personalizada, como alternativa a icon_index.
x, y, z Número Coordenadas de destino. Indica las tres, o solo y (un caso especial que mantiene la X y la Z actuales del jugador y solo cambia su Y), o no indiques ninguna. Indicar solo x o solo z sin las demás es un error.
show_when_locked Booleano Por defecto es true. Si es true, un destino bloqueado se sigue mostrando (en gris); si es false, queda totalmente oculto hasta que se desbloquea.
unlock_rules Texto u objeto La condición de desbloqueo (consulta Reglas de desbloqueo).

Reglas de desbloqueo

Primitivas

Las primitivas son textos simples:

Regla Se desbloquea cuando
"ALWAYS" Siempre.
"NEVER" Nunca. En la práctica desactiva el destino, salvo que otro paquete lo reemplace.
"KAIO_UNLOCKED" El jugador desbloqueó el planeta de Kaiosama.
"OTHERWORLD_ENABLED" La generación del Otro Mundo está activada en la configuración del servidor.

Condiciones

Las condiciones son objetos:

Regla Forma Se desbloquea cuando
Misión { "quest": "<quest_id>" } El jugador completó esa misión. Sirven tanto ids de misiones secundarias como de misiones de saga (por ejemplo "buu_saga:23").
Nivel { "level": N } El nivel del jugador es al menos N.
Raza { "race": "<race_name>" } La raza del jugador coincide (sin distinguir mayúsculas y minúsculas).
Etiqueta { "tag": "<player_tag>" } El jugador tiene esta etiqueta (tag) del scoreboard de Minecraft.
Dimensión visitada { "visited_dimension": "<dimension_id>" } El jugador ya visitó esa dimensión antes.
Estadística { "stat": { "name": "<STAT_NAME>", "min": N } } La estadística del jugador (por ejemplo STRENGTH) es al menos N.

Operadores compuestos

Los operadores compuestos se pueden anidar a cualquier profundidad, mezclando libremente primitivas, condiciones y otros operadores compuestos:

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

Ejemplos

Siempre disponible:

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

Bloqueado por un AND entre una opción global y una misión, con coordenadas fijas:

{
  "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 una sola misión de saga, con coordenadas fijas (la entrada incluida del 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 una misión secundaria, con la forma de coordenadas "mantener X y Z, cambiar solo Y" (my_pack:sky_island es un ejemplo 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" }
}

Un destino que nunca se puede desbloquear con este paquete (útil si quieres que esté oculto salvo que otro paquete lo reemplace):

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

Un ejemplo con más anidamiento que combina nivel o raza con la exclusión de una etiqueta:

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

Pantalla del cliente

Los jugadores exploran los destinos en SpacePodScreen (lado del cliente), que muestra hasta 7 entradas a la vez y pone en gris u oculta las bloqueadas según show_when_locked.

Recarga y validación

  1. Añade o edita data/<namespace>/spacepod/destinations.json.
  2. Valida la sintaxis JSON (consulta Cómo usar JSON).
  3. Ejecuta el /reload de vanilla o reinicia. Esto no lo cubre /dmzreload (consulta Recargar y actualizar cambios).
  4. Abre el menú de la Cápsula Espacial en el juego y comprueba que el destino aparece y se desbloquea como esperas.