diff --git a/mods/MAPGEN/vl_extra_structures/CREDITS.md b/mods/MAPGEN/vl_extra_structures/CREDITS.md index db1e75c31..205f0df65 100644 --- a/mods/MAPGEN/vl_extra_structures/CREDITS.md +++ b/mods/MAPGEN/vl_extra_structures/CREDITS.md @@ -10,3 +10,7 @@ Schematics * Obelisks - kno10 * Cocoon - kno10 * Witches Circle - kno10 +* Statues - kno10 +* Forest Hideout - kno10 +* Forest Well - kno10 +* Forest Grave - kno10 diff --git a/mods/MAPGEN/vl_extra_structures/forest_grave.lua b/mods/MAPGEN/vl_extra_structures/forest_grave.lua new file mode 100644 index 000000000..6176c171a --- /dev/null +++ b/mods/MAPGEN/vl_extra_structures/forest_grave.lua @@ -0,0 +1,17 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) + +vl_structures.register_structure("forest_grave",{ + place_on = {"group:grass_block","group:dirt","mcl_core:dirt_with_grass"}, + flags = "place_center_x, place_center_z", + prepare = { tolerance = 3, clear_bottom = 0, padding = 0, corners = 0, foundation = -2 }, + chunk_probability = 20, + y_max = mcl_vars.mg_overworld_max, + y_min = 1, + biomes = { "Forest", "RoofedForest", "BirchForest", "FlowerForest", "CherryGrove", "ExtremeHills+" }, -- TODO: also add to some other biomes? + filenames = { + modpath.."/schematics/forest_grave.mts", + }, +}) + diff --git a/mods/MAPGEN/vl_extra_structures/forest_well.lua b/mods/MAPGEN/vl_extra_structures/forest_well.lua new file mode 100644 index 000000000..6657abac7 --- /dev/null +++ b/mods/MAPGEN/vl_extra_structures/forest_well.lua @@ -0,0 +1,18 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) + +vl_structures.register_structure("forest_well",{ + place_on = {"group:grass_block","group:dirt","mcl_core:dirt_with_grass"}, + flags = "place_center_x, place_center_z", + prepare = { tolerance = 3, clear_bottom = 1, clear_top = 0, padding = 0, corners = 1, foundation = -2 }, + chunk_probability = 20, + y_max = mcl_vars.mg_overworld_max, + y_min = 1, + biomes = { "Forest", "FlowerForest", "BirchForest", "CherryGrove", "RoofedForest", "MesaPlateauF", "ExtremeHills+", "Taiga", "MegaTaiga", "MegaSpruceTaiga" }, + filenames = { + modpath.."/schematics/forest_well_1.mts", + modpath.."/schematics/forest_well_2.mts", + }, +}) + diff --git a/mods/MAPGEN/vl_extra_structures/graveyard.lua b/mods/MAPGEN/vl_extra_structures/graveyard.lua index 1746a86b3..8541a6f28 100644 --- a/mods/MAPGEN/vl_extra_structures/graveyard.lua +++ b/mods/MAPGEN/vl_extra_structures/graveyard.lua @@ -2,12 +2,13 @@ local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) local modpath = minetest.get_modpath(modname) +-- TODO: the schematics could use ignore/air to ensure a nice headroom and open entranceway, then we could reduce terraforming? vl_structures.register_structure("graveyard",{ place_on = {"group:grass_block","group:dirt","mcl_core:dirt_with_grass"}, flags = "place_center_x, place_center_z", - prepare = { tolerance = 3, clear_bottom = 1, clear_top = 0, padding = 0, corners = 1, foundation = -2 }, - y_offset = function(pr) return -(pr:next(3,3)) end, + prepare = { tolerance = 2, clear_bottom = 0, clear_top = -2, padding = 1, corners = 2, foundation = -2 }, chunk_probability = 40, + y_offset = -3, y_max = mcl_vars.mg_overworld_max, y_min = 1, biomes = { "BirchForest", "Forest", "Plains", "Taiga" }, @@ -37,8 +38,9 @@ vl_structures.register_structure("graveyard",{ for _,n in pairs(minetest.find_nodes_in_area(p1,p2,{"group:wall"})) do mcl_walls.update_wall(n) end - local sp = minetest.find_nodes_in_area(pos,vector.offset(pos,0,3,0),{"mcl_mobspawners:spawner"}) - if not sp[1] then return end - mcl_mobspawners.setup_spawner(sp[1], "mobs_mc:zombie", 0, minetest.LIGHT_MAX+1, 10, 3, -1) + local sp = minetest.find_nodes_in_area(p1,p2,{"mcl_mobspawners:spawner"}) + if #sp > 0 then + mcl_mobspawners.setup_spawner(sp[1], "mobs_mc:zombie", 0, 10, 10, 10, 2) + end end }) diff --git a/mods/MAPGEN/vl_extra_structures/init.lua b/mods/MAPGEN/vl_extra_structures/init.lua index 289f77caf..8d18ce748 100644 --- a/mods/MAPGEN/vl_extra_structures/init.lua +++ b/mods/MAPGEN/vl_extra_structures/init.lua @@ -8,3 +8,7 @@ dofile(modpath.."/graveyard.lua") dofile(modpath.."/obelisks.lua") dofile(modpath.."/spider_cocoon.lua") dofile(modpath.."/witches_circle.lua") +dofile(modpath.."/statue.lua") +dofile(modpath.."/tree_hideout.lua") +dofile(modpath.."/forest_well.lua") +dofile(modpath.."/forest_grave.lua") diff --git a/mods/MAPGEN/vl_extra_structures/obelisks.lua b/mods/MAPGEN/vl_extra_structures/obelisks.lua index b757c1597..c34778669 100644 --- a/mods/MAPGEN/vl_extra_structures/obelisks.lua +++ b/mods/MAPGEN/vl_extra_structures/obelisks.lua @@ -4,7 +4,7 @@ local modpath = minetest.get_modpath(modname) vl_structures.register_structure("obelisk_sand",{ place_on = {"group:sand"}, flags = "place_center_x, place_center_z", - chunk_probability = 12, + chunk_probability = 20, y_max = mcl_vars.mg_overworld_max, y_min = 1, y_offset = -3, @@ -38,7 +38,7 @@ vl_structures.register_structure("obelisk_light",{ vl_structures.register_structure("obelisk_cobble",{ place_on = {"group:grass_block", "group:dirt"}, flags = "place_center_x, place_center_z", - chunk_probability = 25, + chunk_probability = 35, y_max = mcl_vars.mg_overworld_max, y_min = 1, y_offset = -2, diff --git a/mods/MAPGEN/vl_extra_structures/schematics/forest_grave.mts b/mods/MAPGEN/vl_extra_structures/schematics/forest_grave.mts new file mode 100644 index 000000000..4fc3c59e2 Binary files /dev/null and b/mods/MAPGEN/vl_extra_structures/schematics/forest_grave.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/schematics/forest_well_1.mts b/mods/MAPGEN/vl_extra_structures/schematics/forest_well_1.mts new file mode 100644 index 000000000..98d0934d0 Binary files /dev/null and b/mods/MAPGEN/vl_extra_structures/schematics/forest_well_1.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/schematics/forest_well_2.mts b/mods/MAPGEN/vl_extra_structures/schematics/forest_well_2.mts new file mode 100644 index 000000000..49d36037f Binary files /dev/null and b/mods/MAPGEN/vl_extra_structures/schematics/forest_well_2.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/schematics/mcl_extra_structures_graveyard_2.mts b/mods/MAPGEN/vl_extra_structures/schematics/mcl_extra_structures_graveyard_2.mts index e1c449285..a8cc40ddd 100644 Binary files a/mods/MAPGEN/vl_extra_structures/schematics/mcl_extra_structures_graveyard_2.mts and b/mods/MAPGEN/vl_extra_structures/schematics/mcl_extra_structures_graveyard_2.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/schematics/statue_1.mts b/mods/MAPGEN/vl_extra_structures/schematics/statue_1.mts new file mode 100644 index 000000000..bbc3715ec Binary files /dev/null and b/mods/MAPGEN/vl_extra_structures/schematics/statue_1.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/schematics/statue_2.mts b/mods/MAPGEN/vl_extra_structures/schematics/statue_2.mts new file mode 100644 index 000000000..4c63531cc Binary files /dev/null and b/mods/MAPGEN/vl_extra_structures/schematics/statue_2.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/schematics/tree_hideout.mts b/mods/MAPGEN/vl_extra_structures/schematics/tree_hideout.mts new file mode 100644 index 000000000..09961014a Binary files /dev/null and b/mods/MAPGEN/vl_extra_structures/schematics/tree_hideout.mts differ diff --git a/mods/MAPGEN/vl_extra_structures/statue.lua b/mods/MAPGEN/vl_extra_structures/statue.lua new file mode 100644 index 000000000..5ce6a64e9 --- /dev/null +++ b/mods/MAPGEN/vl_extra_structures/statue.lua @@ -0,0 +1,33 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) + +vl_structures.register_structure("statue",{ + place_on = {"group:grass_block","group:dirt","mcl_core:dirt_with_grass"}, + flags = "place_center_x, place_center_z", + prepare = { tolerance = 3, clear_bottom = 0, clear_top = 0, padding = -2, corners = 0, foundation = -2 }, + chunk_probability = 20, + y_max = mcl_vars.mg_overworld_max, + y_min = 1, + biomes = { "MegaTaiga", "MegaSpruceTaiga", "CherryGrove", "Swampland", "ExtremeHills+", "MesaPlateauF" }, -- TODO: also add to some other biomes? + filenames = { + modpath.."/schematics/statue_1.mts", + modpath.."/schematics/statue_2.mts", + }, + loot = { + ["mcl_chests:chest_small" ] ={{ + stacks_min = 1, + stacks_max = 2, + items = { + { itemstring = "mcl_core:iron_nugget", weight = 15, amount_min = 1, amount_max = 10 }, + { itemstring = "mcl_core:iron_ingot", weight = 5, amount_min = 1, amount_max = 5 }, + { itemstring = "mcl_core:gold_nugget", weight = 4, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_core:gold_ingot", weight = 3, amount_min = 2, amount_max = 7 }, + { itemstring = "mcl_core:diamond", weight = 1, amount_min = 2, amount_max = 5 }, + { itemstring = "mcl_core:emerald", weight = 1, amount_min = 2, amount_max = 5 }, + { itemstring = "mcl_core:lapis", weight = 3, amount_min = 2, amount_max = 10 }, + } + }} + } +}) + diff --git a/mods/MAPGEN/vl_extra_structures/tree_hideout.lua b/mods/MAPGEN/vl_extra_structures/tree_hideout.lua new file mode 100644 index 000000000..8946e6001 --- /dev/null +++ b/mods/MAPGEN/vl_extra_structures/tree_hideout.lua @@ -0,0 +1,35 @@ +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local modpath = minetest.get_modpath(modname) + +vl_structures.register_structure("tree_hideout",{ + place_on = {"group:grass_block","group:dirt","mcl_core:dirt_with_grass"}, + flags = "place_center_x, place_center_z", + prepare = { tolerance = 6, clear = false, clear_bottom = 10, padding = -3, corners = 5, foundation = 2 }, + chunk_probability = 20, + y_max = mcl_vars.mg_overworld_max, + y_min = 1, + biomes = { "Forest", "ExtremeHills+", "MesaPlateauF" }, -- TODO: also add to some other biomes, with biome adaptation? + filenames = { + modpath.."/schematics/tree_hideout.mts", + }, + loot = { + ["mcl_chests:chest_small" ] ={{ + stacks_min = 2, + stacks_max = 4, + items = { + { itemstring = "mcl_mobitems:rotten_flesh", weight = 16, amount_min = 3, amount_max = 7 }, + { itemstring = "mcl_core:gold_ingot", weight = 3, amount_min = 2, amount_max = 6 }, + { itemstring = "mcl_core:gold_nugget", weight = 3, amount_min = 1, amount_max = 8 }, + { itemstring = "mcl_core:iron_ingot", weight = 5, amount_min = 1, amount_max = 5 }, + { itemstring = "mcl_core:iron_nugget", weight = 5, amount_min = 1, amount_max = 6 }, + { itemstring = "mcl_core:diamond", weight = 1, amount_min = 1, amount_max = 3 }, + { itemstring = "mcl_tools:sword_stone", weight = 15, }, + { itemstring = "mcl_tools:pick_stone", weight = 15, }, + { itemstring = "mcl_tools:shovel_stone", weight = 15, }, + { itemstring = "mcl_torches:torch", weight = 15, amount_min = 3, amount_max = 7 }, + }} + } + } +}) +