added universal node ownership

master
cornernote 2012-07-30 16:15:13 +09:30
parent 4652522971
commit ae14301a2b
2 changed files with 46 additions and 0 deletions

View File

@ -0,0 +1,18 @@
[mod] Universal Node Ownership
Forum Page: http://minetest.net/forum/viewtopic.php?pid=34814
Contributors:
mauvebic
Description:
Each node placed records its owner. Blocks placed by the server mapgen, or mods, are diggable. Nodes with owners can be removed using worldedit or multinode, or whatever tool mod that removes nodes instead of digging them.
Installation:
add to /buitin/builtin.lua, just below misc_register:
dofile(minetest.get_modpath("__builtin").."/universal_node_ownership.lua")

View File

@ -0,0 +1,28 @@
-- add to /buitin/builtin.lua, just below misc_register:
-- dofile(minetest.get_modpath("__builtin").."/universal_node_ownership.lua")
local function is_node_owner(meta, player)
if meta:get_string("owner") ~= player:get_player_name() and meta:get_string("owner") ~= '' then
return false
end
return true
end
local can_dig = function(pos,player)
meta = minetest.env:get_meta(pos)
return is_node_owner(meta, player)
end
-- copy minetest.register_node to another function so we can still call it
minetest_register_node = minetest.register_node;
-- overwrite minetest.register_node
function minetest.register_node(name, nodedef)
if not nodedef.can_dig then nodedef.can_dig = can_dig end
minetest_register_node(name, nodedef) -- call the real minetest.register_node
end
minetest.register_on_placenode(function(p, node, placer)
local meta = minetest.env:get_meta(p)
local player = placer:get_player_name()
meta:set_string("owner",player)
end)