]> git.lizzy.rs Git - crafter_client.git/blob - waila.lua
Update README.md
[crafter_client.git] / waila.lua
1 local minetest,vector = minetest,vector
2 local hud_item_name = ""
3 local all_nodes
4 local hud_bg = minetest.localplayer:hud_add({
5                                 hud_elem_type = "image", -- see HUD element types, default "text"
6                                 position = {x=0.5, y=0},
7                                 name = "",    -- default ""
8                                 scale = {x=2.25, y=2.25}, -- default {x=0,y=0}
9                                 text = "waila.png",    -- default ""
10                                 offset = { x = 0, y = 29.25},
11                                 z_index = 0,
12                         })
13
14 local hud_name = minetest.localplayer:hud_add({
15                 name = "hud_name",
16                 position = {x=0.5,y=0},
17                 hud_elem_type = "text",
18                 number = 0xFFFFFF,
19                 alignment = 0,
20                 offset = { x = 0, y = 17},
21                 text = "",
22                 z_index = 1,
23         })
24 local hud_node = minetest.localplayer:hud_add({
25                 name = "hud_node",
26                 position = {x=0.5,y=0},
27                 hud_elem_type = "text",
28                 number = 0xFFFFFF,
29                 alignment = 0,
30                 offset = { x = 0, y = 36},
31                 text = "",
32                 z_index = 1,
33         })
34
35
36 local waih_name = minetest.localplayer:hud_add({
37         name = "hud_name",
38         position = {x=0.5,y=1},
39         hud_elem_type = "text",
40         number = 0xFFFFFF,
41         alignment = 0,
42         offset = { x = 0, y = -150},
43         text = "",
44         z_index = 1,
45 })
46
47
48 local pos_min = 10
49 local pos_max = -150
50 local waih_timer = 0
51 local old_item = ""
52
53 local function update()
54
55         if all_nodes then
56                 --waila
57                 if minetest.camera then
58                         local pos = minetest.camera:get_pos()
59                         local pos2 = vector.add(pos,vector.multiply(minetest.camera:get_look_dir(), 4))
60                         local ray = minetest.raycast(pos, pos2, false, false)
61                         
62                         local pointed_thing = ray:next()
63                         if pointed_thing and pointed_thing.under and all_nodes[minetest.get_node_or_nil(pointed_thing.under).name] then
64                                 local node = minetest.get_node_or_nil(pointed_thing.under).name
65                                 if hud_item_name ~= node then
66                                         local def = minetest.get_item_def(node)
67                                         minetest.localplayer:hud_change(hud_name, "text", def.description)
68                                         minetest.localplayer:hud_change(hud_node, "text", node)
69                                         minetest.localplayer:hud_change(hud_bg,   "text", "waila.png")
70                                         hud_item_name = node
71                                 end
72                         else
73                                 --make hud invisible
74                                 minetest.localplayer:hud_change(hud_name, "text", "")
75                                 minetest.localplayer:hud_change(hud_node, "text", "")
76                                 minetest.localplayer:hud_change(hud_bg,   "text", "")
77                                 hud_item_name = ""
78                         end
79                 end
80
81                 
82                 --waih
83                 local item = minetest.localplayer:get_wielded_item():get_name()
84                 if waih_timer > 0 then
85                         waih_timer = waih_timer - 0.01
86                         if waih_timer <= 0 then
87                                 waih_timer = 0
88                                 minetest.localplayer:hud_change(waih_name, "text", "")
89                         end
90                 end
91                 if item ~= old_item then
92                         waih_timer = 1
93                         local waih_text
94                         if all_nodes[item] then
95                                 waih_text = minetest.get_item_def(item).description or item
96                         else
97                                 waih_text = "Unknown"
98                         end
99                         minetest.localplayer:hud_change(waih_name, "text", waih_text)
100                 end
101                 old_item = item
102         elseif nodes then
103                 all_nodes = table.copy(nodes)
104         end
105
106
107         minetest.after(0.01, function()
108                 update()
109         end)
110 end
111
112 update()