diff --git a/mods/ENTITIES/mobs_mc/rover.lua b/mods/ENTITIES/mobs_mc/rover.lua
index a16ee8c38..087160ffd 100644
--- a/mods/ENTITIES/mobs_mc/rover.lua
+++ b/mods/ENTITIES/mobs_mc/rover.lua
@@ -486,206 +486,210 @@ mcl_mobs.register_mob("mobs_mc:rover", {
 mcl_mobs.register_conversion("mobs_mc:enderman", "mobs_mc:rover")
 
 -- End spawn
-mcl_mobs:spawn_specific(
-"mobs_mc:rover",
-"end",
-"ground",
-{
-"End",
-"EndIsland",
-"EndMidlands",
-"EndBarrens",
-"EndBorder",
-"EndSmallIslands"
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-100,
-12,
-mcl_vars.mg_end_min,
-mcl_vars.mg_end_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:rover",
+	dimension = "end",
+	type_of_spawning = "ground",
+	biomes = {
+		"End",
+		"EndIsland",
+		"EndMidlands",
+		"EndBarrens",
+		"EndBorder",
+		"EndSmallIslands"
+	},
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 100,
+	interval = 30,
+	aoc = 12,
+	min_height = mcl_vars.mg_end_min,
+	max_height = mcl_vars.mg_end_max
+})
 -- Overworld spawn
-mcl_mobs:spawn_specific(
-"mobs_mc:rover",
-"overworld",
-"ground",
-{
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"RoofedForest_ocean",
-"JungleEdgeM_ocean",
-"BirchForestM_ocean",
-"BirchForest_ocean",
-"IcePlains_deep_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"ExtremeHillsM_deep_ocean",
-"Savanna_deep_ocean",
-"SunflowerPlains_ocean",
-"Swampland_deep_ocean",
-"Swampland_ocean",
-"MegaSpruceTaiga_deep_ocean",
-"ExtremeHillsM_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"BirchForest_deep_ocean",
-"IcePlainsSpikes_ocean",
-"Mesa_ocean",
-"StoneBeach_ocean",
-"Plains_deep_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"ColdTaiga_deep_ocean",
-"Plains_ocean",
-"MesaPlateauFM_ocean",
-"Forest_deep_ocean",
-"JungleM_deep_ocean",
-"FlowerForest_deep_ocean",
-"MegaTaiga_ocean",
-"StoneBeach_deep_ocean",
-"IcePlainsSpikes_deep_ocean",
-"ColdTaiga_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"ExtremeHills+_deep_ocean",
-"ExtremeHills_ocean",
-"Forest_ocean",
-"MegaTaiga_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"MegaSpruceTaiga_ocean",
-"ExtremeHills+_ocean",
-"Jungle_ocean",
-"RoofedForest_deep_ocean",
-"IcePlains_ocean",
-"FlowerForest_ocean",
-"ExtremeHills_deep_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"Taiga_ocean",
-"BirchForestM_deep_ocean",
-"Taiga_deep_ocean",
-"JungleM_ocean",
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-},
-0,
-7,
-30,
-100,
-2,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:rover",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"RoofedForest_ocean",
+		"JungleEdgeM_ocean",
+		"BirchForestM_ocean",
+		"BirchForest_ocean",
+		"IcePlains_deep_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"ExtremeHillsM_deep_ocean",
+		"Savanna_deep_ocean",
+		"SunflowerPlains_ocean",
+		"Swampland_deep_ocean",
+		"Swampland_ocean",
+		"MegaSpruceTaiga_deep_ocean",
+		"ExtremeHillsM_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"BirchForest_deep_ocean",
+		"IcePlainsSpikes_ocean",
+		"Mesa_ocean",
+		"StoneBeach_ocean",
+		"Plains_deep_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"ColdTaiga_deep_ocean",
+		"Plains_ocean",
+		"MesaPlateauFM_ocean",
+		"Forest_deep_ocean",
+		"JungleM_deep_ocean",
+		"FlowerForest_deep_ocean",
+		"MegaTaiga_ocean",
+		"StoneBeach_deep_ocean",
+		"IcePlainsSpikes_deep_ocean",
+		"ColdTaiga_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"ExtremeHills+_deep_ocean",
+		"ExtremeHills_ocean",
+		"Forest_ocean",
+		"MegaTaiga_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"MegaSpruceTaiga_ocean",
+		"ExtremeHills+_ocean",
+		"Jungle_ocean",
+		"RoofedForest_deep_ocean",
+		"IcePlains_ocean",
+		"FlowerForest_ocean",
+		"ExtremeHills_deep_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"Taiga_ocean",
+		"BirchForestM_deep_ocean",
+		"Taiga_deep_ocean",
+		"JungleM_ocean",
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 100,
+	interval = 30,
+	aoc = 2,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- Nether spawn (rare)
-mcl_mobs:spawn_specific(
-"mobs_mc:rover",
-"nether",
-"ground",
-{
-"Nether",
-"SoulsandValley",
-},
-0,
-11,
-30,
-100,
-4,
-mcl_vars.mg_nether_min,
-mcl_vars.mg_nether_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:rover",
+	dimension = "nether",
+	type_of_spawning = "ground",
+	biomes = {
+		"Nether",
+		"SoulsandValley",
+	},
+	min_light = 0,
+	max_light = 11,
+	chance = 100,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_nether_min,
+	max_height = mcl_vars.mg_nether_max
+})
 
 -- Warped Forest spawn (common)
-mcl_mobs:spawn_specific(
-"mobs_mc:rover",
-"nether",
-"ground",
-{
-"WarpedForest"
-},
-0,
-11,
-30,
-100,
-4,
-mcl_vars.mg_nether_min,
-mcl_vars.mg_nether_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:rover",
+	dimension = "nether",
+	type_of_spawning = "ground",
+	biomes = {
+		"WarpedForest"
+	},
+	min_light = 0,
+	max_light = 11,
+	chance = 100,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_nether_min,
+	max_height = mcl_vars.mg_nether_max
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:rover", S("Rover"), "#252525", "#151515", 0)
diff --git a/mods/ENTITIES/mobs_mc/salmon.lua b/mods/ENTITIES/mobs_mc/salmon.lua
index c029c0b03..d01946b8e 100644
--- a/mods/ENTITIES/mobs_mc/salmon.lua
+++ b/mods/ENTITIES/mobs_mc/salmon.lua
@@ -73,158 +73,159 @@ mcl_mobs.register_mob("mobs_mc:salmon", salmon)
 
 --spawning TODO: in schools
 local water = 0
-mcl_mobs:spawn_specific(
-"mobs_mc:salmon",
-"overworld",
-"water",
-{
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"MushroomIsland",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"MushroomIslandShore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"RoofedForest_ocean",
-"JungleEdgeM_ocean",
-"BirchForestM_ocean",
-"BirchForest_ocean",
-"IcePlains_deep_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"ExtremeHillsM_deep_ocean",
-"Savanna_deep_ocean",
-"SunflowerPlains_ocean",
-"Swampland_deep_ocean",
-"Swampland_ocean",
-"MegaSpruceTaiga_deep_ocean",
-"ExtremeHillsM_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"BirchForest_deep_ocean",
-"IcePlainsSpikes_ocean",
-"Mesa_ocean",
-"StoneBeach_ocean",
-"Plains_deep_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"ColdTaiga_deep_ocean",
-"Plains_ocean",
-"MesaPlateauFM_ocean",
-"Forest_deep_ocean",
-"JungleM_deep_ocean",
-"FlowerForest_deep_ocean",
-"MushroomIsland_ocean",
-"MegaTaiga_ocean",
-"StoneBeach_deep_ocean",
-"IcePlainsSpikes_deep_ocean",
-"ColdTaiga_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"ExtremeHills+_deep_ocean",
-"ExtremeHills_ocean",
-"MushroomIsland_deep_ocean",
-"Forest_ocean",
-"MegaTaiga_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"MegaSpruceTaiga_ocean",
-"ExtremeHills+_ocean",
-"Jungle_ocean",
-"RoofedForest_deep_ocean",
-"IcePlains_ocean",
-"FlowerForest_ocean",
-"ExtremeHills_deep_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"Taiga_ocean",
-"BirchForestM_deep_ocean",
-"Taiga_deep_ocean",
-"JungleM_ocean",
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"MushroomIsland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-260,
-3,
-water-16,
-water+1)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:salmon",
+	dimension = "overworld",
+	type_of_spawning = "water",
+	biomes = {
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"MushroomIsland",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"MushroomIslandShore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"RoofedForest_ocean",
+		"JungleEdgeM_ocean",
+		"BirchForestM_ocean",
+		"BirchForest_ocean",
+		"IcePlains_deep_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"ExtremeHillsM_deep_ocean",
+		"Savanna_deep_ocean",
+		"SunflowerPlains_ocean",
+		"Swampland_deep_ocean",
+		"Swampland_ocean",
+		"MegaSpruceTaiga_deep_ocean",
+		"ExtremeHillsM_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"BirchForest_deep_ocean",
+		"IcePlainsSpikes_ocean",
+		"Mesa_ocean",
+		"StoneBeach_ocean",
+		"Plains_deep_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"ColdTaiga_deep_ocean",
+		"Plains_ocean",
+		"MesaPlateauFM_ocean",
+		"Forest_deep_ocean",
+		"JungleM_deep_ocean",
+		"FlowerForest_deep_ocean",
+		"MushroomIsland_ocean",
+		"MegaTaiga_ocean",
+		"StoneBeach_deep_ocean",
+		"IcePlainsSpikes_deep_ocean",
+		"ColdTaiga_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"ExtremeHills+_deep_ocean",
+		"ExtremeHills_ocean",
+		"MushroomIsland_deep_ocean",
+		"Forest_ocean",
+		"MegaTaiga_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"MegaSpruceTaiga_ocean",
+		"ExtremeHills+_ocean",
+		"Jungle_ocean",
+		"RoofedForest_deep_ocean",
+		"IcePlains_ocean",
+		"FlowerForest_ocean",
+		"ExtremeHills_deep_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"Taiga_ocean",
+		"BirchForestM_deep_ocean",
+		"Taiga_deep_ocean",
+		"JungleM_ocean",
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"MushroomIsland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 260,
+	interval = 30,
+	aoc = 3,
+	min_height = water-16,
+	max_height = water+1
+})
 
 --spawn egg
 mcl_mobs.register_egg("mobs_mc:salmon", S("Salmon"), "#a00f10", "#0e8474", 0)
diff --git a/mods/ENTITIES/mobs_mc/sheep.lua b/mods/ENTITIES/mobs_mc/sheep.lua
index 1d3d7cada..efa469972 100644
--- a/mods/ENTITIES/mobs_mc/sheep.lua
+++ b/mods/ENTITIES/mobs_mc/sheep.lua
@@ -340,55 +340,56 @@ mcl_mobs.register_mob("mobs_mc:sheep", {
 		end
 	end,
 })
-mcl_mobs:spawn_specific(
-"mobs_mc:sheep",
-"overworld",
-"ground",
-{
-	"flat",
-	"IcePlainsSpikes",
-	"ColdTaiga",
-	"ColdTaiga_beach",
-	"ColdTaiga_beach_water",
-	"MegaTaiga",
-	"MegaSpruceTaiga",
-	"ExtremeHills",
-	"ExtremeHills_beach",
-	"ExtremeHillsM",
-	"ExtremeHills+",
-	"ExtremeHills+_snowtop",
-	"StoneBeach",
-	"Plains",
-	"Plains_beach",
-	"SunflowerPlains",
-	"Taiga",
-	"Taiga_beach",
-	"Forest",
-	"Forest_beach",
-	"FlowerForest",
-	"FlowerForest_beach",
-	"BirchForest",
-	"BirchForestM",
-	"RoofedForest",
-	"Savanna",
-	"Savanna_beach",
-	"SavannaM",
-	"Jungle",
-	"Jungle_shore",
-	"JungleM",
-	"JungleM_shore",
-	"JungleEdge",
-	"JungleEdgeM",
-	"Swampland",
-	"Swampland_shore"
-},
-9,
-minetest.LIGHT_MAX+1,
-30,
-120,
-3,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:sheep",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"flat",
+		"IcePlainsSpikes",
+		"ColdTaiga",
+		"ColdTaiga_beach",
+		"ColdTaiga_beach_water",
+		"MegaTaiga",
+		"MegaSpruceTaiga",
+		"ExtremeHills",
+		"ExtremeHills_beach",
+		"ExtremeHillsM",
+		"ExtremeHills+",
+		"ExtremeHills+_snowtop",
+		"StoneBeach",
+		"Plains",
+		"Plains_beach",
+		"SunflowerPlains",
+		"Taiga",
+		"Taiga_beach",
+		"Forest",
+		"Forest_beach",
+		"FlowerForest",
+		"FlowerForest_beach",
+		"BirchForest",
+		"BirchForestM",
+		"RoofedForest",
+		"Savanna",
+		"Savanna_beach",
+		"SavannaM",
+		"Jungle",
+		"Jungle_shore",
+		"JungleM",
+		"JungleM_shore",
+		"JungleEdge",
+		"JungleEdgeM",
+		"Swampland",
+		"Swampland_shore"
+	},
+	min_light = 9,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 120,
+	interval = 30,
+	aoc = 3,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:sheep", S("Sheep"), "#e7e7e7", "#ffb5b5", 0)
diff --git a/mods/ENTITIES/mobs_mc/shulker.lua b/mods/ENTITIES/mobs_mc/shulker.lua
index 9280ef982..12a133eae 100644
--- a/mods/ENTITIES/mobs_mc/shulker.lua
+++ b/mods/ENTITIES/mobs_mc/shulker.lua
@@ -171,19 +171,3 @@ mcl_mobs.register_arrow("mobs_mc:shulkerbullet", {
 
 mcl_mobs.register_egg("mobs_mc:shulker", S("Shulker"), "#946694", "#4d3852", 0)
 mcl_mobs:non_spawn_specific("mobs_mc:shulker","overworld",0,minetest.LIGHT_MAX+1)
---[[
-mcl_mobs:spawn_specific(
-"mobs_mc:shulker",
-"end",
-"ground",
-{
-"End"
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-5000,
-2,
-mcl_vars.mg_end_min,
-mcl_vars.mg_end_max)
---]]
diff --git a/mods/ENTITIES/mobs_mc/skeleton+stray.lua b/mods/ENTITIES/mobs_mc/skeleton+stray.lua
index d3708e4b7..5e6f297f5 100644
--- a/mods/ENTITIES/mobs_mc/skeleton+stray.lua
+++ b/mods/ENTITIES/mobs_mc/skeleton+stray.lua
@@ -174,191 +174,192 @@ table.insert(stray.drops, {
 mcl_mobs.register_mob("mobs_mc:stray", stray)
 
 -- Overworld spawn
-mcl_mobs:spawn_specific(
-"mobs_mc:skeleton",
-"overworld",
-"ground",
-{
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"RoofedForest_ocean",
-"JungleEdgeM_ocean",
-"BirchForestM_ocean",
-"BirchForest_ocean",
-"IcePlains_deep_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"ExtremeHillsM_deep_ocean",
-"Savanna_deep_ocean",
-"SunflowerPlains_ocean",
-"Swampland_deep_ocean",
-"Swampland_ocean",
-"MegaSpruceTaiga_deep_ocean",
-"ExtremeHillsM_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"BirchForest_deep_ocean",
-"IcePlainsSpikes_ocean",
-"Mesa_ocean",
-"StoneBeach_ocean",
-"Plains_deep_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"ColdTaiga_deep_ocean",
-"Plains_ocean",
-"MesaPlateauFM_ocean",
-"Forest_deep_ocean",
-"JungleM_deep_ocean",
-"FlowerForest_deep_ocean",
-"MegaTaiga_ocean",
-"StoneBeach_deep_ocean",
-"IcePlainsSpikes_deep_ocean",
-"ColdTaiga_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"ExtremeHills+_deep_ocean",
-"ExtremeHills_ocean",
-"Forest_ocean",
-"MegaTaiga_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"MegaSpruceTaiga_ocean",
-"ExtremeHills+_ocean",
-"Jungle_ocean",
-"RoofedForest_deep_ocean",
-"IcePlains_ocean",
-"FlowerForest_ocean",
-"ExtremeHills_deep_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"Taiga_ocean",
-"BirchForestM_deep_ocean",
-"Taiga_deep_ocean",
-"JungleM_ocean",
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-},
-0,
-7,
-20,
-800,
-2,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
-
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:skeleton",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"RoofedForest_ocean",
+		"JungleEdgeM_ocean",
+		"BirchForestM_ocean",
+		"BirchForest_ocean",
+		"IcePlains_deep_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"ExtremeHillsM_deep_ocean",
+		"Savanna_deep_ocean",
+		"SunflowerPlains_ocean",
+		"Swampland_deep_ocean",
+		"Swampland_ocean",
+		"MegaSpruceTaiga_deep_ocean",
+		"ExtremeHillsM_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"BirchForest_deep_ocean",
+		"IcePlainsSpikes_ocean",
+		"Mesa_ocean",
+		"StoneBeach_ocean",
+		"Plains_deep_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"ColdTaiga_deep_ocean",
+		"Plains_ocean",
+		"MesaPlateauFM_ocean",
+		"Forest_deep_ocean",
+		"JungleM_deep_ocean",
+		"FlowerForest_deep_ocean",
+		"MegaTaiga_ocean",
+		"StoneBeach_deep_ocean",
+		"IcePlainsSpikes_deep_ocean",
+		"ColdTaiga_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"ExtremeHills+_deep_ocean",
+		"ExtremeHills_ocean",
+		"Forest_ocean",
+		"MegaTaiga_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"MegaSpruceTaiga_ocean",
+		"ExtremeHills+_ocean",
+		"Jungle_ocean",
+		"RoofedForest_deep_ocean",
+		"IcePlains_ocean",
+		"FlowerForest_ocean",
+		"ExtremeHills_deep_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"Taiga_ocean",
+		"BirchForestM_deep_ocean",
+		"Taiga_deep_ocean",
+		"JungleM_ocean",
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 800,
+	interval = 20,
+	aoc = 2,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- Nether spawn
-mcl_mobs:spawn_specific(
-"mobs_mc:skeleton",
-"nether",
-"ground",
-{
-"SoulsandValley",
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-800,
-3,
-mcl_vars.mg_nether_min,
-mcl_vars.mg_nether_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:skeleton",
+	dimension = "nether",
+	type_of_spawning = "ground",
+	biomes = {
+		"SoulsandValley",
+	},
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 800,
+	interval = 30,
+	aoc = 3,
+	min_height = mcl_vars.mg_nether_min,
+	max_height = mcl_vars.mg_nether_max
+})
 
 -- Stray spawn
 -- TODO: Spawn directly under the sky
-mcl_mobs:spawn_specific(
-"mobs_mc:stray",
-"overworld",
-"ground",
-{
-"ColdTaiga",
-"IcePlainsSpikes",
-"IcePlains",
-"ExtremeHills+_snowtop",
-},
-0,
-7,
-20,
-1200,
-2,
-mobs_mc.water_level,
-mcl_vars.mg_overworld_max)
-
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:stray",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"IcePlains",
+		"ExtremeHills+_snowtop",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 1200,
+	interval = 20,
+	aoc = 2,
+	min_height = mobs_mc.water_level,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:skeleton", S("Skeleton"), "#c1c1c1", "#494949", 0)
diff --git a/mods/ENTITIES/mobs_mc/skeleton_wither.lua b/mods/ENTITIES/mobs_mc/skeleton_wither.lua
index 5e14a8aaa..7fec7c2d0 100644
--- a/mods/ENTITIES/mobs_mc/skeleton_wither.lua
+++ b/mods/ENTITIES/mobs_mc/skeleton_wither.lua
@@ -105,24 +105,6 @@ mcl_mobs.register_mob("mobs_mc:witherskeleton", {
 	},
 })
 
---spawn
---[[]
-mcl_mobs:spawn_specific(
-"mobs_mc:witherskeleton",
-"nether",
-"ground",
-{
-"Nether",
-"SoulsandValley",
-},
-0,
-7,
-30,
-500,
-5,
-mcl_vars.mg_nether_min,
-mcl_vars.mg_nether_max)
---]]
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:witherskeleton", S("Wither Skeleton"), "#141414", "#474d4d", 0)
 mcl_mobs:non_spawn_specific("mobs_mc:witherskeleton","overworld",0,7)
diff --git a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua
index 91d0fbdbb..2392f201e 100644
--- a/mods/ENTITIES/mobs_mc/slime+magma_cube.lua
+++ b/mods/ENTITIES/mobs_mc/slime+magma_cube.lua
@@ -231,86 +231,92 @@ local swampy_biomes = {"Swampland", "MangroveSwamp"}
 local swamp_min = water_level
 local swamp_max = water_level + 27
 
-mcl_mobs:spawn_specific(
-"mobs_mc:slime_tiny",
-"overworld",
-"ground",
-cave_biomes,
-0,
-slime_max_light,
-30,
-1000,
-4,
-cave_min,
-cave_max,
-nil, nil, is_slime_chunk)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:slime_tiny",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = cave_biomes,
+	min_light = 0,
+	max_light = slime_max_light,
+	chance = 1000,
+	interval = 30,
+	aoc = 4,
+	min_height = cave_min,
+	max_height = cave_max,
+	check_position = is_slime_chunk
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:slime_tiny",
-"overworld",
-"ground",
-swampy_biomes,
-0,
-swamp_light_max,
-30,
-1000,
-4,
-swamp_min,
-swamp_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:slime_tiny",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = swampy_biomes,
+	min_light = 0,
+	max_light = swamp_light_max,
+	chance = 1000,
+	interval = 30,
+	aoc = 4,
+	min_height = swamp_min,
+	max_height = swamp_max
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:slime_small",
-"overworld",
-"ground",
-cave_biomes,
-0,
-slime_max_light,
-30,
-1000,
-4,
-cave_min,
-cave_max,
-nil, nil, is_slime_chunk)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:slime_small",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = cave_biomes,
+	min_light = 0,
+	max_light = slime_max_light,
+	interval = 30,
+	chance = 1000,
+	aoc = 4,
+	min_height = cave_min,
+	max_height = cave_max,
+	check_position = is_slime_chunk
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:slime_small",
-"overworld",
-"ground",
-swampy_biomes,
-0,
-swamp_light_max,
-30,
-1000,
-4,
-swamp_min,
-swamp_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:slime_small",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = swampy_biomes,
+	min_light = 0,
+	max_light = swamp_light_max,
+	interval = 30,
+	chance = 1000,
+	aoc = 4,
+	min_height = swamp_min,
+	max_height = swamp_max
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:slime_big",
-"overworld",
-"ground",
-cave_biomes,
-0,
-slime_max_light,
-30,
-1000,
-4,
-cave_min,
-cave_max,
-nil, nil, is_slime_chunk)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:slime_big",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = cave_biomes,
+	min_light = 0,
+	max_light = slime_max_light,
+	chance = 1000,
+	interval = 30,
+	aoc = 4,
+	min_height = cave_min,
+	max_height = cave_max,
+	check_position = is_slime_chunk
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:slime_big",
-"overworld",
-"ground",
-swampy_biomes,
-0,
-swamp_light_max,
-30,
-1000,
-4,
-swamp_min,
-swamp_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:slime_big",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = swampy_biomes,
+	min_light = 0,
+	max_light = swamp_light_max,
+	chance = 1000,
+	interval = 30,
+	aoc = 4,
+	min_height = swamp_min,
+	max_height = swamp_max
+})
 
 -- Magma cube
 local magma_cube_big = {
@@ -424,44 +430,47 @@ local magma_cube_biomes = {"Nether", "BasaltDelta"}
 local nether_min = mcl_vars.mg_nether_min
 local nether_max = mcl_vars.mg_nether_max
 
-mcl_mobs:spawn_specific(
-"mobs_mc:magma_cube_tiny",
-"nether",
-"ground",
-magma_cube_biomes,
-0,
-minetest.LIGHT_MAX+1,
-30,
-100,
-4,
-nether_min,
-nether_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:magma_cube_tiny",
+	dimension = "nether",
+	type_of_spawning = "ground",
+	biomes = magma_cube_biomes,
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 100,
+	interval = 30,
+	aoc = 4,
+	min_height = nether_min,
+	max_height = nether_max
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:magma_cube_small",
-"nether",
-"ground",
-magma_cube_biomes,
-0,
-minetest.LIGHT_MAX+1,
-30,
-100,
-4,
-nether_min,
-nether_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:magma_cube_small",
+	dimension = "nether",
+	type_of_spawning = "ground",
+	biomes = magma_cube_biomes,
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 100,
+	interval = 30,
+	aoc = 4,
+	min_height = nether_min,
+	max_height = nether_max
+})
 
-mcl_mobs:spawn_specific(
-"mobs_mc:magma_cube_big",
-"nether",
-"ground",
-magma_cube_biomes,
-0,
-minetest.LIGHT_MAX+1,
-30,
-100,
-4,
-nether_min,
-nether_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:magma_cube_big",
+	dimension = "nether",
+	type_of_spawning = "ground",
+	biomes = magma_cube_biomes,
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 100,
+	interval = 30,
+	aoc = 4,
+	min_height = nether_min,
+	max_height = nether_max
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "#350000", "#fcfc00")
diff --git a/mods/ENTITIES/mobs_mc/spider.lua b/mods/ENTITIES/mobs_mc/spider.lua
index 0e5dd256c..aac00697c 100644
--- a/mods/ENTITIES/mobs_mc/spider.lua
+++ b/mods/ENTITIES/mobs_mc/spider.lua
@@ -146,153 +146,154 @@ cave_spider.dealt_effect = {
 mcl_mobs.register_mob("mobs_mc:cave_spider", cave_spider)
 
 
-mcl_mobs:spawn_specific(
-"mobs_mc:spider",
-"overworld",
-"ground",
-{
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"RoofedForest_ocean",
-"JungleEdgeM_ocean",
-"BirchForestM_ocean",
-"BirchForest_ocean",
-"IcePlains_deep_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"ExtremeHillsM_deep_ocean",
-"Savanna_deep_ocean",
-"SunflowerPlains_ocean",
-"Swampland_deep_ocean",
-"Swampland_ocean",
-"MegaSpruceTaiga_deep_ocean",
-"ExtremeHillsM_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"BirchForest_deep_ocean",
-"IcePlainsSpikes_ocean",
-"Mesa_ocean",
-"StoneBeach_ocean",
-"Plains_deep_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"ColdTaiga_deep_ocean",
-"Plains_ocean",
-"MesaPlateauFM_ocean",
-"Forest_deep_ocean",
-"JungleM_deep_ocean",
-"FlowerForest_deep_ocean",
-"MegaTaiga_ocean",
-"StoneBeach_deep_ocean",
-"IcePlainsSpikes_deep_ocean",
-"ColdTaiga_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"ExtremeHills+_deep_ocean",
-"ExtremeHills_ocean",
-"Forest_ocean",
-"MegaTaiga_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"MegaSpruceTaiga_ocean",
-"ExtremeHills+_ocean",
-"Jungle_ocean",
-"RoofedForest_deep_ocean",
-"IcePlains_ocean",
-"FlowerForest_ocean",
-"ExtremeHills_deep_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"Taiga_ocean",
-"BirchForestM_deep_ocean",
-"Taiga_deep_ocean",
-"JungleM_ocean",
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-},
-0,
-7,
-30,
-1000,
-2,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:spider",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"RoofedForest_ocean",
+		"JungleEdgeM_ocean",
+		"BirchForestM_ocean",
+		"BirchForest_ocean",
+		"IcePlains_deep_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"ExtremeHillsM_deep_ocean",
+		"Savanna_deep_ocean",
+		"SunflowerPlains_ocean",
+		"Swampland_deep_ocean",
+		"Swampland_ocean",
+		"MegaSpruceTaiga_deep_ocean",
+		"ExtremeHillsM_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"BirchForest_deep_ocean",
+		"IcePlainsSpikes_ocean",
+		"Mesa_ocean",
+		"StoneBeach_ocean",
+		"Plains_deep_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"ColdTaiga_deep_ocean",
+		"Plains_ocean",
+		"MesaPlateauFM_ocean",
+		"Forest_deep_ocean",
+		"JungleM_deep_ocean",
+		"FlowerForest_deep_ocean",
+		"MegaTaiga_ocean",
+		"StoneBeach_deep_ocean",
+		"IcePlainsSpikes_deep_ocean",
+		"ColdTaiga_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"ExtremeHills+_deep_ocean",
+		"ExtremeHills_ocean",
+		"Forest_ocean",
+		"MegaTaiga_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"MegaSpruceTaiga_ocean",
+		"ExtremeHills+_ocean",
+		"Jungle_ocean",
+		"RoofedForest_deep_ocean",
+		"IcePlains_ocean",
+		"FlowerForest_ocean",
+		"ExtremeHills_deep_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"Taiga_ocean",
+		"BirchForestM_deep_ocean",
+		"Taiga_deep_ocean",
+		"JungleM_ocean",
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 1000,
+	interval = 30,
+	aoc = 2,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 mcl_mobs:non_spawn_specific("mobs_mc:cave_spider","overworld",0,7)
 
diff --git a/mods/ENTITIES/mobs_mc/squid.lua b/mods/ENTITIES/mobs_mc/squid.lua
index 0cd0c6c5a..c4b39eaa2 100644
--- a/mods/ENTITIES/mobs_mc/squid.lua
+++ b/mods/ENTITIES/mobs_mc/squid.lua
@@ -62,159 +62,159 @@ mcl_mobs.register_mob("mobs_mc:squid", {
 -- Spawn near the water surface
 
 local water = mobs_mc.water_level
---name, nodes, neighbours, minlight, maxlight, interval, chance, active_object_count, min_height, max_height
-mcl_mobs:spawn_specific(
-"mobs_mc:squid",
-"overworld",
-"water",
-{
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"MushroomIsland",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"MushroomIslandShore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"RoofedForest_ocean",
-"JungleEdgeM_ocean",
-"BirchForestM_ocean",
-"BirchForest_ocean",
-"IcePlains_deep_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"ExtremeHillsM_deep_ocean",
-"Savanna_deep_ocean",
-"SunflowerPlains_ocean",
-"Swampland_deep_ocean",
-"Swampland_ocean",
-"MegaSpruceTaiga_deep_ocean",
-"ExtremeHillsM_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"BirchForest_deep_ocean",
-"IcePlainsSpikes_ocean",
-"Mesa_ocean",
-"StoneBeach_ocean",
-"Plains_deep_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"ColdTaiga_deep_ocean",
-"Plains_ocean",
-"MesaPlateauFM_ocean",
-"Forest_deep_ocean",
-"JungleM_deep_ocean",
-"FlowerForest_deep_ocean",
-"MushroomIsland_ocean",
-"MegaTaiga_ocean",
-"StoneBeach_deep_ocean",
-"IcePlainsSpikes_deep_ocean",
-"ColdTaiga_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"ExtremeHills+_deep_ocean",
-"ExtremeHills_ocean",
-"MushroomIsland_deep_ocean",
-"Forest_ocean",
-"MegaTaiga_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"MegaSpruceTaiga_ocean",
-"ExtremeHills+_ocean",
-"Jungle_ocean",
-"RoofedForest_deep_ocean",
-"IcePlains_ocean",
-"FlowerForest_ocean",
-"ExtremeHills_deep_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"Taiga_ocean",
-"BirchForestM_deep_ocean",
-"Taiga_deep_ocean",
-"JungleM_ocean",
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"MushroomIsland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-80,
-3,
-water-16,
-water+1)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:squid",
+	dimension = "overworld",
+	type_of_spawning = "water",
+	biomes = {
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"MushroomIsland",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"MushroomIslandShore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"RoofedForest_ocean",
+		"JungleEdgeM_ocean",
+		"BirchForestM_ocean",
+		"BirchForest_ocean",
+		"IcePlains_deep_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"ExtremeHillsM_deep_ocean",
+		"Savanna_deep_ocean",
+		"SunflowerPlains_ocean",
+		"Swampland_deep_ocean",
+		"Swampland_ocean",
+		"MegaSpruceTaiga_deep_ocean",
+		"ExtremeHillsM_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"BirchForest_deep_ocean",
+		"IcePlainsSpikes_ocean",
+		"Mesa_ocean",
+		"StoneBeach_ocean",
+		"Plains_deep_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"ColdTaiga_deep_ocean",
+		"Plains_ocean",
+		"MesaPlateauFM_ocean",
+		"Forest_deep_ocean",
+		"JungleM_deep_ocean",
+		"FlowerForest_deep_ocean",
+		"MushroomIsland_ocean",
+		"MegaTaiga_ocean",
+		"StoneBeach_deep_ocean",
+		"IcePlainsSpikes_deep_ocean",
+		"ColdTaiga_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"ExtremeHills+_deep_ocean",
+		"ExtremeHills_ocean",
+		"MushroomIsland_deep_ocean",
+		"Forest_ocean",
+		"MegaTaiga_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"MegaSpruceTaiga_ocean",
+		"ExtremeHills+_ocean",
+		"Jungle_ocean",
+		"RoofedForest_deep_ocean",
+		"IcePlains_ocean",
+		"FlowerForest_ocean",
+		"ExtremeHills_deep_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"Taiga_ocean",
+		"BirchForestM_deep_ocean",
+		"Taiga_deep_ocean",
+		"JungleM_ocean",
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"MushroomIsland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 80,
+	interval = 30,
+	aoc = 3,
+	min_height = water-16,
+	max_height = water+1
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:squid", S("Squid"), "#223b4d", "#708999", 0)
diff --git a/mods/ENTITIES/mobs_mc/stalker.lua b/mods/ENTITIES/mobs_mc/stalker.lua
index 9ce966065..95c77f670 100644
--- a/mods/ENTITIES/mobs_mc/stalker.lua
+++ b/mods/ENTITIES/mobs_mc/stalker.lua
@@ -343,153 +343,154 @@ mcl_mobs.register_mob("mobs_mc:stalker_overloaded", {
 mcl_mobs.register_conversion("mobs_mc:creeper", "mobs_mc:stalker")
 mcl_mobs.register_conversion("mobs_mc:creeper_charged", "mobs_mc:stalker_overloaded")
 
-mcl_mobs:spawn_specific(
-"mobs_mc:stalker",
-"overworld",
-"ground",
-{
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"RoofedForest_ocean",
-"JungleEdgeM_ocean",
-"BirchForestM_ocean",
-"BirchForest_ocean",
-"IcePlains_deep_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"ExtremeHillsM_deep_ocean",
-"Savanna_deep_ocean",
-"SunflowerPlains_ocean",
-"Swampland_deep_ocean",
-"Swampland_ocean",
-"MegaSpruceTaiga_deep_ocean",
-"ExtremeHillsM_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"BirchForest_deep_ocean",
-"IcePlainsSpikes_ocean",
-"Mesa_ocean",
-"StoneBeach_ocean",
-"Plains_deep_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"ColdTaiga_deep_ocean",
-"Plains_ocean",
-"MesaPlateauFM_ocean",
-"Forest_deep_ocean",
-"JungleM_deep_ocean",
-"FlowerForest_deep_ocean",
-"MegaTaiga_ocean",
-"StoneBeach_deep_ocean",
-"IcePlainsSpikes_deep_ocean",
-"ColdTaiga_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"ExtremeHills+_deep_ocean",
-"ExtremeHills_ocean",
-"Forest_ocean",
-"MegaTaiga_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"MegaSpruceTaiga_ocean",
-"ExtremeHills+_ocean",
-"Jungle_ocean",
-"RoofedForest_deep_ocean",
-"IcePlains_ocean",
-"FlowerForest_ocean",
-"ExtremeHills_deep_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"Taiga_ocean",
-"BirchForestM_deep_ocean",
-"Taiga_deep_ocean",
-"JungleM_ocean",
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-},
-0,
-7,
-20,
-1000,
-2,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:stalker",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"RoofedForest_ocean",
+		"JungleEdgeM_ocean",
+		"BirchForestM_ocean",
+		"BirchForest_ocean",
+		"IcePlains_deep_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"ExtremeHillsM_deep_ocean",
+		"Savanna_deep_ocean",
+		"SunflowerPlains_ocean",
+		"Swampland_deep_ocean",
+		"Swampland_ocean",
+		"MegaSpruceTaiga_deep_ocean",
+		"ExtremeHillsM_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"BirchForest_deep_ocean",
+		"IcePlainsSpikes_ocean",
+		"Mesa_ocean",
+		"StoneBeach_ocean",
+		"Plains_deep_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"ColdTaiga_deep_ocean",
+		"Plains_ocean",
+		"MesaPlateauFM_ocean",
+		"Forest_deep_ocean",
+		"JungleM_deep_ocean",
+		"FlowerForest_deep_ocean",
+		"MegaTaiga_ocean",
+		"StoneBeach_deep_ocean",
+		"IcePlainsSpikes_deep_ocean",
+		"ColdTaiga_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"ExtremeHills+_deep_ocean",
+		"ExtremeHills_ocean",
+		"Forest_ocean",
+		"MegaTaiga_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"MegaSpruceTaiga_ocean",
+		"ExtremeHills+_ocean",
+		"Jungle_ocean",
+		"RoofedForest_deep_ocean",
+		"IcePlains_ocean",
+		"FlowerForest_ocean",
+		"ExtremeHills_deep_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"Taiga_ocean",
+		"BirchForestM_deep_ocean",
+		"Taiga_deep_ocean",
+		"JungleM_ocean",
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 1000,
+	interval = 20,
+	aoc = 2,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:stalker", S("Stalker"), "#0da70a", "#000000", 0)
diff --git a/mods/ENTITIES/mobs_mc/tropical_fish.lua b/mods/ENTITIES/mobs_mc/tropical_fish.lua
index 9f8aea5b0..a9af96b78 100644
--- a/mods/ENTITIES/mobs_mc/tropical_fish.lua
+++ b/mods/ENTITIES/mobs_mc/tropical_fish.lua
@@ -122,72 +122,73 @@ local tropical_fish = {
 mcl_mobs.register_mob("mobs_mc:tropical_fish", tropical_fish)
 
 local water = 0
-mcl_mobs:spawn_specific(
-"mobs_mc:tropical_fish",
-"overworld",
-"water",
-{
-"Mesa",
-"Jungle",
-"Savanna",
-"Desert",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"JungleM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"Savanna_beach",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-"JungleEdgeM_ocean",
-"Jungle_deep_ocean",
-"Savanna_ocean",
-"MesaPlateauF_ocean",
-"Savanna_deep_ocean",
-"JungleEdgeM_deep_ocean",
-"SunflowerPlains_deep_ocean",
-"Mesa_ocean",
-"JungleEdge_deep_ocean",
-"SavannaM_deep_ocean",
-"Desert_deep_ocean",
-"Mesa_deep_ocean",
-"MesaPlateauFM_ocean",
-"JungleM_deep_ocean",
-"SavannaM_ocean",
-"MesaPlateauF_deep_ocean",
-"MesaBryce_deep_ocean",
-"JungleEdge_ocean",
-"MesaBryce_ocean",
-"Jungle_ocean",
-"MesaPlateauFM_deep_ocean",
-"Desert_ocean",
-"JungleM_ocean",
-"MesaBryce_underground",
-"Mesa_underground",
-"Jungle_underground",
-"MesaPlateauF_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"JungleM_underground",
-"JungleEdgeM_underground",
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-750,
-3,
-water-16,
-water+1)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:tropical_fish",
+	dimension = "overworld",
+	type_of_spawning = "water",
+	biomes = {
+		"Mesa",
+		"Jungle",
+		"Savanna",
+		"Desert",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"JungleM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"Savanna_beach",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+		"JungleEdgeM_ocean",
+		"Jungle_deep_ocean",
+		"Savanna_ocean",
+		"MesaPlateauF_ocean",
+		"Savanna_deep_ocean",
+		"JungleEdgeM_deep_ocean",
+		"SunflowerPlains_deep_ocean",
+		"Mesa_ocean",
+		"JungleEdge_deep_ocean",
+		"SavannaM_deep_ocean",
+		"Desert_deep_ocean",
+		"Mesa_deep_ocean",
+		"MesaPlateauFM_ocean",
+		"JungleM_deep_ocean",
+		"SavannaM_ocean",
+		"MesaPlateauF_deep_ocean",
+		"MesaBryce_deep_ocean",
+		"JungleEdge_ocean",
+		"MesaBryce_ocean",
+		"Jungle_ocean",
+		"MesaPlateauFM_deep_ocean",
+		"Desert_ocean",
+		"JungleM_ocean",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"Jungle_underground",
+		"MesaPlateauF_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"JungleM_underground",
+		"JungleEdgeM_underground",
+	},
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 750,
+	interval = 30,
+	aoc = 3,
+	min_height = water-16,
+	max_height = water+1
+})
 
 --spawn egg
 mcl_mobs.register_egg("mobs_mc:tropical_fish", S("Tropical fish"), "#ef6915", "#fff9ef", 0)
diff --git a/mods/ENTITIES/mobs_mc/villager.lua b/mods/ENTITIES/mobs_mc/villager.lua
index cfd474f6a..bfcc08bf5 100644
--- a/mods/ENTITIES/mobs_mc/villager.lua
+++ b/mods/ENTITIES/mobs_mc/villager.lua
@@ -2327,39 +2327,6 @@ mcl_mobs.register_mob("mobs_mc:villager", {
 	end,
 })
 
-
---[[
-Villager spawning in mcl_villages
-mcl_mobs:spawn_specific(
-"mobs_mc:villager",
-"overworld",
-"ground",
-{
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"ColdTaiga",
-"SunflowerPlains",
-"RoofedForest",
-"MesaPlateauFM_grasstop",
-"ExtremeHillsM",
-"BirchForestM",
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-2,
-4,
-mobs_mc.water_level+1,
-mcl_vars.mg_overworld_max)
---]]
 -- spawn eggs
 mcl_mobs:non_spawn_specific("mobs_mc:villager","overworld", 0, minetest.LIGHT_MAX+1)
 mcl_mobs.register_egg("mobs_mc:villager", S("Villager"), "#563d33", "#bc8b72", 0)
diff --git a/mods/ENTITIES/mobs_mc/villager_zombie.lua b/mods/ENTITIES/mobs_mc/villager_zombie.lua
index 4de3d6e1a..8ee5e80b8 100644
--- a/mods/ENTITIES/mobs_mc/villager_zombie.lua
+++ b/mods/ENTITIES/mobs_mc/villager_zombie.lua
@@ -141,96 +141,96 @@ mcl_mobs.register_mob("mobs_mc:villager_zombie", {
 	attack_npcs = true,
 })
 
-mcl_mobs:spawn_specific(
-"mobs_mc:villager_zombie",
-"overworld",
-"ground",
-{
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"Desert",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-},
-0,
-7,
-30,
-50,
-4,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
---mcl_mobs:spawn_specific("mobs_mc:villager_zombie", "overworld", "ground", 0, 7, 30, 60000, 4, mcl_vars.mg_overworld_min, mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:villager_zombie",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"Desert",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 50,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- spawn eggs
 mcl_mobs.register_egg("mobs_mc:villager_zombie", S("Zombie Villager"), "#563d33", "#799c66", 0)
diff --git a/mods/ENTITIES/mobs_mc/wolf.lua b/mods/ENTITIES/mobs_mc/wolf.lua
index 944aabe37..e0b73fcc0 100644
--- a/mods/ENTITIES/mobs_mc/wolf.lua
+++ b/mods/ENTITIES/mobs_mc/wolf.lua
@@ -207,27 +207,28 @@ end
 
 mcl_mobs.register_mob("mobs_mc:dog", dog)
 -- Spawn
-mcl_mobs:spawn_specific(
-"mobs_mc:wolf",
-"overworld",
-"ground",
-{
-	"Taiga",
-	"MegaSpruceTaiga",
-	"MegaTaiga",
-	"Forest",
-	"ColdTaiga",
-	"Forest_beach",
-	"ColdTaiga_beach_water",
-	"Taiga_beach",
-	"ColdTaiga_beach",
-},
-0,
-minetest.LIGHT_MAX+1,
-30,
-80,
-7,
-mobs_mc.water_level+3,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:wolf",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Taiga",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"Forest",
+		"ColdTaiga",
+		"Forest_beach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"ColdTaiga_beach",
+	},
+	min_light = 0,
+	max_light = minetest.LIGHT_MAX+1,
+	chance = 80,
+	interval = 30,
+	aoc = 7,
+	min_height = mobs_mc.water_level+3,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 mcl_mobs.register_egg("mobs_mc:wolf", S("Wolf"), "#d7d3d3", "#ceaf96", 0)
diff --git a/mods/ENTITIES/mobs_mc/zombie.lua b/mods/ENTITIES/mobs_mc/zombie.lua
index b145b0550..17e1f35dc 100644
--- a/mods/ENTITIES/mobs_mc/zombie.lua
+++ b/mods/ENTITIES/mobs_mc/zombie.lua
@@ -161,213 +161,217 @@ mcl_mobs.register_mob("mobs_mc:baby_husk", baby_husk)
 
 -- Spawning
 
-mcl_mobs:spawn_specific(
-"mobs_mc:zombie",
-"overworld",
-"ground",
-{
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-},
-0,
-7,
-30,
-1000,
-4,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:zombie",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 1000,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 -- Baby zombie is 20 times less likely than regular zombies
-mcl_mobs:spawn_specific(
-"mobs_mc:baby_zombie",
-"overworld",
-"ground",
-{
-"FlowerForest_underground",
-"JungleEdge_underground",
-"StoneBeach_underground",
-"MesaBryce_underground",
-"Mesa_underground",
-"RoofedForest_underground",
-"Jungle_underground",
-"Swampland_underground",
-"BirchForest_underground",
-"Plains_underground",
-"MesaPlateauF_underground",
-"ExtremeHills_underground",
-"MegaSpruceTaiga_underground",
-"BirchForestM_underground",
-"SavannaM_underground",
-"MesaPlateauFM_underground",
-"Desert_underground",
-"Savanna_underground",
-"Forest_underground",
-"SunflowerPlains_underground",
-"ColdTaiga_underground",
-"IcePlains_underground",
-"IcePlainsSpikes_underground",
-"MegaTaiga_underground",
-"Taiga_underground",
-"ExtremeHills+_underground",
-"JungleM_underground",
-"ExtremeHillsM_underground",
-"JungleEdgeM_underground",
-"Mesa",
-"FlowerForest",
-"Swampland",
-"Taiga",
-"ExtremeHills",
-"Jungle",
-"Savanna",
-"BirchForest",
-"MegaSpruceTaiga",
-"MegaTaiga",
-"ExtremeHills+",
-"Forest",
-"Plains",
-"ColdTaiga",
-"IcePlainsSpikes",
-"SunflowerPlains",
-"IcePlains",
-"RoofedForest",
-"ExtremeHills+_snowtop",
-"MesaPlateauFM_grasstop",
-"JungleEdgeM",
-"ExtremeHillsM",
-"JungleM",
-"BirchForestM",
-"MesaPlateauF",
-"MesaPlateauFM",
-"MesaPlateauF_grasstop",
-"MesaBryce",
-"JungleEdge",
-"SavannaM",
-"FlowerForest_beach",
-"Forest_beach",
-"StoneBeach",
-"ColdTaiga_beach_water",
-"Taiga_beach",
-"Savanna_beach",
-"Plains_beach",
-"ExtremeHills_beach",
-"ColdTaiga_beach",
-"Swampland_shore",
-"JungleM_shore",
-"Jungle_shore",
-"MesaPlateauFM_sandlevel",
-"MesaPlateauF_sandlevel",
-"MesaBryce_sandlevel",
-"Mesa_sandlevel",
-},
-0,
-7,
-30,
-50,
-4,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:baby_zombie",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"FlowerForest_underground",
+		"JungleEdge_underground",
+		"StoneBeach_underground",
+		"MesaBryce_underground",
+		"Mesa_underground",
+		"RoofedForest_underground",
+		"Jungle_underground",
+		"Swampland_underground",
+		"BirchForest_underground",
+		"Plains_underground",
+		"MesaPlateauF_underground",
+		"ExtremeHills_underground",
+		"MegaSpruceTaiga_underground",
+		"BirchForestM_underground",
+		"SavannaM_underground",
+		"MesaPlateauFM_underground",
+		"Desert_underground",
+		"Savanna_underground",
+		"Forest_underground",
+		"SunflowerPlains_underground",
+		"ColdTaiga_underground",
+		"IcePlains_underground",
+		"IcePlainsSpikes_underground",
+		"MegaTaiga_underground",
+		"Taiga_underground",
+		"ExtremeHills+_underground",
+		"JungleM_underground",
+		"ExtremeHillsM_underground",
+		"JungleEdgeM_underground",
+		"Mesa",
+		"FlowerForest",
+		"Swampland",
+		"Taiga",
+		"ExtremeHills",
+		"Jungle",
+		"Savanna",
+		"BirchForest",
+		"MegaSpruceTaiga",
+		"MegaTaiga",
+		"ExtremeHills+",
+		"Forest",
+		"Plains",
+		"ColdTaiga",
+		"IcePlainsSpikes",
+		"SunflowerPlains",
+		"IcePlains",
+		"RoofedForest",
+		"ExtremeHills+_snowtop",
+		"MesaPlateauFM_grasstop",
+		"JungleEdgeM",
+		"ExtremeHillsM",
+		"JungleM",
+		"BirchForestM",
+		"MesaPlateauF",
+		"MesaPlateauFM",
+		"MesaPlateauF_grasstop",
+		"MesaBryce",
+		"JungleEdge",
+		"SavannaM",
+		"FlowerForest_beach",
+		"Forest_beach",
+		"StoneBeach",
+		"ColdTaiga_beach_water",
+		"Taiga_beach",
+		"Savanna_beach",
+		"Plains_beach",
+		"ExtremeHills_beach",
+		"ColdTaiga_beach",
+		"Swampland_shore",
+		"JungleM_shore",
+		"Jungle_shore",
+		"MesaPlateauFM_sandlevel",
+		"MesaPlateauF_sandlevel",
+		"MesaBryce_sandlevel",
+		"Mesa_sandlevel",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 50,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 
-mcl_mobs:spawn_specific(
-"mobs_mc:husk",
-"overworld",
-"ground",
-{
-"Desert",
-},
-0,
-7,
-30,
-2400,
-4,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
-mcl_mobs:spawn_specific(
-"mobs_mc:baby_husk",
-"overworld",
-"ground",
-{
-"Desert",
-},
-0,
-7,
-30,
-120,
-4,
-mcl_vars.mg_overworld_min,
-mcl_vars.mg_overworld_max)
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:husk",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Desert",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 2400,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
+mcl_mobs:spawn_setup({
+	name = "mobs_mc:baby_husk",
+	dimension = "overworld",
+	type_of_spawning = "ground",
+	biomes = {
+		"Desert",
+	},
+	min_light = 0,
+	max_light = 7,
+	chance = 120,
+	interval = 30,
+	aoc = 4,
+	min_height = mcl_vars.mg_overworld_min,
+	max_height = mcl_vars.mg_overworld_max
+})
 
 -- Spawn eggs
 mcl_mobs.register_egg("mobs_mc:husk", S("Husk"), "#777361", "#ded88f", 0)