ADDED protector_pvp switch to disable pvp inside player's own protected areas
authorTenPlus1 <kinsellaja@yahoo.com>
Wed, 19 Aug 2015 07:51:42 +0000 (08:51 +0100)
committerTenPlus1 <kinsellaja@yahoo.com>
Wed, 19 Aug 2015 07:51:42 +0000 (08:51 +0100)
README.md
init.lua

index 7360dfa..eff8813 100644 (file)
--- a/README.md
+++ b/README.md
@@ -15,4 +15,5 @@ Released under WTFPL
 0.7 - Protected Chests now have "To Chest" and "To Inventory" buttons to copy contents across, also chests can be named
 0.8 - Updated to work with Minetest 0.4.12, simplified textures
 0.9 - Tweaked code
-1.0 - Only owner can remove protector
\ No newline at end of file
+1.0 - Only owner can remove protector
+1.1 - PVP can be disabled for player inside their own protected area using protector_pvp in minetest.conf (requires Minetest 0.4.12 dev and above)
\ No newline at end of file
index 689c5eb..31d37ba 100644 (file)
--- a/init.lua
+++ b/init.lua
@@ -3,6 +3,7 @@ minetest.register_privilege("delprotect","Ignore player protection")
 protector = {}
 protector.mod = "redo"
 protector.radius = (tonumber(minetest.setting_get("protector_radius")) or 5)
+protector.pvp = minetest.setting_get("protector_pvp") or false
 
 protector.get_member_list = function(meta)
        return meta:get_string("members"):split(" ")
@@ -694,4 +695,35 @@ minetest.register_craft({
        recipe = {
                {'default:chest', 'default:copper_ingot', ''},
        }
-})
\ No newline at end of file
+})
+
+-- Disable PVP in your own protected areas
+if minetest.setting_getbool("enable_pvp") and protector.pvp == "true" then
+
+       if minetest.register_on_punchplayer then
+
+               minetest.register_on_punchplayer(
+               function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
+
+                       if not player or not hitter then
+                               print("on_punchplayer called with nil objects")
+                       end
+
+                       if not hitter:is_player() then
+                               return false
+                       end
+
+                       if minetest.is_protected(player:getpos(), hitter:get_player_name()) then
+                               return true
+                       else
+                               return false
+                       end
+
+               end)
+       else
+               print("PVP protection not active, update your version of Minetest")
+
+       end
+else
+       print("PVP is disabled in world")
+end
\ No newline at end of file