1 -- butterflies/init.lua
3 -- Load support for MT game translation.
4 local S = minetest.get_translator("butterflies")
6 -- register butterflies
8 {"white", S("White Butterfly")},
9 {"red", S("Red Butterfly")},
10 {"violet", S("Violet Butterfly")}
13 for i in ipairs (butter_list) do
14 local name = butter_list[i][1]
15 local desc = butter_list[i][2]
17 minetest.register_node("butterflies:butterfly_"..name, {
19 drawtype = "plantlike",
21 name = "butterflies_butterfly_"..name.."_animated.png",
23 type = "vertical_frames",
29 inventory_image = "butterflies_butterfly_"..name..".png",
30 wield_image = "butterflies_butterfly_"..name..".png",
33 sunlight_propagates = true,
36 groups = {catchable = 1},
39 fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
42 on_place = function(itemstack, placer, pointed_thing)
43 local player_name = placer:get_player_name()
44 local pos = pointed_thing.above
46 if not minetest.is_protected(pos, player_name) and
47 not minetest.is_protected(pointed_thing.under, player_name) and
48 minetest.get_node(pos).name == "air" then
49 minetest.set_node(pos, {name = "butterflies:butterfly_"..name})
50 minetest.get_node_timer(pos):start(1)
55 on_timer = function(pos, elapsed)
56 if minetest.get_node_light(pos) < 11 then
57 minetest.set_node(pos, {name = "butterflies:hidden_butterfly_"..name})
59 minetest.get_node_timer(pos):start(30)
63 minetest.register_node("butterflies:hidden_butterfly_"..name, {
65 inventory_image = "butterflies_butterfly_"..name..".png",
66 wield_image = "butterflies_butterfly_"..name..".png",
68 sunlight_propagates = true,
73 groups = {not_in_creative_inventory = 1},
75 on_place = function(itemstack, placer, pointed_thing)
76 local player_name = placer:get_player_name()
77 local pos = pointed_thing.above
79 if not minetest.is_protected(pos, player_name) and
80 not minetest.is_protected(pointed_thing.under, player_name) and
81 minetest.get_node(pos).name == "air" then
82 minetest.set_node(pos, {name = "butterflies:hidden_butterfly_"..name})
83 minetest.get_node_timer(pos):start(1)
88 on_timer = function(pos, elapsed)
89 if minetest.get_node_light(pos) >= 11 then
90 minetest.set_node(pos, {name = "butterflies:butterfly_"..name})
92 minetest.get_node_timer(pos):start(30)
97 -- register decoration
98 minetest.register_decoration({
99 name = "butterflies:butterfly",
100 deco_type = "simple",
101 place_on = {"default:dirt_with_grass"},
105 biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
109 "butterflies:butterfly_white",
110 "butterflies:butterfly_red",
111 "butterflies:butterfly_violet"
113 spawn_by = "group:flower",
118 local butterflies = minetest.get_decoration_id("butterflies:butterfly")
119 minetest.set_gen_notify({decoration = true}, {butterflies})
122 minetest.register_on_generated(function(minp, maxp, blockseed)
123 local gennotify = minetest.get_mapgen_object("gennotify")
126 for _, pos in ipairs(gennotify["decoration#"..butterflies] or {}) do
127 local deco_pos = {x = pos.x, y = pos.y + 3, z = pos.z}
128 table.insert(poslist, deco_pos)
131 if #poslist ~= 0 then
132 for i = 1, #poslist do
133 local pos = poslist[i]
134 minetest.get_node_timer(pos):start(1)