bonemeal/mods.lua

441 lines
14 KiB
Lua
Raw Permalink Normal View History

2017-01-15 21:34:17 +01:00
2017-01-15 21:54:28 +01:00
-- craft bones from animalmaterials into bonemeal
if minetest.get_modpath("animalmaterials") then
minetest.register_craft({
output = "bonemeal:bonemeal 2",
recipe = {{"animalmaterials:bone"}}
2017-01-15 21:54:28 +01:00
})
end
if minetest.get_modpath("default") then
-- saplings
local function pine_grow(pos)
if minetest.find_node_near(pos, 1,
{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
default.grow_new_snowy_pine_tree(pos)
else
default.grow_new_pine_tree(pos)
end
end
local function cactus_grow(pos)
default.grow_cactus(pos, minetest.get_node(pos))
end
local function papyrus_grow(pos)
default.grow_papyrus(pos, minetest.get_node(pos))
end
bonemeal:add_sapling({
{"default:sapling", default.grow_new_apple_tree, "soil"},
{"default:junglesapling", default.grow_new_jungle_tree, "soil"},
{"default:emergent_jungle_sapling", default.grow_new_emergent_jungle_tree, "soil"},
{"default:acacia_sapling", default.grow_new_acacia_tree, "soil"},
{"default:aspen_sapling", default.grow_new_aspen_tree, "soil"},
{"default:pine_sapling", pine_grow, "soil"},
{"default:bush_sapling", default.grow_bush, "soil"},
{"default:acacia_bush_sapling", default.grow_acacia_bush, "soil"},
{"default:large_cactus_seedling", default.grow_large_cactus, "sand"},
{"default:blueberry_bush_sapling", default.grow_blueberry_bush, "soil"},
{"default:pine_bush_sapling", default.grow_pine_bush, "soil"},
{"default:cactus", cactus_grow, "sand"},
{"default:papyrus", papyrus_grow, "soil"}
})
-- decoration
local green_grass = {
"default:grass_2", "default:grass_3", "default:grass_4",
"default:grass_5", "", ""
}
local dry_grass = {
"default:dry_grass_2", "default:dry_grass_3", "default:dry_grass_4",
"default:dry_grass_5", "", ""
}
local flowers = {}
minetest.after(0.1, function()
for node, def in pairs(minetest.registered_nodes) do
if def.groups
and def.groups.flower
and not node:find("waterlily")
and not node:find("seaweed")
and not node:find("xdecor:potted_")
and not node:find("df_farming:") then
flowers[#flowers + 1] = node
end
end
end)
bonemeal:add_deco({
{"default:dirt", bonemeal.green_grass, flowers},
{"default:dirt_with_grass", green_grass, flowers},
{"default:dry_dirt", dry_grass, {}},
{"default:dry_dirt_with_dry_grass", dry_grass, {}},
{"default:dirt_with_dry_grass", dry_grass, flowers},
{"default:sand", {}, {"default:dry_shrub", "", "", ""} },
{"default:desert_sand", {}, {"default:dry_shrub", "", "", ""} },
{"default:silver_sand", {}, {"default:dry_shrub", "", "", ""} },
{"default:dirt_with_rainforest_litter", {}, {"default:junglegrass", "", "", ""}}
})
end
if farming then
bonemeal:add_crop({
{"farming:cotton_", 8, "farming:seed_cotton"},
{"farming:wheat_", 8, "farming:seed_wheat"}
})
end
2017-01-15 21:34:17 +01:00
if farming and farming.mod and farming.mod == "redo" then
bonemeal:add_crop({
{"farming:tomato_", 8},
{"farming:corn_", 8},
{"farming:melon_", 8},
{"farming:pumpkin_", 8},
{"farming:beanpole_", 5},
{"farming:blueberry_", 4},
{"farming:raspberry_", 4},
{"farming:carrot_", 8},
2018-03-22 16:56:32 +01:00
{"farming:cocoa_", 4},
2017-01-15 21:34:17 +01:00
{"farming:coffee_", 5},
{"farming:cucumber_", 4},
{"farming:potato_", 4},
{"farming:grapes_", 8},
2022-09-15 09:04:07 +02:00
{"farming:rhubarb_", 4},
{"farming:barley_", 8, "farming:seed_barley"},
{"farming:hemp_", 8, "farming:seed_hemp"},
{"farming:chili_", 8},
{"farming:garlic_", 5},
{"farming:onion_", 5},
2020-12-13 10:20:21 +01:00
{"farming:pepper_", 7},
2018-02-08 12:12:00 +01:00
{"farming:pineapple_", 8},
2018-03-21 11:42:05 +01:00
{"farming:pea_", 5},
2018-04-30 14:27:35 +02:00
{"farming:beetroot_", 5},
{"farming:rye_", 8, "farming:seed_rye"},
{"farming:oat_", 8, "farming:seed_oat"},
2023-04-28 10:18:11 +02:00
{"farming:rice_", 8, "farming:seed_rice"},
{"farming:mint_", 4, "farming:seed_mint"},
2020-12-10 16:35:18 +01:00
{"farming:cabbage_", 6},
{"farming:lettuce_", 5},
2020-12-13 11:36:06 +01:00
{"farming:blackberry_", 4},
{"farming:vanilla_", 8},
2021-03-11 10:49:20 +01:00
{"farming:soy_", 7},
{"farming:artichoke_", 5},
2021-09-28 15:04:25 +02:00
{"farming:parsley_", 3},
{"farming:sunflower_", 8, "farming:seed_sunflower"},
{"farming:asparagus_", 5},
{"farming:eggplant_", 4},
2022-09-15 09:04:07 +02:00
{"farming:spinach_", 4},
2022-10-28 13:21:42 +02:00
{"farming:ginger_", 4},
2022-09-15 09:04:07 +02:00
{"ethereal:strawberry_", 8}
2017-01-15 21:34:17 +01:00
})
end
if minetest.get_modpath("ethereal") then
bonemeal:add_crop({
{"ethereal:strawberry_", 8},
{"ethereal:onion_", 5}
2017-01-15 21:34:17 +01:00
})
bonemeal:add_sapling({
{"ethereal:palm_sapling", ethereal.grow_palm_tree, "soil"},
{"ethereal:palm_sapling", ethereal.grow_palm_tree, "sand"},
{"ethereal:yellow_tree_sapling", ethereal.grow_yellow_tree, "soil"},
{"ethereal:big_tree_sapling", ethereal.grow_big_tree, "soil"},
{"ethereal:banana_tree_sapling", ethereal.grow_banana_tree, "soil"},
{"ethereal:frost_tree_sapling", ethereal.grow_frost_tree, "soil"},
{"ethereal:mushroom_sapling", ethereal.grow_mushroom_tree, "soil"},
{"ethereal:willow_sapling", ethereal.grow_willow_tree, "soil"},
{"ethereal:redwood_sapling", ethereal.grow_redwood_tree, "soil"},
2021-08-20 12:24:56 +02:00
{"ethereal:giant_redwood_sapling", ethereal.grow_giant_redwood_tree, "soil"},
2017-01-15 21:34:17 +01:00
{"ethereal:orange_tree_sapling", ethereal.grow_orange_tree, "soil"},
{"ethereal:bamboo_sprout", ethereal.grow_bamboo_tree, "soil"},
{"ethereal:birch_sapling", ethereal.grow_birch_tree, "soil"},
2020-12-12 21:05:25 +01:00
{"ethereal:sakura_sapling", ethereal.grow_sakura_tree, "soil"},
{"ethereal:lemon_tree_sapling", ethereal.grow_lemon_tree, "soil"},
2023-06-08 17:00:18 +02:00
{"ethereal:olive_tree_sapling", ethereal.grow_olive_tree, "soil"},
{"ethereal:basandra_bush_sapling", ethereal.grow_basandra_bush, "soil"}
2017-01-15 21:34:17 +01:00
})
2017-01-19 10:28:09 +01:00
local grass = {"default:grass_3", "default:grass_4", "default:grass_5", ""}
bonemeal:add_deco({
2017-01-18 12:34:31 +01:00
{"ethereal:crystal_dirt", {"ethereal:crystalgrass", "", "", "", ""}, {}},
{"ethereal:fiery_dirt", {"ethereal:dry_shrub", "", "", "", ""}, {}},
2017-01-19 10:28:09 +01:00
{"ethereal:prairie_dirt", grass, {"flowers:dandelion_white",
"flowers:dandelion_yellow", "flowers:geranium", "flowers:rose",
"flowers:tulip", "flowers:viola", "ethereal:strawberry_7"}},
{"ethereal:gray_dirt", {}, {"ethereal:snowygrass", "", ""}},
{"ethereal:cold_dirt", {}, {"ethereal:snowygrass", "", ""}},
{"ethereal:mushroom_dirt", {}, {"flowers:mushroom_red", "flowers:mushroom_brown",
"ethereal:spore_grass", "ethereal:spore_grass", "", "", ""}},
2017-01-19 10:28:09 +01:00
{"ethereal:jungle_dirt", grass, {"default:junglegrass", "", "", ""}},
{"ethereal:grove_dirt", grass, {"ethereal:fern", "", "", ""}},
{"ethereal:bamboo_dirt", grass, {}}
})
2017-01-15 21:34:17 +01:00
end
if minetest.get_modpath("moretrees") then
-- special fir check for snow
local function fir_grow(pos)
if minetest.find_node_near(pos, 1,
{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
moretrees.grow_fir_snow(pos)
else
moretrees.grow_fir(pos)
end
end
bonemeal:add_sapling({
{"moretrees:beech_sapling", moretrees.spawn_beech_object, "soil"},
{"moretrees:apple_tree_sapling", moretrees.spawn_apple_tree_object, "soil"},
{"moretrees:oak_sapling", moretrees.spawn_oak_object, "soil"},
{"moretrees:sequoia_sapling", moretrees.spawn_sequoia_object, "soil"},
{"moretrees:birch_sapling", moretrees.grow_birch, "soil"},
{"moretrees:palm_sapling", moretrees.spawn_palm_object, "soil"},
{"moretrees:palm_sapling", moretrees.spawn_palm_object, "sand"},
{"moretrees:date_palm_sapling", moretrees.spawn_date_palm_object, "soil"},
{"moretrees:date_palm_sapling", moretrees.spawn_date_palm_object, "sand"},
{"moretrees:spruce_sapling", moretrees.grow_spruce, "soil"},
{"moretrees:cedar_sapling", moretrees.spawn_cedar_object, "soil"},
{"moretrees:poplar_sapling", moretrees.spawn_poplar_object, "soil"},
2022-12-19 11:56:31 +01:00
{"moretrees:poplar_small_sapling", moretrees.spawn_poplar_small_object, "soil"},
2017-01-15 21:34:17 +01:00
{"moretrees:willow_sapling", moretrees.spawn_willow_object, "soil"},
{"moretrees:rubber_tree_sapling", moretrees.spawn_rubber_tree_object, "soil"},
{"moretrees:fir_sapling", fir_grow, "soil"}
2017-01-15 21:34:17 +01:00
})
elseif minetest.get_modpath("technic_worldgen") then
2017-06-24 16:01:48 +02:00
bonemeal:add_sapling({
{"moretrees:rubber_tree_sapling", technic.rubber_tree_model, "soil"}
})
2017-01-15 21:34:17 +01:00
end
if minetest.get_modpath("caverealms") then
local fil = minetest.get_modpath("caverealms") .. "/schematics/shroom.mts"
local add_shroom = function(pos)
minetest.swap_node(pos, {name = "air"})
minetest.place_schematic(
{x = pos.x - 5, y = pos.y, z = pos.z - 5}, fil, 0, nil, false)
end
bonemeal:add_sapling({
{"caverealms:mushroom_sapling", add_shroom, "soil"}
})
end
local function y_func(grow_func)
return function(pos)
grow_func({x = pos.x, y = pos.y - 1, z = pos.z})
end
end
if minetest.get_modpath("ferns") then
bonemeal:add_sapling({
{"ferns:sapling_giant_tree_fern", y_func(abstract_ferns.grow_giant_tree_fern), "soil"},
{"ferns:sapling_giant_tree_fern", y_func(abstract_ferns.grow_giant_tree_fern), "sand"},
{"ferns:sapling_tree_fern", y_func(abstract_ferns.grow_tree_fern), "soil"}
})
end
if minetest.get_modpath("dryplants") then
bonemeal:add_sapling({
{"dryplants:reedmace_sapling", y_func(abstract_dryplants.grow_reedmace), "soil"}
})
end
if minetest.get_modpath("dye") then
2023-03-10 15:46:38 +01:00
local bonemeal_dyes = {bonemeal = "white", fertiliser = "green", mulch = "brown"}
for mat, dye in pairs(bonemeal_dyes) do
minetest.register_craft({
output = "dye:" .. dye .. " 4",
recipe = {
{"bonemeal:" .. mat}
},
})
end
end
if minetest.get_modpath("df_trees") then
local function spore_tree_fix(pos)
minetest.set_node(pos, {name = "air"})
df_trees.spawn_spore_tree(pos)
end
local function fungiwood_fix(pos)
minetest.set_node(pos, {name = "air"})
df_trees.spawn_fungiwood(pos)
end
2022-07-24 09:34:46 +02:00
local function tunnel_fix(pos)
minetest.set_node(pos, {name = "air"})
df_trees.spawn_tunnel_tube(pos)
end
bonemeal:add_sapling({
{"df_trees:black_cap_sapling", df_trees.spawn_black_cap, "soil", true},
{"df_trees:fungiwood_sapling", fungiwood_fix, "soil", true},
{"df_trees:goblin_cap_sapling", df_trees.spawn_goblin_cap, "soil", true},
{"df_trees:spore_tree_sapling", spore_tree_fix, "soil", true},
{"df_trees:tower_cap_sapling", df_trees.spawn_tower_cap, "soil", true},
2022-07-24 09:34:46 +02:00
{"df_trees:tunnel_tube_sapling", tunnel_fix, "soil", true},
2022-07-01 13:32:38 +02:00
{"df_trees:nether_cap_sapling", df_trees.spawn_nether_cap, "group:nether_cap", true},
{"df_trees:nether_cap_sapling", df_trees.spawn_nether_cap, "group:cools_lava", true}
})
end
if minetest.get_modpath("df_farming") then
bonemeal:add_crop({
{"df_farming:cave_wheat_", 8, "df_farming:cave_wheat_seed", true},
{"df_farming:dimple_cup_", 4, "df_farming:dimple_cup_seed", true},
{"df_farming:pig_tail_", 8, "df_farming:pig_tail_seed", true},
{"df_farming:plump_helmet_", 4, "df_farming:plump_helmet_spawn", true},
{"df_farming:quarry_bush_", 5, "df_farming:quarry_bush_seed", true},
{"df_farming:sweet_pod_", 6, "df_farming:sweet_pod_seed", true}
})
end
2022-07-01 15:36:36 +02:00
if minetest.get_modpath("df_primordial_items") then
local function mush_fix(pos)
minetest.set_node(pos, {name = "air"})
mapgen_helper.place_schematic(pos,
2023-03-10 15:46:38 +01:00
df_primordial_items.get_primordial_mushroom(), (math.random(4) - 1) * 90)
2022-07-01 15:36:36 +02:00
end
local function fern_fix(pos)
minetest.set_node(pos, {name = "air"})
local rotations = {0, 90, 180, 270}
mapgen_helper.place_schematic(pos,
2023-03-10 15:46:38 +01:00
df_primordial_items.get_fern_schematic(), rotations[math.random(#rotations)])
2022-07-01 15:36:36 +02:00
end
local function blood_fix(pos)
df_trees.grow_blood_thorn(pos, minetest.get_node(pos))
end
2022-07-01 15:36:36 +02:00
bonemeal:add_sapling({
{"df_primordial_items:jungle_mushroom_sapling",
2023-03-10 15:46:38 +01:00
df_primordial_items.spawn_jungle_mushroom, "soil", true},
2022-07-01 15:36:36 +02:00
{"df_primordial_items:jungletree_sapling",
2023-03-10 15:46:38 +01:00
df_primordial_items.spawn_jungle_tree, "soil", true},
2022-07-01 15:36:36 +02:00
{"df_primordial_items:mush_sapling", mush_fix, "soil", true},
{"df_primordial_items:fern_sapling", fern_fix, "soil", true},
{"df_trees:blood_thorn", blood_fix, "sand", true}
2022-07-01 15:36:36 +02:00
})
local jgrass = {
"df_primordial_items:jungle_grass_1",
"df_primordial_items:jungle_grass_2",
"df_primordial_items:jungle_grass_3",
"df_primordial_items:fern_1",
"df_primordial_items:fern_2",
"", "", "", ""
}
local jdeco = {
"df_primordial_items:jungle_mushroom_1",
"df_primordial_items:jungle_mushroom_2",
"df_primordial_items:glow_plant_1",
"df_primordial_items:glow_plant_2",
"df_primordial_items:glow_plant_3",
"", "", ""
}
bonemeal:add_deco({
{"df_primordial_items:dirt_with_jungle_grass", jgrass, jdeco}
})
local fgrass = {
"df_primordial_items:fungal_grass_1",
"df_primordial_items:fungal_grass_2",
"", "", "", ""
}
local fdeco = {
"df_primordial_items:glow_orb_stalks",
"df_primordial_items:glow_pods",
"", "", ""
}
bonemeal:add_deco({
{"df_primordial_items:dirt_with_mycelium", fgrass, fdeco}
})
2022-07-01 15:36:36 +02:00
end
2023-05-08 18:47:32 +02:00
if minetest.get_modpath("everness") then
bonemeal:add_sapling({
{"everness:baobab_sapling", Everness.grow_baobab_tree, "soil"},
{"everness:coral_tree_bioluminescent_sapling",
Everness.coral_tree_bioluminescent, "soil"},
{"everness:coral_tree_sapling", Everness.grow_coral_tree, "soil"},
{"everness:crystal_bush_sapling", Everness.grow_crystal_bush, "soil"},
{"everness:crystal_tree_large_sapling", Everness.grow_crystal_large_tree, "soil"},
{"everness:crystal_tree_sapling", Everness.grow_crystal_tree, "soil"},
{"everness:cursed_bush_sapling", Everness.grow_cursed_bush, "soil"},
{"everness:cursed_dream_tree_sapling", Everness.grow_cursed_dream_tree, "soil"},
{"everness:dry_tree_sapling", Everness.grow_dry_tree, "soil"},
{"everness:sequoia_tree_sapling", Everness.grow_sequoia_tree, "soil"},
{"everness:willow_tree_sapling", Everness.grow_willow_tree, "soil"}
})
end
2023-07-23 19:57:09 +02:00
if minetest.get_modpath("bushes_classic") then
local function grow_bush(pos)
local meta = minetest.get_meta(pos)
local bush_name = meta:get_string("bush_type")
2023-07-24 08:21:55 +02:00
-- only change if meta found
if meta and bush_name then
minetest.swap_node(pos, {name = "bushes:" .. bush_name .. "_bush"})
end
2023-07-23 19:57:09 +02:00
end
bonemeal:add_sapling({
{"bushes:fruitless_bush", grow_bush, "soil"},
})
end