2017-06-30 22:59:26 +02:00

80 lines
2.0 KiB
Lua

--[[
Hyperloop Mod
=============
Copyright (C) 2017 Joachim Stolberg
LGPLv2.1+
See LICENSE.txt for more information
History:
see init.lua
]]--
local function move_robot(pos, dir, number, cnt)
if number > 1 then
pos = vector.add(pos, dir)
minetest.place_node(pos, {name="hyperloop:tube1", param2=minetest.dir_to_facedir(dir)})
if cnt == 8 then
local pos1 = table.copy(pos)
cnt = 0
print("jetzt")
for i = 1,20 do
pos1.y = pos1.y - 1
minetest.place_node(pos1, {name="hyperloop:pillar"})
end
end
minetest.after(1, move_robot, pos, dir, number-1, cnt+1)
end
end
-- to build the pod
minetest.register_node("hyperloop:robot", {
description = "Hyperloop Tube Robot",
tiles = {
-- up, down, right, left, back, front
"hyperloop_robot.png^[transformR90]",
"hyperloop_robot.png^[transformR90]",
"hyperloop_robot.png",
"hyperloop_robot.png",
"hyperloop_robot.png",
"hyperloop_robot.png",
},
after_place_node = function(pos, placer, itemstack, pointed_thing)
local meta = minetest.get_meta(pos)
local formspec = "size[5,4]"..
"field[0.5,0.5;3,1;number;Insert Block number (1.99);5]" ..
"button_exit[1,2;2,1;exit;Save]"
local res, nodes = hyperloop.scan_neighbours(pos)
if res == 1 then -- one neighbor available?
meta:set_string("formspec", formspec)
local dir = vector.subtract(pos, nodes[1].pos)
meta:set_string("dir", minetest.pos_to_string(dir))
print(dump(dir))
end
end,
on_receive_fields = function(pos, formname, fields, player)
if fields.number == nil then
return
end
local number = tonumber(fields.number)
if number == nil then
return
end
local meta = minetest.get_meta(pos)
local dir = minetest.string_to_pos(meta:get_string("dir"))
minetest.dig_node(pos)
pos.y = pos.y + 1
minetest.place_node(pos, {name="hyperloop:tube1", param2=minetest.dir_to_facedir(dir)})
minetest.after(1, move_robot, pos, dir, number, 1)
end,
paramtype2 = "facedir",
groups = {cracky=1},
is_ground_content = false,
})