Inventory of the gameplay behaviors a vanilla Bedrock server implements
Researched 2026-10-24. Scope: the set of behaviors the Bedrock engine implements for blocks, items, entities (non-AI mechanics), the world and the player, sized against vanilla 1.26.50 content so a data-driven server can track parity per behavior. This note builds on bedrock-data-extraction.md and does not repeat it. Sources, in order of authority: MicrosoftDocs/minecraft-creator at 4432fb62a8e0ce5c785bd2bf02a6f981dcffbbe8 (block, item and entity component references, block traits, Script API @minecraft/server); Mojang/bedrock-samples v1.26.50.4 at 46ba6ea985fb5a92d79a9419198f10dda14c199d (metadata/vanilladata_modules/, behavior_pack/items/); the composed vanilla behavior pack from BDS 1.26.51.1 (entities, blocks, recipes, loot, spawn rules); Java Edition's block definition types from misode/mcmeta tag 1.21.11-summary and item default components from mcmeta summary at f41a317b67b4e08155bf8b2ac3e853516d1fd889 (26.4 snapshot 5); minecraft.wiki raw wikitext as a secondary source for mechanics Mojang does not document. Every claim taken from the wiki is marked "(wiki)". Counts come from scripts kept under /tmp/bds-research-inventory/tools/ and are reproducible from the last section.
Summary
- Mojang's data modules name 1463 blocks, 1623 items, 129 entities, 37 effects, 42 enchantments, 89 biomes, 25 structures, 3 dimensions, 6 cooldown categories and 47 potion effects, but no file names what any of them does. Only the Java
definition.typefield (263 block classes over 1166 Java blocks) and Java's item default components (62 non-cosmetic component types) enumerate behavior families publicly. - Sorting all 1463 Bedrock blocks by behavior gives 164 families. 188 blocks are plain full cubes with no behavior beyond their properties, 299 are slabs or stairs, 124 are Education chemistry blocks, and 72 families contain a single block. The 10 largest families cover 56 percent of blocks, the 30 largest cover 78 percent, the 50 largest cover 88 percent.
- 912 of the 1463 blocks carry at least one block state; 157 state names exist. The 20 most used states are placement geometry (
vertical_half,cardinal_direction,facing_direction,pillar_axis,corner,connection_*,wall_connection_type_*), so placement rules are the single largest block-side behavior. - 1623 items sort into 85 families. 1086 of them are block items, 88 are spawn eggs, 40 are plain materials with no use behavior. The 10 largest item families cover 86 percent of items; 48 families hold a single item (bow, shield, elytra, totem, each compass, each bucket kind).
- The documented block component list (45 entries) parameterizes properties, placement filters, liquid and precipitation reactions, piston movability, redstone conductivity and production, ticking and loot, but it has no component for any interaction (open, ring, sleep, brew, compost). The Script API
BlockComponentTypesenum exposes 15 engine components, andBlockCustomComponentlists the 15 hooks the engine fires (onPlace,onBreak,onNeighborChanged,onRandomTick,onTick,onNamedTick,onRedstoneUpdate,onEntityFallOn,onStepOn,onStepOff,onPlayerInteract,onBlockStateChange, and three more). Those hooks are the engine's block behavior interface. - The documented item component list (55 entries) covers food, durability, repair, enchantability, digger speeds, wearable slots, shooter, throwable, projectile, cooldown, fuel, record, seed, compostable, block and entity placers, bundles and the 1.26 kinetic and piercing weapons. Nothing expresses buckets, maps, compasses, clocks, shields, elytra, totems, books, banners, fishing rods, shears, flint and steel, firework rockets, spyglasses, brushes, goat horns or name tags; 34 item families need code the component model cannot name.
- Vanilla entities use 202 non-AI component types (170
behavior.*goals excluded) out of 203 documented. Grouping them gives 26 mechanics; the ten used by the most entities are physics (126), collision box (125), type family (124), health (94), movement speed (93), breathing (84), loot (78), despawn (76), melee attack (48) and riding (36). - World and player mechanics number 32 in this inventory. The Script API
GameRuleenum names 38 rules, the vanilla player entity file parameterizes hunger (exhaustion_values,player.saturation), insomnia (3 days), breathing (15 supply, 3.75 s inhale) and death experience (Math.Min(query.player_level * 7, 100)), and the composed pack supplies 1892 recipes in 7 types, 309 loot tables using 23 functions and 16 conditions, 60 spawn rules using 21 condition components and 27 trade tables. - The 25 behaviors that cover the most content (section 5) account for 1215 of 1463 blocks (83 percent) and 1381 of 1623 items (85 percent). Plain full block, block item placement, slab, stairs, pillar, spawn egg and the per-state property reads come first; signs, containers, doors and gates, plants and the gravity family follow. The uncovered remainder is 124 Education blocks and 124 blocks spread over 62 small families.
- Education Edition content (124 chemistry blocks, 36 hard glass blocks, colored torches, underwater TNT) is 11 percent of the block list, and
mojang-items.jsonomits the matching items. The plan should decide whether it is in scope before sizing.
1. Block behavior families
Method
The 1463 names come from mojang-blocks.json (data_items[].name), the states from the same file's properties lists. Java's taxonomy comes from misode/mcmeta block_definitions/data.json at tag 1.21.11-summary (1166 blocks, 263 type values); the current summary branch (26.4 snapshot 5) and the freshly generated Java 26.3 reports/blocks.json at /tmp/bds-research-java/out/generated/reports/ no longer carry definition, so the 1.21.11 tag is the last public copy. Java types that only differ by cosmetic class (tinted_particle_leaves and untinted_particle_leaves, weathering_copper_* and waxed_*, drop_experience and plain block) collapse into one Bedrock family; Bedrock blocks with no Java counterpart (*_double_slab, *_standing_sign and *_wall_sign, cauldron with cauldron_liquid, light_block_N, element_N, camera, allow, deny, border_block, info_update is absent, moving_block is absent) get families of their own. The classifier is /tmp/bds-research-inventory/tools/block_families.py; it assigns by explicit name sets first, then suffix regexes, then falls back to "plain full block". The fallback list was read by hand; every block in it has no state other than pillar_axis, infiniburn_bit (bedrock) or cardinal_direction (pumpkin).
The "data today" column uses this legend. "props" means the per-state engine dump already pinned in packages/bedrock-data/src/resources/blocks.json (hardness, explosion resistance, friction, light emission and dampening, flame and burn odds, map color, solidity, collision geometry); it exists for every block. "shape" means a voxel shape file exists in shapes/ (218 blocks). "json" means the block is one of the 98 JSON blocks (mining seconds, explosion resistance, map color, flammability, redstone conductivity, loot table, liquid detection, instrument sound, support shape, chest obstruction, and the undocumented block_archetype). "loot" means a loot table exists; only the 98 JSON blocks have one. "recipe" and "feature" mean the composed pack has recipes producing the block or features placing it. Nothing in the data expresses interactions, state transitions or tick logic for any block.
Family table
| Family | Blocks | Behavior (place, break, interact, neighbor update, random tick, scheduled tick, collision, redstone) | States used | Data today |
|---|---|---|---|---|
| plain full block | 188 | Full opaque cube. No hooks. Drops itself or a code-defined item (ores excluded). Fuel, map color, hardness and blast resistance are properties. Includes wool, concrete, terracotta, planks, bricks, metal blocks, glowstone, sea lantern, shroomlight, obsidian, crying obsidian, bedrock (infiniburn_bit), pumpkin and melon. | infiniburn_bit, minecraft:cardinal_direction (pumpkin) | props, shape for some, recipe |
| pillar | 66 | Full cube placed with pillar_axis from the clicked face. Logs and wood accept axe stripping into the stripped_* block; deepslate, basalt, bone, hay, quartz, purpur, froglights, muddy mangrove roots, infested deepslate share the placement rule. Hay reduces fall damage (Java hay type). | pillar_axis, deprecated | props, recipe |
| education chemistry | 124 | Element blocks and four chemistry workbenches (compound creator, material reducer, element constructor, lab table) plus chemical_heat. Workbenches open Education UIs. Out of scope for a vanilla server unless Education mode is a goal. | direction | props |
| slab | 101 | Half block in vertical_half; placing the same slab on the exposed half converts to the matching double slab; waterloggable; stops liquid flow per liquid_detection. | minecraft:vertical_half | props, shape, 32 json (slab_block archetype with double_slab_block reference), loot for those |
| double slab | 101 | Full cube that drops two slabs and is hidden from commands and menus. | minecraft:vertical_half (always bottom) | props, 32 json (is_double), loot for those |
| stairs | 97 | Placed with weirdo_direction and upside_down_bit from the clicked half; minecraft:corner recomputed on neighbor update from adjacent stairs; collision is two boxes; conducts redstone; chest_obstruction never. | minecraft:corner, upside_down_bit, weirdo_direction | props, shape, 32 json (stair_block with base_block, support stair), loot for those |
| wall | 32 | Four side connection states plus wall_post_bit, recomputed on neighbor update against walls, panes, bars, fence gates and solid faces; tall connection under solid blocks. border_block shares the shape. | wall_connection_type_*, wall_post_bit | props, shape, recipe |
| glass pane and bars | 43 | Thin cross connecting to neighbors on four cardinal states; copper bars oxidize (cross-cutting). Glass panes and hard glass panes drop nothing without silk touch. | minecraft:connection_* | props, shape, recipe |
| glass | 35 | Transparent full cube (light dampening 0, tinted glass 15); drops nothing without silk touch. Same code as plain full block except the drop rule. | none | props, recipe |
| fence | 14 | Four connection states recomputed on neighbor update; 1.5-block tall collision; leads attach to it (knot entity in Java, block-level in Bedrock). Nether brick fence does not connect to wooden fences. | minecraft:connection_* | props, shape, recipe |
| fence gate | 13 | Opens on interact or redstone; in_wall_bit lowers the model next to walls; blocks entity movement when closed. | in_wall_bit, minecraft:cardinal_direction, open_bit | props, shape, recipe |
| door | 22 | Two-block multi-block (upper_block_bit); hinge from neighbors and player side; wooden doors open on interact, iron doors only on redstone, copper doors (8) open on interact and oxidize; breaks when support below goes. | door_hinge_bit, minecraft:cardinal_direction, open_bit, upper_block_bit | props, shape, recipe |
| trapdoor | 22 | Opens on interact or redstone; placement half and direction from the click; iron trapdoor redstone-only; copper trapdoors oxidize; climbable when open above a ladder. | direction, open_bit, upside_down_bit | props, shape, recipe |
| button | 15 | Attaches to any face; press emits power 15 to the attached block (strong) and adjacent (weak) for a scheduled tick (wooden 30 ticks, stone 20, wiki); arrows press wooden buttons. Needs support or pops. | button_pressed_bit, facing_direction | props, shape, recipe |
| pressure plate | 15 | Entity collision sets redstone_signal 15 with a 20-tick release check; wooden plates respond to items and arrows, stone plates to mobs and players (wiki). Needs a solid top below. | redstone_signal | props, shape, recipe |
| weighted pressure plate | 2 | Analog signal from entity count: light plate 1 per entity, heavy plate 1 per 10 entities (wiki). | redstone_signal | props, shape, recipe |
| lever | 1 | Toggle on interact; strong power to the attached block, weak to neighbors; six attachment orientations. | lever_direction, open_bit | props, shape, recipe |
| standing sign | 13 | Block entity with front and back text, dye color, glow ink, waxing; 16 rotations; editable on interact until waxed. | ground_sign_direction | props, shape |
| wall sign | 13 | Same block entity as standing sign, four facings, pops when the backing block goes. | facing_direction | props, shape |
| hanging sign | 13 | Same text block entity; hangs from chains or a solid bottom (hanging, attached_bit) or mounts on a wall. | attached_bit, facing_direction, ground_sign_direction, hanging | props, shape, recipe |
| shelf | 13 | 1.26 block entity storing up to 3 item stacks, swaps hotbar rows on interact, redstone power changes powered_shelf_type and connects rows of shelves (wiki). | minecraft:cardinal_direction, powered_bit, powered_shelf_type | props, recipe |
| leaves | 14 | Decays on random tick when no log within 4 blocks (Bedrock, wiki) unless persistent_bit; update_bit schedules the distance check after neighbor changes; drops saplings and sticks by chance, apples for oak and dark oak; light dampening 1; shears and silk touch drop the block. | persistent_bit, update_bit | props, feature (trees) |
| sapling | 11 | Random tick advances age_bit then grows the species' tree feature (2x2 for dark oak and 1.26 mega trees); bone meal shortcuts; needs dirt below and light; azalea and flowering azalea grow the azalea tree and have collision. | age_bit | props, feature (tree_feature), recipe |
| mangrove propagule | 1 | Hangs from mangrove leaves and grows through propagule_stage 0 to 4, then drops; planted on mud or dirt it grows a mangrove tree. | hanging, propagule_stage | props, feature |
| flower | 17 | One-block plant with no collision, pottable, replaceable by placement; wither rose applies Wither on contact; eyeblossoms switch open and closed with daylight on random tick and the open one emits particles; torchflower is the grown crop output. | none | props, shape, feature |
| tall plant | 7 | Two-block multi-block (upper_block_bit); shears drop grass and fern; sunflower faces east; pitcher plant is the grown crop. | upper_block_bit | props, feature |
| small plant | 12 | Single-block, no collision, replaceable, needs dirt or (nether roots) nylium below, pops when support goes; grass and fern drop seeds by chance and bone meal grows them into tall plants; dead bush drops sticks; bush, firefly bush and dry grasses are 1.21.5 additions; red shrub is the 1.26 bush_block archetype in JSON. | none | props, 1 json (red_shrub) |
| segmented plant | 3 | Up to four segments per block (growth); placing the same item adds a segment; bone meal adds segments then drops items; leaf litter has no bone meal reaction. | growth, minecraft:cardinal_direction | props |
| mushroom | 5 | Small mushrooms need light 12 or less and spread on random tick (wiki); bone meal grows a huge mushroom or huge fungus feature; nether fungi need nylium; shelf mushroom (1.26) attaches to a wall face, stacks growth segments and is the wall_foliage_block archetype with is_bonemealable and size_count. | growth, minecraft:cardinal_direction | props, feature, 1 json |
| huge mushroom block | 3 | huge_mushroom_bits selects textured faces; placed by the huge mushroom feature; drops mushrooms by chance. | huge_mushroom_bits | props, feature |
| crop | 6 | Grows through growth 0 to 7 on random tick with a farmland-moisture-weighted chance; pops without farmland; trampling converts farmland; bone meal advances; pitcher crop is a two-block crop with upper_block_bit; torchflower crop has 2 stages then becomes the flower. | growth, upper_block_bit | props |
| stem | 2 | Grows on farmland then becomes an attached stem pointing (facing_direction) at the pumpkin or melon it spawned on an adjacent block. | facing_direction, growth | props |
| cocoa | 1 | Attached to a jungle log side; age 0 to 2 grows on random tick; drops 1 or 3 beans. | age, direction | props, shape |
| sweet berry bush | 1 | Four stages; slows and damages entities moving through it at stage 2 and up; interact harvests berries and resets to stage 1. | growth | props |
| cave vines | 3 | Grows downward from the head block; berries appear by chance; interact harvests and bone meal adds berries; emits light 14 with berries. | growing_plant_age | props |
| nether wart | 1 | Grows on soul sand only, age 0 to 3, not bone-mealable. | age | props |
| sugar cane | 1 | Needs adjacent water and sand, dirt or grass below; grows up to 3 tall on random tick; uproots when water is removed (wiki). | age | props, shape, feature |
| cactus | 2 | Grows up to 3 on sand; damages entities on contact; pops if any horizontal neighbor is solid; cactus flower (1.21.5) sits on top. | age | props, shape, feature |
| bamboo | 2 | Shoot becomes stalk; grows on random tick up to 12 to 16 with bamboo_leaf_size and bamboo_stalk_thickness; breaking a block breaks everything above (wiki). | age_bit, bamboo_leaf_size, bamboo_stalk_thickness | props, feature |
| chorus plant | 2 | Flower grows on random tick, placing plant blocks and new flowers until age 5; plant blocks break when their six neighbors become invalid, dropping fruit half the time (wiki). | age | props, feature |
| kelp | 1 | Grows upward in water with 14 percent chance per random tick (wiki), stops at the surface or kelp_age 25; drops kelp item. | kelp_age | props, feature |
| seagrass | 1 | Single block or two-block tall variant encoded in sea_grass_type; bone meal grows tall seagrass and (on sand in warm oceans) coral features; shears drop it. | sea_grass_type | props, feature |
| sea pickle | 1 | Up to four per block (cluster_count); emits light only in water; dead_bit out of water; bone meal spreads pickles on coral blocks. | cluster_count, dead_bit | props, feature |
| lily pad | 1 | Placed on still water; boats break it; no collision for entities below. | none | props, shape, feature |
| vine | 1 | Side attachment bits; spreads to neighbors on random tick; climbable; shears drop it; burns. | vine_direction_bits | props, feature |
| nether vines | 2 | Weeping vines grow downward, twisting vines upward, through an age counter; bone meal extends; climbable. | twisting_vines_age, weeping_vines_age | props, feature |
| multiface spreading | 3 | Attaches to any set of faces (multi_face_direction_bits); glow lichen spreads with bone meal and emits light 7; sculk vein spreads via catalyst charge; resin clump is placed by the creaking heart. | multi_face_direction_bits | props, feature |
| moss block | 2 | Bone meal runs the moss or pale moss vegetation feature over a 7x7 area. | none | props, feature |
| pale moss carpet and hanging moss | 2 | Carpet gains side walls per cardinal state; hanging moss grows downward with a tip block; creaking heart spawns in pale gardens. | pale_moss_carpet_side_*, tip, upper_block_bit | props, feature |
| carpet | 17 | 1/16-high block that needs support, is movable by pistons, and can be placed on llamas by item use (entity side). Moss carpet included. | none | props, shape, recipe |
| glazed terracotta | 16 | Full cube placed with facing_direction toward the player; pistons push it but sticky pistons cannot pull it and slime does not stick (movable push). | facing_direction | props, recipe |
| coral block | 10 | Full cube; the five living blocks die to their dead variant on a scheduled tick when no adjacent block is water or waterlogged. | none | props, feature |
| coral plant and fan | 30 | Living coral, fans and wall fans need adjacent water or they die to the dead variant on a scheduled tick; wall fans attach to a side face (coral_fan_direction, coral_direction); all are waterlogged in place and drop only with silk touch. | coral_direction, coral_fan_direction | props, shape, feature |
| spreading ground cover | 4 | Grass and mycelium spread to adjacent dirt on random tick when light allows and revert to dirt when covered; nylium spreads with bone meal only and reverts under solid blocks; hoe turns grass to farmland, shovel to path. | none | props |
| dirt path | 1 | Created by shovel; collision 15/16; reverts to dirt when a solid block is placed above. | none | props, shape |
| farmland | 1 | moisturized_amount rises near water within 4 blocks or rain and falls otherwise; reverts to dirt when dry with nothing planted or when an entity falls on it; collision 15/16. | moisturized_amount | props, shape |
| rooted dirt | 1 | Bone meal places hanging roots below; hoe turns it to dirt and drops roots. | none | props |
| mud | 1 | Entities sink 2/16 (collision 14/16); glass bottle use on it yields nothing but a bottle of water on it makes mud from dirt (item side); dries to clay over pointed dripstone. | none | props, shape |
| falling block | 3 | Becomes a falling block entity on neighbor update when the block below is air or liquid; damages on landing (anvil only); sand and gravel drop themselves, gravel drops flint by chance. | none | props |
| concrete powder | 16 | Falling block that converts to concrete on contact with water (on place next to water, when flowing water touches it, or when it lands in water). | none | props, recipe |
| anvil | 3 | Falling block that damages entities on landing and may degrade (damage state in Java, three blocks in Bedrock); opens the anvil UI for repair, rename and enchant combining. | minecraft:cardinal_direction | props, shape, recipe |
| dragon egg | 1 | Falls; teleports up to 15 blocks when clicked or hit (wiki). | none | props, shape |
| scaffolding | 1 | Placed by clicking existing scaffolding to extend up or sideways; stability distance of 0 to 7 from a supported block; stability_check schedules a fall when unsupported; climbable; sneaking descends. | stability, stability_check | props, shape, recipe |
| pointed dripstone | 1 | Stalactite falls when unsupported and damages on impact; dripstone_thickness recomputed from neighbors; drips water or lava into cauldrons below and turns mud to clay; stalagmite damages entities that fall on it; grows from dripstone block with water above (wiki). | dripstone_thickness, hanging | props, shape, feature |
| snow layer | 1 | 1 to 8 layers (height); placing adds a layer; melts on random tick at light 12 or more (wiki); accumulates during snowfall up to a biome-dependent height in Bedrock (wiki); shovel drops snowballs by height; covered_bit marks snow over grass. | covered_bit, height | props, shape |
| ice | 2 | Melts to water on random tick at light 12 or more (wiki); drops nothing without silk touch and leaves water; frosted ice ages through age 0 to 3 and melts; friction 0.98 (props). | age | props |
| powder snow | 1 | Entities sink and freeze (freezing damage cause) unless wearing leather boots; collected in a bucket; falls as a falling block; cauldron collects it from snowfall. | none | props |
| liquid | 4 | Water and lava source and flowing blocks with liquid_depth 0 to 15; spread on scheduled ticks (water every 5 ticks, lava 30 in the overworld and 10 in the nether, wiki); water drops to 7 spread, lava to 3 (overworld); infinite water source rule; lava and water interactions make stone, cobblestone and obsidian; water pushes entities, extinguishes fire, hydrates farmland; lava sets entities on fire and burns items. | liquid_depth | props |
| bubble column | 1 | Created above soul sand (upward) and magma (downward); drag_down moves entities; extends through water on neighbor update. | drag_down | props |
| fire | 2 | Spreads on scheduled ticks to flammable neighbors using each block's flame and burn odds; age 0 to 15; extinguished by rain with 20 percent plus 3 per age (wiki); soul fire does not spread and needs soul sand or soul soil; damages entities 1 per tick; doFireTick disables all of it. | age | props (flame and burn odds per block) |
| torch | 8 | Attaches to top or side faces (torch_facing_direction), pops without support, emits light 14 (soul 10); colored and underwater torches are Education. | torch_facing_direction | props, shape, recipe |
| redstone torch | 2 | Powers the block above strongly and neighbors weakly with 15; turns off when its attached block is powered (1 redstone tick delay); burns out after too many toggles (wiki). | torch_facing_direction | props, shape, recipe |
| lantern | 10 | Sits on a block or hangs from a chain or bottom face (hanging); light 15 (soul 10); copper lanterns oxidize. | hanging | props, shape, recipe |
| chain | 9 | Pillar-axis thin block; waterloggable; supports lanterns and hanging signs; copper chains oxidize. | pillar_axis | props, shape, recipe |
| end rod | 1 | Six facings from the clicked face; light 14; pushes entities aside only by collision. | facing_direction | props, shape, recipe |
| ladder | 1 | Climbable on the four wall facings; pops when the backing block goes; trapdoors above continue the climb. | facing_direction | props, shape, recipe |
| rail | 1 | Ten shapes (rail_direction 0 to 9) including curves, recomputed on neighbor update; minecart movement follows the shape; pops without support below. | rail_direction | props, shape, recipe |
| powered rail | 2 | Six straight shapes; rail_data_bit holds the power state propagated along up to 9 rails (wiki); powered rail accelerates or stops carts, activator rail triggers TNT carts and ejects passengers. | rail_data_bit, rail_direction | props, shape, recipe |
| detector rail | 1 | Outputs 15 while a minecart is on it and a comparator signal from the cart's inventory. | rail_data_bit, rail_direction | props, shape, recipe |
| redstone wire | 1 | Signal 0 to 15 decreasing by 1 per block, connects to neighbors and steps up and down over allows_wire_to_step_down blocks (glass lets it go down in Bedrock, wiki); strongly powered blocks power it; placement needs a solid top; drops redstone dust. | redstone_signal | props, 96 json carry redstone_conductivity |
| repeater | 2 | Delays 1 to 4 redstone ticks (repeater_delay), outputs 15 forward, locks when powered from the side by another repeater or comparator; two blocks encode powered and unpowered. | minecraft:cardinal_direction, repeater_delay | props, shape, recipe |
| comparator | 2 | Compare or subtract mode (output_subtract_bit); reads container fullness and block states (cake bites, cauldron level, jukebox, lectern page, respawn anchor charges, chiseled bookshelf, composter, beehive honey, item frame rotation) from the block behind it. | minecraft:cardinal_direction, output_lit_bit, output_subtract_bit | props, shape, recipe |
| tripwire | 2 | Hook pairs span up to 40 string blocks (wiki); entity collision sets powered_bit on hooks; disarmed_bit when cut with shears; attached_bit and suspended_bit describe the line. | attached_bit, direction, disarmed_bit, minecraft:connection_*, powered_bit, suspended_bit | props, shape, recipe |
| target | 1 | Projectile hit emits 0 to 15 power by distance from center for 8 ticks (arrows 20, wiki). | none | props, recipe |
| daylight detector | 2 | Outputs sky light based power each 20 ticks; interact toggles the inverted block. | redstone_signal | props, shape, recipe |
| observer | 1 | Detects any block update in front (Bedrock, wiki) and pulses 15 for 2 ticks from its back; aligned to odd game ticks (wiki). | minecraft:facing_direction, powered_bit | props, recipe |
| redstone lamp | 2 | Lit when powered with a 2-redstone-tick off delay; two blocks encode the state. | none | props, recipe |
| redstone block | 1 | Constant power 15 to neighbors; pushable by pistons. | none | props, recipe |
| piston | 4 | Extends when powered (quasi-connectivity is Java-only, wiki), pushing up to 12 blocks whose movable rule allows it, popping popped blocks, stopping on immovable; sticky retracts the block in front; slime and honey pull adjacent blocks (sticky same); piston arm collision blocks are the extended head; moving blocks are block entities in flight. | facing_direction | props, shape, 2 json blocks carry movable, recipe |
| note block | 1 | Interact raises the pitch 0 to 24; redstone pulse plays the instrument chosen by the block below (instrument_sound up) or the head above. | none (pitch in block entity) | props, 48 json blocks carry instrument_sound, recipe |
| jukebox | 1 | Holds one record (block entity); plays on insert, ejects on interact; comparator reads the disc's comparator_signal; allays dance near it. | none | props, recipe |
| tnt | 2 | Primed by redstone, fire, flaming projectiles or flint and steel into a TNT entity with a 4-second fuse; explode_bit for dispensed state; tntExplodes gamerule; underwater TNT is Education. | explode_bit | props, recipe |
| lightning rod | 8 | Attracts lightning within 128 blocks (wiki); emits 15 power for 8 ticks when struck; copper variants oxidize. | facing_direction, powered_bit | props, shape, recipe |
| sculk sensor | 2 | Listens for vibrations within 8 blocks, phases inactive, active and cooldown (sculk_sensor_phase), outputs power by distance; calibrated sensor filters one frequency through its input side and reaches 16 blocks (wiki). | minecraft:cardinal_direction, sculk_sensor_phase | props, shape, recipe |
| sculk | 1 | Spread target of the catalyst; drops 1 experience when mined without silk touch (wiki). | none | props, feature |
| sculk catalyst | 1 | On a mob death within 8 blocks it takes the mob's experience as charge and spreads sculk, veins, sensors and shriekers over sculk_replaceable blocks (wiki); bloom animates. | bloom | props, feature |
| sculk shrieker | 1 | Shrieks on vibration or step, raising the player's warning level and summoning a warden on the fourth when can_summon; active during the shriek. | active, can_summon | props, feature |
| chest | 10 | Block entity with 27 slots; joins an adjacent same chest into a double chest; opening is blocked by solid blocks above (chest_obstruction); trapped chest emits power by viewer count; copper chests (8) oxidize. | minecraft:cardinal_direction | props, shape, recipe |
| ender chest | 1 | Opens the player's 27-slot ender inventory; drops 8 obsidian without silk touch. | minecraft:cardinal_direction | props, shape, recipe |
| barrel | 1 | 27-slot block entity with six facings; open_bit while viewed; hopper-compatible. | facing_direction, open_bit | props, recipe |
| shulker box | 17 | 27-slot block entity that keeps its items when broken; six facings; dyeable by crafting; piston movement allowed but the box blocks opening when obstructed. | none | props, recipe |
| dispenser and dropper | 2 | 9-slot block entity; on a rising redstone edge the dispenser applies the item's dispense behavior (shoot projectiles, place liquids, shear sheep, arm TNT, use bone meal, equip armor, spawn eggs, boats) and the dropper ejects or pushes into a container; triggered_bit debounces. | facing_direction, triggered_bit | props, recipe, 3 loot tables under loot_tables/dispensers/ |
| hopper | 1 | 5-slot block entity pulling from above every 8 ticks and pushing into the facing block; collects item entities; locked while powered (toggle_bit); minecart hopper counterpart is an entity. | facing_direction, toggle_bit | props, shape, recipe |
| crafter | 1 | 9-slot block entity with slot disabling; crafts and ejects on a redstone pulse (triggered_bit, crafting animation); 12 orientations. | crafting, orientation, triggered_bit | props, recipe |
| furnace | 6 | 3-slot block entity (input, fuel, output); cooks recipe_furnace entries tagged furnace, blast_furnace or smoker; fuel from the item fuel component; lit variant emits light; experience stored per cooked item; comparator reads fullness. | minecraft:cardinal_direction | props, recipe (134 furnace, 62 blast furnace, 9 smoker recipes) |
| brewing stand | 1 | 5-slot block entity (3 bottles, ingredient, blaze powder fuel); applies recipe_brewing_mix (70) and recipe_brewing_container (2) over 400 ticks; brewing_stand_slot_*_bit mirror the bottle slots. | brewing_stand_slot_a_bit, _b_bit, _c_bit | props, shape, recipe |
| workstation | 6 | Opens a UI with no storage: crafting table (crafting_table component exists), cartography table (map cloning, extending, locking), fletching table (no UI), smithing table (recipe_smithing_transform and recipe_smithing_trim), stonecutter (shapeless recipes tagged stonecutter), loom (banner patterns). Villager job sites. | direction, minecraft:cardinal_direction | props, recipe (356 stonecutter, 13 smithing recipes) |
| grindstone | 1 | Attaches to floor, wall or ceiling (attachment); UI disenchants and repairs, refunding experience. | attachment, direction | props, shape, recipe |
| enchanting table | 1 | UI offering three enchantment levels seeded per player and bookshelf count (15 bookshelves at distance 2 with air between, wiki); consumes lapis and levels; opens the Script API Enchantment model. | none | props, shape, recipe |
| lectern | 1 | Holds one book (block entity); page turning emits a redstone pulse (powered_bit) and a comparator signal; villager librarian job site. | minecraft:cardinal_direction, powered_bit | props, shape, recipe |
| chiseled bookshelf | 1 | Six book slots (books_stored count plus a block entity for order); interact adds or removes by hit position; comparator reads the last slot. | books_stored, direction | props, recipe |
| beacon | 1 | Block entity validating a pyramid of iron, gold, emerald, diamond or netherite blocks (levels 1 to 4) with sky access; grants a primary and secondary effect to players within 20 to 50 blocks (wiki); payment item selects the effect. | none | props, recipe |
| conduit | 1 | Activates inside a 3x3x3 water volume framed by 16 to 42 prismarine, sea lantern or dark prismarine blocks; grants Conduit Power in a 32 to 96 block radius and attacks hostile mobs with the full frame (wiki). | none | props, recipe |
| bell | 1 | Attaches four ways (attachment); rings on interact, projectile or redstone (toggle_bit), reveals raiders with Glowing and makes villagers panic; raid center marker. | attachment, direction, toggle_bit | props, shape |
| campfire | 2 | Cooks up to four items placed on it over 30 seconds (recipe_furnace tagged campfire); damages entities standing in it unless extinguished; water bucket or shovel extinguishes; smoke rises 10 or 24 blocks over hay; calms bees. | extinguished, minecraft:cardinal_direction | props, shape, recipe |
| cake | 1 | Interact eats a slice (bite_counter 0 to 6) restoring 2 hunger; placing a candle on an uneaten cake converts to the candle cake. | bite_counter | props, shape, recipe |
| candle cake | 17 | Cake with one candle; lit by flint and steel; eating drops the candle. | lit | props, shape |
| candle | 17 | Up to four per block (candles), lit by fire sources, extinguished by interact or water; light 3 per candle; waterloggable only when unlit. | candles, lit | props, shape, recipe |
| composter | 1 | Interact with a compostable item adds a layer with the item's chance (composter_fill_level 0 to 7), produces bone meal at 8; hopper input and output; villager farmer job site. | composter_fill_level | props, shape, recipe |
| cauldron | 1 | One block holding water, lava or powder snow (cauldron_liquid, fill_level 0 to 6); fills from rain, snowfall and dripstone; bucket and bottle interactions; washes dyed leather and banners; dyed water and potions in Bedrock (wiki); extinguishes burning entities; lava cauldron damages. | cauldron_liquid, fill_level | props, shape, recipe |
| flower pot | 1 | Block entity holding one flower_pottable plant; interact swaps the plant; update_bit is the pot's contents flag, false for an empty pot (wiki). The plant itself is in the block entity's PlantBlock, not in the state, which is why all 40 Java potted_* blocks and the empty pot map onto flower_pot[update_bit=0]. | update_bit | props, shape, recipe |
| item frame | 2 | Block in Bedrock (entity in Java) with a block entity holding one item and rotation 0 to 7; item_frame_map_bit marks a map; comparator reads rotation; glow frame lights the item. | facing_direction, item_frame_map_bit, item_frame_photo_bit | props, shape, recipe |
| bed | 2 | Two-block multi-block (head_piece_bit) with a block entity for color; sleeping when sky light is 11 or less and no monster within 8 horizontal and 5 vertical blocks (wiki); sets the spawn point; explodes in the nether and the end; occupied_bit; straw bed (1.26) shares the rule. | direction, head_piece_bit, minecraft:cardinal_direction, occupied_bit | props, shape, recipe |
| banner | 2 | Block entity with base color and up to 6 patterns; standing (16 rotations) and wall variants; loom applies patterns; copies on crafting; waterloggable in Bedrock (wiki). | facing_direction, ground_sign_direction | props, shape |
| skull | 7 | Block entity for rotation and (player head) profile; floor rotation 16 ways or wall mounting via facing_direction; wearable as items; wither skulls on soul sand summon the wither, carved pumpkins on iron or snow summon golems (see carved pumpkin); noteblock head sounds. | facing_direction | props, shape |
| decorated pot | 1 | Block entity with four sherd faces and a one-stack inventory (1.20.3+); breaks into sherds unless broken with silk touch or by hand; hopper and comparator compatible; loot_tables/pots/. | direction | props, shape, recipe, 1 loot table |
| brushable block | 2 | Brushing advances brushed_progress 0 to 3 over about 6 seconds then drops an item from the structure's loot table; falls like sand. | brushed_progress, hanging | props |
| monster spawner | 1 | Block entity spawning its entity type within 4 blocks every 200 to 800 ticks when a player is within 16 blocks, up to 6 nearby (wiki); spawn egg use sets the type (entity_placer). | none | props, 5 loot_tables/spawners/ |
| trial spawner | 1 | Block entity with states (trial_spawner_state 0 to 5) spawning waves scaled by nearby player count, dispensing rewards and a 30-minute cooldown; ominous variant after an ominous bottle; loot_tables/spawners/trial_chamber/. | ominous, trial_spawner_state | props, loot |
| vault | 1 | Block entity that accepts a trial key once per player and ejects loot (vault_state); ominous variant takes the ominous key; 20 percent rare loot chance in Bedrock (wiki). | minecraft:cardinal_direction, ominous, vault_state | props, loot |
| nether portal | 1 | Created by flint and steel inside an obsidian frame (4x5 to 23x23); teleports after 4 seconds of standing (instant in creative); links coordinates at 8:1 between dimensions and searches for or builds a portal; spawns zombified piglins by chance. | portal_axis | props |
| end portal | 2 | Frame accepts an eye of ender (end_portal_eye_bit); 12 filled frames in a ring create end portal blocks; the portal teleports to the end platform; end gateway is absent from the block list. | end_portal_eye_bit, minecraft:cardinal_direction | props |
| respawn anchor | 1 | Charged with glowstone up to 4 (respawn_anchor_charge); sets the spawn point in the nether and spends a charge per respawn; explodes when used in the overworld or the end (respawnBlocksExplode); light 3 per charge. | respawn_anchor_charge | props, recipe |
| lodestone | 1 | Block entity keyed by position; using a compass on it binds the compass (lodestone_compass). | none | props, recipe |
| beehive | 2 | Block entity storing up to 3 bees and honey_level 0 to 5; shears or bottles harvest at 5 and anger bees unless a campfire is below; comparator reads honey. | direction, honey_level | props, recipe |
| budding amethyst | 1 | Random tick grows a bud on an adjacent face through small, medium, large and cluster; drops nothing. | none | props, feature (geode_feature) |
| amethyst cluster | 4 | Attached to any face (minecraft:block_face); clusters drop shards (more with fortune), buds drop nothing without silk touch; emits light 1 to 5; chimes on step. | minecraft:block_face | props, shape |
| sniffer egg | 1 | Hatches through cracked_state over 20 minutes, twice as fast on moss (wiki). | cracked_state | props |
| turtle egg | 1 | Up to 4 per block (turtle_egg_count); cracks on random ticks at night (1 in 500 by day, wiki); trampled by entities and sought by zombies; hatches turtles. | cracked_state, turtle_egg_count | props, shape |
| frogspawn | 1 | Sits on water; hatches tadpoles after 3 to 10 minutes (wiki). | none | props |
| spore blossom | 1 | Hangs from a ceiling; emits particles only. | none | props, shape, feature |
| big dripleaf | 1 | Tilts under entity weight through big_dripleaf_tilt on scheduled ticks and resets; stem blocks below; bone meal grows another head. | big_dripleaf_head, big_dripleaf_tilt, minecraft:cardinal_direction | props, shape, feature |
| small dripleaf | 1 | Two-block plant on clay or in water; bone meal grows a big dripleaf. | minecraft:cardinal_direction, upper_block_bit | props, feature |
| mangrove roots | 1 | Transparent full block, waterloggable, lets fluids and light through; mud below converts to muddy roots by crafting only. | none | props, feature |
| sticky block | 2 | Slime bounces entities and pulls adjacent blocks with pistons; honey slows entities, stops jumps, lets them slide down and pulls blocks but not slime; both cancel fall damage differently. | none | props, recipe |
| sponge | 2 | Absorbs up to 65 water blocks within 7 taxicab distance on place; wet sponge dries in the nether or in dry biomes (Bedrock, wiki) and in a furnace. | none | props |
| magma | 1 | Damages entities standing on it unless sneaking; creates a downward bubble column; light 3. | none | props, recipe |
| soul sand | 1 | Entities sink 1/8 and move slowly; creates an upward bubble column; grows nether wart; soul speed enchantment target. | none | props |
| cobweb | 1 | Slows entities to 15 percent (wiki); shears or sword drop it, otherwise string; flammable. | none | props |
| infested block | 7 | Spawns a silverfish when broken (not with silk touch); silverfish enter stone to create them. | pillar_axis (deepslate) | props |
| copper bulb | 8 | Toggles lit on a rising redstone edge (not level), powered_bit for the input; light 15 decreasing with oxidation; comparator reads 15 when lit; only activates on the consumer redstone tick in Bedrock (wiki). | lit, powered_bit | props, recipe |
| copper grate | 8 | Transparent full block (Java waterlogged_transparent); waterloggable; solid to entities; oxidizes. | none | props, recipe |
| copper golem statue | 8 | 1.26 block entity for pose; interact cycles poses; copper golem entity turns into it when fully oxidized and axe scraping revives it (wiki, not verified against the entity file). | minecraft:cardinal_direction | props |
| heavy core | 1 | Pushable but not pullable by pistons and not sticky (Bedrock, wiki); mace ingredient. | none | props |
| creaking heart | 1 | Block entity that spawns a creaking at night when between two pale oak logs on its axis (creaking_heart_state); dormant by day; drops resin clumps when the creaking takes damage; natural marks worldgen hearts. | creaking_heart_state, natural, pillar_axis | props, feature |
| dried ghast | 1 | Rehydrates through rehydration_level 0 to 3 in water over 20 minutes then becomes a happy ghast (wiki). | minecraft:cardinal_direction, rehydration_level | props |
| carved pumpkin | 2 | Four facings; placing it on a 2-block iron or snow column summons an iron or snow golem; wearable; jack o'lantern emits light 15. | minecraft:cardinal_direction | props, recipe |
| sulfur hazard | 2 | 1.26 blocks: sulfur_spike reuses dripstone states and hangs or stands; potent_sulfur carries potent_sulfur_state; no public documentation of their effects was found. | dripstone_thickness, hanging, potent_sulfur_state | props |
| ore | 20 | Full cube that drops a code-defined item (ore drop, not the block) plus experience when mined without silk touch; fortune multiplies; redstone ore lights up on touch (lit_* pair). | none | props, feature (ore_feature) |
| command block | 3 | Block entity running commands on redstone or chain (conditional_bit, facing_direction); gated by commandBlocksEnabled. | conditional_bit, facing_direction | props |
| structure block and jigsaw | 2 | Creative and worldgen tools with UIs; jigsaw assembles template pools. | facing_direction, rotation, structure_block_type | props, worldgen JSON for two structures |
| light | 16 | Invisible light source with level N in the name (Java uses one block with a state). | none | props |
| technical marker | 7 | allow, deny, border_block (wall shape, blocks movement), barrier, structure_void, unknown, camera (Education camera block). No gameplay beyond permission checks and collision. | wall states (border block) | props |
| air | 1 | Nothing. | none | props |
The table has 164 rows after merging the listed sea lantern into plain full block. The 1.26 additions need two new families, shelf (13) and sulfur hazard (2), and one new block entity family, copper golem statue (8). The rest fall into existing families: cinnabar and sulfur building blocks into plain, slab, stairs and wall; the poplar wood set into pillar, leaves, sapling, planks and the shape families; golden dandelion into flower; red shrub into small plant; shelf mushroom into mushroom; straw bed into bed; copper chests, bars, chains, lanterns and torches into their shape families; and the wool and concrete slabs and stairs, which are the first JSON blocks, into slab, double slab and stairs.
Cross-cutting block mechanics
| Mechanic | Blocks affected | Rule | Source |
|---|---|---|---|
| Per-state properties | 1463 | Hardness, explosion resistance, friction, light emission, light dampening, flame odds, burn odds, map color, solidity and collision come from the engine per block state. The block component docs give defaults: friction 0.4 (ice uses 0.02 to 0.98 in the dump), light dampening 15 opaque and 0 transparent with leaves 1 and water 2, flammable catch 5 and destroy 20, lava_flammable off unless set. | minecraftBlock_friction.md, minecraftBlock_light_dampening.md, minecraftBlock_flammable.md; dump pinned in packages/bedrock-data/src/resources/blocks.json |
| Block states and permutations | 912 blocks, 157 state names | A block's identity is name plus states; the network id is the FNV-1a-32 hash of that pair. Traits (placement_direction, placement_position, connection, multi_block) are the documented way states get set by the engine on placement and neighbor update; the four traits cover cardinal and facing direction with rotation offset, corner computation for stairs, block face and vertical half, four cardinal connections, and multi-block parts along an axis. | BlockReference/Examples/traits/*.md, IntrinsicBlockStatesList.md, BlockStateAndTraitListings.md |
| Placement filter and support | plants, torches, rails, redstone, signs, ladders, buttons, levers, carpets, snow, candles | A block declares faces and block filters it may be placed against; if the condition later fails the block pops. Vanilla hardcodes the same rule per family (needs solid top, needs dirt, needs water). | minecraftBlock_placement_filter.md: "If the block is already placed and the conditions become invalid (e.g., the supporting block is removed), the block will be destroyed." |
| Gravity | sand, red sand, gravel, 16 concrete powder, 3 anvils, dragon egg, pointed dripstone, suspicious sand and gravel, scaffolding | On neighbor update with air, water or lava below, the block becomes a falling block entity; it lands as a block or drops as an item when it cannot land; anvils and dripstone damage entities they land on (anvil, stalactite damage causes). | Java colored_falling, sand, anvil, brushable types; EntityDamageCause enum; wiki for damage values |
| Water-logging (second layer) | slabs, stairs, fences, walls, panes, chains, lanterns, signs, ladders, trapdoors, coral, kelp, seagrass, sea pickle, candles (unlit), copper grates, banners (Bedrock, wiki); doors are not waterloggable in Bedrock | Bedrock stores water as a second block layer, not as a state. liquid_detection declares can_contain_liquid, on_liquid_touches (blocking, broken, popped, no_reaction) and stops_liquid_flowing_from_direction. The Script API exposes Block.isWaterlogged, setWaterlogged, canContainLiquid, isLiquidBlocking, liquidCanFlowFromDirection, canBeDestroyedByLiquidSpread, liquidSpreadCausesSpawn; LiquidType has only Water. | minecraftBlock_liquid_detection.md; ScriptAPI/minecraft/server/Block.md, LiquidType.md; 66 of the 98 JSON blocks carry liquid_detection |
| Fluid flow | water, lava, and every block's reaction | Source and flowing blocks with liquid_depth; water spreads 7, lava 3 in the overworld and 7 in the nether, on scheduled ticks of 5 (water) and 30 or 10 (lava); two adjacent water sources with a solid or source below make a new source; lava over water makes stone, water touching lava source makes obsidian, flowing lava touching water makes cobblestone; flowing liquid pops popped blocks and breaks broken ones. | wiki Water, Lava (secondary); block reaction from liquid_detection docs |
| Fire spread and burning | flammable blocks per flame and burn odds (49 of the 98 JSON blocks set flammable) | Fire schedules its own ticks, picks neighbors by their flame odds, burns them away by burn odds, ages 0 to 15 and dies when nothing flammable remains; rain puts it out with 20 percent plus 3 per age; Bedrock halves spread in humid biomes; doFireTick false stops all fire updates; lava ignites lava_flammable blocks. | minecraftBlock_flammable.md (catch and destroy modifiers, lava_flammable); GameRule.DoFireTick "Controls whether fire spreads."; wiki Fire lines 95, 174, 177 (secondary) |
| Light propagation | all | Block light floods from emitters decreasing by 1 per taxicab step and by each block's dampening; sky light starts at 15 under open sky and is reduced by dampening; Bedrock lets filtering blocks reduce more than one level (water 2, leaves 1, ice 2). The Script API exposes Block.getLightLevel and getSkyLightLevel. | minecraftBlock_light_dampening.md; Block.md; wiki Light lines 15 to 17 and 97 (secondary) |
| Random ticks and growth | crops, saplings, leaves, grass, mycelium, nylium, fire (scheduled), vines, kelp, bamboo, sugar cane, cactus, chorus, sweet berries, cocoa, nether wart, turtle eggs, sniffer eggs, frogspawn, budding amethyst, copper, ice, snow, farmland, eyeblossoms, mangrove propagules, cave vines, nether vines, mushrooms, pointed dripstone, dried ghast | Each chunk tick selects random blocks per subchunk and gives them a random tick. Bedrock's randomTickSpeed defaults to 1, is a relative speed rather than a block count, and 0 or less disables random ticks. random_ticking is the data hook, tick and queued_ticking the scheduled ones. | GameRule.RandomTickSpeed "Controls how frequently random ticks occur. A value of 0 or less will disable random ticks. The default value is 1."; minecraftBlock_random_ticking.md, minecraftBlock_tick.md; wiki Tick line 81 (secondary) |
| Scheduled (named) ticks | redstone components, fluids, fire, buttons, pressure plates, big dripleaf, scaffolding, leaves distance check | The engine queues per-block delayed ticks; the Script API exposes scheduleNamedTick(eventName, tickDelay), getAllScheduledNamedTicks, removeScheduledNamedTicks and the onNamedTick hook. Repeaters run on redstone ticks (2 game ticks); Bedrock observers, hoppers, dispensers, copper bulbs and shelves act only on specific redstone tick phases. | Block.md; BlockCustomComponent.md; wiki Observer line 51, Hopper line 82, Dispenser line 82, Copper_Bulb line 85, Shelf line 123 (secondary) |
| Leaf decay | 14 leaves | Random tick removes leaves farther than 4 blocks (Bedrock) from any log or wood through other leaves unless persistent_bit; decay drops the same loot as breaking. | wiki Leaves lines 189 to 191 (secondary) |
| Snow and ice | snow layer, ice, frosted ice, water, powder snow, cauldron, grass under snow | Snowfall adds layers over biome-dependent heights on blocks with precipitation_interactions set to accumulate (obstruct_rain_accumulate_snow) and snowlogs snowlogging plants; water in cold biomes freezes with sky access and block light under 10; snow and ice melt at light 12 or more; doWeatherCycle false stops snow layers in Bedrock. | minecraftBlock_precipitation_interactions.md (four behaviors); wiki Snow lines 120, 122, 135 and Ice line 29 (secondary) |
| Redstone power model | redstone wire, torches, repeaters, comparators, observers, buttons, levers, plates, tripwire, target, detector rail, daylight detector, lightning rod, trapped chest, lectern, sculk sensors, copper bulb, all conductors and consumers | A block is strongly powered by a producer's strongly_powered_face and weakly powered through connected_faces; a redstone_conductor block passes strong power to neighbors as weak power; wire carries 0 to 15 and steps down where allows_wire_to_step_down; consumers fire onRedstoneUpdate when the signal is at least min_power and propagates_power lets a signal pass through. Block.getRedstonePower() reads the level. | minecraftBlock_redstone_producer.md, minecraftBlock_redstone_conductivity.md, minecraftBlock_redstone_consumer.md; Block.md; 96 of 98 JSON blocks set redstone_conductivity |
| Pistons and movement | 2 pistons, 2 arm blocks, all blocks via movable | movement_type is push_pull (default), push (not pulled by sticky pistons, glazed terracotta and heavy core), popped (drops as item, plants and torches) or immovable (obsidian, block entities); sticky same groups slime and honey; pushed blocks become moving block entities for 2 ticks; limit 12 blocks. Bedrock pistons move block entities and have no quasi-connectivity. | minecraftBlock_movable.md; BlockComponentTypes.Piston, Movable; wiki Piston lines 56 to 58 (secondary) |
| Note block instruments | note block, 48 JSON blocks and every vanilla block | The block below a note block selects the sound through instrument_sound.up (harp default, bass for wood, snare for sand, hat for glass, basedrum for stone, plus bell, flute, chime, guitar, xylophone, iron xylophone, cow bell, didgeridoo, bit, banjo, pling); heads above select mob sounds. | minecraftBlock_instrument_sound.md; BlockComponentTypes.Instrument |
| Block entities and inventories | chests, barrels, shulker boxes, furnaces, brewing stands, dispensers, droppers, hoppers, crafters, signs, banners, skulls, beds, flower pots, item frames, jukeboxes, lecterns, chiseled bookshelves, decorated pots, beacons, conduits, bells, campfires, beehives, lodestones, spawners, trial spawners, vaults, command blocks, structure blocks, shelves, copper golem statues, creaking hearts, enchanting tables, end portals, note blocks, comparators, moving blocks, pistons | block_entity with container and slot_count 1 to 54 is the only data form; vanilla types carry NBT of their own shape. The Script API exposes Inventory, Sign, RecordPlayer, FluidContainer, RecipeCrafting, RecipeProcessing, EntityStorage, DynamicProperties, VibrationProperties. blockContainerOpened and blockContainerClosed are world events. | minecraftBlock_block_entity.md; BlockComponentTypes.md; WorldAfterEvents.md |
| Explosions | all blocks and entities | Rays from the center lose power by each block's explosion resistance; entity damage follows impact = (1 - distance / (2 power)) * exposure and damage = 7 power (impact^2 + impact) + 1; Bedrock knockback uses (1 - (distance - width/2) / (2 power)) * exposure; dropped items decay with TntExplosionDropDecay; mobGriefing gates mob explosions; explosion_decay is a loot function. | minecraftBlock_destructible_by_explosion.md; GameRule.TntExplodes, TntExplosionDropDecay, MobGriefing; Dimension.createExplosion; wiki Explosion lines 14 to 43 (secondary) |
| Break time and tool effectiveness | all blocks, 42 tools | Break time is hardness times 1.5 with the correct tool or 5 without; tool speed by tier (wood 2, stone 4, iron 6, diamond 8, netherite 9, gold 12; the copper tier's speed is not on the wiki page fetched) multiplied by Efficiency (level squared plus 1 added) and Haste (20 percent per level), divided by Mining Fatigue; a block breaks when accumulated speed exceeds hardness times 30; requires_correct_tool_for_drops and the minecraft:is_*_item_destructible tags decide drops. Reach is 5 blocks in Bedrock. | minecraftBlock_destructible_by_mining.md (seconds_to_destroy, item_specific_speeds); minecraft_digger.md; VanillaBlockTags.md (is_pickaxe_item_destructible, tier tags); wiki Breaking lines 13, 26 to 28, 86 to 97 (secondary) |
| Silk touch, fortune and block loot | all drops; only the 98 JSON blocks have tables | Glass, ice, ores, grass, leaves, infested blocks, ender chest and sculk change drops under silk touch; fortune multiplies ore and crop drops; the composed pack has 99 block loot tables and the 309 tables use set_count, looting_enchant, explosion_decay, furnace_smelt and 19 more functions. "Max enchantment levels are hard-coded." | minecraftBlock_loot.md; docs/research/bedrock-data-extraction.md section 3; loot function tally from the composed pack |
| Bone meal | saplings, crops, stems, grass, mushrooms, flowers, seagrass, kelp, moss, nylium, glow lichen, cave vines, nether vines, sea pickles, cocoa, sweet berries, mangrove propagule, small and big dripleaf, pink petals, wildflowers, shelf mushroom, azalea, rooted dirt | Advances growth stages or runs a feature; no block component; fertilize_area block tag marks blocks bone meal affects as an area. | VanillaBlockTags.md (fertilize_area, minecraft:crop); wall_foliage_block.is_bonemealable in the shelf mushroom JSON |
| Sculk spreading | sculk, veins, sensors, shriekers, catalyst | Catalyst charge equals the dying mob's experience and spreads over sculk_replaceable blocks within 8 blocks, with 1 in 10 and 1 in 100 chances for sensors and shriekers (wiki); vibrations have frequencies 1 to 15 that sensors read. | wiki Sculk line 32, Sculk_Catalyst (secondary); BlockComponentTypes.VibrationProperties |
| Copper oxidation and waxing | 60 unwaxed copper blocks, 64 waxed | Random tick advances exposed, weathered, oxidized; waxing with honeycomb locks the stage; axe scrapes wax or one stage; lightning resets stages around a rod. Bedrock's probabilities are not published; Java uses 64/1125 per random tick to enter pre-oxidation and slows blocks with less oxidized neighbors within 4 blocks. | wiki Oxidation lines 11 to 27 (secondary, Java numbers) |
| Farmland hydration and trampling | farmland, crops | Water within 4 blocks horizontally and 1 up or rain hydrates; dry farmland with nothing planted reverts; entities falling on it (onEntityFallOn) revert it to dirt and pop the crop; mobGriefing gates mob trampling. | minecraftBlock_entity_fall_on.md; wiki Farmland lines 41 to 51 (secondary) |
| Portals and dimensions | nether portal, end portal, end portal frame, respawn anchor | Three dimensions (mojang-dimensions.json); nether coordinates are overworld divided by 8; portal search and creation; dimension_bound entities cannot change dimension; playerDimensionChange event. | mojang-dimensions.json; minecraftComponent_dimension_bound.md; WorldAfterEvents.playerDimensionChange |
| Beds and respawn anchors | bed, straw bed, respawn anchor | Bed sets spawn in the overworld and explodes elsewhere; sleeping needs sky light 11 or less and no monsters within 8 by 5 blocks; playersSleepingPercentage sets the fraction needed to skip the night; respawnBlocksExplode gates the explosions; doImmediateRespawn skips the death screen. | GameRule.PlayersSleepingPercentage, RespawnBlocksExplode, DoImmediateRespawn; wiki Bed lines 177 to 183 (secondary) |
| Bells and raids | bell, village | Ringing applies Glowing to raiders within 32 blocks and makes villagers run to beds (Bedrock); a player with Raid Omen entering a 64x23x64 region around a village center starts a raid with waves from definitions/spawn_groups/. | wiki Bell line 42, Raid line 19 (secondary); docs/research/bedrock-data-extraction.md section 2 for spawn groups |
| Campfire cooking | campfire, soul campfire | Four slots cook recipe_furnace entries tagged campfire and soul_campfire (9 each) over 600 ticks and drop the output. | recipe tag tally from the composed pack |
| Composting | composter, 122 compostable items in Java, 2 in Bedrock JSON | Each compostable item has a composting_chance 1 to 100 of adding one of 7 layers; level 8 yields bone meal. | minecraft_compostable.md; Java minecraft:compostable on 122 items |
| Cauldron fluids and dyes | cauldron | Water, lava and powder snow fill levels 0 to 6; buckets move 6 levels and bottles 2; rain and dripstone fill; dyes and potions color or fill water in Bedrock; washing removes dye from leather and the top banner layer. | BlockComponentTypes.FluidContainer; wiki Cauldron lines 27 to 36 (secondary) |
| Chorus and bamboo growth | chorus flower and plant, bamboo | Chorus flowers grow up or sideways until age 5 on end stone; bamboo grows 1 block per random tick with a height cap of 12 to 16. | wiki Chorus_Plant lines 28 to 34, Bamboo line 57 (secondary) |
| Vine and lichen spreading | vine, glow lichen, sculk vein, nether vines, cave vines | Vines spread to adjacent faces and downward on random tick; glow lichen spreads only with bone meal; weeping and twisting vines extend with a 10 percent chance per random tick (Java number, wiki). | wiki Vines, Glow_Lichen (secondary) |
| Coral drying | 30 coral plants and fans, 10 coral blocks | Coral not adjacent to water dies to its dead variant on a scheduled tick after placement or neighbor update. | wiki Coral line 55 (secondary) |
| Turtle eggs | turtle egg | Cracks on random ticks mostly at night, trampled by entities except turtles and bats, targeted by zombies (behavior.* goal). | wiki Turtle_Egg lines 51 to 64 (secondary) |
| Dripstone and dripping | pointed dripstone, cauldron, mud | Stalactites with a water or lava source above the base drip into cauldrons below and convert mud to clay; stalactites grow when water sits above the dripstone block (Java rule, wiki). | wiki Pointed_Dripstone (secondary; page fetched under Pointed_Dripstone returned no Bedrock-specific lines) |
| Amethyst growth | budding amethyst, 4 cluster stages | Random tick grows the next stage on a random face with a 1 in 5 chance (wiki); clusters drop 4 shards, 1 in 5 budding chance. | wiki Budding_Amethyst (secondary) |
| Pointed dripstone falling | pointed dripstone | Stalactites fall when their support is removed and damage entities as stalactite; landing stalagmites damage fallers as stalagmite. | EntityDamageCause.stalactite, stalagmite |
| Spore blossoms | spore blossom | Particles only; must hang from a block above. | Java spore_blossom type |
| Big dripleaf tilting | big dripleaf | Entity weight tilts none, unstable, partial_tilt, full_tilt over scheduled ticks and resets after 100 ticks; redstone power prevents tilting. | BlockStateAndTraitListings.md (big_dripleaf_tilt); wiki Big_Dripleaf (secondary) |
| Frogspawn | frogspawn | Hatches 2 to 5 tadpoles after 3 to 10 minutes; breaks when the water goes. | wiki Frogspawn (secondary) |
| Mangrove propagules | mangrove propagule | Grows through 5 stages while hanging, drops when mature if not persistent; plants on mud, dirt, clay, farmland. | BlockStateAndTraitListings.md (propagule_stage) |
| Decorated pots | decorated pot | Sherd faces from the crafting grid; one-stack storage; shatters into sherds under projectile hits. | loot_tables/pots/; wiki Decorated_Pot (secondary) |
| Suspicious sand and brushing | 2 brushable blocks, brush item | Brushing takes about 6 seconds, advances brushed_progress, drops an item from the generated structure's loot table, then the block becomes sand or gravel. | BlockStateAndTraitListings.md (brushed_progress); minecraft_brush has no component; archaeology loot under loot_tables/ |
| Trial spawners and vaults | trial spawner, vault, trial key, ominous bottle | Spawner waves scale with players within 14 blocks, state machine of 6 states, ominous variant with ominous item spawner entity; vault accepts one key per player and tracks rewarded players. | BlockStateAndTraitListings.md; mojang-entities.json (ominous_item_spawner); wiki Trial_Spawner, Vault (secondary) |
| Crafters | crafter | Redstone pulse crafts the grid once and ejects; slots can be disabled; comparator reads filled slots. | wiki Crafter (secondary) |
| Copper bulbs | 8 bulbs | Toggle on rising edge, light by oxidation stage (15, 12, 8, 4). | wiki Copper_Bulb (secondary) |
| Heavy cores | heavy core | Piston push-only, no stickiness; mace crafting ingredient. | wiki Heavy_Core line 31 (secondary) |
| Resin | resin clump, resin block, resin bricks | Creaking heart places clumps on nearby pale oak when its creaking is hurt; clumps smelt into bricks. | wiki Resin_Clump (secondary) |
| Creaking hearts | creaking heart | Spawns a creaking at night within 32 blocks of a player (wiki); the creaking is invulnerable and the heart takes its damage; dormant, awake and uprooted states. | BlockStateAndTraitListings.md (creaking_heart_state); wiki Creaking_Heart (secondary) |
| Shelves (1.26) | 13 shelves | Three item slots, hotbar row swap on sneak-interact, redstone-connected rows swap together; activates only on the consumer redstone tick in Bedrock. | wiki Shelf line 123 (secondary) |
| 1.26 additions not covered above | cinnabar and sulfur sets, poplar wood set, straw bed, golden dandelion, red shrub, shelf mushroom, copper golem statue, copper chests, bars, chains, lanterns, torches, wool and concrete slabs and stairs, sulfur_spike, potent_sulfur | The shape families above absorb all but sulfur_spike and potent_sulfur, whose behavior has no public documentation at this commit. | mojang-blocks.json name list; the 26.50 changelog cited in bedrock-data-extraction.md |
2. Item behavior families
Method
The 1623 names come from mojang-items.json. 1101 of them share a name with a block and are block items; the classifier (/tmp/bds-research-inventory/tools/item_families.py) assigns the other 522 by explicit sets and suffix regexes, with "plain material" as the fallback for names with no use behavior. The Java cross-check maps each Bedrock name to the Java item (renames such as ender_eye, experience_bottle, frame, reeds applied) and lists the Java default components that are not cosmetic (attribute_modifiers, item_name, lore, rarity, tooltip_display, break_sound, use_effects and friends dropped). Java components are a second, independent inventory of what is parameterizable: tool, weapon, equippable, consumable, food, max_damage, repairable, enchantable, use_cooldown, use_remainder, cooking_fuel, compostable, jukebox_playable, provides_pottery_pattern, provides_banner_patterns, provides_trim_material, bucket_entity_data, entity_data, block_transformer (axes, shovels, hoes), blocks_attacks (shield), glider (elytra), death_protection (totem), kinetic_weapon and piercing_weapon (spears), charged_projectiles (crossbow), fireworks, instrument (goat horn), map_decorations, potion_contents, ominous_bottle_amplifier, writable_book_content, stored_enchantments, banner_patterns, bundle_contents, sign_text_*, dye, damage_resistant (nether star), mob_visibility, villager_food.
The Bedrock component column names the documented component that would express each part of the behavior; "none" means the item component list has nothing for it and the engine implements it by item type. Vanilla's own JSON covers only the 79 files listed in bedrock-data-extraction.md (50 foods, 17 bundles, 7 spears, seeds, trial keys, wind charge, breeze rod, camera, red shrub, shelf mushroom).
Family table
| Family | Items | Behavior (use, use on block, use on entity, release, inventory tick, as projectile, durability, enchantability) | Bedrock component for each part | No component for | Java default components (26.4) |
|---|---|---|---|---|---|
| block item | 1086 | Use on block places the block with the family's placement rule (section 1); stack 64 (16 for signs and banners, 1 for shulker boxes and beds); 16 are light blocks. Education chemistry items are absent from mojang-items.json. Exceptions with extra behavior: carved pumpkin and 7 heads are wearable, planks and other wooden blocks are fuel, kelp and bamboo and most plants are compostable, 2 JSON items (red_shrub, shelf_mushroom) carry block_placer with replace_block_item. Hanging sign items, beetroot and nether_wart share block names but sit in other families. | block_placer (block, use_on, aligned_placement), fuel, wearable, compostable | per-block placement rules, bed color, banner patterns, shulker contents, skull owner | cooking_fuel (347 Java items), compostable (122), container (45 shulker boxes and others), block_state (12), bees (2), block_entity_data |
| spawn egg | 88 | Use on block spawns the entity at the clicked position with the egg's spawn event; use on a spawner sets its type; use on an adult spawns a baby (spawn_egg_interaction on 43 entities). | entity_placer (entity, use_on, dispense_on) | none missing | entity_data (88) |
| plain material | 40 | No use behavior; ingredients, repair materials, trade goods. repeater and comparator items place their blocks and belong to block item behavior with a different name; netherbrick and brick are ingredients. | max_stack_size, tags | nothing to express | none |
| food | 36 (plus 50 data-driven files, 86 foods in total) | Use for use_duration then eat: nutrition and saturation, using_converts_to (bowl, bottle), effects (golden apples, chorus fruit teleport, pufferfish poison, spider eye, rotten flesh hunger, suspicious stew's stored effect, honey bottle clears poison); can_always_eat; cooldown category chorusfruit. | food, use_duration or use_modifiers, cooldown | effects per food (the docs mark remove_effects deprecated; vanilla files carry only nutrition and saturation), chorus teleport, suspicious stew effect storage | food (44), consumable (43 with effects), use_remainder, suspicious_stew_effects |
| armor | 29 | Worn in head, chest, legs or feet; protection points and toughness reduce damage; durability lost 1 per 4 damage taken; enchantable with armor slots; trims via smithing; leather dyeable; turtle helmet grants water breathing; is_armor and *_tier tags. | wearable (slot, protection, hides_player_location), durability, enchantable, repairable, dyeable, damage_absorption, tags | toughness, knockback resistance (netherite), turtle helmet effect, trim rendering data, Frost Walker and Depth Strider interactions | equippable (84), max_damage, repairable, enchantable, damage, attribute modifiers armor and armor_toughness (29) |
| harness | 16 | Happy ghast saddle variant per color; equipped through equippable on the ghast. | wearable is not the right slot; tags (minecraft:harness) | the equip rule lives on the entity | equippable (16) |
| horse armor | 6 | Equipped to horses through the horse's equippable slots; armor value; no durability (wiki). | tags (horse_armor) | armor value per material | equippable, attribute armor (6) |
| nautilus armor | 5 | 1.26 armor for the nautilus mount, same model as horse armor. | tags (nautilus_armor) | armor value | equippable, attribute armor (5) |
| wolf armor | 1 | Equipped to tamed wolves; absorbs damage into its own durability (damage_absorption semantics); repaired with armadillo scutes; dyeable. | durability, repairable, dyeable, damage_absorption | the wolf-side equip rule | equippable, max_damage, repairable, attribute armor |
| sword | 7 | Attack damage by tier (wood 4 to netherite 8), sweep is Java-only, breaks cobwebs and bamboo fast, durability 2 per block broken, enchantable as sword; is_sword tag. | damage, durability, enchantable, repairable, digger (cobweb speed), hand_equipped, tags | attack cooldown is Java-only; nothing missing for Bedrock | tool, weapon, damage, max_damage, repairable, enchantable, attributes attack_damage and attack_speed (7) |
| axe | 7 | Dig speed on wood by tier, attack damage, strips logs and wood, scrapes copper wax and oxidation, deactivates shields (Java), durability 1 per block and 2 per hit. | digger, damage, durability, enchantable, repairable, tags (is_axe) | strip and scrape block transformations | tool, weapon, block_transformer (7), max_damage, repairable, enchantable |
| pickaxe | 7 | Dig speed on stone and metal by tier; harvest tier decides drops through the *_tier_destructible block tags. | digger, damage, durability, enchantable, repairable, tags (is_pickaxe, tier) | harvest tier comparison is engine | tool, weapon, max_damage, repairable, enchantable |
| shovel | 7 | Dig speed on dirt, sand, snow and gravel; turns grass to path; extinguishes campfires; snow layers drop snowballs. | digger, damage, durability, enchantable, repairable, tags | path and campfire transformations | tool, weapon, block_transformer (7) |
| hoe | 7 | Tills dirt, grass and path into farmland and rooted dirt into dirt; dig speed on leaves, sponge, hay, nether wart blocks, sculk. | digger, damage, durability, enchantable, repairable, tags | tilling transformation | tool, weapon, block_transformer (7) |
| spear | 7 | 1.26 weapon: charged attack with kinetic damage from relative velocity along the view ray, piercing all entities in reach, dismount and knockback conditions, cooldown category spear; the only vanilla weapons fully in JSON. | kinetic_weapon, piercing_weapon, damage, durability, repairable, enchantable, swing_duration, swing_sounds, use_modifiers (on_attack), cooldown | nothing | kinetic_weapon, piercing_weapon, attack_range, minimum_attack_charge, damage_type, weapon, max_damage, repairable, enchantable (7) |
| mace | 1 | Smash attack scaling damage with fall distance, cancels fall damage, knocks back nearby entities, mace_smash damage cause; Density, Breach and Wind Burst enchantments. | damage, durability, enchantable, repairable | smash attack | tool, weapon, max_damage, repairable, enchantable, attributes |
| trident | 1 | Melee and thrown projectile (thrown_trident entity), returns with Loyalty, Riptide launches the player in water or rain, Channeling summons lightning, Impaling; is_trident tag. | damage, durability, enchantable, repairable, throwable plus projectile could spawn the entity | return, riptide, channeling | tool, weapon, max_damage, repairable, enchantable |
| shears | 1 | Shears sheep, snow golems, mooshrooms (Bedrock), beehives, pumpkins; harvests leaves, vines, grass, cobwebs intact; disarms tripwire; cuts leashes (leashable.can_be_cut); durability 1 per use; is_shears tag. | durability, digger, tags | every shear interaction is engine | tool, max_damage |
| bow | 1 | Draw up to 1 second, release fires an arrow entity with power scaled by draw, consumes arrows from inventory or offhand (Infinity exempts), Power, Punch, Flame; durability 1 per shot. | shooter (ammunition, max_draw_duration, scale_power_by_draw_duration), use_modifiers, durability, enchantable (bow) | arrow pickup of tipped and spectral variants via aux; nothing else missing | max_damage, enchantable, damage, cooking_fuel |
| crossbow | 1 | Charge on draw (charge_on_draw), stores the projectile (charged_projectiles), fires arrows or firework rockets, Quick Charge, Multishot, Piercing. | shooter (charge_on_draw), use_modifiers, durability, enchantable (crossbow) | storing the loaded projectile in NBT, firework ammunition | charged_projectiles, max_damage, enchantable |
| arrow | 1 | Projectile ammunition; aux values encode 43 tipped arrows and the spectral arrow is Java-only; dispensers shoot it; picked up unless shot by a mob or creative. | projectile (projectile_entity), tags (arrow) | tipped effects per aux value | none beyond cosmetics (potion_contents on tipped_arrow) |
| snowball | 1 | Thrown projectile, 16 per stack, damages blazes 3, knocks back; dispensers shoot it. | throwable, projectile | nothing | none |
| egg | 3 | Thrown projectile with 1 in 8 chance of spawning a chick (1 in 32 for four); blue and brown eggs (1.21.5) spawn the matching chicken variant. | throwable, projectile | chick spawn logic lives in the egg entity | chicken/variant (3) |
| ender pearl | 1 | Thrown projectile teleporting the thrower on impact for 5 damage; 1-second cooldown category ender_pearl; endermites by chance. | throwable, projectile, cooldown | nothing | use_cooldown |
| eye of ender | 1 | Use throws a signal entity flying toward the nearest stronghold and shattering by chance; use on an end portal frame fills it. | none for the stronghold search; block_placer-like use on frame | both behaviors | none |
| experience bottle | 1 | Thrown; releases 3 to 11 experience on impact. | throwable, projectile | orb release lives in the xp_bottle entity | enchantment_glint_override |
| wind charge | 1 | Thrown projectile exploding with knockback and no block damage, bounces the user; data-driven in vanilla (throwable, projectile, cooldown 0.5 s). | throwable, projectile, cooldown (wind_charge) | nothing | use_cooldown |
| fire charge | 1 | Use on block places fire or lights campfires, candles and TNT; dispensers shoot a small fireball. | none | both | none |
| flint and steel | 1 | Use on block places fire, lights nether portals, TNT, campfires, candles and creepers (use on entity); durability 1 per use. | durability | ignition | max_damage, damage |
| firework rocket | 1 | Use in air launches a rocket entity with flight duration 1 to 3 and explosion stars; use while gliding boosts; crossbow ammunition; dispensable. | throwable-adjacent, no component for the entity data | NBT of explosions and flight | fireworks |
| firework star | 1 | Crafting ingredient carrying explosion shape, colors, fade, trail and flicker in NBT. | none | NBT model | none |
| potion | 1 | Drink over 32 ticks for the aux-indexed effect (47 mojang-potion-effects.json entries), returns a glass bottle; can_always_eat. | food-like use with using_converts_to | effect table per aux value | potion_contents, consumable, use_remainder |
| splash potion | 1 | Thrown; applies the effect to entities within a radius scaled by distance; water bottle extinguishes fire. | throwable, projectile | effect application lives in the splash_potion entity | potion_contents |
| lingering potion | 1 | Thrown; leaves an area_effect_cloud entity for 30 seconds applying the effect at quarter duration. | throwable, projectile | cloud parameters | potion_contents, potion_duration_scale |
| ominous bottle | 1 | Drink for Bad Omen with amplifier 0 to 4 (aux); converts to Raid Omen near a village or Trial Omen near a trial spawner. | food, use_duration | amplifier from aux, omen conversion | consumable, ominous_bottle_amplifier |
| bucket (empty) | 1 | Use on a water or lava source picks it up; use on powder snow picks it up; use on a cow or goat milks; use on a fish, axolotl or tadpole collects it. | liquid_clipped | every pickup rule | none |
| bucket (fluid) | 3 | Use places the source block or powder snow, returns the empty bucket; dispensable; water bucket on a waterloggable block waterlogs it. | block_placer could place, liquid_clipped | the "place liquid at the clicked side" rule | cooking_fuel (lava) |
| bucket (milk) | 1 | Drink clears all effects, returns the bucket; can_always_eat. | food, using_converts_to | effect clearing | consumable, use_remainder |
| bucket (mob) | 7 | Use places a water source and spawns the stored mob with its NBT (variant, name, tropical fish pattern); the 1.26 sulfur cube bucket is new. Java also marks the four fish buckets as food; Bedrock does not. | entity_placer, block_placer | storing the entity in item NBT | bucket_entity_data (7), food (4, Java only) |
| glass bottle | 1 | Use on water or a water cauldron fills a water bottle; on a beehive at honey 5 fills a honey bottle; collects dragon breath from the breath cloud. | none | all three | none |
| honeycomb | 1 | Use on copper waxes it; use on a sign waxes the text; beehive crafting. | none | waxing | none |
| bowl | 1 | Use on a mooshroom yields mushroom stew (brown mooshroom with a flower yields suspicious stew). | none | milking rule | cooking_fuel |
| glow ink sac | 2 | Use on a sign makes the text glow or resets it; squid drop; dye ingredient. | none | sign interaction | none |
| dye | 16 | Use on a sheep, cat collar, wolf collar, harness-less ghast dyes it (is_dyeable entities); use on a sign colors the text; crafting dyes wool, beds, banners, shulker boxes, glass, candles; cauldron water (Bedrock). | none | all interactions | dye (16) |
| bone meal | 1 | Use on a block fertilizes it (section 1 bone meal row); dispensable; composter output; white dye recipe. | none | fertilizing | none |
| seed | 5 | Use on farmland plants the crop (crop_result, plant_at); wheat, beetroot, melon, pumpkin and torchflower seeds are data-driven in vanilla. | seed | nothing | compostable (5) |
| plantable (non-seed) | 7 | Carrot and potato plant their crops and are food; cocoa beans attach to jungle logs; sugar cane places reeds; glow berries and sweet berries plant cave vines and bushes and are food; pitcher pod plants the pitcher crop. | seed, food, block_placer | nothing | compostable (7), food (4) |
| compass | 2 | Inventory tick points at the world spawn; use on a lodestone binds it and the lodestone compass points at that position and dimension (spins elsewhere); the needle is client rendering from item NBT. | none | both | none |
| recovery compass | 1 | Points at the last death position in the same dimension. | none | all | none |
| clock | 1 | Shows the time of day; rendering only. | none | time readout | none |
| map | 2 | Empty map use creates a filled map of the area (locator maps show players); filled map renders explored chunks, banners and tracked entities, scales 0 to 4 by cartography table, locks, clones; explorer maps are filled maps with exploration_map loot function destinations. | none | the whole map data model | map_decorations (17 in Java incl. explorer maps) |
| boat | 20 | Use on water spawns the boat or chest_boat entity with the wood variant; 10 wood types; fuel. | entity_placer | variant selection | cooking_fuel (20) |
| raft | 2 | Bamboo raft and chest raft, same entities with a flat model. | entity_placer | nothing | cooking_fuel |
| minecart | 5 | Use on a rail spawns the cart entity (plain, chest, hopper, TNT, command block); dispensable onto rails. | entity_placer | nothing | none |
| cushion | 16 | 1.26: use spawns a cushion entity that mobs and players can sit on; 16 colors; fuel. | entity_placer | sitting | cushion/color (16), cooking_fuel |
| end crystal | 1 | Use on obsidian or bedrock spawns the ender_crystal entity; four on the exit portal respawn the dragon. | entity_placer | the dragon respawn trigger | enchantment_glint_override |
| armor stand | 1 | Use spawns the armor_stand entity; poses by sneak-interact in Bedrock. | entity_placer | nothing | none |
| painting | 1 | Use on a wall spawns a painting entity with a random variant that fits; 1.21 added selectable variants. | entity_placer | variant fitting | none |
| saddle | 1 | Use on a pig, strider, horse, donkey, mule, camel or nautilus equips it (equippable slot on the entity, is_saddled); dispensable. | none on the item | equip rule lives on the entity | equippable |
| name tag | 1 | Renamed in an anvil; use on an entity names it and makes it persistent (nameable on 94 entities; playerUseNameTag event). | none | naming | none |
| lead | 1 | Use on a leashable entity attaches; use on a fence or wall ties the knot; breaks beyond max_distance; sneak-use frees. | none | leashing | none |
| book | 1 | Crafting and enchanting input (enchantable value 1). | enchantable | nothing | enchantable |
| writable book | 1 | Use opens the editor; up to 50 pages; signing makes a written book (absent from mojang-items.json; see open questions). | none | editor and signing | writable_book_content |
| enchanted book | 1 | Anvil ingredient transferring stored enchantments; glint. | glint | stored enchantments | stored_enchantments |
| banner | 1 | Use on block places the banner block with color from aux and patterns from NBT; shield crafting; loom input. | block_placer | pattern NBT | banner_patterns, cooking_fuel |
| banner pattern | 10 | Loom input selecting a pattern; provides_banner_patterns in Java. | none | loom rule | provides_banner_patterns (10) |
| shield | 1 | Use raises the shield and blocks damage from the front, loses durability, disabled by axe hits for 5 seconds; banner patterns apply; cooldown category shield. | durability, repairable, cooldown, use_modifiers | blocking | blocks_attacks, equippable, max_damage, repairable, banner_patterns |
| elytra | 1 | Worn in the chest slot; jumping while falling starts gliding; firework rockets boost; durability 1 per second gliding; repaired with phantom membranes; flyIntoWall damage. | wearable, durability, repairable | gliding | glider, equippable, max_damage, repairable |
| totem of undying | 1 | Held in hand or offhand it cancels a fatal hit, grants Regeneration II, Absorption II and Fire Resistance, and is consumed. | allow_off_hand | death protection | death_protection |
| fishing rod | 1 | Use casts a fishing_hook entity; reeling pulls entities or rolls the gameplay/fishing loot tables after 5 to 30 seconds (Lure shortens, Luck of the Sea shifts); durability by use. | durability, enchantable (fishing_rod) | casting and reeling | max_damage, enchantable, cooking_fuel |
| mob steering rod | 2 | Carrot on a stick steers a saddled pig and warped fungus on a stick a strider (item_controllable, boostable); use boosts and costs durability. | durability | steering (entity side) | max_damage |
| spyglass | 1 | Use zooms the camera while held; client-side. | use_modifiers | zoom | none |
| goat horn | 1 | Use plays one of 8 instrument sounds (aux) with a 7-second cooldown category goat_horn. | cooldown | sound selection | instrument |
| brush | 1 | Use on a brushable block runs the brushing progress; durability 1 per completed brush. | durability | brushing | max_damage |
| trial key | 2 | Use on a vault (ominous key on an ominous vault) consumes the key and ejects loot; data-driven items with only icon and display name. | none beyond icon | vault rule is on the block | none |
| bundle | 17 | Right-click interaction scheme (bundle_interaction), dynamic container weighted by stack size up to 64 (storage_item, storage_weight_limit, storage_weight_modifier), bans shulker boxes; all 17 are data-driven in vanilla. | storage_item, bundle_interaction, storage_weight_limit, storage_weight_modifier | nothing | bundle_contents (17) |
| smithing template | 19 | Smithing table input: 18 trim templates select a pattern (recipe_smithing_trim, 1 recipe with tags trim_templates, trim_materials, trimmable_armors), the netherite upgrade template drives 12 recipe_smithing_transform recipes; duplicated by crafting. | tags (transform_templates, trim_templates) | the trim data model | provides_trim_material is on the materials (11), none on templates |
| pottery sherd | 23 | Decorated pot crafting; each sherd provides a pattern. | none | pattern mapping | provides_pottery_pattern (23) |
| music disc | 22 | Jukebox insert plays the record sound event and emits a comparator signal 1 to 13; dropped by creepers killed by skeletons (loot_tables/entities/creeper.json). | record (sound_event, duration, comparator_signal) | nothing | jukebox_playable (22) |
| sign item | 26 | Use on block places a standing sign on top faces or a wall sign on side faces; hanging signs place ceiling or wall variants (hanging_actor, hanging_sign, sign tags); fuel. | block_placer, fuel, tags | choosing standing versus wall block | sign_text_front, sign_text_back (26), cooking_fuel (22) |
| fuel-only material | 3 | Coal, charcoal, blaze rod burn in furnaces (80, 80, 120 seconds); coals tag. | fuel | nothing | cooking_fuel (3) |
| brewing ingredient | 13 | recipe_brewing_mix inputs (nether wart, blaze powder, ghast tear, magma cream, fermented spider eye, glistering melon, rabbit foot, dragon breath for lingering, gunpowder for splash, glowstone and redstone as modifiers, breeze rod, phantom membrane); nether wart also plants. | seed (nether wart) | the brewing stand recipe binding is in recipes, not on the item | none (Java keeps brewing in PotionBrewing code) |
| redstone dust | 1 | Use on block places redstone wire; brewing modifier; provides_trim_material in Java. | block_placer | nothing | provides_trim_material |
| string | 1 | Use on block places tripwire. | block_placer | nothing | none |
| nether star | 1 | Beacon ingredient; survives explosions (fire_resistant-like damage_resistant in Java). | fire_resistant is the Bedrock analog for fire only | explosion resistance | damage_resistant, enchantment_glint_override |
Family count: 85. Items absent from mojang-items.json that exist in game: written_book, skull (heads are listed under their block names), the Education chemistry items, tipped_arrow variants (aux values of arrow), explorer maps (aux of filled_map) and potion kinds (aux of potion). The 537 items outside the block item family fall into 84 families; 48 families hold one item.
3. Entity non-AI mechanics
The 129 vanilla entity files (composed from the BDS layers; mojang-entities.json lists the same 129 names) use 372 distinct component keys: 170 minecraft:behavior.* goals and 202 others. The docs list 203 non-goal components and 182 goals. The groups below cover all 202 non-goal components in vanilla use; the count is the number of vanilla entities using at least one component in the group, tallied with /tmp/bds-research-inventory/entity_components.json.
| Mechanic | Components (vanilla entities using each) | Entities | Engine rules the docs state |
|---|---|---|---|
| Identity, families and variants | type_family (124), variant (29), mark_variant (8), skin_id (2), color (4), color2 (1), is_baby (44), is_charged, is_chested (4), is_dyeable (3), is_sheared (3), is_saddled (10), is_tamed (16), is_shaking (9), is_stunned, is_ignited, is_pregnant, is_illager_captain (2), nameable (94), scale (48), scale_by_age, collision_box (125), custom_hit_test (2), renders_when_invisible (8), is_hidden_when_invisible (92), conditional_bandwidth_optimization (117), ambient_sound_interval (32), sound_volume, movement_sound_distance_offset (2), walk_animation_speed, default_look_angle, ground_offset | 129 | Flags are synced to the client as actor flags and data; type_family feeds filters and loot conditions (has_variant, has_mark_variant, is_baby); nameable allows name tags and always_show names; collision_box sets width and height. |
| Health and damage | health (94), attack (48), attack_damage (2), attack_cooldown (4), damage_sensor (40), hurt_on_condition (87), damage_over_time (3), area_attack (4), mob_effect (4), mob_effect_immunity (6), spell_effects (4), experience_reward (80), loot (78), on_death, on_hurt (3), on_hurt_by_player (2), cannot_be_attacked, ignore_cannot_be_attacked, combat_regeneration, apply_knockback_rules (4), knockback_resistance (13), boss (2), wither_target_highest_damage | 129 | health has value and max ("1 point = half a heart"); attack deals a random damage range and may apply an effect; damage_sensor triggers decide deals_damage yes, no, no_but_side_effects_apply, no_but_entity_effects_apply by cause; hurt_on_condition deals damage_per_tick with a cause while filters hold (vanilla uses it for lava on 85 entities); knockback_resistance 0 to 1; experience_reward is a Molang expression on death and on bred; boss has hud_range and should_darken_sky. The 37 EntityDamageCause values are the damage taxonomy. |
| Fire, lava and freezing | fire_immune (16), burns_in_daylight (11), freezing_immune (8), freezing_vulnerable (3), can_stand_on_powder_snow (4), lava_movement, hurt_on_condition lava rows (85) | 92 | burns_in_daylight burns unless the protection_slot (head) is filled; fire_immune removes fire damage; freezing comes from powder snow and FreezeDamage gamerule. |
| Breathing and drowning | breathable (84), underwater_mount_breathing (2) | 84 | total_supply (player 15), suffocate_time, inhale_time, breathes_air, breathes_water, breathes_lava, breathes_solids, generates_bubbles, can_dehydrate for fish out of water; DrowningDamage gamerule. |
| Physics, pushing and collision | physics (126), pushable (27), pushable_by_block (91), pushable_by_entity (85), push_through, is_collidable (4), is_stackable (6), friction_modifier, uses_legacy_friction (10), air_drag_modifier, uses_uniform_air_drag, bounciness, buoyant (8), floats_in_liquid, water_movement (3), underwater_movement (15), variable_max_auto_step (5), block_movement_slowdown_immunity (2), not_pickable_from_inside (2), body_rotation_* (4 variants), rotation_axis_aligned (2), rotation_locked_to_vehicle (4) | 129 | physics has has_gravity, has_collision, push_towards_closest_space; pushable has is_pushable and is_pushable_by_piston; buoyant floats on listed liquid blocks with wave simulation; FallDamage gamerule and the fall cause (used by 20 entity damage sensors). |
| Movement and navigation types (parameters only) | movement (93), movement.basic (65), movement.sway (9), movement.amphibious (3), movement.hover (3), movement.jump (3), movement.fly, movement.glide, movement.skip, movement.generic, navigation.walk (66), navigation.generic (14), navigation.hover (3), navigation.float (3), navigation.climb (2), navigation.fly, jump.static (79), jump.dynamic, can_climb (57), can_fly (7), flying_speed (4), follow_range (27), preferred_path (3), annotation.open_door (5), annotation.break_door (6), block_climber (5), rail_movement (5), rail_sensor (4) | 129 | Movement controllers and navigators select the engine's pathfinder mode; the AI goals use them. rail_movement.max_speed 0.4 for minecarts; rail_sensor reacts to activator rails. |
| Riding and boosting | rideable (36), addrider (6), boostable (2), item_controllable (2), input_ground_controlled (9), input_air_controlled, free_camera_controlled (3), vertical_movement_action, dash_action (4), horse.jump_strength (5), can_power_jump (5), tamemount (6), wants_jockey, is_saddled (10) | 36 | rideable has seats with positions, controlling_seat, family_types, passenger_max_width, pull_in_entities, dismount_mode, crouching_skip_interact; boostable lists boost_items with duration and speed_multiplier; tamemount is the horse-style taming by riding. |
| Taming and trust | tameable (5), tamemount (6), trusting, trust, sittable (4), on_wake_with_owner, healable (14) | 14 | tameable has probability, tame_items, tame_event; healable lists items and force_use; the entityTamed world event fires. |
| Breeding and aging | breedable (26), ageable (35), offspring (43), genetics (2), spawn_egg_interaction (43), is_pregnant, scale_by_age | 43 | breedable has breed_items, breeds_with, breed_cooldown 60 s, blend_attributes, causes_pregnancy, combine_parent_colors; ageable has duration 1200 s default, feed_items, drop_items, grow_up; genetics has genes with allele ranges and mutation_rate 0.03125. |
| Trading | trade_table (1), economy_trade_table (2), trade_resupply, managed_wandering_trader | 3 | economy_trade_table carries discounts: cured_discount -25 to -20, hero_demand_discount -4, nearby_cured_discount -20, max_nearby_cured_discount -200; tables point at the 27 trade files; new_screen, persist_trades, convert_trades_economy. |
| Inventories and equipment | inventory (20), equipment (18), equippable (10), equip_item (17), entity_armor_equipment_slot_mapping, shareables (19), item_hopper (1), on_equipment_changed | 38 | inventory has inventory_size, container_type (horse, minecart_chest, chest_boat, minecart_hopper, inventory, container), can_be_siphoned_from, private, restrict_to_owner, additional_slots_per_strength; equipment points at the 7 loot_tables/equipment/ tables with slot_drop_chance; shareables defines wanted items with want_amount, surplus_amount, consume_item, admire, barter. |
| Leashing | leashable (43), leashable_to (42) | 43 | hard_distance 6, max_distance 0 (none), can_be_cut, can_be_stolen, on_leash, on_unleash; leashable_to lets players leash other entities to this one. |
| Projectiles | projectile (18), shooter (15), reflect_projectiles (1), dimension_bound (10), transient (fishing hook) | 18 shot, 15 shooters | projectile has gravity 0.05 default, inertia 0.99, liquid_inertia, power, anchor (origin, eye height, middle), offset, uncertainty_base and multiplier, angle_offset, isolated_physics, hit_water, homing, lightning, catch_fire, destroy_on_hurt, should_bounce, stop_on_hurt, reflect_on_hurt, multiple_targets, ignored_entities, and on_hit sub-actions (vanilla arrow: impact_damage with power_multiplier 2, knockback, arrow_effect, stick_in_ground; others use teleport_owner, spawn_aoe_cloud, mob_effect, freeze_on_hit, grant_xp, spawn_chance, definition_event, remove_on_hit, catch_fire, douse_fire, ignite, thrown_potion_effect, particle_on_hit). projectileHitBlock and projectileHitEntity are world events. |
| Explosions | explode (10) | 10 | power, fuse_length, fuse_lit, causes_fire, breaks_blocks, allow_underwater, damage_scaling, knockback_scaling, max_resistance, negates_fall_damage, toggles_blocks, destroy_affected_by_griefing, fire_affected_by_griefing, particle_effect, sound_effect; the creeper uses power 3 with fuse 1.5 s, TNT 4 with fuse 4 s. |
| Transformation and conversion | transformation (14), timer (19), scheduler (2), environment_sensor (29), drying_out_timer (2), dash_action, peek, hide, out_of_control (2) | 14 transform, 29 sense | transformation has into, delay with block-assisted speedup (block_assist_chance, block_types, block_radius), keep_level, keep_owner, drop_equipment, drop_inventory, add component groups; environment_sensor triggers on filter changes (daylight, in water, in lava, weather); drying_out_timer fires dried_out_event. |
| Despawning and persistence | despawn (76), persistent (18), transient (1), instant_despawn (2), remove_in_peaceful, dimension_bound (10), tick_world (1) | 108 | despawn standard rules: instantly beyond max_distance 128 or at the simulation edge, after min_range_inactivity_timer 30 s with min_range_random_chance 1 in 800 between 32 and 128 blocks (wiki for the 32), with optional filters and remove_child_entities; persistent opts out; tick_world keeps chunks loaded around the agent. |
| Spawning other entities | spawn_entity (7), spawn_on_death, addrider (6), offspring (43), ominous_item_spawner entity | 7 | spawn_entity waits min_wait_time 300 to max_wait_time 600 s, spawns num_to_spawn, optional spawn_item, should_leash, single_use, filters (chickens, armadillos, sniffers, copper golems, wandering traders' llamas, drowned tridents, ocelot babies). |
| Item pickup and sharing | shareables (19), admire_item (1), barter (1), celebrate_hunt, giveable (1), equip_item (17) | 20 | Pickup goals read shareables; barter drops from loot_tables/entities/piglin_barter.json; giveable triggers events on item use (panda). |
| Villages, dwellings and raids | dweller (8), can_join_raid (5), raid_trigger (1, player), home (10), hide (1), trade_resupply, scheduler (villager daily schedule) | 13 | dweller roles inhabitant, defender, hostile, passive; dwelling_type village; first_founding_reward reputation; update_interval_base; raid_trigger.triggered_event on the player; home with restriction_radius. Village rules themselves (job search within 16 blocks, census, golem summoning at 10 villagers per golem with 20 beds and 75 percent worked) are engine (wiki). |
| Interaction | interact (32), looked_at (2), inside_block_notifier (2), block_sensor (2), entity_sensor (4), target_nearby_sensor (4), vibration_listener (2), vibration_damper, game_event_movement_tracking (8), suspect_tracking, anger_level, angry (20), heartbeat, on_target_acquired (22), on_target_escape (10), on_friendly_anger (3), bribeable (1) | 60 | interact lists interactions with item filters, hurt_item, health_amount, equip_item_slot, drop_item_slot, cooldown, spawn_entities, transform_to_item, play_sounds; vanilla uses it for shearing, milking, saddling, dyeing, feeding, bucketing and TNT cart ignition. playerInteractWithEntity is a before and after world event. |
| Status effects | spell_effects (4), mob_effect (4), mob_effect_immunity (6), attack.effect_name, damage_sensor effect filters | 14 plus players | 37 effects in mojang-effects.json; effectAdd before and after events; Effect has amplifier and duration; the Script API EffectTypes.getAll() enumerates them. |
| Player-only components | player.saturation, player.exhaustion, player.level, player.experience, exhaustion_values, insomnia, raid_trigger, spell_effects, is_hidden_when_invisible | 1 | Section 4 lists the values. |
| Miscellaneous engine hooks | trail (snow golem), break_blocks (ravager), grows_crop (bee), teleport (enderman), flocking (5 fish), strength (llamas, inventory slots), group_size (2), balloonable (39, Education), npc (1), tick_world (agent), on_start_landing, on_start_takeoff (dragon), ravager_blocked, is_stunned, celebrate_hunt, combat_regeneration, admire_item, barter, giveable, peek, hide, out_of_control, dash_action | 60 | Each is a one-entity behavior the engine implements by name; the list is the long tail a parity tracker must enumerate. |
Entities with no components beyond physics and collision are the pure-engine actors: xp_orb, item (not in the list; items are engine), lightning_bolt, area_effect_cloud, falling_block (absent as a file), painting (absent), fishing_hook, eye_of_ender_signal, ender_crystal, tripod_camera, agent, npc, ominous_item_spawner. Their behavior is code with no parameter surface.
4. World and player mechanics
| Mechanic | Source | Rule | Earlier research file |
|---|---|---|---|
| Day and night | GameRule.DoDayLightCycle "Controls whether the day and night cycles progress."; TimeOfDay enum Day, Noon, Sunset, Night, Midnight, Sunrise; MoonPhase 8 values | 24000 ticks per day; world.getTimeOfDay() and setTimeOfDay; moon phase affects slime spawning and regional difficulty (wiki). | none |
| Weather | GameRule.DoWeatherCycle; WeatherType Clear, Rain, Thunder; Dimension.getWeather, setWeather; weatherChange before and after events | Rain lasts 12000 to 24000 ticks and clear 12000 to 180000; thunder has its own timer (wiki); rain extinguishes fire, hydrates farmland, fills cauldrons, wets and spawns snow layers per biome climate.downfall. | bedrock-data-extraction.md section 3 (minecraft:climate) |
| Difficulty and regional difficulty | Difficulty enum Peaceful, Easy, Normal, Hard; loot conditions random_difficulty_chance (24 uses) and random_regional_difficulty_chance (6); spawn rule difficulty_filter (41); remove_in_peaceful | Hostile mobs deal about 1.5 times damage on Hard and hunger can kill; Peaceful removes monsters and disables hunger damage (wiki); regional difficulty grows with chunk inhabited time and moon phase (wiki). | none |
| Hunger and saturation | player.json: exhaustion_values sprint 0.1, jump 0.05, attack 0.1, damage 0.1, heal 6, lunge 4, sprint_jump 0.2, mine 0.005, swim 0.01, walk 0; player.saturation max 20 value 5; player.exhaustion max 20; minecraft_food.md "(nutrition * saturation_modifier * 2)" | Exhaustion over 4.0 drains 1 saturation or 1 hunger; hunger 18 or more regenerates 1 health every 80 ticks (NaturalRegeneration gamerule); hunger 0 starves 1 per 80 ticks down to a difficulty floor (wiki). | bedrock-data-extraction.md section 3 (50 food files) |
| Experience and levels | player.json: player.level max 24791, player.experience max 1, experience_reward.on_death Math.Min(query.player_level * 7, 100); Dimension.spawnXp; Player.addExperience, addLevels | Level cost 2L+7 up to 15, 5L-38 to 30, 9L-158 above (wiki, same in both editions); orbs merge and Mending repairs 2 durability per point. | none |
| Enchanting | mojang-enchantments.json 42 names (bow_infinity maps to infinity); minecraft_enchantable.md slots `none | all | g_armor |
| Anvils | wiki Anvil_mechanics (secondary) | Combine, repair and rename; prior work penalty 2^c - 1; cap of 39 levels outside creative; anvil degrades 12 percent per use (wiki). | none |
| Grindstones and item repair | wiki (secondary) | Grindstone removes enchantments except curses, refunds experience, keeps names; crafting-grid repair drops enchantments and names. | none |
| Brewing | recipe_brewing_mix (70) and recipe_brewing_container (2) in the composed pack; mojang-potion-effects.json 47; mojang-potion-types.json Consume, ThrownLingering, ThrownSplash; RecipeReference/.../recipe_brewing_mix.md | Blaze powder fuels 20 brews; 400 ticks per brew; mix recipes map input potion plus reagent to output; container recipes convert potion to splash and lingering. | bedrock-data-extraction.md section 3 (recipes) |
| Villager trading economy | economy_trade_table discounts (section 3); 27 trade files with tiers, trader_exp, max_uses, price_multiplier | Up to three trade slots unlock per level; restock up to twice a day at the job site; demand and discounts adjust prices (wiki). | bedrock-data-extraction.md section 3 (trade tables) |
| Raids | definitions/spawn_groups/ (7 wave files); can_join_raid (5); raid_trigger; effects bad_omen, raid_omen, village_hero | Bad Omen converts to Raid Omen inside a 64x23x64 village region and starts the raid after 30 seconds; waves scale with difficulty and Bad Omen level; mobs within 96 blocks join (wiki). | bedrock-data-extraction.md section 2 |
| Phantoms and insomnia | GameRule.DoInsomnia "Controls whether players deal with the effects of not sleeping (such as Phantom spawning)."; insomnia.days_until_insomnia 3 on the player | Bedrock spawns phantoms through the normal monster spawner above players who have not slept or died for 3 days, limited by the monster cap and a density cap of 5, 1 to 4 per attempt by difficulty (wiki). | none |
| Sleeping and spawn points | GameRule.PlayersSleepingPercentage; Player.setSpawnPoint, getSpawnPoint; bed rules (section 1) | Night skips when the sleeping percentage is met; sleeping also clears weather in Bedrock; spawn point checked only at respawn (wiki). | none |
| Portals and dimensions | mojang-dimensions.json: overworld, nether, the_end; Dimension.heightRange; playerDimensionChange event | Coordinates scale 8:1 to the nether; nether height is 128 in Bedrock (wiki); end exit portal and gateways (gateway block absent from the block list). | none |
| Game rules | GameRule.md (38): CommandBlockOutput, CommandBlocksEnabled, DoDayLightCycle, DoEntityDrops, DoFireTick, DoImmediateRespawn, DoInsomnia, DoLimitedCrafting, DoMobLoot, DoMobSpawning, DoTileDrops, DoWeatherCycle, DrowningDamage, FallDamage, FireDamage, FreezeDamage, FunctionCommandLimit, KeepInventory, MaxCommandChainLength, MobGriefing, NaturalRegeneration, PlayersSleepingPercentage, PlayerWaypoints, ProjectilesCanBreakBlocks, Pvp, RandomTickSpeed, RecipesUnlock, RespawnBlocksExplode, SendCommandFeedback, ShowBorderEffect, ShowCoordinates, ShowDaysPlayed, ShowDeathMessages, ShowRecipeMessages, ShowTags, SpawnRadius, TntExplodes, TntExplosionDropDecay | Each rule is a boolean or integer the engine reads at the mechanic it names; gameRuleChange is a world event. | none |
| Player abilities and game modes | GameMode Survival, Creative, Adventure, Spectator; PlayerInputPermissions; InputPermissionCategory; playerGameModeChange events; can_destroy_in_creative item component | Creative ignores durability, hunger and damage, allows flight and instant break unless can_destroy_in_creative is false; Adventure needs can_destroy and can_place_on; Spectator passes through blocks. | none |
| Respawn, death and loot | GameRule.KeepInventory, DoImmediateRespawn, ShowDeathMessages, DoMobLoot, DoEntityDrops, DoTileDrops; entityDie event; player experience_reward | Player drops inventory and experience capped at 100 points unless KeepInventory; respawn at bed, anchor or world spawn within SpawnRadius. | bedrock-data-extraction.md section 3 (loot) |
| Item frames and paintings | item frame block family (section 1); painting entity (not in the 129 entity files; engine) | Frame holds one item and rotation; paintings pick the largest fitting variant. | none |
| Maps | map item family; exploration_map loot function (18 uses); PlayerWaypoints gamerule and locator bar | Filled maps store explored pixels per scale; cartography table zooms, clones and locks. | none |
| Beacon effects | beacon block family | Levels 1 to 4 by pyramid size; primary effects Speed, Haste, Resistance, Jump Boost, Strength, secondary Regeneration or level II; range 20 to 50 blocks (wiki). | none |
| Conduit power | conduit block family; effect conduit_power | 16 blocks of range per 7 frame blocks, 32 to 96; attacks hostile mobs with the full frame (wiki). | none |
| Chunk ticking and random tick speed | GameRule.RandomTickSpeed; tick_world on the agent; Dimension.isChunkLoaded; BDS server.properties tick-distance | Only chunks within the simulation distance tick; random ticks per subchunk scale with randomTickSpeed (relative, default 1); spawning and random ticks happen near players only (wiki). | bedrock-data-extraction.md section 2 (server.properties) |
| Mob caps and despawn ranges | datadrivenspawning.md "four pools ... animal, water_animal, monster, and cat, and each has its own spawn limit"; spawn rule components population_control, density_limit (26), herd (94), brightness_filter (73), biome_filter (101), height_filter, distance_filter, spawns_on_surface, spawns_underground, spawns_underwater, spawns_on_block_filter, difficulty_filter, delay_filter, world_age_filter, mob_event_filter, player_in_village_filter, permute_type, spawn_event; despawn component | Global cap 200; population caps per category in a 9x9 chunk area; density caps per mob; spawning in a 24 to 44 block shell at simulation distance 4 and 24 to 128 at 6 or more; monsters need sky light under 7 and block light 0, animals need light 7 or more and a grass block (wiki). Despawn beyond 128, 1 in 800 chance between 32 and 128 after 30 s inactivity (component defaults). | bedrock-data-extraction.md section 3 (spawn rules) |
| Lightning | EntityDamageCause.lightning; projectile.lightning for channeling; lightning_bolt entity; lightning rod block | Strikes during thunderstorms, charge creepers, turn villagers to witches and pigs to zombified piglins, spawn skeleton trap horses with 0.75 to 6.75 percent by difficulty (wiki); rods attract within 128 blocks. | none |
| Mob griefing | GameRule.MobGriefing; explode.destroy_affected_by_griefing; break_blocks (ravager); grows_crop; behavior.eat_block, behavior.pickup_items goals | Gates creeper and ghast block damage, enderman block pickup, sheep eating grass, villager farming, zombie door breaking, farmland trampling. | none |
| Status effects | mojang-effects.json 37; Effect, EffectType, EffectTypes; effectAdd events; minecraft_food deprecated remove_effects | Amplifier 0 to 255, duration in ticks, ambient flag from beacons and conduits; milk clears all. | none |
| Damage model | EntityDamageCause (37); hurt_on_condition, damage_sensor; FallDamage, FireDamage, DrowningDamage, FreezeDamage, Pvp gamerules; wiki Damage and Armor (secondary) | Armor points reduce damage 4 percent each, toughness reduces the penetration of high damage; fall damage is distance minus 3 (wiki Damage line 529 names safe_fall_distance for Java); damage immunity 10 ticks; Protection enchantments stack to 80 percent (wiki). | none |
| Knockback | knockback_resistance, apply_knockback_rules; projectile.on_hit.impact_damage.knockback; wiki Knockback_(mechanic) (secondary) | Base knockback 0.4 blocks, sprint attack adds 1 level, Knockback enchantment adds per level, resistance 0 to 1 scales it. | none |
| Crafting and recipe unlocking | 1892 recipes in 7 types with table tags crafting_table (1281), stonecutter (356), furnace (134), blast_furnace (62), brewing_stand (72), smithing_table (13), smoker (9), campfire (9), soul_campfire (9), cartography_table (2), deprecated (34); GameRule.DoLimitedCrafting, RecipesUnlock, ShowRecipeMessages; playerCraftRecipe event | Shaped and shapeless matching with item tags and aux wildcards; furnace types by tag; DoLimitedCrafting restricts to unlocked recipes. | bedrock-data-extraction.md sections 3 and 8 (VanillaRecipes.ts) |
| World events the engine fires | WorldAfterEvents (72) and WorldBeforeEvents (18): block container open and close, blockExplode, buttonPush, leverAction, pistonActivate, pressurePlatePush and Pop, targetBlockHit, tripWireTrip, projectileHitBlock and Entity, entityDie, entityHurt, entityHeal, entityHealthChanged, entityItemPickup and Drop, entityTamed, entityUpgrade, explosion, itemUse, itemStartUse, itemStopUse, itemCompleteUse, itemReleaseUse, itemStartUseOn, itemStopUseOn, playerBreakBlock, playerPlaceBlock, playerInteractWithBlock and Entity, playerItemAttackEntity (before), playerDimensionChange, playerSpawn, playerUseNameTag, weatherChange, gameRuleChange, worldClockOnTimeMarker | This list is the engine's own statement of which gameplay moments exist; each after event is a behavior the server must implement to fire it. | none |
5. Sizing
Totals from the classifiers and tallies above:
| Category | Families or mechanics | Content |
|---|---|---|
| Block behavior families | 164 (72 with one block, 32 with two) | 1463 blocks |
| Block cross-cutting mechanics | 56 rows | all blocks |
| Item behavior families | 85 (48 with one item) | 1623 items |
| Entity non-AI mechanics | 26 groups over 202 components | 129 entities |
| World and player mechanics | 32 rows | 38 game rules, 72 after events, 18 before events, 37 damage causes, 37 effects, 42 enchantments |
Coverage by the largest families:
| Set | Top 10 | Top 20 | Top 30 | Top 50 |
|---|---|---|---|---|
| Blocks (1463) | 816 (56 percent) | 997 (68 percent) | 1136 (78 percent) | 1293 (88 percent) |
| Items (1623) | 1389 (86 percent) | 1505 (93 percent) | 1560 (96 percent) | 1588 (98 percent) |
| Entities (129), by mechanic | physics 126, collision 125, type family 124, health 94, movement 93, breathable 84, loot 78, despawn 76, attack 48, rideable 36 | ageable 35, interact 32, variant 29, environment sensor 29, follow range 27, breedable 26, inventory 20, angry 20, shareables 19, timer 19 |
The 25 behaviors that cover the most content, which the plan can take as the first milestone. Counts are blocks plus items unless stated; "props" means the behavior reads the per-state property dump that already exists in the repository.
- Plain full block: 188 blocks and their 188 block items; props only.
- Block item placement with the family placement rule: 1086 items, every block family's
onPlace. - Slab and double slab: 202 blocks, 202 items;
vertical_half, merge on place, water-logging. - Stairs: 97 blocks, 97 items;
cornerfrom neighbors, two-box collision. - Pillar with axis placement and axe stripping: 66 blocks, 66 items.
- Spawn egg entity placer: 88 items, plus the 43 entities with
spawn_egg_interaction. - Connecting thin blocks (panes, bars, fences, walls): 89 blocks, 89 items; cardinal connection states.
- Transparent full block and silk-touch-only drops (glass, ice, copper grate, mangrove roots): 46 blocks.
- Signs (standing, wall, hanging) with the text block entity: 39 blocks, 26 items.
- Doors, trapdoors, fence gates and their redstone opening: 57 blocks, 57 items.
- Buttons, levers and pressure plates as redstone producers: 33 blocks, 33 items.
- Redstone power model (wire, conductors, strong and weak power, torches, repeaters, comparators, observer, lamp, target, daylight detector, tripwire): 16 blocks, 2 items (redstone dust, string), every conductor; prerequisite for 10 and 11.
- Containers with a block entity inventory (chests, ender chest, barrel, shulker boxes, hopper, dispenser, dropper, crafter, furnaces, brewing stand, decorated pot, shelves): 54 blocks, 54 items; one inventory UI code path plus per-type processing.
- Gravity (falling block entity for sand, gravel, concrete powder, anvils, dragon egg, dripstone, brushable blocks, scaffolding): 27 blocks.
- Plants and ground with support rules, random-tick growth and water dependence (flowers, small, tall and segmented plants, saplings, propagule, mushrooms, crops, stems, cocoa, sugar cane, cactus, bamboo, kelp, seagrass, sea pickle, lily pad, vines, nether vines, cave vines, sweet berries, nether wart, chorus, dripleaf, multiface blocks, moss, coral blocks and fans, grass and nylium spreading, farmland, dirt path, rooted dirt): 140 blocks, their items, plus seeds, plantables and bone meal (13 items).
- Leaves with decay: 14 blocks.
- Ore drops with experience and fortune: 20 blocks.
- Liquids (water and lava flow, bubble columns, second-layer water-logging): 5 blocks, the 12 bucket items.
- Food eating with nutrition, saturation and effects: 36 code items plus 50 JSON foods, potions and the ominous bottle (38 items in the code families).
- Wearables (armor, horse and nautilus armor, harnesses, wolf armor, elytra, carved pumpkin, heads): 58 items plus 9 block items; protection and durability loss.
- Tools and melee weapons (swords, axes, pickaxes, shovels, hoes, spears, mace, trident, shears) with the break-time formula and harvest tiers: 45 items; the formula applies to all 1463 blocks.
- Projectile launchers and throwables (bow, crossbow, arrow, snowball, eggs, ender pearl, experience bottle, wind charge, splash and lingering potions, fire charge): 13 items, 18 projectile entities.
- Entity attributes, loot and despawn from the entity JSON (
health,attack,movement,collision_box,type_family,loot,experience_reward,despawn,breathable,physics,hurt_on_condition): 126 of 129 entities. - Riding, taming, breeding and aging (
rideable,tameable,tamemount,breedable,ageable,offspring,healable): 43 entities. - Attachable decoration and small single-rule families (candles, candle cakes, cake, carpets, glazed terracotta, lights, torches, lanterns, chains, end rod, ladder): 113 blocks, 113 items.
Together these cover 1215 of 1463 blocks (83 percent), 1381 of 1623 items (85 percent) and every entity's base mechanics. The 248 uncovered blocks are the 124 Education blocks and 124 blocks in 62 small families: copper bulbs, copper golem statues and lightning rods (8 each), technical markers and infested blocks (7 each), workstations (6), pistons and amethyst clusters (4 each), command blocks and huge mushroom blocks (3 each), 14 pairs (bed, beehive, campfire, fire, item frame, sponge, TNT, banner, sticky blocks, sculk sensors, end portal, powered rails, structure blocks, sulfur hazard) and 38 single blocks (bell, beacon, conduit, cauldron, composter, jukebox, lectern, enchanting table, respawn anchor, lodestone, monster spawner, trial spawner, vault, creaking heart, and so on). The 242 uncovered items are plain materials (40), pottery sherds (23), music discs (22), boats and rafts (22), smithing templates (19), bundles (17), cushions (16), dyes (16), brewing ingredients (13), banner patterns (10), minecarts (5), fuel-only materials (3), six pairs (compasses, maps, trial keys, steering rods, ink sacs, rafts counted above) and 26 single items (shield, totem, fishing rod, flint and steel, firework rocket and star, spyglass, goat horn, brush, eye of ender, glass bottle, honeycomb, bowl, nether star, end crystal, armor stand, painting, saddle, name tag, lead, book, writable book, enchanted book, banner, recovery compass, clock). Each single-block family is a few hundred lines in peer servers; copper oxidation, sculk spreading, fire spread and the redstone component details are the cross-cutting work that remains.
Open questions
block_archetypevalues seen in the 98 JSON blocks areslab_block,stair_block,bush_blockandwall_foliage_block. Nothing public says whether the engine has archetypes for the other families or how many exist; the 26.50 changelog only announces the loader change.sulfur_spikeandpotent_sulfur(1.26) have no documentation in the creator docs at this commit and no wiki page was fetched for them; their behavior is unknown here.written_book,skullandtipped_arroware missing frommojang-items.jsonwhile the game has them; whether the module omits items that only exist with NBT or aux data was not verified.mojang-entities.jsonand the composed pack both give 129 entities;bedrock-data-extraction.mdcounted 130 identifiers across layers. The extra identifier was not located.- Copper oxidation probabilities, Bedrock's enchanting offer formula, phantom spawn weights and regional difficulty are documented only for Java or not at all; the Bedrock numbers need in-game measurement or a Script API test.
- Whether copper chests (1.26) change behavior with oxidation, and whether copper grates block projectiles, was not verified.
- The Java 26.3 data generator and mcmeta's current
summarybranch no longer emitdefinition.type; the 1.21.11 tag is the last public Java class taxonomy and lacks the 1.26 Bedrock additions (poplar, cinnabar, sulfur, shelves exist in Java 1.21.11 asminecraft:shelf). - The wiki pages used as secondary sources mix Java and Bedrock statements; every number taken from them is marked but not independently verified against BDS.
Reproduction
# Sources
mkdir -p /tmp/bds-research-inventory/{samples,tools,composed,docs,wiki,mcmeta}
git clone -q --depth 1 https://github.com/MicrosoftDocs/minecraft-creator.git /tmp/bds-research-inventory/docs/mc-creator # 4432fb62
git clone -q --depth 1 --branch v1.26.50.4 --filter=blob:none --sparse https://github.com/Mojang/bedrock-samples.git /tmp/bds-research-inventory/samples/repo
git -C /tmp/bds-research-inventory/samples/repo sparse-checkout set metadata behavior_pack documentation # 46ba6ea9
git clone -q --depth 1 --branch summary https://github.com/misode/mcmeta.git /tmp/bds-research-inventory/mcmeta # f41a317b
curl -sS -A "Mozilla/5.0" -o /tmp/bds-research-inventory/mcmeta/blockdefs-1.21.11-summary.json \
https://raw.githubusercontent.com/misode/mcmeta/1.21.11-summary/block_definitions/data.json
# Compose the BDS behavior pack layers (brarchive members into folder/<name>)
node /tmp/bds-research-inventory/tools/compose.mjs /tmp/bds-research/bds/extracted/behavior_packs /tmp/bds-research-inventory/composed
# Block and item families
python3 -I /tmp/bds-research-inventory/tools/block_families.py \
/tmp/bds-research-inventory/samples/repo/metadata/vanilladata_modules/mojang-blocks.json /tmp/bds-research-inventory/block_families.json
python3 -I /tmp/bds-research-inventory/tools/item_families.py \
/tmp/bds-research-inventory/samples/repo/metadata/vanilladata_modules/mojang-items.json \
/tmp/bds-research-inventory/samples/repo/metadata/vanilladata_modules/mojang-blocks.json \
/tmp/bds-research-inventory/mcmeta/item_components/data.json /tmp/bds-research-inventory/item_families.json
# Java block classes
python3 -I -c 'import json,collections; d=json.load(open("/tmp/bds-research-inventory/mcmeta/blockdefs-1.21.11-summary.json")); print(collections.Counter(v["type"] for v in d.values()).most_common())'
# Entity component tally (lenient JSON for files with comments)
# see the inline script in this session: loads composed/entities/*.json with tools/lenient_json.py, unions components and component_groups
# Script API enumerations
grep -E '^### ' /tmp/bds-research-inventory/docs/mc-creator/creator/ScriptAPI/minecraft/server/{GameRule,BlockComponentTypes,ItemComponentTypes,EntityComponentTypes,WorldAfterEvents,WorldBeforeEvents,EntityDamageCause,BlockCustomComponent,ItemCustomComponent}.md
# Wiki raw text (secondary)
curl -sS -A "Mozilla/5.0 (research)" -o /tmp/bds-research-inventory/wiki/Tick.txt "https://minecraft.wiki/w/Tick?action=raw"