60 lines
2.0 KiB
Lua
60 lines
2.0 KiB
Lua
--[[
|
|
|
|
Node Owner for Minetest
|
|
|
|
Copyright (c) 2012 cornernote, Brett O'Donnell <cornernote@gmail.com>
|
|
Source Code: https://github.com/cornernote/minetest-node_owner
|
|
License: BSD-3-Clause https://raw.github.com/cornernote/minetest-node_owner/master/LICENSE
|
|
|
|
]]--
|
|
|
|
--add adminnode provilege
|
|
|
|
minetest.register_privilege("admin_node", "Player can dig the node that is owned by other player.")
|
|
|
|
-- override minetest.item_place_node
|
|
local old_item_place_node = minetest.item_place_node
|
|
function minetest.item_place_node(itemstack, placer, pointed_thing, param2)
|
|
local player = placer:get_player_name()
|
|
-- local base_node = minetest.env:get_meta(pointed_thing.under)
|
|
local base_node = minetest.get_meta(pointed_thing.under)
|
|
|
|
local owner = base_node:get_string("owner")
|
|
|
|
-- do not allow placing onto other players nodes
|
|
if owner ~= player and owner ~= '' and minetest.check_player_privs(player, "admin_node") ~= true then
|
|
minetest.chat_send_player(player, "You can not place nodes here because it is owned by "..owner..".")
|
|
return
|
|
end
|
|
|
|
-- place the node
|
|
local output = old_item_place_node(itemstack, placer, pointed_thing, param2)
|
|
|
|
-- set the owner
|
|
-- local new_node = minetest.env:get_meta(pointed_thing.above)
|
|
local new_node = minetest.get_meta(pointed_thing.above)
|
|
new_node:set_string("owner", player)
|
|
|
|
return output
|
|
end
|
|
|
|
-- override minetest.node_dig
|
|
local old_node_dig = minetest.node_dig
|
|
function minetest.node_dig(pos, node, digger)
|
|
local player = digger:get_player_name()
|
|
local meta = minetest.env:get_meta(pos)
|
|
local owner = meta:get_string("owner")
|
|
|
|
-- do not allow digging other players nodes
|
|
if owner ~= player and owner ~= '' and minetest.check_player_privs(player, "admin_node") ~= true then
|
|
minetest.chat_send_player(player, "You can not dig this node because it is owned by "..owner..".")
|
|
return itemstack
|
|
end
|
|
|
|
-- dig the node
|
|
return old_node_dig(pos, node, digger)
|
|
end
|
|
|
|
-- log that we started
|
|
minetest.log("action", "[MOD]"..minetest.get_current_modname().." -- loaded from "..minetest.get_modpath(minetest.get_current_modname()))
|