diff --git a/README.md b/README.md index 9ecb6de..c5cc739 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,8 @@ Change log: stand on a protector, face in a direction and it places a new one at a set distance to cover protection radius. Added /protector_show command (thanks agaran) Protectors and chest cannot be moved by mesecon pistons or machines. +2.1 - Added 'protector_night_pvp' setting so night-time becomes a free for all and + players can hurt one another even inside protected areas (not spawn protected) Lucky Blocks: 6 @@ -93,12 +95,12 @@ protector_radius = 5 protector_pvp = true - true or false this setting disabled pvp inside of protected areas for all players apart from those listed on the protector node. +protector_night_pvp = false +- when true this setting enables pvp at night time only, even inside protected areas, requires protector_pvp to be active to work. + protector_spawn = 10 - Sets an area 10 nodes around static spawnpoint that is protected. -protector_drop = true -- When true players who dig inside a protected area will automatically drop tools to stop them going any further. - protector_hurt = 2 - When set to above 0, players digging in protected areas will be hurt by 2 health points (or whichever number it's set to) diff --git a/init.lua b/init.lua index 0a133a7..9007ac1 100644 --- a/init.lua +++ b/init.lua @@ -7,7 +7,6 @@ protector = {} protector.mod = "redo" protector.radius = tonumber(minetest.setting_get("protector_radius")) or 5 ---protector.drop = minetest.setting_getbool("protector_drop") or false protector.flip = minetest.setting_getbool("protector_flip") or false protector.hurt = tonumber(minetest.setting_get("protector_hurt")) or 0 protector.spawn = tonumber(minetest.setting_get("protector_spawn") @@ -307,30 +306,6 @@ function minetest.is_protected(pos, digger) }) end end ---[[ - -- drop tool/item if protection violated - if protector.drop == true then - - local holding = player:get_wielded_item() - - if holding:to_string() ~= "" then - - -- take stack - local sta = holding:take_item(holding:get_count()) - player:set_wielded_item(holding) - - -- incase of lag, reset stack - minetest.after(0.1, function() - player:set_wielded_item(holding) - - -- drop stack - local obj = minetest.add_item(player:getpos(), sta) - if obj then - obj:setvelocity({x = 0, y = 5, z = 0}) - end - end) - end - end]] end return true diff --git a/pvp.lua b/pvp.lua index 6cc5407..90a8d3f 100644 --- a/pvp.lua +++ b/pvp.lua @@ -7,13 +7,16 @@ local statspawn = minetest.setting_get_pos("static_spawnpoint") or {x = 0, y = 2 -- is pvp protection enabled protector.pvp = minetest.setting_getbool("protector_pvp") +-- is night-only pvp enabled +protector.night_pvp = minetest.setting_getbool("protector_night_pvp") + -- disables 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) + minetest.register_on_punchplayer(function(player, hitter, + time_from_last_punch, tool_capabilities, dir, damage) if not player or not hitter then @@ -36,12 +39,26 @@ if minetest.setting_getbool("enable_pvp") and protector.pvp then return true end + -- do we enable pvp at night time only ? + if protector.night_pvp then + + -- get time of day + local tod = minetest.get_timeofday() or 0 + + if tod > 0.2 and tod < 0.8 then + -- + else + return false + end + end + + -- is player being punched inside a protected area ? if minetest.is_protected(pos, hitter:get_player_name()) then return true - else - return false end + return false + end) else print(S("[Protector] pvp_protect not active, update your version of Minetest"))