24hr_clock/init.lua

96 lines
2.3 KiB
Lua

-- 24hr_clock
-- By David_G (kestral246@gmail.com)
--
-- 2020-02-19
local activewidth=8 -- Number of inventory slots to check.
minetest.register_globalstep(function(dtime)
local players = minetest.get_connected_players()
for i,player in ipairs(players) do
local gotaclock=false
local wielded=false
local activeinv=nil
local stackidx=0
local wielded_item = player:get_wielded_item():get_name()
if string.sub(wielded_item, 0, 16) == "24hr_clock:clock" then
wielded=true
stackidx=player:get_wield_index()
gotaclock=true
else
if player:get_inventory() then
for i,stack in ipairs(player:get_inventory():get_list("main")) do
if i<=activewidth and string.sub(stack:get_name(), 0, 16) == "24hr_clock:clock" then
activeinv=stack
stackidx=i
gotaclock=true
break
end
end
end
end
if gotaclock then
local clock_image = math.floor(24 * minetest.get_timeofday())
if wielded then
player:set_wielded_item("24hr_clock:clock"..clock_image)
elseif activeinv then
player:get_inventory():set_stack("main",stackidx,"24hr_clock:clock"..clock_image)
end
end
end
end)
local images = {
"24hr_clock_0.png",
"24hr_clock_1.png",
"24hr_clock_2.png",
"24hr_clock_3.png",
"24hr_clock_4.png",
"24hr_clock_5.png",
"24hr_clock_6.png",
"24hr_clock_7.png",
"24hr_clock_8.png",
"24hr_clock_9.png",
"24hr_clock_10.png",
"24hr_clock_11.png",
"24hr_clock_12.png",
"24hr_clock_13.png",
"24hr_clock_14.png",
"24hr_clock_15.png",
"24hr_clock_16.png",
"24hr_clock_17.png",
"24hr_clock_18.png",
"24hr_clock_19.png",
"24hr_clock_20.png",
"24hr_clock_21.png",
"24hr_clock_22.png",
"24hr_clock_23.png",
}
local i
for i,img in ipairs(images) do
local inv = 1
if i == 12 then
inv = 0
end
minetest.register_tool("24hr_clock:clock"..(i-1), {
description = "24-Hour Clock",
inventory_image = img,
wield_image = img,
groups = {not_in_creative_inventory=inv}
})
end
-- crafting recipe only works if default mod present.
if minetest.get_modpath("default") ~= nil then
minetest.register_craft({
output = '24hr_clock:clock11',
recipe = {
{'', 'default:tin_ingot', ''},
{'default:copper_ingot', 'default:glass', 'default:copper_ingot'},
{'', 'default:copper_ingot', ''}
}
})
end