minetest-mm/mods/mydoors/my_garage_door/init.lua
2020-10-30 10:15:03 +01:00

158 lines
4.6 KiB
Lua

minetest.register_node("my_garage_door:garage_door", {
description = "Garage Door",
tiles = {
"default_snow.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky=3},
node_box = {
type = "fixed",
fixed = {
{-1.5, -0.5, -0.125, 1.5, 0.5, -0.0625},
{-1.5, -0.5, -0.1875, 1.5, -0.3125, -0.0625},
{-1.5, -0.25, -0.1875, 1.5, -0.0624999, -0.0625},
{-1.5, 0, -0.1875, 1.5, 0.1875, -0.0625},
{-1.5, 0.25, -0.1875, 1.5, 0.4375, -0.0625},
}
},
selection_box = {
type = "fixed",
fixed = {
{-1.5, -0.5, -0.1875, 1.5, 1.5, -0.0625},
}
},
on_place = function(itemstack, placer, pointed_thing)
local p = pointed_thing.above
local p2 = minetest.dir_to_facedir(placer:get_look_dir())
print(p2)
minetest.set_node(p, {name = "my_garage_door:garage_door",param2 = p2})
minetest.set_node({x=p.x,y=p.y+1,z=p.z}, {name = "my_garage_door:garage_door_top",param2 = p2})
end,
after_destruct = function(pos, oldnode)
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name = "air"})
end,
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local p2 = node.param2 --minetest.dir_to_facedir(player:get_look_dir())
local t1 = {x=pos.x,y=pos.y+1,z=pos.z}
local t2 = {x=pos.x,y=pos.y+1,z=pos.z}
if p2 == 0 then
t1 = {x=pos.x,y=pos.y+1,z=pos.z+1}
t2 = {x=pos.x,y=pos.y+1,z=pos.z+2}
elseif p2 == 1 then
t1 = {x=pos.x+1,y=pos.y+1,z=pos.z}
t2 = {x=pos.x+2,y=pos.y+1,z=pos.z}
elseif p2 == 2 then
t1 = {x=pos.x,y=pos.y+1,z=pos.z-1}
t2 = {x=pos.x,y=pos.y+1,z=pos.z-2}
elseif p2 == 3 then
t1 = {x=pos.x-1,y=pos.y+1,z=pos.z}
t2 = {x=pos.x-2,y=pos.y+1,z=pos.z}
end
minetest.set_node(t1,{name="my_garage_door:garage_door_open",param2=p2})
minetest.set_node(t2,{name="my_garage_door:garage_door_open2",param2=p2})
minetest.set_node(pos,{name="air"})
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
--end
end,
})
minetest.register_node("my_garage_door:garage_door_top", {
tiles = {
"default_snow.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2= "facedir",
drop = "",
diggable = false,
pointable = false,
groups = {cracky=3},
node_box = {
type = "fixed",
fixed = {
{-1.5, -0.5, -0.125, 1.5, 0.5, -0.0625},
{-1.5, -0.5, -0.1875, 1.5, -0.3125, -0.0625},
{-1.5, -0.25, -0.1875, 1.5, -0.0624999, -0.0625},
{-1.5, 0, -0.1875, 1.5, 0.1875, -0.0625},
{-1.5, 0.25, -0.1875, 1.5, 0.4375, -0.0625},
}
},
selection_box = {type = "fixed",fixed = {{0, 0, 0, 0, 0, 0},}},
})
minetest.register_node("my_garage_door:garage_door_open", {
tiles = {
"default_snow.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2= "facedir",
drop = "my_garage_door:garage_door",
diggable = false,
groups = {cracky=3},
node_box = {
type = "fixed",
fixed = {
{-1.5, 0.4375, -0.5, 1.5, 0.375, 0.5},
{-1.5, 0.375, 0.3125, 1.5, 0.5, 0.5},
{-1.5, 0.375, 0.0625, 1.5, 0.5, 0.25},
{-1.5, 0.375, -0.1875, 1.5, 0.5, 0},
{-1.5, 0.375, -0.4375, 1.5, 0.5, -0.25},
}
},
selection_box = {type = "fixed",fixed = {{-1.5, 0.375, -0.5, 1.5, 0.5, 1.5},}},
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
local p2 = node.param2 --minetest.dir_to_facedir(player:get_look_dir())
local t1 = {x=pos.x,y=pos.y+1,z=pos.z}
local t2 = {x=pos.x,y=pos.y+1,z=pos.z}
local t3
if p2 == 0 then
t1 = {x=pos.x,y=pos.y,z=pos.z-1}
t2 = {x=pos.x,y=pos.y-1,z=pos.z-1}
t3 = {x=pos.x,y=pos.y,z=pos.z+1}
elseif p2 == 1 then
t1 = {x=pos.x-1,y=pos.y,z=pos.z}
t2 = {x=pos.x-1,y=pos.y-1,z=pos.z}
t3 = {x=pos.x+1,y=pos.y,z=pos.z}
elseif p2 == 2 then
t1 = {x=pos.x,y=pos.y,z=pos.z+1}
t2 = {x=pos.x,y=pos.y-1,z=pos.z+1}
t3 = {x=pos.x,y=pos.y,z=pos.z-1}
elseif p2 == 3 then
t1 = {x=pos.x+1,y=pos.y,z=pos.z}
t2 = {x=pos.x+1,y=pos.y-1,z=pos.z}
t3 = {x=pos.x-1,y=pos.y,z=pos.z}
end
minetest.set_node(t1,{name="my_garage_door:garage_door_top",param2=p2})
minetest.set_node(t2,{name="my_garage_door:garage_door",param2=p2})
minetest.set_node(pos,{name="air"})
minetest.set_node(t3,{name="air"})
end,
})
minetest.register_node("my_garage_door:garage_door_open2", {
tiles = {
"default_snow.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2= "facedir",
drop = "",
diggable = false,
pointable = false,
groups = {cracky=3},
node_box = {
type = "fixed",
fixed = {
{-1.5, 0.4375, -0.5, 1.5, 0.375, 0.5},
{-1.5, 0.375, 0.3125, 1.5, 0.5, 0.5},
{-1.5, 0.375, 0.0625, 1.5, 0.5, 0.25},
{-1.5, 0.375, -0.1875, 1.5, 0.5, 0},
{-1.5, 0.375, -0.4375, 1.5, 0.5, -0.25},
}
},
selection_box = {type = "fixed",fixed = {{0, 0, 0, 0, 0, 0},}},
})