Getting started on moving all default dependencies to a single root mod

This commit is contained in:
FaceDeer
2022-08-01 17:37:41 -06:00
parent e5ceed23b8
commit b6c4dedcfb
23 changed files with 359 additions and 264 deletions

View File

@ -1,145 +1,40 @@
-- Note that a circular table reference will result in a crash, TODO: guard against that.
-- Unlikely to be needed, though - it'd take a lot of work for users to get into this bit of trouble.
local function deep_copy(table_in)
local table_out = {}
for index, value in pairs(table_in) do
if type(value) == "table" then
table_out[index] = deep_copy(value)
else
table_out[index] = value
end
end
return table_out
end
local S = minetest.get_translator(minetest.get_current_modname())
df_trees.sounds = {}
df_trees.sounds.wood = default.node_sound_wood_defaults()
df_trees.sounds.leaves = default.node_sound_leaves_defaults()
df_trees.sounds.nethercap_wood = default.node_sound_wood_defaults({
footstep = {name = "default_snow_footstep", gain = 0.2},
df_trees.sounds.wood = df_dependencies.sound_wood()
df_trees.sounds.leaves = df_dependencies.sound_leaves()
df_trees.sounds.nethercap_wood = df_dependencies.sound_wood({
footstep = {name = df_dependencies.soundfile_snow_footstep, gain = 0.2},
})
df_trees.sounds.glass = default.node_sound_glass_defaults()
df_trees.sounds.glass = df_dependencies.sound_glass()
df_trees.node_names = {}
df_trees.node_names.torch = "default:torch"
df_trees.node_names.chest = "default:chest"
df_trees.node_names.furnace = "default:furnace"
df_trees.node_names.apple = "default:apple"
df_trees.node_names.gold_ingot = "default:gold_ingot"
df_trees.node_names.water_source = "default:water_source"
df_trees.node_names.river_water_source = "default:river_water_source"
df_trees.node_names.ice = "default:ice"
df_trees.node_names.water_flowing = "default:water_flowing"
df_trees.node_names.river_water_flowing = "default:river_water_flowing"
df_trees.node_names.snow = "default:snow"
df_trees.node_names.torch_wall = "default:torch_wall"
df_trees.node_names.stone_with_coal = "default:stone_with_coal"
df_trees.node_names.coalblock = "default:coalblock"
df_trees.node_names.paper = "default:paper"
df_trees.node_names.torch = df_dependencies.node_name_torch
df_trees.node_names.chest = df_dependencies.node_name_chest
df_trees.node_names.furnace = df_dependencies.node_name_furnace
df_trees.node_names.apple = df_dependencies.node_name_apple
df_trees.node_names.gold_ingot = df_dependencies.node_name_gold_ingot
df_trees.node_names.water_source = df_dependencies.node_name_water_source
df_trees.node_names.river_water_source = df_dependencies.node_name_river_water_source
df_trees.node_names.ice = df_dependencies.node_name_ice
df_trees.node_names.water_flowing = df_dependencies.node_name_water_flowing
df_trees.node_names.river_water_flowing = df_dependencies.node_name_river_water_flowing
df_trees.node_names.snow = df_dependencies.node_name_snow
df_trees.node_names.torch_wall = df_dependencies.node_name_torch_wall
df_trees.node_names.stone_with_coal = df_dependencies.node_name_stone_with_coal
df_trees.node_names.coalblock = df_dependencies.node_name_coalblock
df_trees.node_names.paper = df_dependencies.node_name_paper
df_trees.textures = {}
df_trees.textures.gold_block = "default_gold_block.png"
df_trees.textures.gold_block = df_dependencies.texture_gold_block
df_trees.register = {}
df_trees.register.all_stairs = function(name, override_def)
local mod = minetest.get_current_modname()
df_trees.register.all_stairs = df_dependencies.register_all_stairs
local node_def = minetest.registered_nodes[mod..":"..name]
override_def = override_def or {}
local node_copy = deep_copy(node_def)
for index, value in pairs(override_def) do
node_copy[index] = value
end
if minetest.get_modpath("stairs") then
stairs.register_stair_and_slab(
name,
mod ..":" .. name,
node_copy.groups,
node_copy.tiles,
S("@1 Stair", node_copy.description),
S("@1 Slab", node_copy.description),
node_copy.sounds
)
end
if minetest.get_modpath("moreblocks") then
stairsplus:register_all(mod, name, mod..":"..name, node_copy)
end
end
df_trees.register.all_fences = function (name, override_def)
local mod = minetest.get_current_modname()
local material = mod..":"..name
local node_def = minetest.registered_nodes[material]
override_def = override_def or {}
local burntime = override_def.burntime
default.register_fence(material .. "_fence", {
description = S("@1 Fence", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if burntime then
minetest.register_craft({
type = "fuel",
recipe = material .. "_fence",
burntime = burntime, -- ignoring two sticks
})
end
default.register_fence_rail(material .. "_fence_rail", {
description = S("@1 Fence Rail", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if burntime then
minetest.register_craft({
type = "fuel",
recipe = material .. "_fence_rail",
burntime = burntime * 4/16,
})
end
default.register_mesepost(material .. "_mese_light", {
description = S("@1 Mese Post Light", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if minetest.get_modpath("doors") then
doors.register_fencegate(material .. "_fence_gate", {
description = S("@1 Fence Gate", node_def.description),
texture = override_def.texture or node_def.tiles[1],
material = override_def.material or material,
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
sounds = node_def.sounds
})
if burntime then
minetest.register_craft({
type = "fuel",
recipe = material .. "_fence_gate_closed",
burntime = burntime * 2, -- ignoring four sticks
})
end
end
end
df_trees.register.all_fences = df_dependencies.register_all_fences
-- this stuff is only for during initialization
minetest.after(0, function()
@ -149,20 +44,18 @@ minetest.after(0, function()
df_trees.register = nil
end)
df_trees.iron_containing_nodes = df_dependencies.data_iron_containing_nodes
df_trees.copper_containing_nodes = df_dependencies.data_copper_containing_nodes
df_trees.mese_containing_nodes = df_dependencies.data_mese_containing_nodes
df_trees.iron_containing_nodes = {"default:stone_with_iron", "default:steelblock"}
df_trees.copper_containing_nodes = {"default:stone_with_copper", "default:copperblock"}
df_trees.mese_containing_nodes = {"default:stone_with_mese", "default:mese"}
df_trees.after_place_leaves = default.after_place_leaves
df_trees.register_leafdecay = default.register_leafdecay
df_trees.after_place_leaves = df_dependencies.after_place_leaves
df_trees.register_leafdecay = df_dependencies.register_leafdecay
-- This is used by other mods, leave it exposed
df_trees.node_sound_tree_soft_fungus_defaults = function(table)
table = table or {}
table.footstep = table.footstep or
{name = "dfcaverns_fungus_footstep", gain = 0.3}
default.node_sound_wood_defaults(table)
df_dependencies.sound_wood(table)
return table
end

View File

@ -248,23 +248,6 @@ local c_stem = minetest.get_content_id("df_trees:goblin_cap_stem")
local c_cap = minetest.get_content_id("df_trees:goblin_cap")
local c_gills = minetest.get_content_id("df_trees:goblin_cap_gills")
-- If the farming mod is installed, add the "straw" group to farming straw.
-- This way we just need to check for group:straw to get cave straw as well, without
-- needing a df_farming dependency for this mod.
if minetest.get_modpath("farming") then
local straw_def = minetest.registered_items["farming:straw"]
if straw_def then
local new_groups = {}
for group, val in pairs(straw_def.groups) do
new_groups[group] = val
end
new_groups.straw = 1
minetest.override_item("farming:straw", {
groups = new_groups
})
end
end
df_trees.spawn_goblin_cap = function(pos)
if math.random() < 0.1 then
if math.random() < 0.5 then

View File

@ -22,17 +22,6 @@ Blood Thorn Stem=Blutdornstamm
Dead Blood Thorn Spike=
Dead Blood Thorn Stem=
### dependencies.lua ###
@1 Fence=
@1 Fence Gate=
@1 Fence Rail=
@1 Mese Post Light=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Slab=@1 Platte
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Stair=@1 Treppe
### doc.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE

View File

@ -17,17 +17,6 @@ Blood Thorn Stem=Gambo di spina del sangue
Dead Blood Thorn Spike=Spuntone di spina del sangue morta
Dead Blood Thorn Stem=Gambo di spina del sangue morta
### dependencies.lua ###
@1 Fence=
@1 Fence Gate=
@1 Fence Rail=
@1 Mese Post Light=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Slab=@1 Lastra
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
@1 Stair=@1 Scala
### doc.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE

View File

@ -17,15 +17,6 @@ Blood Thorn Stem=
Dead Blood Thorn Spike=
Dead Blood Thorn Stem=
### dependencies.lua ###
@1 Fence=
@1 Fence Gate=
@1 Fence Rail=
@1 Mese Post Light=
@1 Slab=
@1 Stair=
### doc.lua ###
A torchspine alternates between active and quiescent phases and emits dim light when active. They can be harvested for torches, and their embers sprout into new torchspines when placed on flammable surfaces.=

View File

@ -1,4 +1,4 @@
name = df_trees
description = Adds various types of underground fungal "trees". Light kills their saplings, they only grow in the dark.
depends = default
optional_depends = doc, moreblocks, stairs, vessels, basic_materials, farming, doors, beds, df_farming, mapgen_helper
depends = df_dependencies
optional_depends = doc, vessels, basic_materials, beds, df_farming, mapgen_helper