From fdfec1fd4a6fcb98cbef3b33850082ca5500857e Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Fri, 13 Nov 2015 11:23:30 +0000 Subject: Changed recipe to give 1 protector, added + button to formspec, tweaked and tidied code --- pvp.lua | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 pvp.lua (limited to 'pvp.lua') diff --git a/pvp.lua b/pvp.lua new file mode 100644 index 0000000..0122576 --- /dev/null +++ b/pvp.lua @@ -0,0 +1,51 @@ + +-- get static spawn position +local statspawn = (minetest.setting_get_pos("static_spawnpoint") or {x = 0, y = 2, z = 0}) + +-- is pvp protection enabled and spawn protected +protector.pvp = minetest.setting_getbool("protector_pvp") +protector.spawn = (tonumber(minetest.setting_get("protector_pvp_spawn")) or 0) + +-- Disable PVP in your own protected areas +if minetest.setting_getbool("enable_pvp") and protector.pvp 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("[Protector] on_punchplayer called with nil objects") + end + + if not hitter:is_player() then + return false + end + + -- no pvp at spawn area + local pos = player:getpos() + + if pos.x < statspawn.x + protector.spawn + and pos.x > statspawn.x - protector.spawn + and pos.y < statspawn.y + protector.spawn + and pos.y > statspawn.y - protector.spawn + and pos.z < statspawn.z + protector.spawn + and pos.z > statspawn.z - protector.spawn then + return true + end + + if minetest.is_protected(pos, hitter:get_player_name()) then + return true + else + return false + end + + end) + else + print("[Protector] pvp_protect not active, update your version of Minetest") + + end +else + print("[Protector] pvp_protect is disabled") +end -- cgit v1.2.3