From 06a5eceb81f8f5006814e567790166a0d7693972 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Fri, 2 Aug 2013 16:41:36 -0400 Subject: Add basic protection support to builtin --- builtin/item.lua | 18 ++++++++++++++++++ builtin/misc.lua | 11 +++++++++++ builtin/misc_register.lua | 1 + 3 files changed, 30 insertions(+) (limited to 'builtin') diff --git a/builtin/item.lua b/builtin/item.lua index 99614581d..b3ab9bc4c 100644 --- a/builtin/item.lua +++ b/builtin/item.lua @@ -218,6 +218,15 @@ function minetest.item_place_node(itemstack, placer, pointed_thing, param2) place_to = {x = under.x, y = under.y, z = under.z} end + if minetest.is_protected(place_to, placer:get_player_name()) then + minetest.log("action", placer:get_player_name() + .. " tried to place " .. def.name + .. " at protected position " + .. minetest.pos_to_string(place_to)) + minetest.record_protection_violation(place_to, placer:get_player_name()) + return itemstack + end + minetest.log("action", placer:get_player_name() .. " places node " .. def.name .. " at " .. minetest.pos_to_string(place_to)) @@ -377,6 +386,15 @@ function minetest.node_dig(pos, node, digger) return end + if minetest.is_protected(pos, digger:get_player_name()) then + minetest.log("action", digger:get_player_name() + .. " tried to dig " .. node.name + .. " at protected position " + .. minetest.pos_to_string(pos)) + minetest.record_protection_violation(pos, digger:get_player_name()) + return + end + minetest.log('action', digger:get_player_name() .. " digs " .. node.name .. " at " .. minetest.pos_to_string(pos)) diff --git a/builtin/misc.lua b/builtin/misc.lua index 3d2c496e3..a6a1718ad 100644 --- a/builtin/misc.lua +++ b/builtin/misc.lua @@ -106,3 +106,14 @@ function minetest.setting_get_pos(name) return minetest.string_to_pos(value) end +-- To be overriden by protection mods +function minetest.is_protected(pos, name) + return false +end + +function minetest.record_protection_violation(pos, name) + for _, func in pairs(minetest.registered_on_protection_violation) do + func(pos, name) + end +end + diff --git a/builtin/misc_register.lua b/builtin/misc_register.lua index 242fe6092..bb2c62ab8 100644 --- a/builtin/misc_register.lua +++ b/builtin/misc_register.lua @@ -344,4 +344,5 @@ minetest.registered_on_player_receive_fields, minetest.register_on_player_receiv minetest.registered_on_cheats, minetest.register_on_cheat = make_registration() minetest.registered_on_crafts, minetest.register_on_craft = make_registration() minetest.registered_craft_predicts, minetest.register_craft_predict = make_registration() +minetest.registered_on_protection_violation, minetest.register_on_protection_violation = make_registration() -- cgit v1.2.3