]> git.lizzy.rs Git - crafter_client.git/blob - waila.lua
Fix WAIH crashing
[crafter_client.git] / waila.lua
1 local hud_item_name = ""
2
3
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         --waila
55         if minetest.camera then
56                 local pos = minetest.camera:get_pos()
57                 local pos2 = vector.add(pos,vector.multiply(minetest.camera:get_look_dir(), 4))
58                 local ray = minetest.raycast(pos, pos2, false, false)
59                 
60                 local pointed_thing = ray:next()
61                 if pointed_thing and pointed_thing.under then
62                         local node = minetest.get_node_or_nil(pointed_thing.under).name
63                         if hud_item_name ~= node then
64                                 local def = minetest.get_item_def(node)
65                                 minetest.localplayer:hud_change(hud_name, "text", def.description)
66                                 minetest.localplayer:hud_change(hud_node, "text", node)
67                                 minetest.localplayer:hud_change(hud_bg,   "text", "waila.png")
68                                 hud_item_name = node
69                         end
70                 else
71                         --make hud invisible
72                         minetest.localplayer:hud_change(hud_name, "text", "")
73                         minetest.localplayer:hud_change(hud_node, "text", "")
74                         minetest.localplayer:hud_change(hud_bg,   "text", "")
75                         hud_item_name = ""
76                 end
77         end
78
79         
80         --waih
81         local item = minetest.localplayer:get_wielded_item():get_name()
82         if waih_timer > 0 then
83                 waih_timer = waih_timer - 0.01
84                 if waih_timer <= 0 then
85                         waih_timer = 0
86                         minetest.localplayer:hud_change(waih_name, "text", "")
87                 end
88         end
89         if item ~= old_item then
90                 waih_timer = 1
91                 local waih_text = minetest.get_item_def(item).description or item
92                 minetest.localplayer:hud_change(waih_name, "text", waih_text)
93         end
94         old_item = item
95
96
97         minetest.after(0.01, function()
98                 update()
99         end)
100 end
101
102 update()