Page 10 · Content

Custom Content

Define content identities, registry-backed entries, entities, attributes, animations and processing data without writing experience-specific Java.

Content Identity Folders

KindFolderUse
Itemdai_itemsGeneral item identity and behavior metadata.
Blockdai_blocksBlock identity and optional native registry entry.
Weapon / Armordai_weapons / dai_armorEquipment-oriented metadata.
Effects / Potionsdai_effects / dai_potionsStatus and consumable identities.
Projectile / Particledai_projectiles / dai_particlesProjectile and visual-effect definitions.
Enchantmentdai_enchantmentsEnchantment identity metadata.
Entitydai_entitiesEntity dimensions, rendering metadata, behavior sequence and natural spawn policy.

Native Entities vs Legacy Carriers

Legacy definitions can still use a vanilla or modded carrier. In 3.0 a registry-backed DAI entity may omit carrier entirely (or use dai:native) and become a native DAI physical entity.

Entity dimensions are startup data. Native width/height are baked into the EntityType at registry bootstrap, so changing physical dimensions requires a restart. Behavior JSON remains reload-oriented.

Native Entity Definition

{
  "display_name": "Native Hunter",
  "registry_backed": true,
  "native_registry": "entity",
  "native_attributes": {
    "minecraft:max_health": 30.0,
    "minecraft:movement_speed": 0.28,
    "minecraft:attack_damage": 5.0,
    "minecraft:follow_range": 32.0
  },
  "entity": {
    "category": "monster",
    "width": 1.15,
    "height": 1.35,
    "tracking_range": 10,
    "update_interval": 3,
    "behavior_sequence": "my_pack:native_hunter_ai",
    "behavior_interval": 2,
    "vanilla_ai": false,
    "spawning": { "natural": false }
  }
}

The entity is a real my_pack:* EntityType. It does not need to masquerade as a Spider, Zombie or Skeleton. A custom visual rig/resource-pack renderer can be layered on top without globally replacing vanilla mob textures.

JSON Entity Behavior

Native mobs can make species-specific decisions through DAI behavior sequences rather than inheriting vanilla goal selectors.

{
  "sequence": [
    { "type": "target_player", "conditions": [
      { "type": "entity_has_target", "operator": "is_false" }
    ]},
    { "type": "move_to_target", "value": 1.15, "conditions": [
      { "type": "entity_target_distance", "operator": "greater_than", "number_value": 3.0 }
    ]},
    { "type": "melee_attack", "value": 3.0, "conditions": [
      { "type": "entity_target_distance", "operator": "less_than_or_equal", "number_value": 3.0 },
      { "type": "entity_can_see_target", "operator": "is_true" }
    ]}
  ]
}
target_playerAcquire a player target.
look_at_targetFace the current target.
move_to_targetNavigate/chase toward the target.
melee_attackPerform a server-side mob attack.
flee_playerMove away from nearby players.
wanderIdle roaming behavior.

Attributes & Animations

Attributes use dai_attributes with default/minimum/maximum values. Animations use dai_animations and can define duration, channel, priority, markers, marker actions and keyed body-part tracks.

{
  "default": 100.0,
  "minimum": 0.0,
  "maximum": 100.0
}

Processing Recipes & Other Data

DAI processing recipes live in dai_recipes. Screen profiles, reaction event definitions, menu systems and arbitrary Minecraft datapack JSON can live in the same pack. The Creator's Universal Files workspace exists specifically so the UI never becomes a limitation.

Native Item Data Components

Registry-backed item definitions may include components or native_components. The key is a registered Minecraft Data Component ID; the value is decoded using that component's own codec.

{
  "registry_backed": true,
  "native_registry": "item",
  "components": {
    "minecraft:max_stack_size": 1,
    "minecraft:enchantment_glint_override": true
  }
}

Use config/decisions_and_impulses/capabilities.json to inspect the Data Components discovered by the running Minecraft version.

Natural Custom Entity Spawning

"entity": {
  "spawning": {
    "natural": true,
    "biomes": ["#minecraft:is_forest"],
    "dimensions": ["minecraft:overworld"],
    "placement": "on_ground",
    "weight": 2500,
    "min_group": 1,
    "max_group": 3,
    "min_light": 0,
    "max_light": 7,
    "min_y": -64,
    "max_y": 128,
    "min_radius": 24,
    "max_radius": 48,
    "cap_per_player": 6,
    "interval_ticks": 80,
    "attempts_per_player": 2
  }
}

Actor behavior sequences can use the native entity vocabulary including target_player, chase_target, melee_attack, wander, flee_player, look_at_target and target/distance conditions.

DAI 3.0 Native Exposure Pass II

Content definitions now have type-specific specialization objects: block, projectile, particle, effect, potion and entity. Native registry targets include item, block, entity, effect, potion and particle.

Lifecycle events are real runtime hooks now. Items, blocks, projectiles, effects and native entities can dispatch their documented events directly instead of requiring a parallel polling objective.

Open Native Runtime Exposure →

3.0 Living Portals and Movement

A registry-backed native DAI entity can include optional movement and portal objects. Movement profiles include stationary/fixed, drift, follow, flee, orbit, wander/floating_wander and relocate/blink behavior. Portal profiles define destination, target mode, trigger radius, cooldown, velocity/rotation preservation and optional entry/exit commands.

{
  "entity": {
    "width": 2.5,
    "height": 3.5,
    "vanilla_ai": false,
    "movement": {"type":"floating_wander","speed":0.04,"radius":12,"no_gravity":true},
    "portal": {"enabled":true,"destination":"my_game:dream","target_mode":"same_coordinates","trigger_radius":1.5}
  }
}