Difference between revisions of "Digibuilder"

From Pandorabox
Jump to navigation Jump to search
m (Added category)
(Add category and example)
 
Line 25: Line 25:
 
   name = "stairs:stair_stone"
 
   name = "stairs:stair_stone"
 
}
 
}
 +
 
   -- OUTPUTS:
 
   -- OUTPUTS:
 
   -- { error = true, message = "..." }: error
 
   -- { error = true, message = "..." }: error
Line 30: Line 31:
 
   -- { pos = { x=1, y=0, z=0 }, success = true, name = "stairs:stair_stone", param2 = 3 }: a stair with info on param2 (rotation)
 
   -- { pos = { x=1, y=0, z=0 }, success = true, name = "stairs:stair_stone", param2 = 3 }: a stair with info on param2 (rotation)
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
== Example ==
 +
<syntaxhighlight lang="Lua">
 +
-- This program makes a :) out of dirt.
 +
 +
-- Place the digibuilder 1 block above the ground, make sure its channel is "digibuilder".
 +
-- Put at least 7 dirt inside it.
 +
 +
pos = {{x=1,z=1},{x=1,z=-1},{x=-2,z=0},{x=-2,z=1},{x=-2,z=-1},{x=-1,z=2},{x=-1,z=-2}} -- You can change these positions to draw something else.
 +
 +
-- We use interrupts because the luacontroller would burn if we sent them all at the same time.
 +
if event.type == "program" then
 +
  -- Initialization
 +
  mem.index = 1
 +
  interrupt(0.5)
 +
elseif event.type == "interrupt" then
 +
  if mem.index < #pos+1 then -- Don't want to go off the edge!
 +
    interrupt(0.5)
 +
    p = pos[mem.index] -- Get position
 +
    digiline_send("digibuilder", { -- Place the dirt.
 +
      command = "setnode",
 +
      pos = {x=p.x,y=-1,z=p.z},
 +
      name = "default:dirt"
 +
    })
 +
    mem.index = mem.index + 1
 +
  end
 +
end
 +
 +
</syntaxhighlight>
 +
 
[[Category:Digiline]]
 
[[Category:Digiline]]
 +
[[Category:Node]]

Latest revision as of 21:11, 9 February 2024

Overview

A Digibuilder is a Digiline device used to place nodes around it. It looks like Digibuilder.png.

Crafting Recipe

A Digibuilder is made by crafting 8 Luacontrollers in a ring around a Diamond Block.

Digiline Interactions

Getting a node

{
  command = "getnode",
  pos = { x=1, y=0, z=0 }
}
  -- OUTPUTS:
  -- { error = true, message = "..." }: error
  -- { pos = { x=1, y=0, z=0 }, name = "default:stone" }: a stone block
  -- { pos = { x=1, y=0, z=0 }, name = "stairs:stair_stone", param2 = 3 }: a stair with info on param2 (rotation)

Setting a node

{
  command = "setnode",
  pos = { x=1, y=0, z=0 },
  param2 = 3,
  name = "stairs:stair_stone"
}

  -- OUTPUTS:
  -- { error = true, message = "..." }: error
  -- { pos = { x=1, y=0, z=0 }, success = true, name = "default:stone" }: a stone block
  -- { pos = { x=1, y=0, z=0 }, success = true, name = "stairs:stair_stone", param2 = 3 }: a stair with info on param2 (rotation)

Example

-- This program makes a :) out of dirt.

-- Place the digibuilder 1 block above the ground, make sure its channel is "digibuilder".
-- Put at least 7 dirt inside it.

pos = {{x=1,z=1},{x=1,z=-1},{x=-2,z=0},{x=-2,z=1},{x=-2,z=-1},{x=-1,z=2},{x=-1,z=-2}} -- You can change these positions to draw something else.

-- We use interrupts because the luacontroller would burn if we sent them all at the same time.
if event.type == "program" then 
  -- Initialization
  mem.index = 1
  interrupt(0.5)
elseif event.type == "interrupt" then
  if mem.index < #pos+1 then -- Don't want to go off the edge!
    interrupt(0.5)
    p = pos[mem.index] -- Get position
    digiline_send("digibuilder", { -- Place the dirt.
      command = "setnode",
      pos = {x=p.x,y=-1,z=p.z},
      name = "default:dirt"
    })
    mem.index = mem.index + 1
  end
end