Repeater: Fix sometimes bad lock on place
[MineClone/MineClone2.git] / mods / ITEMS / minetest-3d_armor / wieldview / init.lua
blob9aef99e3c8c098f97dc9c7ec21dbc4173763122b
1 local time = 0
2 local update_time = tonumber(minetest.settings:get("wieldview_update_time"))
3 if not update_time then
4 update_time = 2
5 minetest.settings:set("wieldview_update_time", tostring(update_time))
6 end
7 local node_tiles = minetest.settings:get_bool("wieldview_node_tiles")
8 if not node_tiles then
9 node_tiles = false
10 minetest.settings:set("wieldview_node_tiles", "false")
11 end
13 wieldview = {
14 wielded_item = {},
15 transform = {},
18 dofile(minetest.get_modpath(minetest.get_current_modname()).."/transform.lua")
20 wieldview.get_item_texture = function(self, item)
21 local texture = "3d_armor_trans.png"
22 if item ~= "" then
23 if minetest.registered_items[item] then
24 if minetest.registered_items[item].inventory_image ~= "" then
25 texture = minetest.registered_items[item].inventory_image
26 elseif node_tiles == true and minetest.registered_items[item].tiles
27 and type(minetest.registered_items[item].tiles[1]) == "string"
28 and minetest.registered_items[item].tiles[1] ~= "" then
29 texture = minetest.inventorycube(minetest.registered_items[item].tiles[1])
30 end
31 end
32 if wieldview.transform[item] then
33 texture = texture.."^[transform"..wieldview.transform[item]
34 end
35 end
36 return texture
37 end
39 wieldview.update_wielded_item = function(self, player)
40 if not player then
41 return
42 end
43 local name = player:get_player_name()
44 local stack = player:get_wielded_item()
45 local item = stack:get_name()
46 if not item then
47 return
48 end
49 if self.wielded_item[name] then
50 if self.wielded_item[name] == item then
51 return
52 end
53 armor.textures[name].wielditem = self:get_item_texture(item)
54 armor:update_player_visuals(player)
55 end
56 self.wielded_item[name] = item
57 end
59 minetest.register_on_joinplayer(function(player)
60 local name = player:get_player_name()
61 wieldview.wielded_item[name] = ""
62 minetest.after(0, function(player)
63 wieldview:update_wielded_item(player)
64 end, player)
65 end)
67 minetest.register_globalstep(function(dtime)
68 time = time + dtime
69 if time > update_time then
70 for _,player in ipairs(minetest.get_connected_players()) do
71 wieldview:update_wielded_item(player)
72 end
73 time = 0
74 end
75 end)