EinsDreiDreiSieben/mods/minetest_game/butterflies/init.lua
2025-05-04 16:01:41 +02:00

97 lines
No EOL
2.6 KiB
Lua

-- butterflies/init.lua
-- Load support for MT game translation.
local S = minetest.get_translator("butterflies")
-- Legacy compatibility, when pointabilities don't exist, pointable is set to true.
local pointable_compat = not minetest.features.item_specific_pointabilities
-- register butterflies
local butter_list = {
{"white", S("White Butterfly")},
{"red", S("Red Butterfly")},
{"violet", S("Violet Butterfly")}
}
for i in ipairs (butter_list) do
local name = butter_list[i][1]
local desc = butter_list[i][2]
minetest.register_node("butterflies:butterfly_"..name, {
description = desc,
drawtype = "plantlike",
tiles = {{
name = "butterflies_butterfly_"..name.."_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3
},
}},
inventory_image = "butterflies_butterfly_"..name..".png",
wield_image = "butterflies_butterfly_"..name..".png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
pointable = pointable_compat,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
floodable = true,
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) < 11 then
minetest.set_node(pos, {name = "butterflies:hidden_butterfly_"..name})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("butterflies:hidden_butterfly_"..name, {
drawtype = "airlike",
inventory_image = "butterflies_butterfly_"..name..".png^default_invisible_node_overlay.png",
wield_image = "butterflies_butterfly_"..name..".png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) >= 11 then
minetest.set_node(pos, {name = "butterflies:butterfly_"..name})
end
minetest.get_node_timer(pos):start(30)
end
})
end
-- restart butterfly timers
minetest.register_lbm({
name = "butterflies:butterfly_timer",
nodenames = {
"butterflies:butterfly_white",
"butterflies:butterfly_red",
"butterflies:butterfly_violet",
"butterflies:hidden_butterfly_white",
"butterflies:hidden_butterfly_red",
"butterflies:hidden_butterfly_violet",
},
run_at_every_load = true,
action = function(pos)
minetest.get_node_timer(pos):start(math.random(1,5))
end,
})