From world:block_state(pos) or a block raycast hit’s state. Live
handle — every method re-reads the world.
| Method | Meaning |
|---|---|
id, name |
Block id ("minecraft:chest") and display name |
position |
Queried block position (floored) as vec3 |
air, liquid, solid, replaceable |
Kind flags (replaceable = can place over it) |
burnable |
Fire can consume it |
tool_required |
Drops only with the right tool |
opaque, full_cube, has_collision |
Shape flags |
has_block_entity |
Extra data (chest, furnace, …) |
random_ticks |
Receives random ticks |
emits_redstone |
Emits redstone power |
piston_behavior |
"normal", "destroy", "block", "push_only", … |
hardness, blast_resistance |
Mining / explosion resistance |
slipperiness |
Sliding (0.6 normal, 0.98 ice) |
velocity_multiplier, jump_velocity_multiplier |
Movement modifiers (soul sand, honey) |
luminance |
Light emitted, 0–15 |
opacity |
How much light it blocks |
map_color |
Map color as signed RGB integer — not 0xAARRGGBB |
properties |
State properties as strings, e.g. b:properties().facing == "north" |
fluid |
{id, level, still} if the block holds fluid, or nil |
tags |
Block tag ids, e.g. "minecraft:mineable/pickaxe" |
local b = world:block_state(pos)
if b and b:properties().lit == "true" then -- properties are strings, not booleans
print(b:name() .. " is lit")
end