From 974a024171529ec14d08e5d6b87bb995627a978f Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Sat, 11 Nov 2017 12:50:50 +0000 Subject: [PATCH] Added HUD text to show protected areas --- README.md | 1 + hud.lua | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ init.lua | 1 + 3 files changed, 62 insertions(+) create mode 100644 hud.lua diff --git a/README.md b/README.md index 888330d..0ef4983 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,7 @@ Change log: It can also place vertically (up and down) as well. New protector recipe added. - 2.3 - Localise many of the protector functions and tidy code. - 2.4 - Update to newer functions, Minetest 0.4.16 needed to run now. +- 2.5 - Added HUD text to show when player is inside a protected area (updates every 5 seconds) Lucky Blocks: 10 diff --git a/hud.lua b/hud.lua new file mode 100644 index 0000000..cbf1bd2 --- /dev/null +++ b/hud.lua @@ -0,0 +1,60 @@ + +local radius = (tonumber(minetest.setting_get("protector_radius")) or 5) +local hud = {} +local hud_timer = 0 + +minetest.register_globalstep(function(dtime) + + hud_timer = hud_timer + dtime + if hud_timer < 5 then + return + end + hud_timer = 0 + + for _, player in pairs(minetest.get_connected_players()) do + + local name = player:get_player_name() + local pos = vector.round(player:getpos()) + local hud_text = "You can build here" + + local protectors = minetest.find_nodes_in_area( + {x=pos.x -radius , y=pos.y -radius , z=pos.z -radius}, + {x=pos.x +radius , y=pos.y +radius , z=pos.z +radius}, + {"protector:protect","protector:protect2"}) + + if #protectors > 0 then + local npos = protectors[1] + local meta = minetest.get_meta(npos) + local nodeowner = meta:get_string("owner") + + hud_text = "Owned by: " .. nodeowner + end + + if not hud[name] then + + hud[name] = {} + + hud[name].id = player:hud_add({ + hud_elem_type = "text", + name = "Protector Area", + number = 0xFFFF22, + position = {x=0, y=0.95}, + offset = {x=8, y=-8}, + text = hud_text, + scale = {x=200, y=60}, + alignment = {x=1, y=-1}, + }) + + return + + else + + player:hud_change(hud[name].id, "text", hud_text) + end + end +end) + +minetest.register_on_leaveplayer(function(player) + hud[player:get_player_name()] = nil +end) + diff --git a/init.lua b/init.lua index 7f7da54..2ecb31b 100644 --- a/init.lua +++ b/init.lua @@ -624,6 +624,7 @@ dofile(path .. "/doors_chest.lua") dofile(path .. "/pvp.lua") dofile(path .. "/admin.lua") dofile(path .. "/tool.lua") +dofile(path .. "/hud.lua") dofile(path .. "/lucky_block.lua")