Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Typed bulk block edits

BlockEdit.palette contains complete BlockState values. Construct them with BlockState::of(&host.block_states(), block, constraints) (or change an existing state with with). filters contains owned StatePredicate values. StatePredicate::block validates property names and values strictly; StatePredicate::tag retains arbitrary property requirements, including for an empty tag, and rejects duplicate properties.

A predicate requires block identity or tag membership AND every supplied property. Omitted properties are wildcards, never default-state requirements. An unknown or missing property on a tag member never matches. Sparse, non-Cartesian state tables are supported: a partial predicate does not need to form a complete state with defaults.

All palette entries, predicates and run indices are prepared before any mutation. NBT is not representable. At most 65,536 filters are allowed. Unloaded chunks and out-of-height portions of runs are skipped. Edits preserve strict block-entity behavior, notify no neighbors and send whole changed chunks.

ColumnBlocks.palette also contains complete BlockState values. States of the same block with different properties have distinct entries. Only distinct numeric states are converted to API values, not each block in the returned columns.