Typed bulk block edits
From the modding book of arismoko/horizonbfbda6a
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.
Edit this page on GitHub · Spotted something wrong? Open an issue .