EinsDreiDreiSieben/mods/biomes/japaneseforest/fireflies.lua
2025-05-04 16:01:41 +02:00

755 lines
24 KiB
Lua

minetest.register_node("japaneseforest:red_firefly", {
description = "Red Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_red_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_red_firefly.png",
wield_image = "japaneseforest_red_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:red_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_red_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_red_firefly", {
description = "Hidden Red Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_red_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_red_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_red_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:red_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
--------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:blue_firefly", {
description = "Blue Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_blue_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_blue_firefly.png",
wield_image = "japaneseforest_blue_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:blue_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_blue_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_blue_firefly", {
description = "Hidden Blue Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_blue_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_blue_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_blue_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:blue_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
--------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:green_firefly", {
description = "Green Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_green_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_green_firefly.png",
wield_image = "japaneseforest_green_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:green_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_green_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_green_firefly", {
description = "Hidden Green Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_green_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_green_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_green_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:green_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
--------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:violet_firefly", {
description = "Violet Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_violet_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_violet_firefly.png",
wield_image = "japaneseforest_violet_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:violet_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_violet_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_violet_firefly", {
description = "Hidden Violet Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_violet_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_violet_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_violet_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:violet_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
--------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:orange_firefly", {
description = "Orange Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_orange_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_orange_firefly.png",
wield_image = "japaneseforest_orange_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:orange_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_orange_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_orange_firefly", {
description = "Hidden Orange Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_orange_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_orange_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_orange_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:orange_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
-------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:pink_firefly", {
description = "Pink Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_pink_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_pink_firefly.png",
wield_image = "japaneseforest_pink_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:pink_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_pink_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_pink_firefly", {
description = "Hidden Pink Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_pink_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_pink_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_pink_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:pink_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
-------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:cyan_firefly", {
description = "Cyan Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_cyan_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_cyan_firefly.png",
wield_image = "japaneseforest_cyan_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:cyan_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_cyan_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_cyan_firefly", {
description = "Hidden Cyan Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_cyan_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_cyan_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_cyan_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:cyan_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:white_firefly", {
description = "White Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_white_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_white_firefly.png",
wield_image = "japaneseforest_white_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:white_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_white_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_white_firefly", {
description = "Hidden White Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_white_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_white_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_white_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:white_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
------------------------------------------------------------------------------------------------------------------------------
minetest.register_node("japaneseforest:black_firefly", {
description = "Black Firefly",
drawtype = "plantlike",
tiles = {{
name = "japaneseforest_black_firefly_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 1.5
},
}},
inventory_image = "japaneseforest_black_firefly.png",
wield_image = "japaneseforest_black_firefly.png",
waving = 1,
paramtype = "light",
sunlight_propagates = true,
buildable_to = true,
walkable = false,
groups = {catchable = 1},
selection_box = {
type = "fixed",
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
},
light_source = 6,
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:black_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) > 11 then
minetest.set_node(pos, {name = "japaneseforest:hidden_black_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_node("japaneseforest:hidden_black_firefly", {
description = "Hidden Black Firefly",
drawtype = "airlike",
inventory_image = "japaneseforest_black_firefly.png^default_invisible_node_overlay.png",
wield_image = "japaneseforest_black_firefly.png^default_invisible_node_overlay.png",
paramtype = "light",
sunlight_propagates = true,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
drop = "",
groups = {not_in_creative_inventory = 1},
floodable = true,
on_place = function(itemstack, placer, pointed_thing)
local player_name = placer:get_player_name()
local pos = pointed_thing.above
if not minetest.is_protected(pos, player_name) and
not minetest.is_protected(pointed_thing.under, player_name) and
minetest.get_node(pos).name == "air" then
minetest.set_node(pos, {name = "japaneseforest:hidden_black_firefly"})
minetest.get_node_timer(pos):start(1)
itemstack:take_item()
end
return itemstack
end,
on_timer = function(pos, elapsed)
if minetest.get_node_light(pos) <= 11 then
minetest.set_node(pos, {name = "japaneseforest:black_firefly"})
end
minetest.get_node_timer(pos):start(30)
end
})
minetest.register_decoration({
deco_type = "simple",
place_on = {"japaneseforest:japanese_dirt_with_grass"},
sidelen = 16,
fill_ratio = 0.02,
biomes = {"japaneseforest"},
decoration = {
"japaneseforest:red_firefly", "japaneseforest:orange_firefly", "japaneseforest:white_firefly", "japaneseforest:cyan_firefly", "japaneseforest:blue_firefly", "japaneseforest:green_firefly", "japaneseforest:pink_firefly", "japaneseforest:violet_firefly", "japaneseforest:black_firefly",
}
})