diff --git a/mods/sf_loot/init.lua b/mods/sf_loot/init.lua index 86b5aa2..d83f998 100644 --- a/mods/sf_loot/init.lua +++ b/mods/sf_loot/init.lua @@ -1,6 +1,9 @@ local S = minetest.get_translator("sf_loot") local EDITOR = minetest.settings:get_bool("sf_editor", false) or minetest.settings:get_bool("creative_mode", false) +-- If enabled, shows vases near you +local VASE_RADAR = false + local vase_drop = nil if not EDITOR then vase_drop = "" @@ -50,3 +53,41 @@ minetest.register_node("sf_loot:vase", { end, drop = vase_drop, }) + +if VASE_RADAR then + local vtimer = 0 + local waypoints = {} + minetest.register_globalstep(function(dtime) + vtimer = vtimer + dtime + if vtimer < 1 then + return + end + vtimer = 0 + local players = minetest.get_connected_players() + local areasize = vector.new(30, 30, 30) + for p=1, #players do + local player = players[p] + local pname = player:get_player_name() + if not waypoints[pname] then + waypoints[pname] = {} + end + for w=1, #waypoints[pname] do + player:hud_remove(waypoints[pname][w]) + end + local ppos = vector.round(players[p]:get_pos()) + local vases = minetest.find_nodes_in_area(vector.subtract(ppos, areasize), vector.add(ppos, areasize), "sf_loot:vase") + for v=1, #vases do + local vnode = minetest.get_node(vases[v]) + local id = players[p]:hud_add({ + hud_elem_type = "waypoint", + name = S("Vase (@1)", vnode.param2), + precision = 1, + text = S("m"), + number = 0xFF8080, + world_pos = vases[v], + }) + table.insert(waypoints[pname], id) + end + end + end) +end