Leaves now require matching trunk, not any trunk

master
Wuzzy 2021-08-07 19:14:39 +02:00
parent eb1b4d9ed3
commit e58142c6b5
14 changed files with 35 additions and 13 deletions

View File

@ -5,8 +5,6 @@ Note: If no group rating is specified, use 1.
Node identities:
* `tree`: Tree Trunk
* `tree=1`: Prevents leaf decay
* `tree=2`: Does not prevent leaf decay
* `sapling`: Sapling
* `leaves`: Leaves
* `bark`: Bark
@ -91,7 +89,8 @@ Action groups:
* `food=2`: Food (eating)
* `food=3`: Food (drinking)
* `eatable=X`: Item can be eaten or consumed (restoring X food points)
* `leafdecay`: Leaves that decay when not near a `group:tree` node
* `leafdecay=X`: Leaves that decay when not near a node specified in `_hades_trees_trunk` field (X=distance from node)
* `leafdecay_any`: In combination with `leafdecay`, will expect a `group:tree` node instead to prevent decay
* `leafdecay_drop`: Node will drop itself when leaf-decaying
* `wet` Considered wet for farming purposes
* `fruit_regrow=3`: Regrowing fruit

View File

@ -35,6 +35,7 @@ function hades_refruit.add_hades_refruit(id, def)
end,
node_dig_prediction = bud_itemstring,
_hades_magic_next = bud_itemstring,
_hades_trees_trunk = def.trunk,
})
minetest.register_node(bud_itemstring, {
@ -56,6 +57,7 @@ function hades_refruit.add_hades_refruit(id, def)
drop = def.bud_drop or {},
sounds = hades_sounds.node_sound_leaves_defaults(),
_hades_magic_next = flower_itemstring,
_hades_trees_trunk = def.trunk,
})
minetest.register_node(flower_itemstring, {
description = def.flower_description,
@ -76,6 +78,7 @@ function hades_refruit.add_hades_refruit(id, def)
drop = def.flower_drop or {},
sounds = hades_sounds.node_sound_leaves_defaults(),
_hades_magic_next = def.fruit_itemstring,
_hades_trees_trunk = def.trunk,
})
minetest.register_abm({
@ -119,7 +122,7 @@ local stick_drop = function(rarity)
}
end
local surv = S("Needs a tree trunk to survive")
local surv = S("Needs a matching tree trunk to survive")
hades_refruit.add_hades_refruit("apple", {
fruit_itemstring = "hades_trees:apple",
@ -134,6 +137,7 @@ hades_refruit.add_hades_refruit("apple", {
flower_interval = 33,
flower_chance = 60,
neighbors = {"hades_trees:leaves"},
trunk = "hades_trees:tree",
bud_selbox = {-0.1875, -0.3125, -0.1875, 0.1875, 0.3125, 0.1875},
flower_selbox = {-0.1875, -0.3125, -0.1875, 0.1875, 0.3125, 0.1875},
})
@ -151,6 +155,7 @@ hades_refruit.add_hades_refruit("olive", {
flower_interval = 34,
flower_chance = 60,
neighbors = {"hades_trees:olive_leaves"},
trunk = "hades_trees:tree",
bud_selbox = {-2/16, 1/16, -2/16, 2/16, 0.5, 2/16},
flower_selbox = {-4/16, -1/16, -4/16, 4/16, 0.5, 4/16},
})
@ -166,6 +171,7 @@ hades_refruit.add_hades_refruit("orange", {
flower_interval = 33,
flower_chance = 60,
neighbors = {"hades_trees:orange_leaves"},
trunk = "hades_trees:orange_tree",
bud_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
flower_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
})
@ -181,6 +187,7 @@ hades_refruit.add_hades_refruit("banana", {
flower_interval = 34,
flower_chance = 60,
neighbors = {"hades_trees:banana_leaves"},
trunk = "hades_trees:tree",
bud_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
flower_selbox = {-0.1875, -0.4375, -0.1875, 0.1875, 0.25, 0.1875},
})
@ -196,6 +203,7 @@ hades_refruit.add_hades_refruit("cocoa", {
flower_interval = 34,
flower_chance = 60,
neighbors = {"hades_trees:jungle_leaves"},
trunk = "hades_trees:jungle_tree",
bud_selbox = {-0.1875, -0.25, -0.1875, 0.1875, 0.375, 0.1875},
flower_selbox = {-0.1875, -0.1875, -0.1875, 0.1875, 0.5, 0.1875},
})
@ -211,6 +219,7 @@ hades_refruit.add_hades_refruit("coconut", {
flower_interval = 34,
flower_chance = 60,
neighbors = {"hades_trees:jungle_leaves"},
trunk = "hades_trees:jungle_tree",
bud_selbox = {-2/16, -6/16, -2/16, 2/16, 3/16, 2/16},
flower_selbox = {-5/16, -7/16, -5/16, 5/16, 7/16, 5/16},
})

View File

@ -21,7 +21,7 @@ hades_trees.register_trunk = function(id, def)
fixed = {{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }},
},
is_ground_content = false,
groups = {tree=(def.tree_group or 1),choppy=2,oddly_breakable_by_hand=1,flammable=2},
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = def.sounds or hades_sounds.node_sound_wood_defaults(),
})
end
@ -91,9 +91,11 @@ hades_trees.register_leaves = function(id, def)
waving = 1,
is_ground_content = false,
place_param2 = 1,
groups = {snappy=3, leafdecay=def.leafdecay or 3, flammable=2, leaves=1, ash_fertilizer=def.ash_fertilizer, porous=1},
groups = {snappy=3, leafdecay=def.leafdecay or 3, leafdecay_any=def.leafdecay_any, flammable=2, leaves=1, ash_fertilizer=def.ash_fertilizer, porous=1},
drop = drop,
sounds = def.sounds or hades_sounds.node_sound_leaves_defaults(),
-- Store node name of corresponding trunk node
_hades_trees_trunk = def.trunk,
})
end
@ -104,7 +106,7 @@ hades_trees.register_fruit = function(id, def)
food = 2
on_use = minetest.item_eat(sat)
end
local groups = {dig_immediate=3,flammable=2,leafdecay=3,leafdecay_drop=1,food=food,eatable=sat}
local groups = {dig_immediate=3,flammable=2,leafdecay=def.leafdecay or 3,leafdecay_drop=1,food=food,eatable=sat}
if def.groups then
for k,v in pairs(def.groups) do
if v == 0 then

