Skip to content

Commit 2ce8ff3

Browse files
authored
Simplify Butterfly and Firefly code (#3125)
1 parent 4e402ec commit 2ce8ff3

File tree

2 files changed

+13
-69
lines changed

2 files changed

+13
-69
lines changed

mods/butterflies/init.lua

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,8 @@ for i in ipairs (butter_list) do
4343
fixed = {-0.1, -0.1, -0.1, 0.1, 0.1, 0.1},
4444
},
4545
floodable = true,
46-
on_place = function(itemstack, placer, pointed_thing)
47-
local player_name = placer and placer:get_player_name() or ""
48-
local pos = pointed_thing.above
49-
50-
if not minetest.is_protected(pos, player_name) and
51-
not minetest.is_protected(pointed_thing.under, player_name) and
52-
minetest.get_node(pos).name == "air" then
53-
minetest.set_node(pos, {name = "butterflies:butterfly_"..name})
54-
minetest.get_node_timer(pos):start(1)
55-
itemstack:take_item()
56-
end
57-
return itemstack
46+
on_construct = function(pos)
47+
minetest.get_node_timer(pos):start(1)
5848
end,
5949
on_timer = function(pos, elapsed)
6050
if minetest.get_node_light(pos) < 11 then
@@ -76,18 +66,8 @@ for i in ipairs (butter_list) do
7666
drop = "",
7767
groups = {not_in_creative_inventory = 1},
7868
floodable = true,
79-
on_place = function(itemstack, placer, pointed_thing)
80-
local player_name = placer and placer:get_player_name() or ""
81-
local pos = pointed_thing.above
82-
83-
if not minetest.is_protected(pos, player_name) and
84-
not minetest.is_protected(pointed_thing.under, player_name) and
85-
minetest.get_node(pos).name == "air" then
86-
minetest.set_node(pos, {name = "butterflies:hidden_butterfly_"..name})
87-
minetest.get_node_timer(pos):start(1)
88-
itemstack:take_item()
89-
end
90-
return itemstack
69+
on_construct = function(pos)
70+
minetest.get_node_timer(pos):start(1)
9171
end,
9272
on_timer = function(pos, elapsed)
9373
if minetest.get_node_light(pos) >= 11 then

mods/fireflies/init.lua

Lines changed: 9 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,8 @@ minetest.register_node("fireflies:firefly", {
3333
},
3434
light_source = 6,
3535
floodable = true,
36-
on_place = function(itemstack, placer, pointed_thing)
37-
local player_name = placer:get_player_name()
38-
local pos = pointed_thing.above
39-
40-
if not minetest.is_protected(pos, player_name) and
41-
not minetest.is_protected(pointed_thing.under, player_name) and
42-
minetest.get_node(pos).name == "air" then
43-
minetest.set_node(pos, {name = "fireflies:firefly"})
44-
minetest.get_node_timer(pos):start(1)
45-
itemstack:take_item()
46-
end
47-
return itemstack
36+
on_construct = function(pos)
37+
minetest.get_node_timer(pos):start(1)
4838
end,
4939
on_timer = function(pos, elapsed)
5040
if minetest.get_node_light(pos) > 11 then
@@ -68,18 +58,8 @@ minetest.register_node("fireflies:hidden_firefly", {
6858
drop = "",
6959
groups = {not_in_creative_inventory = 1},
7060
floodable = true,
71-
on_place = function(itemstack, placer, pointed_thing)
72-
local player_name = placer:get_player_name()
73-
local pos = pointed_thing.above
74-
75-
if not minetest.is_protected(pos, player_name) and
76-
not minetest.is_protected(pointed_thing.under, player_name) and
77-
minetest.get_node(pos).name == "air" then
78-
minetest.set_node(pos, {name = "fireflies:hidden_firefly"})
79-
minetest.get_node_timer(pos):start(1)
80-
itemstack:take_item()
81-
end
82-
return itemstack
61+
on_construct = function(pos)
62+
minetest.get_node_timer(pos):start(1)
8363
end,
8464
on_timer = function(pos, elapsed)
8565
if minetest.get_node_light(pos) <= 11 then
@@ -95,27 +75,11 @@ minetest.register_tool("fireflies:bug_net", {
9575
description = S("Bug Net"),
9676
inventory_image = "fireflies_bugnet.png",
9777
pointabilities = {nodes = {["group:catchable"] = true}},
98-
on_use = function(itemstack, player, pointed_thing)
99-
local player_name = player and player:get_player_name() or ""
100-
if not pointed_thing or pointed_thing.type ~= "node" or
101-
minetest.is_protected(pointed_thing.under, player_name) then
102-
return
103-
end
104-
local node_name = minetest.get_node(pointed_thing.under).name
105-
local inv = player:get_inventory()
106-
if minetest.get_item_group(node_name, "catchable") == 1 then
107-
minetest.remove_node(pointed_thing.under)
108-
local stack = ItemStack(node_name.." 1")
109-
local leftover = inv:add_item("main", stack)
110-
if leftover:get_count() > 0 then
111-
minetest.add_item(pointed_thing.under, node_name.." 1")
112-
end
113-
end
114-
if not minetest.is_creative_enabled(player_name) then
115-
itemstack:add_wear_by_uses(256)
116-
return itemstack
117-
end
118-
end
78+
tool_capabilities = {
79+
groupcaps = {
80+
catchable = { maxlevel = 1, uses = 256, times = { [1] = 0, [2] = 0, [3] = 0 } }
81+
},
82+
},
11983
})
12084

12185
minetest.register_craft( {

0 commit comments

Comments
 (0)