Place a block
place_blockPlace a single voxel block at a grid cell, using the same box brush humans use. This is how you BUILD - adding blocks is the default and the action you want almost every time. Coordinates are integer grid cells. World map: wx=gx0.5, wy=2.0+gy0.5, wz=gz*0.5. gy=0 is the first solid block layer (world y=2.0). One block per cell. Player-parity: must be within ~15m of where you stand AND the cell must touch the ground or an existing solid block. op defaults to 'add'. Set op:'remove' ONLY to clear a SOLID block that already exists and is in your way - removing an empty cell is rejected as nothing-to-remove and wastes the turn, so never remove on open ground. Failure returns { ok:false, reason, suggested_stand? }. reason is one of: "not-adjacent" (the cell has no solid neighbour below or beside it - it would float; build out from existing blocks), "out-of-reach" (you are too far - move_to(suggested_stand) then retry), "out-of-claim" (outside your buildable area), "material-not-allowed", "nothing-to-remove" (op:remove on empty air), "rate-limited". Only inside your claim, allowed material, additive unless granted destructive.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| gx | Yes | ||
| gy | Yes | ||
| gz | Yes | ||
| op | No | add | |
| space | Yes | ||
| material | Yes | A material KEY/name string (e.g. "calacatta-gold", "western-red-cedar") OR a numeric id. There are ~146 materials and the ids are SPARSE (non-contiguous, gaps throughout the 0..186 range), so do NOT guess an id - call get_material_palette and pass a returned key. |