homedecor_modpack/door_glass.lua
Vanessa Ezekowitz a7a2e11b7e All doors now check for the presence of node_ownership and, if present and
the area you place in is owned by someone else, and you don't have rights to
build there, the door will not be placed (you will receive a warning message
instead).
2012-10-09 05:57:24 -04:00

214 lines
7.1 KiB
Lua

-- This file supplies solid glass doors with frosted edges and metal handle
-- Left-opening
minetest.register_node("homedecor:door_glass_top_left", {
description = "glass door top half",
drawtype = "nodebox",
tiles = {
"homedecor_door_glass_tb.png",
"homedecor_blanktile.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_right_top.png",
"homedecor_door_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 = { -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
}
},
drop = "homedecor:door_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_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_glass_top_right", param2=nfdir})
minetest.env:add_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = "homedecor:door_glass_bottom_right", param2=nfdir})
end
})
minetest.register_node("homedecor:door_glass_bottom_left", {
description = "Glass Door",
drawtype = "nodebox",
tiles = {
"homedecor_blanktile.png",
"homedecor_door_glass_tb.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_right_bottom.png",
"homedecor_door_glass_left_bottom.png",
},
wield_image = "homedecor_door_glass_left_inv.png",
inventory_image = "homedecor_door_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 = { -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
}
},
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above
local pd = true
if type(IsPlayerNodeOwner)=="function" then
if not IsPlayerNodeOwner(pos, placer:get_player_name()) and HasOwner(pos) then
minetest.chat_send_player( placer:get_player_name(), "Sorry, "..getLastOwner(pos).." owns that spot." )
pd = false
end
end
if pd then
fdir = minetest.dir_to_facedir(placer:get_look_dir())
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_glass_top_left", param2=fdir})
return minetest.item_place(itemstack, placer, pointed_thing)
end
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_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_glass_top_right", param2=nfdir})
minetest.env:add_node(pos, { name = "homedecor:door_glass_bottom_right", param2=nfdir})
end
})
-- Right-opening
minetest.register_node("homedecor:door_glass_top_right", {
description = "glass door top half",
drawtype = "nodebox",
tiles = {
"homedecor_door_glass_tb.png",
"homedecor_blanktile.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_left_top.png",
"homedecor_door_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 = { -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
}
},
drop = "homedecor:door_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_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_glass_top_left", param2=nfdir})
minetest.env:add_node({x=pos.x, y=pos.y-1, z=pos.z}, { name = "homedecor:door_glass_bottom_left", param2=nfdir})
end
})
minetest.register_node("homedecor:door_glass_bottom_right", {
description = "Glass Door (Right-opening)",
drawtype = "nodebox",
tiles = {
"homedecor_blanktile.png",
"homedecor_door_glass_tb.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_lr.png",
"homedecor_door_glass_left_bottom.png",
"homedecor_door_glass_right_bottom.png",
},
wield_image = "homedecor_door_glass_right_inv.png",
inventory_image = "homedecor_door_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 = { -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
},
node_box = {
type = "fixed",
fixed = {
{ -8/16, -8/16, 6/16, 8/16, 8/16, 8/16 },
}
},
drop = "homedecor:door_glass_bottom_left",
on_place = function(itemstack, placer, pointed_thing)
local pos = pointed_thing.above
local pd = true
if type(IsPlayerNodeOwner)=="function" then
if not IsPlayerNodeOwner(pos, placer:get_player_name()) and HasOwner(pos) then
minetest.chat_send_player( placer:get_player_name(), "Sorry, "..getLastOwner(pos).." owns that spot." )
pd = false
end
end
if pd then
fdir = minetest.dir_to_facedir(placer:get_look_dir())
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_glass_top_right", param2=fdir})
return minetest.item_place(itemstack, placer, pointed_thing)
end
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_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_glass_top_left", param2=nfdir})
minetest.env:add_node(pos, { name = "homedecor:door_glass_bottom_left", param2=nfdir})
end
})