View File

@ -11,6 +11,7 @@ hades_trees.register_leaves("leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:sapling",
drop_rarity = 20,
trunk = "hades_trees:tree",
})
hades_trees.register_fruit("apple", {
description = S("Apple"),

View File

@ -6,6 +6,7 @@ hades_trees.register_leaves("banana_leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:banana_sapling",
drop_rarity = 10,
trunk = "hades_trees:tree",
})
hades_trees.register_sapling("banana_sapling", {
description = S("Banana Sapling"),

View File

@ -14,6 +14,7 @@ hades_trees.register_leaves("birch_leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:birch_sapling",
drop_rarity = 30,
trunk = "hades_trees:birch_tree",
})
hades_trees.register_sapling("birch_sapling", {
description = S("Birch Sapling"),

View File

@ -10,6 +10,7 @@ hades_trees.register_leaves("canvas_leaves", {
ash_fertilizer = 0,
drop_item = "hades_trees:canvas_sapling",
drop_rarity = 20,
trunk = "hades_trees:canvas_tree",
})
hades_trees.register_bark("canvas_bark", {

View File

@ -8,8 +8,6 @@ hades_trees.register_trunk("charred_tree", {
"hades_trees_charred_tree.png",
},
sounds = hades_sounds.node_sound_wood_defaults({pitch=0.8}),
-- set tree group to 2 to force leafdecay
tree_group = 2,
})
hades_trees.register_bark("charred_bark", {
description = S("Charred Bark"),
@ -21,7 +19,9 @@ hades_trees.register_leaves("burned_branches", {
description = S("Burned Branches"),
image = "hades_trees_burned_branches.png",
sounds = hades_sounds.node_sound_straw_defaults(),
leafdecay = 0,
-- Can survive near any trunk
leafdecay_any = 1,
trunk = "hades_trees:charred_tree",
})
minetest.register_craft({

View File

@ -6,6 +6,7 @@ hades_trees.register_leaves("cultivated_jungle_leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:cultivated_jungle_sapling",
drop_rarity = 25,
trunk = "hades_trees:jungle_tree",
})
hades_trees.register_sapling("cultivated_jungle_sapling", {
description = S("Cultivated Tropical Tree Sapling"),

View File

@ -15,6 +15,7 @@ hades_trees.register_leaves("jungle_leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:jungle_sapling",
drop_rarity = 25,
trunk = "hades_trees:jungle_tree",
})
hades_trees.register_sapling("jungle_sapling", {
description = S("Common Tropical Tree Sapling"),

View File

@ -56,7 +56,8 @@ minetest.register_abm({
action = function(p0, node, _, _)
minetest.log("verbose", "[hades_trees] leafdecay ABM at "..p0.x..", "..p0.y..", "..p0.z..")")
local do_preserve = false
local d = minetest.registered_nodes[node.name].groups.leafdecay
local def = minetest.registered_nodes[node.name]
local d = def.groups.leafdecay
if not d or d == 0 then
minetest.log("verbose", "[hades_trees] not groups.leafdecay")
return
@ -66,6 +67,8 @@ minetest.register_abm({
-- Prevent decay
return
end
local trunk_to_check = def._hades_trees_trunk
local any = def.groups.leafdecay_any == 1
local p0_hash = nil
if hades_trees.leafdecay_enable_cache then
p0_hash = minetest.hash_node_position(p0)
@ -74,7 +77,7 @@ minetest.register_abm({
local n = minetest.get_node(trunkp)
local reg = minetest.registered_nodes[n.name]
-- Assume ignore is a trunk, to make the thing work at the border of the active area
if n.name == "ignore" or (reg and reg.groups.tree == 1) then
if (n.name == "ignore") or (any and reg and reg.groups.tree ~= 0) or (n.name == trunk_to_check) then
minetest.log("verbose", "[hades_trees] leafdecay: cached trunk still exists")
return
end
@ -92,7 +95,7 @@ minetest.register_abm({
local p1 = minetest.find_node_near(p0, d, {"ignore", "group:tree"})
if p1 then
local n1 = minetest.get_node(p1)
if n1.name == "ignore" or minetest.get_item_group(n1.name, "tree") == 1 then
if (n1.name == "ignore") or (any and minetest.get_item_group(n1.name, "tree") ~= 0) or (n1.name == trunk_to_check) then
do_preserve = true
if hades_trees.leafdecay_enable_cache then
minetest.log("verbose", "[hades_trees] leafdecay: caching trunk")

View File

@ -6,6 +6,7 @@ hades_trees.register_leaves("olive_leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:olive_sapling",
drop_rarity = 25,
trunk = "hades_trees:tree",
})
hades_trees.register_sapling("olive_sapling", {
description = S("Olive Tree Sapling"),

View File

@ -15,6 +15,7 @@ hades_trees.register_leaves("orange_leaves", {
ash_fertilizer = 3,
drop_item = "hades_trees:orange_sapling",
drop_rarity = 20,
trunk = "hades_trees:orange_tree",
})
hades_trees.register_sapling("orange_sapling", {
description = S("Orange Tree Sapling"),

View File

@ -13,6 +13,7 @@ hades_trees.register_leaves("pale_leaves", {
image = "hades_trees_pale_leaves.png",
drop_item = "hades_trees:pale_sapling",
drop_rarity = 10,
trunk = "hades_trees:pale_tree",
})
hades_trees.register_sapling("pale_sapling", {
description = S("Pale Tree Sapling"),