Page 11 · DAI 3.0

Game Customization Registries

DAI 3.0 combines reusable runtime customization with native Minecraft data compilation and an open Mojang bridge. Definitions can activate state, dispatch DAI actions, call server functions/commands, generate natural content, compile world data, and expose runtime conditions without experience-specific Java.

Open RuntimeDAI systems plus native Minecraft registries and server data.
Native WorldsBiomes, dimension types, timelines and dimensions compile real Minecraft data.
Future-Friendlydai_registry and dai_data keep the bridge open-ended.

Shared Definition Schema

{
  "display_name": "Example",
  "description": "Optional description",
  "carrier": "minecraft:resource_id",
  "model": "my_pack:model",
  "texture": "my_pack:gui/example",
  "category": "my_pack:category",
  "sequence": "my_pack:default_action",
  "command": "command:say {player} triggered {id}",
  "target": "~ ~ ~",
  "tags": ["tag"],
  "entries": ["entry"],
  "properties": {"key": "value"},
  "numbers": {"amount": 1.0},
  "flags": {"enabled": true},
  "events": {"activate": "action:my_pack:on"}
}

Every field is optional. properties and events are string maps, numbers is a numeric map, flags is a boolean map, and tags/entries are string arrays. This open shape is deliberate so older authored packs can survive runtime refinement through 3.0.

Event References

action:<id>

Queue a local DAI action/objective reference.

function:<id>

Run a server-owned datapack function through DAI authority.

command:<cmd>

Run a trusted server-side command authored in the server-loaded definition.

Unprefixed IDs: the client first tries to resolve them as DAI action references; unresolved namespaced IDs may fall through to a server datapack function.

Customization, World Data & Open Bridge Folders

FolderRoleTypical dataDAI 3.0 behavior
dai_soundsRuntime customizationsound ID + eventsplaysound / stopsound or authored composition
dai_musicRuntime customizationsound ID + eventsmusic-source playback and authored composition
dai_hudRuntime customizationtexture + numbers + flagsdirect HUD overlay or authored events
dai_render_profilesRender/environment templateproperties + eventsreusable presentation/environment composition
dai_structuresStructure definitiontemplate ID + placement controlsdirect placement and deterministic natural generation
dai_featuresFeature definitionconfigured feature ID + placement controlsdirect placement and deterministic natural generation
dai_lootRuntime customizationloot table IDloot give or authored composition
dai_currenciesRuntime customizationscoreboard objective + amountsscoreboard add/take/set
dai_shopsRuntime customizationentries + eventsauthored composition
dai_dialoguesRuntime customizationentries + eventsauthored composition
dai_questsRuntime customizationentries + eventsauthored composition
dai_factionsRuntime customizationtag + eventsplayer tag add/remove or authored composition
dai_biomesNative world-data compilerfriendly biome fields and/or raw native datacompiles real Minecraft biome registry JSON
dai_dimension_typesNative world-data compilerheight, skylight, effects and other dimension-type fieldscompiles real Minecraft dimension type registry JSON
dai_timelinesNative world-data compilerworld clock + timeline settingscompiles timeline/world-clock backed world data
dai_dimensionsNative world-data compilergeneration / world_type + native datacompiles generated Minecraft dimensions; runtime transfers can target them
dai_rulesRuntime customizationgamerule=value entriescompact gamerule application
dai_vehiclesRuntime customizationentity type + eventssummon/ride/kill defaults or authored composition
dai_interactivesRuntime customizationcarrier + eventsreaction/action composition
dai_fluidsRuntime customizationblock/fluid ID + targetplacement/event composition
dai_environmentsEnvironment template/runtimeenvironment attributes + eventsenter/exit composition and reusable environment presentation
dai_registryOpen Mojang registry bridgeregistry key + raw JSONwrites arbitrary supported Minecraft registry entries
dai_dataOpen server-data bridgeoutput path/type + raw JSONwrites arbitrary/future server-data JSON paths
DAI 3.0 has more than one data layer. Runtime customization folders orchestrate DAI behavior; world folders such as dai_biomes and dai_dimensions compile native Minecraft data; dai_registry and dai_data provide the open escape hatch for registries and server-data formats that do not need a dedicated DAI schema yet.

Generic Actions

{
  "type": "customization_activate",
  "direction": "hud",
  "action": "my_pack:status",
  "open": "show",
  "target": "",
  "value": 0
}
  • direction = registry kind or folder name.
  • action = customization definition ID.
  • open = optional event override; defaults to run, activate, or deactivate.
  • target = runtime payload/position/choice override.
  • value = numeric payload, used directly by systems such as currencies.

Category convenience actions such as hud_show, currency_add, dialogue_start, quest_complete, vehicle_mount and environment_exit select the registry and event automatically.

Direct HUD Example

{
  "display_name": "Status HUD",
  "texture": "my_pack:gui/status",
  "numbers": {"x": 8, "y": 8, "width": 160, "height": 32, "z": 20, "alpha": 1.0},
  "properties": {"anchor": "top_left", "color": "#FFFFFF", "click_action": "my_pack:hud_click"},
  "flags": {"interactable": true, "consume_click": false, "hide_vanilla": false}
}

When a HUD definition has no authored event/sequence but has a valid texture plus positive numbers.width/numbers.height, DAI renders it through the overlay manager directly.

Conditions

{
  "type": "customization_active",
  "target": "hud",
  "string_value": "my_pack:status",
  "operator": "is_true"
}

customization_exists and customization_active use target for the kind and string_value for the definition ID. customization_count uses string_value for the kind and returns a number for normal numeric comparison.

Server Command Placeholders

{player}  {uuid}  {x}  {y}  {z}
{value}   {kind}  {id} {event}
{target}  {runtime_target}

These placeholders are expanded only in trusted server-owned customization dispatch, not arbitrary client command text.

Ticking Active Definitions

If an active definition sets numbers.tick_interval to a positive number and provides an events.tick entry, DAI dispatches that event on the requested interval. Leaving a client session clears active customization state and restores vanilla HUD visibility.

3.0 Natural Structures & Features

dai_structures and dai_features can set flags.natural (or generate_naturally) and use generic properties/numbers for placement. Supported controls include dimensions, biomes/tags, placement mode, rotation, mirror, spacing/separation, frequency, Y ranges and generation radius.

{
  "display_name": "Ruined Outpost",
  "carrier": "example:ruined_outpost",
  "flags": { "natural": true },
  "properties": {
    "placement": "surface",
    "dimensions": "minecraft:overworld",
    "biomes": "#minecraft:is_overworld",
    "rotation": "random",
    "mirror": "none"
  },
  "numbers": {
    "spacing_chunks": 24,
    "separation_chunks": 8,
    "frequency": 0.6,
    "min_y": 40,
    "max_y": 180
  }
}

Biomes, Dimension Types, Timelines & Environments

The old wrapper mental model is no longer enough for the world registries: dai_biomes, dai_dimension_types, dai_timelines and dai_dimensions compile real Minecraft data. Friendly definitions can merge a raw/native base, while environment attributes can control sky, fog, clouds, lighting and celestial presentation.

dai_dimensions can describe generated dimensions through a generation or world_type object, allowing DAI to prepare the real Minecraft dimension registry data during startup rather than merely wrapping an existing dimension ID.

Runtime-backed customization kinds

dai_vehicles, dai_portals, dai_interactives and dai_fluids now have dedicated server runtimes rather than existing only as command wrappers. Their open properties/numbers/flags/events maps remain forward-compatible.

Open Native Runtime Exposure →