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.
dai_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.
Customization, World Data & Open Bridge Folders
| Folder | Role | Typical data | DAI 3.0 behavior |
|---|---|---|---|
dai_sounds | Runtime customization | sound ID + events | playsound / stopsound or authored composition |
dai_music | Runtime customization | sound ID + events | music-source playback and authored composition |
dai_hud | Runtime customization | texture + numbers + flags | direct HUD overlay or authored events |
dai_render_profiles | Render/environment template | properties + events | reusable presentation/environment composition |
dai_structures | Structure definition | template ID + placement controls | direct placement and deterministic natural generation |
dai_features | Feature definition | configured feature ID + placement controls | direct placement and deterministic natural generation |
dai_loot | Runtime customization | loot table ID | loot give or authored composition |
dai_currencies | Runtime customization | scoreboard objective + amounts | scoreboard add/take/set |
dai_shops | Runtime customization | entries + events | authored composition |
dai_dialogues | Runtime customization | entries + events | authored composition |
dai_quests | Runtime customization | entries + events | authored composition |
dai_factions | Runtime customization | tag + events | player tag add/remove or authored composition |
dai_biomes | Native world-data compiler | friendly biome fields and/or raw native data | compiles real Minecraft biome registry JSON |
dai_dimension_types | Native world-data compiler | height, skylight, effects and other dimension-type fields | compiles real Minecraft dimension type registry JSON |
dai_timelines | Native world-data compiler | world clock + timeline settings | compiles timeline/world-clock backed world data |
dai_dimensions | Native world-data compiler | generation / world_type + native data | compiles generated Minecraft dimensions; runtime transfers can target them |
dai_rules | Runtime customization | gamerule=value entries | compact gamerule application |
dai_vehicles | Runtime customization | entity type + events | summon/ride/kill defaults or authored composition |
dai_interactives | Runtime customization | carrier + events | reaction/action composition |
dai_fluids | Runtime customization | block/fluid ID + target | placement/event composition |
dai_environments | Environment template/runtime | environment attributes + events | enter/exit composition and reusable environment presentation |
dai_registry | Open Mojang registry bridge | registry key + raw JSON | writes arbitrary supported Minecraft registry entries |
dai_data | Open server-data bridge | output path/type + raw JSON | writes arbitrary/future server-data JSON paths |
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 torun,activate, ordeactivate.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.