Make many nodes floodable
[minetest_hades/hades_revisited.git] / mods / refruit / init.lua
blob50a4f7577b4e80652cb79a7551574ac3a7555ec9
1 local S = minetest.get_translator("refruit")
3 -- refruit for minetest
4 -- makes fruits regrowing on the trees.
5 -- images and code are WTFPL license (2015 by Glünggi)
6 refruit = {}
8 function refruit.add_refruit(id, def)
9 local ndef = minetest.registered_nodes[def.fruit_itemstring]
10 local groups = ndef.groups
11 if not groups then
12 groups = {}
13 else
14 groups = table.copy(ndef.groups)
15 end
16 local groups_fruit
17 groups_fruit = table.copy(groups)
18 groups_fruit.fruit_regrow = 3
20 minetest.override_item(def.fruit_itemstring, {
21 groups = groups_fruit,
22 place_param2 = 1,
23 after_dig_node = function(pos, oldnode, oldmetadta, digger)
24 if oldnode.name == def.fruit_itemstring then
25 if oldnode.param2 ~= 0 then
26 return
27 end
28 minetest.set_node(pos, {name = "refruit:bud_"..id})
29 else
30 return
31 end
32 end
35 local bud_itemstring = "refruit:bud_"..id
36 local flower_itemstring = "refruit:flower_"..id
38 minetest.register_node(bud_itemstring, {
39 description = def.bud_description,
40 _tt_help = def.bud_tt,
41 drawtype = ndef.drawtype,
42 tiles = {"refruit_bud_"..id..".png"},
43 inventory_image = "refruit_bud_"..id..".png",
44 wield_image = "refruit_bud_"..id..".png",
45 paramtype = "light",
46 sunlight_propagates = true,
47 walkable = false,
48 floodable = true,
49 selection_box = {
50 type = "fixed",
51 fixed = def.bud_selbox,
53 groups = {fruit_regrow=1, snappy=2,oddly_breakable_by_hand=3,flammable=2,leafdecay=3,leafdecay_drop=1},
54 drop = def.bud_drop or {},
55 sounds = hades_sounds.node_sound_leaves_defaults(),
57 minetest.register_node(flower_itemstring, {
58 description = def.flower_description,
59 _tt_help = def.flower_tt,
60 drawtype = ndef.drawtype,
61 tiles = {"refruit_flower_"..id..".png"},
62 inventory_image = "refruit_flower_"..id..".png",
63 wield_image = "refruit_flower_"..id..".png",
64 paramtype = "light",
65 sunlight_propagates = true,
66 walkable = false,
67 floodable = true,
68 selection_box = {
69 type = "fixed",
70 fixed = def.flower_selbox,
72 groups = {fruit_regrow=2, snappy=2,oddly_breakable_by_hand=3,flammable=2,leafdecay=3,leafdecay_drop=1},
73 drop = def.flower_drop or {},
74 sounds = hades_sounds.node_sound_leaves_defaults(),
77 minetest.register_abm({
78 label = "Grow "..bud_itemstring.." to "..flower_itemstring,
79 nodenames = {"refruit:bud_"..id},
80 neighbors = def.neighbors,
81 interval = def.bud_interval,
82 chance = def.bud_chance,
83 action = function(pos, node)
84 minetest.set_node(pos, {name="refruit:flower_"..id})
85 end,
88 minetest.register_abm({
89 label = "Grow "..flower_itemstring.." to "..def.fruit_itemstring,
90 nodenames = {"refruit:flower_"..id},
91 neighbors = def.neighbors,
92 interval = def.flower_interval,
93 chance = def.flower_chance,
94 action = function(pos, node)
95 minetest.set_node(pos, {name=def.fruit_itemstring})
96 end,
99 end
102 local stick_drop = function(rarity)
103 return {
104 max_items = 1,
105 items = {
107 items = {'hades_core:stick'},
108 rarity = rarity,
111 items = {'hades_core:stick'},
112 rarity = rarity
118 local surv = S("Needs a tree trunk to survive")
120 refruit.add_refruit("apple", {
121 fruit_itemstring = "hades_trees:apple",
122 bud_description = S("Apple Bud"),
123 bud_tt = S("Grows to an Apple Flower").."\n"..surv.."\n"..S("Needs Common Leaves to grow"),
124 flower_description = S("Apple Flower"),
125 flower_tt = S("Grows to an Apple").."\n"..surv.."\n"..S("Needs Common Leaves to grow"),
126 bud_drop = stick_drop(99),
127 flower_drop = stick_drop(99),
128 bud_interval = 34,
129 bud_chance = 10,
130 flower_interval = 33,
131 flower_chance = 60,
132 neighbors = {"hades_trees:leaves"},
133 bud_selbox = {-0.1875, -0.3125, -0.1875, 0.1875, 0.3125, 0.1875},
134 flower_selbox = {-0.1875, -0.3125, -0.1875, 0.1875, 0.3125, 0.1875},
137 refruit.add_refruit("olive", {
138 fruit_itemstring = "hades_trees:olive",
139 bud_description = S("Olive Bud"),
140 bud_tt = S("Grows to an Olive Flower").."\n"..surv.."\n"..S("Needs Olive Leaves to grow"),
141 flower_description = S("Olive Flower"),
142 flower_tt = S("Grows to an Olive").."\n"..surv.."\n"..S("Needs Olive Leaves to grow"),
143 bud_drop = stick_drop(99),
144 flower_drop = stick_drop(76),
145 bud_interval = 35,
146 bud_chance = 10,
147 flower_interval = 34,
148 flower_chance = 60,
149 neighbors = {"hades_trees:olive_leaves"},
150 bud_selbox = {-2/16, 1/16, -2/16, 2/16, 0.5, 2/16},
151 flower_selbox = {-4/16, -1/16, -4/16, 4/16, 0.5, 4/16},
154 refruit.add_refruit("orange", {
155 fruit_itemstring = "hades_trees:orange",
156 bud_description = S("Orange Bud"),
157 bud_tt = S("Grows to an Orange Flower").."\n"..surv.."\n"..S("Needs Orange Leaves to grow"),
158 flower_description = S("Orange Flower"),
159 flower_tt = S("Grows to an Orange").."\n"..surv.."\n"..S("Needs Orange Leaves to grow"),
160 bud_interval = 34,
161 bud_chance = 10,
162 flower_interval = 33,
163 flower_chance = 60,
164 neighbors = {"hades_trees:orange_leaves"},
165 bud_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
166 flower_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
169 refruit.add_refruit("banana", {
170 fruit_itemstring = "hades_trees:banana",
171 bud_description = S("Banana Bud"),
172 bud_tt = S("Grows to a Banana Flower").."\n"..surv.."\n"..S("Needs Banana Leaves to grow"),
173 flower_description = S("Banana Flower"),
174 flower_tt = S("Grows to an Banana").."\n"..surv.."\n"..S("Needs Banana Leaves to grow"),
175 bud_interval = 35,
176 bud_chance = 10,
177 flower_interval = 34,
178 flower_chance = 60,
179 neighbors = {"hades_trees:banana_leaves"},
180 bud_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
181 flower_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
184 refruit.add_refruit("cocoa", {
185 fruit_itemstring = "hades_trees:cocoa_pod",
186 bud_description = S("Cocoa Bud"),
187 bud_tt = S("Grows to a Cocoa Flower").."\n"..surv.."\n"..S("Needs Common Jungle Leaves to grow"),
188 flower_description = S("Cocoa Flower"),
189 flower_tt = S("Grows to Cocoa").."\n"..surv.."\n"..S("Needs Common Jungle Leaves to grow"),
190 bud_interval = 35,
191 bud_chance = 10,
192 flower_interval = 34,
193 flower_chance = 60,
194 neighbors = {"hades_trees:jungle_leaves"},
195 bud_selbox = {-0.1875, -0.25, -0.1875, 0.1875, 0.375, 0.1875},
196 flower_selbox = {-0.1875, -0.1875, -0.1875, 0.1875, 0.5, 0.1875},
199 refruit.add_refruit("coconut", {
200 fruit_itemstring = "hades_trees:coconut",
201 bud_description = S("Coconut Bud"),
202 bud_tt = S("Grows to a Coconut Flower").."\n"..surv.."\n"..S("Needs Common Jungle Leaves to grow"),
203 flower_description = S("Coconut Flower"),
204 flower_tt = S("Grows to a Coconut").."\n"..surv.."\n"..S("Needs Common Jungle Leaves to grow"),
205 bud_interval = 35,
206 bud_chance = 10,
207 flower_interval = 34,
208 flower_chance = 60,
209 neighbors = {"hades_trees:jungle_leaves"},
210 bud_selbox = {-2/16, -6/16, -2/16, 2/16, 3/16, 2/16},
211 flower_selbox = {-5/16, -7/16, -5/16, 5/16, 7/16, 5/16},