Destinos de la Cápsula Espacial
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.
"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
- Añade o edita
data/<namespace>/spacepod/destinations.json. - Valida la sintaxis JSON (consulta Cómo usar JSON).
- Ejecuta el
/reloadde vanilla o reinicia. Esto no lo cubre/dmzreload(consulta Recargar y actualizar cambios). - Abre el menú de la Cápsula Espacial en el juego y comprueba que el destino aparece y se desbloquea como esperas.