From 313039b165e117157b5ee8e430309092f66b6d80 Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Wed, 19 Aug 2015 08:51:42 +0100 Subject: [PATCH] ADDED protector_pvp switch to disable pvp inside player's own protected areas --- README.md | 3 ++- init.lua | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7360dfa..eff8813 100644 --- 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 diff --git a/init.lua b/init.lua index 689c5eb..31d37ba 100644 --- 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