Native Runtime Exposure
DAI 3.0 now exposes far more of Minecraft's physical/runtime layer directly to JSON. The guiding rule is simple: registry-static shells restart when Minecraft requires it; lifecycle behavior remains hot-reloadable whenever possible.
Native registry targets
itemReal Item IDs plus Mojang Data Components and lifecycle events.blockReal Block IDs with physical properties, states, shapes, redstone and callbacks.entityReal EntityType IDs with native hitboxes, AI/runtime, gameplay events and rider seats.effectReal MobEffect IDs with category/color/tick cadence.potionReal Potion IDs composed from authored effects.particleReal SimpleParticleType IDs with resource-pack textures and client physics.Native block shell
The block object is registry-static. Shapes use six 0–16 coordinates: [minX,minY,minZ,maxX,maxY,maxZ].
{
"registry_backed": true,
"native_registry": "block",
"block": {
"hardness": 2.0,
"explosion_resistance": 10.0,
"sound": "metal",
"luminance": 15,
"friction": 0.6,
"speed_factor": 1.15,
"jump_factor": 1.0,
"no_occlusion": false,
"no_collision": false,
"emissive_rendering": true,
"states": ["powered", "horizontal_facing", "boolean:active", "int:charge:0:3"],
"collision_shape": [0,0,0,16,8,16],
"redstone_signal": 0,
"redstone_state": "powered",
"climbable": false,
"scheduled_tick_delay": 0
},
"events": {
"place": "action:demo:placed", "break": "action:demo:broken",
"use": "action:demo:used", "attack": "action:demo:attacked",
"neighbor_changed": "action:demo:neighbor", "redstone_changed": "action:demo:redstone",
"entity_inside": "action:demo:inside", "step": "action:demo:step",
"random_tick": "action:demo:random", "scheduled_tick": "action:demo:scheduled"
}
}Item lifecycle
DAI content events now receive server lifecycle hooks for use, use_on_block, interact_entity, attack_entity, use_start, use_tick, use_release, use_finish, inventory_tick, equip, unequip, drop and pickup. Static item data should still prefer the open components map.
Entity lifecycle + riding
Under entity.gameplay.events, native entities can dispatch spawn, tick, hurt, damage_dealt, death, kill, attacked, interact, jump, fall, target_acquired, target_lost, passenger_added, passenger_removed, mounted, dismounted, mount and dismount. gameplay.faction, dialogue and loot are live runtime metadata. Rider seats are strings under entity.riding.seats, e.g. "0 0.8 -0.2".
Projectile runtime
stats.projectile_speed and stats.gravity now drive physics. The projectile specialization adds drag, lifetime, hit radius, damage, knockback, pierce, ricochet, homing, return and collision policy.
"stats": { "projectile_speed": 3.0, "gravity": 0.03 },
"projectile": {
"drag": 0.01, "lifetime": 120, "hit_radius": 0.35,
"damage": 6, "knockback": 0.25, "pierce": 1, "ricochets": 2,
"homing_radius": 12, "homing_strength": 0.08,
"return_to_owner": true, "return_after_ticks": 24,
"hit_owner": false, "hit_allies": false,
"collide_blocks": true, "collide_entities": true
}Projectile events: spawn, tick, hit_block, ricochet, hit_entity, pierce, return, expire.
Vehicles
dai_vehicles now reads real client movement/look input on the server. Match carrier to the ridden entity type and configure numbers: acceleration, reverse_acceleration, max_speed, reverse_speed, drag, braking, turn_rate, strafe_factor, jump_velocity and boost_multiplier. Flags include camera_steering, allow_reverse, allow_jump, gravity and lock_driver_pitch. Events include tick and boost.
Standalone portal + interaction volumes
data/<namespace>/dai_portals/*.json no longer needs a mob host. Volume definitions use target or numeric x/y/z, properties.shape (box or sphere), width/height/depth/radius, dimension and required/forbidden tags. Portals add destination, destination_target/to, affects, cooldown and preserve flags. dai_interactives use the same volume vocabulary and dispatch enter/tick/exit/use/attack.
Particles, effects and potions
Registry-backed particles own a real particle type ID; the resource pack supplies the texture. Particle settings cover emitter shape/count/spread/speed/radius and render lifetime/gravity/friction/scale/color/alpha/full-bright/collision. Registry-backed effects create native MobEffect IDs with category/color/tick interval and apply/start/tick/remove/end events. Potions compose effect strings in the form "namespace:effect duration amplifier".
Fluid behavior
dai_fluids remains carrier-based for the block/fluid identity but now adds live entity physics: drag, vertical_drag, buoyancy, damage/damage_interval, extinguish, temporary no_gravity, and enter/tick/exit events.