homedecor_modpack/door_glass_and_wood.lua

221 lines
7.9 KiB
Lua

-- This file supplies wood-and-glass doors (Grid-style, like old windows)
-- Left-opening
minetest.register_node("homedecor:door_wood_glass_top_left", {
description = "wood/glass door top half",
drawtype = "nodebox",
tiles = {
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_right_top.png",
"homedecor_door_wood_glass_left_top.png",
},
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
groups = {snappy=3, not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 6/16, 0.5, 0.5, 8/16}
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -3/32, 6/16, 8/16, 1/32, 8/16 },
{ -8/16, -8/16, 6/16, 8/16, -7/16, 8/16 },
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ -1/16, -8/16, 6/16, 1/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }
}
},
drop = "homedecor:door_wood_glass_bottom_left",
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "homedecor:door_wood_glass_bottom_left" then
minetest.env:remove_node({x=pos.x, y=pos.y-1, z=pos.z})
end
end,
on_punch = function(pos, node, puncher)
nfdir=node.param2-1
if nfdir < 0 then nfdir = 3 end
minetest.env:add_node(pos, { name = "homedecor:door_wood_glass_top_right", param2=nfdir})
minetest.env:add_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = "homedecor:door_wood_glass_bottom_right", param2=nfdir})
end
})
minetest.register_node("homedecor:door_wood_glass_bottom_left", {
description = "Wood and Glass Grid-Style Door",
drawtype = "nodebox",
tiles = {
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_right_bottom.png",
"homedecor_door_wood_glass_left_bottom.png",
},
wield_image = "homedecor_door_wood_glass_left_inv.png",
inventory_image = "homedecor_door_wood_glass_left_inv.png",
wield_scale = {x=1,y=1,z=0.25},
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 6/16, 0.5, 0.5, 8/16}
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, 7/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -1/32, 6/16, 8/16, 3/32, 8/16 },
{ -8/16, -8/16, 6/16, 8/16, -6/16, 8/16 },
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ -1/16, -8/16, 6/16, 1/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }
}
},
on_place = function(itemstack, placer, pointed_thing)
fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos = pointed_thing.above
if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
minetest.chat_send_player( placer:get_player_name(), 'Not enough vertical space to place a door!' )
return
end
minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_wood_glass_top_left", param2=fdir})
return minetest.item_place(itemstack, placer, pointed_thing)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "homedecor:door_wood_glass_top_left" then
minetest.env:remove_node({x=pos.x, y=pos.y+1, z=pos.z})
end
end,
on_punch = function(pos, node, puncher)
nfdir=node.param2-1
if nfdir < 0 then nfdir = 3 end
minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_wood_glass_top_right", param2=nfdir})
minetest.env:add_node(pos, { name = "homedecor:door_wood_glass_bottom_right", param2=nfdir})
end
})
-- Right-opening
minetest.register_node("homedecor:door_wood_glass_top_right", {
description = "wood/glass door top half",
drawtype = "nodebox",
tiles = {
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_left_top.png",
"homedecor_door_wood_glass_right_top.png",
},
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
groups = {snappy=3, not_in_creative_inventory=1},
sounds = default.node_sound_wood_defaults(),
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 6/16, 0.5, 0.5, 8/16}
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, 6/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -3/32, 6/16, 8/16, 1/32, 8/16 },
{ -8/16, -8/16, 6/16, 8/16, -7/16, 8/16 },
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ -1/16, -8/16, 6/16, 1/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }
}
},
drop = "homedecor:door_wood_glass_bottom_left",
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "homedecor:door_wood_glass_bottom_right" then
minetest.env:remove_node({x=pos.x, y=pos.y-1, z=pos.z})
end
end,
on_punch = function(pos, node, puncher)
nfdir=node.param2+1
if nfdir > 3 then nfdir = 0 end
minetest.env:add_node(pos, { name = "homedecor:door_wood_glass_top_left", param2=nfdir})
minetest.env:add_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = "homedecor:door_wood_glass_bottom_left", param2=nfdir})
end
})
minetest.register_node("homedecor:door_wood_glass_bottom_right", {
description = "Wood and Glass Grid-Style Door (Right-opening)",
drawtype = "nodebox",
tiles = {
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_tb.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_lr.png",
"homedecor_door_wood_glass_left_bottom.png",
"homedecor_door_wood_glass_right_bottom.png",
},
wield_image = "homedecor_door_wood_glass_right_inv.png",
inventory_image = "homedecor_door_wood_glass_right_inv.png",
wield_scale = {x=1,y=1,z=0.25},
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = true,
groups = {snappy=3},
sounds = default.node_sound_wood_defaults(),
walkable = true,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 6/16, 0.5, 0.5, 8/16}
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, 7/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -1/32, 6/16, 8/16, 3/32, 8/16 },
{ -8/16, -8/16, 6/16, 8/16, -6/16, 8/16 },
{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 },
{ -1/16, -8/16, 6/16, 1/16, 8/16, 8/16 },
{ 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
{ -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }
}
},
drop = "homedecor:door_wood_glass_bottom_left",
on_place = function(itemstack, placer, pointed_thing)
fdir = minetest.dir_to_facedir(placer:get_look_dir())
local pos = pointed_thing.above
if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then
minetest.chat_send_player( placer:get_player_name(), 'Not enough vertical space to place a door!' )
return
end
minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_wood_glass_top_right", param2=fdir})
return minetest.item_place(itemstack, placer, pointed_thing)
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "homedecor:door_wood_glass_top_right" then
minetest.env:remove_node({x=pos.x, y=pos.y+1, z=pos.z})
end
end,
on_punch = function(pos, node, puncher)
nfdir=node.param2+1
if nfdir > 3 then nfdir = 0 end
minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_wood_glass_top_left", param2=nfdir})
minetest.env:add_node(pos, { name = "homedecor:door_wood_glass_bottom_left", param2=nfdir})
end
})