Space Pod Destinations
Space Pod destinations are the places a player can warp to from the Space Pod menu. They are a datapack system, not a config/dragonminez file, which makes them a good fit for datapacks and add-ons that want to add their own destinations (for example, a custom dimension mod adding its own entry).
Loader: SpacePodDestinationRegistry (src/main/java/com/dragonminez/common/spacepod/SpacePodDestinationRegistry.java), a vanilla SimpleJsonResourceReloadListener over the spacepod directory. It reloads with the vanilla /reload or a restart, not with /dmzreload, and it is synced to clients automatically when datapacks sync.
File location
data/<namespace>/spacepod/destinations.json
Any namespace can contribute a destinations.json (or any other filename under that folder). They are all loaded together, sorted by resource location. DragonMineZ's own bundled file is data/dragonminez/spacepod/destinations.json.
Shipped destinations
DragonMineZ's bundled data/dragonminez/spacepod/destinations.json uses "replace": true and contains:
id |
Menu name | Dimension | Lands at | Unlock rule |
|---|---|---|---|---|
overworld |
Earth | minecraft:overworld |
Same X/Y/Z as the player | ALWAYS
|
namek |
Namek | dragonminez:namek |
Same X/Y/Z as the player | ALWAYS
|
otherworld |
Otherworld | dragonminez:otherworld |
54, 210, 1082 | OTHERWORLD_ENABLED and the side quest bulma_otherworld_drive (Otherworld Drive)
|
sacredkaiplanet |
Sacred Kai Planet | dragonminez:sacredkaiplanet |
Same X/Y/Z as the player | Saga quest buu_saga:23 (Buu Saga)
|
cereal |
Cereal Planet | dragonminez:cereal_planet |
Same X/Y/Z as the player | NEVER (reserved for an add-on dimension)
|
beerus |
Beerus Planet | dmzsuper:beerus_planet |
Same X/Y/Z as the player | NEVER (reserved for an add-on dimension)
|
time_chamber |
Time Chamber | dragonminez:time_chamber |
0.5, 130, 0.5 | Side quest bulma_time_chamber_link (Temporal Comm-Link)
|
demon_realm |
Demon Realm | dragonminez:demon_realm |
160.5, 745, 0.5 (above the Third Demon World) | Saga quest daima_saga:3 (To the Demon Realm, Daima Saga)
|
All shipped entries use "show_when_locked": true, so locked worlds show up grayed out. See Dimensions for what each world offers.
"replace": true. A file in a namespace that sorts before dragonminez (for example addon:) is wiped by it: use a namespace that sorts after dragonminez, or put your own data/dragonminez/spacepod/destinations.json in a datapack to replace DragonMineZ's list. Entries are not merged by id: adding an entry with an id that already exists doesn't change the existing one.Top-level shape
{
"replace": false,
"destinations": [ ... ]
}
replace is optional and defaults to false. If true, it clears every destination loaded before this file and then adds this file's own. Use it if you want your pack to be the only authority on the destination list instead of adding to the others.
Destination fields
| Field | Type | What it does |
|---|---|---|
id |
String | Unique destination id. |
name |
String | Translation key, or a literal string if translate is false.
|
translate |
Boolean | Defaults to true (treat name as a translation key).
|
dimension |
String | Id of the target dimension. |
icon_index |
Integer | Index into the built-in Space Pod icon sheet. Exactly one of icon_index and icon_texture is required.
|
icon_texture |
String | Resource location of a custom texture, as an alternative to icon_index.
|
x, y, z |
Number | Target coordinates. Either provide all three, or only y (a special case that keeps the player's current X and Z and only changes their Y), or leave out all three. Providing just x or just z without the others is an error.
|
show_when_locked |
Boolean | Defaults to true. If true, a locked destination still shows (grayed out); if false, it is hidden entirely until unlocked.
|
unlock_rules |
String or object | The unlock condition (see Unlock rules). |
Unlock rules
Primitives
Primitives are bare strings:
| Rule | Unlocked when |
|---|---|
"ALWAYS" |
Always. |
"NEVER" |
Never. This effectively disables the destination unless another pack overrides it. |
"KAIO_UNLOCKED" |
The player has unlocked Kaio's planet. |
"OTHERWORLD_ENABLED" |
Otherworld generation is enabled in the server config. |
Conditions
Conditions are objects:
| Rule | Shape | Unlocked when |
|---|---|---|
| Quest | { "quest": "<quest_id>" } |
The player has completed that quest. Side quest and saga quest ids both work (for example "buu_saga:23").
|
| Level | { "level": N } |
The player's level is at least N.
|
| Race | { "race": "<race_name>" } |
The player's race matches (case-insensitive). |
| Tag | { "tag": "<player_tag>" } |
The player has this Minecraft scoreboard tag. |
| Visited dimension | { "visited_dimension": "<dimension_id>" } |
The player has visited that dimension before. |
| Stat | { "stat": { "name": "<STAT_NAME>", "min": N } } |
The player's stat (for example STRENGTH) is at least N.
|
Composite operators
Composite operators can be nested to any depth, freely mixing primitives, conditions and other composites:
{ "and": [ <rule>, <rule>, ... ] }
{ "or": [ <rule>, <rule>, ... ] }
{ "not": <rule> }
Examples
Always available:
{
"id": "overworld",
"name": "gui.dragonminez.spacepod.overworld",
"dimension": "minecraft:overworld",
"icon_index": 0,
"unlock_rules": "ALWAYS"
}
Gated by an AND of a global toggle and a quest, with fixed coordinates:
{
"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" }]
}
}
Gated by a single saga quest, with fixed coordinates (the shipped Demon Realm entry):
{
"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" }
}
Gated by a side quest, with the "keep X and Z, change only Y" coordinate form (my_pack:sky_island is a made-up example):
{
"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" }
}
A destination that can never be unlocked through this pack (useful if you want it hidden unless another pack overrides it):
{
"id": "cereal",
"name": "gui.dragonminez.spacepod.cereal",
"dimension": "dragonminez:cereal_planet",
"icon_index": 4,
"unlock_rules": "NEVER"
}
A deeper nested example that combines level or race with a tag exclusion:
{
"unlock_rules": {
"and": [
{ "or": [{ "level": 10 }, { "race": "saiyan" }] },
{ "not": { "tag": "tutorial_skipped" } }
]
}
}
Client screen
Players browse destinations in SpacePodScreen (client side), which shows up to 7 entries at once and grays out or hides locked ones according to show_when_locked.
Reload and validate
- Add or edit
data/<namespace>/spacepod/destinations.json. - Validate the JSON syntax (see How to JSON).
- Run the vanilla
/reload, or restart. This isn't covered by/dmzreload(see Reloading and Updating Changes). - Open the Space Pod menu in game and check that the destination appears and unlocks as expected.