From 0c20a1b616fb1bc72e6db9fad061b12ee044602a Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Thu, 26 Sep 2013 10:30:36 -0400 Subject: [PATCH] Show area owners on the hud (inspired by landrush) --- README.md | 3 --- chatcommands.lua | 23 ----------------------- hud.lua | 38 ++++++++++++++++++++++++++++++++++++++ init.lua | 1 + 4 files changed, 39 insertions(+), 26 deletions(-) create mode 100644 hud.lua diff --git a/README.md b/README.md index 3c31433..44fcd40 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,6 @@ Chat commands For example: /find_areas [Cc]astle To find castles. - * /list\_owners - Lists the owners of your position. - * /remove\_area <ID> Removes a area that you own. Any sub-areas of that area are made sub-areas of the removed area's parent, if it exists. Otherwise they will have no diff --git a/chatcommands.lua b/chatcommands.lua index 341e70c..b1dcfd8 100644 --- a/chatcommands.lua +++ b/chatcommands.lua @@ -169,29 +169,6 @@ minetest.register_chatcommand("rename_area", { end}) -minetest.register_chatcommand("list_owners", { - params = "", - description = "List the owners of your position", - privs = {}, - func = function(name, param) - local player = minetest.get_player_by_name(name) - if not player then - minetest.chat_send_player(name, - "Unable to find your position.") - return - end - local pos = vector.round(player:getpos()) - local owners = areas:getNodeOwners(pos) - if #owners > 0 then - minetest.chat_send_player(name, - "Owners: "..table.concat(owners, ", ")) - else - minetest.chat_send_player(name, - "Your position is unowned.") - end -end}) - - minetest.register_chatcommand("find_areas", { params = "", description = "Find areas using a Lua regular expression", diff --git a/hud.lua b/hud.lua new file mode 100644 index 0000000..d7eea0d --- /dev/null +++ b/hud.lua @@ -0,0 +1,38 @@ +-- This is inspired by the landrush mod by Bremaweb + +areas.hud = {} + +minetest.register_globalstep(function(dtime) + for _, player in pairs(minetest.get_connected_players()) do + local name = player:get_player_name() + local pos = vector.round(player:getpos()) + local owners = areas:getNodeOwners(pos) + local ownerString = table.concat(owners, ", ") + if not areas.hud[name] then + areas.hud[name] = {} + areas.hud[name].ownersId = player:hud_add({ + hud_elem_type = "text", + name = "AreaOwners", + number = 0xFFFFFF, + position = {x=0, y=1}, + offset = {x=5, y=-40}, + direction = 0, + text = "Area owners: "..ownerString, + scale = {x=200, y=40}, + alignment = {x=1, y=1}, + }) + areas.hud[name].oldOwners = ownerString + return + end + if areas.hud[name].oldOwners ~= ownerString then + player:hud_change(areas.hud[name].ownersId, "text", + "Area owners: "..ownerString) + areas.hud[name].oldOwners = ownerString + end + end +end) + +minetest.register_on_leaveplayer(function(player) + areas.hud[player:get_player_name()] = nil +end) + diff --git a/init.lua b/init.lua index 1db410f..d3ffd74 100644 --- a/init.lua +++ b/init.lua @@ -14,6 +14,7 @@ dofile(areas.modpath.."/chatcommands.lua") dofile(areas.modpath.."/pos.lua") dofile(areas.modpath.."/interact.lua") dofile(areas.modpath.."/legacy.lua") +dofile(areas.modpath.."/hud.lua") areas:load()