Add Swedish translation
[oweals/minetest_game.git] / mods / butterflies / init.lua
1 -- butterflies/init.lua
2
3 -- Load support for MT game translation.
4 local S = minetest.get_translator("butterflies")
5
6 -- register butterflies
7 local butter_list = {
8         {"white",  S("White Butterfly")},
9         {"red",    S("Red Butterfly")},
10         {"violet", S("Violet Butterfly")}
11 }
12
13 for i in ipairs (butter_list) do
14         local name = butter_list[i][1]
15         local desc = butter_list[i][2]
16
17         minetest.register_node("butterflies:butterfly_"..name, {
18                 description = desc,
19                 drawtype = "plantlike",
20                 tiles = {{
21                         name = "butterflies_butterfly_"..name.."_animated.png",
22                         animation = {
23                                 type = "vertical_frames",
24                                 aspect_w = 16,
25                                 aspect_h = 16,
26                                 length = 3
27                         },
28                 }},
29                 inventory_image = "butterflies_butterfly_"..name..".png",
30                 wield_image =  "butterflies_butterfly_"..name..".png",
31                 waving = 1,
32                 paramtype = "light",
33                 sunlight_propagates = true,
34                 buildable_to = true,
35                 walkable = false,
36                 groups = {catchable = 1},
37                 selection_box = {
38                         type = "fixed",
39                         fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
40                 },
41                 floodable = true,
42                 on_place = function(itemstack, placer, pointed_thing)
43                         local player_name = placer:get_player_name()
44                         local pos = pointed_thing.above
45
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)
51                                 itemstack:take_item()
52                         end
53                         return itemstack
54                 end,
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})
58                         end
59                         minetest.get_node_timer(pos):start(30)
60                 end
61         })
62
63         minetest.register_node("butterflies:hidden_butterfly_"..name, {
64                 drawtype = "airlike",
65                 inventory_image = "butterflies_butterfly_"..name..".png",
66                 wield_image =  "butterflies_butterfly_"..name..".png",
67                 paramtype = "light",
68                 sunlight_propagates = true,
69                 walkable = false,
70                 pointable = false,
71                 diggable = false,
72                 drop = "",
73                 groups = {not_in_creative_inventory = 1},
74                 floodable = true,
75                 on_place = function(itemstack, placer, pointed_thing)
76                         local player_name = placer:get_player_name()
77                         local pos = pointed_thing.above
78
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)
84                                 itemstack:take_item()
85                         end
86                         return itemstack
87                 end,
88                 on_timer = function(pos, elapsed)
89                         if minetest.get_node_light(pos) >= 11 then
90                                 minetest.set_node(pos, {name = "butterflies:butterfly_"..name})
91                         end
92                         minetest.get_node_timer(pos):start(30)
93                 end
94         })
95 end
96
97 -- register decoration
98 minetest.register_decoration({
99         name = "butterflies:butterfly",
100         deco_type = "simple",
101         place_on = {"default:dirt_with_grass"},
102         place_offset_y = 2,
103         sidelen = 80,
104         fill_ratio = 0.005,
105         biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
106         y_max = 31000,
107         y_min = 1,
108         decoration = {
109                 "butterflies:butterfly_white",
110                 "butterflies:butterfly_red",
111                 "butterflies:butterfly_violet"
112         },
113         spawn_by = "group:flower",
114         num_spawn_by = 1
115 })
116
117 -- get decoration ID
118 local butterflies = minetest.get_decoration_id("butterflies:butterfly")
119 minetest.set_gen_notify({decoration = true}, {butterflies})
120
121 -- start nodetimers
122 minetest.register_on_generated(function(minp, maxp, blockseed)
123         local gennotify = minetest.get_mapgen_object("gennotify")
124         local poslist = {}
125
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)
129         end
130
131         if #poslist ~= 0 then
132                 for i = 1, #poslist do
133                         local pos = poslist[i]
134                         minetest.get_node_timer(pos):start(1)
135                 end
136         end
137 end)