locked_sign/init.lua

68 lines
2.3 KiB
Lua

--[[
Mod by kotolegokot
Version 2012.8.13.0
]]
minetest.register_privilege("sign_editor", "Can edit all locked signs")
minetest.register_node("locked_sign:sign_wall_locked", {
description = "Locked Sign",
drawtype = "signlike",
tiles = {"locked_sign_sign_wall_lock.png"},
inventory_image = "locked_sign_sign_wall_lock.png",
wield_image = "locked_sign_sign_wall_lock.png",
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
walkable = false,
metadata_name = "sign",
selection_box = {
type = "wallmounted",
},
groups = {choppy=2,dig_immediate=2},
legacy_wallmounted = true,
sounds = default.node_sound_defaults(),
after_place_node = function(pos, placer)
local meta = minetest.env:get_meta(pos)
meta:set_string("owner", placer:get_player_name() or "")
meta:set_string("infotext", "\"\" (owned by " .. placer:get_player_name() .. ")")
end,
on_construct = function(pos)
--local n = minetest.env:get_node(pos)
local meta = minetest.env:get_meta(pos)
meta:set_string("formspec", "field[text;;${text}]")
meta:set_string("infotext", "\"\"")
end,
can_dig = function(pos,player)
local meta = minetest.env:get_meta(pos);
local owner = meta:get_string("owner")
local pname = player:get_player_name()
return pname == owner or pname == minetest.setting_get("name")
or minetest.check_player_privs(pname, {sign_editor=true})
end,
on_receive_fields = function(pos, formname, fields, sender)
local meta = minetest.env:get_meta(pos)
local owner = meta:get_string("owner")
local pname = sender:get_player_name()
if pname ~= owner and pname ~= minetest.setting_get("name")
and not minetest.check_player_privs(pname, {sign_editor=true}) then
return
end
local meta = minetest.env:get_meta(pos)
fields.text = fields.text or ""
print((sender:get_player_name() or "").." wrote \""..fields.text..
"\" to sign at "..minetest.pos_to_string(pos))
meta:set_string("text", fields.text)
meta:set_string("infotext", "\"" .. fields.text .. "\" (owned by " .. sender:get_player_name() .. ")")
end,
})
minetest.register_craft({
output = "locked_sign:sign_wall_locked",
recipe = {
{"default:wood", "default:wood", "default:wood"},
{"default:wood", "default:wood", "default:steel_ingot"},
{"", "default:stick", ""},
}
})
minetest.register_alias("sign_wall_locked", "locked_sign:sign_wall_locked")