Skip to content

Commit 465d8ca

Browse files
authoredMar 22, 2018
Hide fireflies during day time
1 parent c0557b2 commit 465d8ca

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
 

‎mods/fireflies/init.lua

+83
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,59 @@ minetest.register_node("fireflies:firefly", {
2727
floodable = true,
2828
on_flood = function(pos, oldnode, newnode)
2929
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)
3083
end
3184
})
3285

@@ -112,6 +165,7 @@ minetest.register_node("fireflies:firefly_bottle", {
112165
if firefly_pos then
113166
minetest.set_node(pos, {name = "vessels:glass_bottle"})
114167
minetest.set_node(firefly_pos, {name = "fireflies:firefly"})
168+
minetest.get_node_timer(firefly_pos):start(1)
115169
end
116170
end
117171
})
@@ -203,3 +257,32 @@ else
203257
})
204258

205259
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

Comments
 (0)