summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--init.lua1
-rw-r--r--item_names.lua56
2 files changed, 57 insertions, 0 deletions
diff --git a/init.lua b/init.lua
index 1800ba9..f91e048 100644
--- a/init.lua
+++ b/init.lua
@@ -44,4 +44,5 @@ dofile(modpath.."/internal.lua")
dofile(modpath.."/callbacks.lua")
dofile(modpath.."/register.lua")
dofile(modpath.."/bags.lua")
+dofile(modpath.."/item_names.lua")
dofile(modpath.."/waypoints.lua")
diff --git a/item_names.lua b/item_names.lua
new file mode 100644
index 0000000..2ab233e
--- /dev/null
+++ b/item_names.lua
@@ -0,0 +1,56 @@
+local wield = {}
+local huds = {}
+local dtimes = {}
+local dlimit = 3 -- hud will be hidden after this much seconds
+local airhudmod = minetest.get_modpath("4air")
+
+local function get_desc(item)
+ if minetest.registered_nodes[item] then return minetest.registered_nodes[item]["description"] end
+ if minetest.registered_items[item] then return minetest.registered_items[item]["description"] end
+ if minetest.registered_craftitems[item] then return minetest.registered_craftitems[item]["description"] end
+ if minetest.registered_tools[item] then return minetest.registered_tools[item]["description"] end
+ return ""
+end
+
+minetest.register_on_joinplayer(function(player)
+ minetest.after(0.0, function()
+ local player_name = player:get_player_name()
+ local off = {x=0, y=-70}
+ if airhudmod then
+ off.y=off.y-20
+ end
+ huds[player_name] = player:hud_add({
+ hud_elem_type = "text",
+ position = {x=0.5, y=1},
+ offset = off,
+ alignment = {x=0, y=0},
+ number = 0xFFFFFF ,
+ text = "",
+ })
+ print(dump("item hud id: "..huds[player_name]))
+ end)
+end)
+
+minetest.register_globalstep(function(dtime)
+ local players = minetest.get_connected_players()
+ for i,player in ipairs(players) do
+ local player_name = player:get_player_name()
+ local wstack = player:get_wielded_item():get_name()
+
+ if dtimes[player_name] and dtimes[player_name] < dlimit then
+ dtimes[player_name] = dtimes[player_name] + dtime
+ if dtimes[player_name] > dlimit and huds[player_name] then
+ player:hud_change(huds[player_name], 'text', "")
+ end
+ end
+
+ if wstack ~= wield[player_name] then
+ wield[player_name] = wstack
+ local desc = get_desc(wstack)
+ dtimes[player_name] = 0
+ if huds[player_name] then
+ player:hud_change(huds[player_name], 'text', desc)
+ end
+ end
+ end
+end)