@@ -27,6 +27,59 @@ minetest.register_node("fireflies:firefly", {
27
27
floodable = true ,
28
28
on_flood = function (pos , oldnode , newnode )
29
29
minetest .add_item (pos , " fireflies:firefly 1" )
30
+ end ,
31
+ on_place = function (itemstack , placer , pointed_thing )
32
+ local player_name = placer :get_player_name ()
33
+ local pos = pointed_thing .above
34
+
35
+ if not minetest .is_protected (pos , player_name ) and
36
+ not minetest .is_protected (pointed_thing .under , player_name ) and
37
+ minetest .get_node (pos ).name == " air" then
38
+ minetest .set_node (pos , {name = " fireflies:firefly" })
39
+ minetest .get_node_timer (pos ):start (1 )
40
+ itemstack :take_item ()
41
+ end
42
+ return itemstack
43
+ end ,
44
+ on_timer = function (pos , elapsed )
45
+ if minetest .get_node_light (pos ) > 11 then
46
+ minetest .set_node (pos , {name = " fireflies:hidden_firefly" })
47
+ end
48
+ minetest .get_node_timer (pos ):start (30 )
49
+ end
50
+ })
51
+
52
+ minetest .register_node (" fireflies:hidden_firefly" , {
53
+ description = " Hidden Firefly" ,
54
+ drawtype = " airlike" ,
55
+ inventory_image = " fireflies_firefly.png" ,
56
+ wield_image = " fireflies_firefly.png" ,
57
+ paramtype = " light" ,
58
+ sunlight_propagates = true ,
59
+ walkable = false ,
60
+ pointable = false ,
61
+ diggable = false ,
62
+ buildable_to = true ,
63
+ drop = " " ,
64
+ groups = {not_in_creative_inventory = 1 },
65
+ on_place = function (itemstack , placer , pointed_thing )
66
+ local player_name = placer :get_player_name ()
67
+ local pos = pointed_thing .above
68
+
69
+ if not minetest .is_protected (pos , player_name ) and
70
+ not minetest .is_protected (pointed_thing .under , player_name ) and
71
+ minetest .get_node (pos ).name == " air" then
72
+ minetest .set_node (pos , {name = " fireflies:hidden_firefly" })
73
+ minetest .get_node_timer (pos ):start (1 )
74
+ itemstack :take_item ()
75
+ end
76
+ return itemstack
77
+ end ,
78
+ on_timer = function (pos , elapsed )
79
+ if minetest .get_node_light (pos ) <= 11 then
80
+ minetest .set_node (pos , {name = " fireflies:firefly" })
81
+ end
82
+ minetest .get_node_timer (pos ):start (30 )
30
83
end
31
84
})
32
85
@@ -112,6 +165,7 @@ minetest.register_node("fireflies:firefly_bottle", {
112
165
if firefly_pos then
113
166
minetest .set_node (pos , {name = " vessels:glass_bottle" })
114
167
minetest .set_node (firefly_pos , {name = " fireflies:firefly" })
168
+ minetest .get_node_timer (firefly_pos ):start (1 )
115
169
end
116
170
end
117
171
})
@@ -203,3 +257,32 @@ else
203
257
})
204
258
205
259
end
260
+
261
+
262
+ -- get decoration IDs
263
+ local firefly_low = minetest .get_decoration_id (" fireflies:firefly_low" )
264
+ local firefly_high = minetest .get_decoration_id (" fireflies:firefly_high" )
265
+
266
+ minetest .set_gen_notify ({decoration = true }, {firefly_low , firefly_high })
267
+
268
+ -- start nodetimers
269
+ minetest .register_on_generated (function (minp , maxp , blockseed )
270
+ local gennotify = minetest .get_mapgen_object (" gennotify" )
271
+ local poslist = {}
272
+
273
+ for _ , pos in ipairs (gennotify [" decoration#" .. firefly_low ] or {}) do
274
+ local firefly_low_pos = {x = pos .x , y = pos .y + 3 , z = pos .z }
275
+ table.insert (poslist , firefly_low_pos )
276
+ end
277
+ for _ , pos in ipairs (gennotify [" decoration#" .. firefly_high ] or {}) do
278
+ local firefly_high_pos = {x = pos .x , y = pos .y + 4 , z = pos .z }
279
+ table.insert (poslist , firefly_high_pos )
280
+ end
281
+
282
+ if # poslist ~= 0 then
283
+ for i = 1 , # poslist do
284
+ local pos = poslist [i ]
285
+ minetest .get_node_timer (pos ):start (1 )
286
+ end
287
+ end
288
+ end )
0 commit comments