digibuilder/examples/simple_pattern.lua
2020-06-16 08:44:06 +02:00

62 lines
985 B
Lua

-- pattern, starting at -x/-z
local data = {
-- x >>
"sdsd",
"dsds"
-- z \/
}
local nodes = {
["s"] = "default:stone",
["d"] = "default:dirt"
}
-- coordinate offsets
local x_offset = -10
local y_offset = 1
local z_offset = -10
-- initial start
if event.type == "program" then
mem.line = 1
mem.pos = 1
interrupt(1)
end
-- timer interrupt
if event.type == "interrupt" then
local line = data[mem.line]
if not line then
-- done
return
end
local char = line:sub(mem.pos, 1)
if char == "" then
-- next line
mem.line = mem.line + 1
mem.pos = 1
interrupt(0.5)
return
end
digiline_send("digibuilder", {
command = "setnode",
pos = { x=x_offset+mem.pos-1, y=y_offset, z=z_offset+mem.line-1 },
name = nodes[char]
})
end
-- callback from digibuilder node
if event.type == "digiline" and event.channel == "digibuilder" then
if event.error then
-- error state
error(event.message)
end
-- next command
mem.line = mem.line + 1
interrupt(1)
end