initial work for restricted plant growth. split out growth conditions for trees, and reworked torchspine to not use ABMs while I was at it.

This commit is contained in:
FaceDeer
2022-07-22 18:36:45 -06:00
parent f23d4115bd
commit 46765df3ef
38 changed files with 270 additions and 193 deletions

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
---------------------------------------------------------------------------------------
-- Glownode and stalk

View File

@ -2,7 +2,7 @@ if not minetest.get_modpath("doc") then
return
end
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
df_primordial_items.doc.big_mushroom_desc = S("Compared to the behemoths found elsewhere in the deep places of the world, the giant mushrooms of the primordial jungles are on the smaller side - often overwhelmed by the green plants that grow in the mysterious light below. Still, they can become substantial resources.")
df_primordial_items.doc.big_mushroom_usage = S("The soft flesh of these large mushrooms is much less woody than other giant mushrooms, making it ill-suited to structural use. This makes it rather more nutritious, however.")

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_craftitem("df_primordial_items:primordial_fruit", {
description = S("Primordial Fruit"),

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
-----------------------------------------------------------------------------------------------
-- Plants

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
------------------------------------------------------------------------------------
-- Nodes
@ -307,12 +307,11 @@ minetest.register_node("df_primordial_items:fern_sapling", {
use_texture_alpha = "clip",
sunlight_propagates = true,
on_construct = function(pos)
if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") == 0 then
return
if df_primordial_items.giant_fern_growth_permitted(pos) then
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()

View File

@ -1,6 +1,6 @@
-- This file defines a type of root-like growth that spreads over the surface of the ground in a random web-like pattern
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
-- hub_thickness -- the bit in the middle that's seen at the ends and corners of long hypha runs
-- connector_thickness
@ -320,7 +320,9 @@ minetest.register_node("df_primordial_items:giant_hypha_apical_meristem", {
_dfcaverns_dead_node = "df_primordial_items:giant_hypha_root",
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
on_construct = function(pos)
minetest.get_node_timer(pos):start(math.random(min_growth_delay, max_growth_delay))
if df_primordial_items.giant_mycelium_growth_permitted(pos) then
minetest.get_node_timer(pos):start(math.random(min_growth_delay, max_growth_delay))
end
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()

View File

@ -2,7 +2,6 @@ df_primordial_items = {}
df_primordial_items.doc = {}
local modname = minetest.get_current_modname()
df_primordial_items.S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
dofile(modpath.."/dependencies.lua")
@ -15,4 +14,5 @@ dofile(modpath.."/fungal_nodes.lua")
dofile(modpath.."/ceiling_fungus.lua")
dofile(modpath.."/primordial_mushroom.lua")
dofile(modpath.."/giant_mycelium.lua")
dofile(modpath.."/edibles.lua")
dofile(modpath.."/edibles.lua")
dofile(modpath.."/sapling_growth_conditions.lua")

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
------------------------------------------------------------------------------------------
-- Big jungle mushroom
@ -109,12 +109,11 @@ minetest.register_node("df_primordial_items:jungle_mushroom_sapling", {
sunlight_propagates = true,
on_construct = function(pos)
if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") == 0 then
return
if df_primordial_items.jungle_mushroom_growth_permitted(pos) then
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
----------------------------------------------------
-- Ferns

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
-- Leaves
minetest.register_node("df_primordial_items:jungle_leaves", {
@ -237,12 +237,11 @@ minetest.register_node("df_primordial_items:jungletree_sapling", {
use_texture_alpha = "clip",
sunlight_propagates = true,
on_construct = function(pos)
if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") == 0 then
return
if df_primordial_items.jungletree_growth_permitted(pos) then
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()

View File

@ -1,4 +1,4 @@
local S = df_primordial_items.S
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_primordial_items:mushroom_trunk", {
description = S("Primordial Mushroom Trunk"),
@ -750,12 +750,11 @@ minetest.register_node("df_primordial_items:mush_sapling", {
use_texture_alpha = "clip",
sunlight_propagates = true,
on_construct = function(pos)
if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") == 0 then
return
if df_primordial_items.primordial_mushroom_growth_permitted(pos) then
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end
minetest.get_node_timer(pos):start(math.random(
df_trees.config.tree_min_growth_delay,
df_trees.config.tree_max_growth_delay))
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()

View File

@ -0,0 +1,22 @@
-- these methods should indicate whether a sapling placed at pos should bother attempting to grow.
-- check soil conditions and biome here, for example.
df_primordial_items.giant_fern_growth_permitted = function(pos)
return minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") > 0
end
df_primordial_items.giant_mycelium_growth_permitted = function(pos)
return true
end
df_primordial_items.jungle_mushroom_growth_permitted = function(pos)
return minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") > 0
end
df_primordial_items.jungletree_growth_permitted = function(pos)
return minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") > 0
end
df_primordial_items.primordial_mushroom_growth_permitted = function(pos)
return minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") > 0
end