From f18e089bac94acfb7ec943ce523c75961db9c34b Mon Sep 17 00:00:00 2001 From: flux <25628292+fluxionary@users.noreply.github.com> Date: Wed, 19 Jul 2023 16:07:27 -0700 Subject: [PATCH] initial everything --- caverealms_lite.lua | 18 +++ flower_cow.lua | 19 +++ mob_core.lua | 1 + mobs_animal.lua | 200 +++++++++++++++++++++++++++++ mobs_balrog.lua | 33 +++++ mobs_banshee.lua | 11 ++ mobs_gazer.lua | 10 ++ mobs_ghost_redo.lua | 24 ++++ mobs_mime.lua | 8 ++ mobs_monster.lua | 195 +++++++++++++++++++++++++++++ mobs_others.lua | 23 ++++ mobs_redo.lua | 9 ++ mobs_skeletons.lua | 1 + mobs_umbra.lua | 9 ++ mod.conf | 25 +++- nether.lua | 1 + nether_monsters.lua | 21 ++++ petz.lua | 298 ++++++++++++++++++++++++-------------------- scorpion.lua | 34 +++++ water_life.lua | 255 +++++++++++++++++++++++++++++++++++++ xocean.lua | 1 + yl_commons.lua | 19 +++ yl_nether_mobs.lua | 101 +++++++++++++++ 23 files changed, 1182 insertions(+), 134 deletions(-) create mode 100644 caverealms_lite.lua create mode 100644 flower_cow.lua create mode 100644 mob_core.lua create mode 100644 mobs_balrog.lua create mode 100644 mobs_banshee.lua create mode 100644 mobs_gazer.lua create mode 100644 mobs_ghost_redo.lua create mode 100644 mobs_mime.lua create mode 100644 mobs_monster.lua create mode 100644 mobs_others.lua create mode 100644 mobs_redo.lua create mode 100644 mobs_skeletons.lua create mode 100644 mobs_umbra.lua create mode 100644 nether.lua create mode 100644 nether_monsters.lua create mode 100644 scorpion.lua create mode 100644 water_life.lua create mode 100644 xocean.lua create mode 100644 yl_commons.lua create mode 100644 yl_nether_mobs.lua diff --git a/caverealms_lite.lua b/caverealms_lite.lua new file mode 100644 index 0000000..9b775f5 --- /dev/null +++ b/caverealms_lite.lua @@ -0,0 +1,18 @@ +spawnit.register({ + entity_name = "mobs_monster:dungeon_master", + chance = 300 * 7000 / 6000, + on = {"caverealms:hot_cobble"}, + max_y = -8000, + max_light = 12, + max_in_area = 2, + min_player_distance = 12, + spawn_in_protected = false, + after_spawn = function(pos, obj) + local ent = obj:get_luaentity() + ent.hp_max = 70 + ent.health = 70 + ent.damage = 5 + ent.shoot_interval = 1.5 + ent.dogshoot_switch = 0 + end, +}) diff --git a/flower_cow.lua b/flower_cow.lua new file mode 100644 index 0000000..e577ea9 --- /dev/null +++ b/flower_cow.lua @@ -0,0 +1,19 @@ +local BASE_CHANCE = 300 -- one every 5 minutes +local BASE_CHANCE_RATIO = 60 * 8000 -- cow +local MAX_IN_AREA = 1 + +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +spawnit.register({ + entity_name = "flower_cow:flower_cow", + chance = BASE_CHANCE * (60 * 80000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 5, + max_y = 200, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) diff --git a/mob_core.lua b/mob_core.lua new file mode 100644 index 0000000..c8c42b0 --- /dev/null +++ b/mob_core.lua @@ -0,0 +1 @@ +mob_core.spawn_enabled = false -- note that this doesn't disable the ABM, but nothing will spawn diff --git a/mobs_animal.lua b/mobs_animal.lua index e69de29..00b7572 100644 --- a/mobs_animal.lua +++ b/mobs_animal.lua @@ -0,0 +1,200 @@ +local f = string.format + +local BASE_CHANCE = 300 -- one every 5 minutes +local BASE_CHANCE_RATIO = 60 * 8000 -- cow +local MAX_IN_AREA = 5 + +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +spawnit.register({ + entity_name = "mobs_animal:bee", + chance = BASE_CHANCE * (60 * 7000) / BASE_CHANCE_RATIO, + near = { "group:flower" }, + on = { "any" }, + min_y = 3, + max_y = 200, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:bunny", + chance = BASE_CHANCE * (60 * 8000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 5, + max_y = 200, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:chicken", + chance = BASE_CHANCE * (60 * 8000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 5, + max_y = 200, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:cow", + chance = BASE_CHANCE * (60 * 8000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 5, + max_y = 200, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:kitten", + chance = BASE_CHANCE * (60 * 10000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 5, + max_y = 50, + min_time_of_day = DUSK, + max_time_of_day = DAWN, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:panda", + chance = BASE_CHANCE * (60 * 8000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "ethereal:bamboo", "ethereal:bamboo_leaves", "ethereal:bamboo_sprout" }, + min_y = 10, + max_y = 80, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:penguin", + chance = BASE_CHANCE * (60 * 20000) / BASE_CHANCE_RATIO, + on = { "default:snowblock", "default:ice" }, + min_y = 0, + max_y = 10, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "mobs_animal:rat", + chance = BASE_CHANCE * (60 * 8000) / BASE_CHANCE_RATIO, + min_light = 3, + max_light = 9, + max_y = 0, + max_in_area = MAX_IN_AREA, +}) + +local function make_child(obj, ent) + local textures = ent.base_texture + + -- using specific child texture (if found) + if ent.child_texture then + textures = ent.child_texture[1] + end + + -- and resize to half height (multiplication is faster than division) + obj:set_properties({ + textures = textures, + visual_size = { + x = ent.base_size.x * .5, + y = ent.base_size.y * .5 + }, + collisionbox = { + ent.base_colbox[1] * .5, + ent.base_colbox[2] * .5, + ent.base_colbox[3] * .5, + ent.base_colbox[4] * .5, + ent.base_colbox[5] * .5, + ent.base_colbox[6] * .5 + }, + selectionbox = { + ent.base_selbox[1] * .5, + ent.base_selbox[2] * .5, + ent.base_selbox[3] * .5, + ent.base_selbox[4] * .5, + ent.base_selbox[5] * .5, + ent.base_selbox[6] * .5 + } + }) + + ent.child = true +end + +local colors = { + black = "#212121b0", + brown = "#663300a0", + dark_grey = "#444444b0", + grey = "#919191b0", + white = "#ffffffc0", +} + +local function after_spawn_sheep(pos, obj) + local ent = obj:get_luaentity() + if not ent then + return + end + + local color = ent.name:match("^mobs_animal:sheep_(.*)$") + + local horns = math.random(400) <= pos.y + local lamb = math.random(4) == 1 + + if horns and not lamb then + local texture = f("mobs_sheep_base.png^mobs_sheep_horns.png^(mobs_sheep_wool.png^[multiply:%s)", + colors[color] + ) + + obj:set_properties({ textures = { texture } }) + ent.base_texture = { texture } + ent.attribute_horns = horns + elseif lamb then + make_child(obj, ent) + end +end + +spawnit.register({ + entity_name = { + ["mobs_animal:sheep_white"] = 24, + ["mobs_animal:sheep_black"] = 4, + ["mobs_animal:sheep_brown"] = 2, + ["mobs_animal:sheep_grey"] = 1, + ["mobs_animal:sheep_dark_grey"] = 1, + }, + chance = BASE_CHANCE * (60 * 12000) / BASE_CHANCE_RATIO, + cluster = 4, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 0, + max_y = 400, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, + after_spawn = after_spawn_sheep, +}) + +spawnit.register({ + entity_name = "mobs_animal:pumba", + chance = BASE_CHANCE * (60 * 8000) / BASE_CHANCE_RATIO, + on = { "default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass", "default:dirt_with_rainforest_litter", "ethereal:mushroom_dirt" }, + near = { "group:mushroom", "group:grass" }, + min_y = 0, + max_y = 200, + min_light = 2, + max_in_area = MAX_IN_AREA, +}) diff --git a/mobs_balrog.lua b/mobs_balrog.lua new file mode 100644 index 0000000..044d861 --- /dev/null +++ b/mobs_balrog.lua @@ -0,0 +1,33 @@ +local s = mobs_balrog.settings + +local base_chance = 7200 + +spawnit.register({ + entity_name = "mobs_balrog:balrog", + chance = base_chance, + within = { "breathable" }, + on = { "node" }, + min_y = s.min_height, + max_y = s.max_height, + min_light = s.min_light, + max_light = s.max_light, + max_in_area = 1, + max_in_area_radius = 128, + min_player_distance = 24, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_balrog:balrog", + chance = base_chance / 2, + within = { "breathable" }, + on = { "node" }, + min_y = s.min_height, + max_y = (3 * s.min_height + s.max_height) / 4, + min_light = s.min_light, + max_light = s.max_light, + max_in_area = 1, + max_in_area_radius = 128, + min_player_distance = 24, + spawn_in_protected = false, +}) diff --git a/mobs_banshee.lua b/mobs_banshee.lua new file mode 100644 index 0000000..6c3ca41 --- /dev/null +++ b/mobs_banshee.lua @@ -0,0 +1,11 @@ + +spawnit.register({ + entity_name = "mobs_banshee:banshee", + chance = 300, + within = { "breathable" }, + on = { "any" }, + near = { "bones:bones"}, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/mobs_gazer.lua b/mobs_gazer.lua new file mode 100644 index 0000000..adbcdbd --- /dev/null +++ b/mobs_gazer.lua @@ -0,0 +1,10 @@ + +spawnit.register({ + entity_name = "mobs_gazer:gazer" , + chance = 300, + on = { "node" }, + max_y = -500, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/mobs_ghost_redo.lua b/mobs_ghost_redo.lua new file mode 100644 index 0000000..643b523 --- /dev/null +++ b/mobs_ghost_redo.lua @@ -0,0 +1,24 @@ +local ghost_bones_only = minetest.settings:get_bool("mobs_ghost_redo_bones_only", false) + +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +local near +if ghost_bones_only then + near = {"bones:bones", "mobs_humans:human_bones"} +else + near = {"any"} +end + +spawnit.register({ + entity_name = "mobs_ghost_redo:ghost", + chance = 300, + within = { "any" }, + on = { "any" }, + near = near, + max_in_area = 2, + min_time_of_day = DUSK, + max_time_of_day = DAWN, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/mobs_mime.lua b/mobs_mime.lua new file mode 100644 index 0000000..99032f2 --- /dev/null +++ b/mobs_mime.lua @@ -0,0 +1,8 @@ +spawnit.register({ + entity_name = "mobs_mime:mime", + chance = 300, + max_in_area = 1, + within = { "not walkable" }, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/mobs_monster.lua b/mobs_monster.lua new file mode 100644 index 0000000..8826b8c --- /dev/null +++ b/mobs_monster.lua @@ -0,0 +1,195 @@ +local BASE_CHANCE = 300 -- one every 5 minutes +local BASE_CHANCE_RATIO = 6000 -- dirt monster + +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +spawnit.register({ + entity_name = "mobs_monster:dirt_monster", + on = {"group:soil"}, + chance = BASE_CHANCE * 6000 / BASE_CHANCE_RATIO, + min_y = 0, + max_light = 7, + min_time_of_day = DUSK, + max_time_of_day = DAWN, + max_in_area = 2, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:dungeon_master", + chance = BASE_CHANCE * 9000 / BASE_CHANCE_RATIO, + max_y = -70, + max_light = 5, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +if yl_spawnit.has.nether and nether.DEPTH_FLOOR > -70 then + spawnit.register({ + entity_name = "mobs_monster:dungeon_master", + chance = 300, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_light = 5, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, + }) +end + +spawnit.register({ + entity_name = "mobs_monster:fire_spirit", + on = {"default:obsidian", "caverealms:hot_cobble"}, + near = {"group:fire"}, + chance = BASE_CHANCE * 1500 / BASE_CHANCE_RATIO, + max_y = -150, + min_light = 12, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:land_guard", + on = { + "default:snow", "default:ice", "default:stone", + "default:dry_dirt_with_dry_grass", "ethereal:dry_dirt" + }, + chance = BASE_CHANCE * 25000 / BASE_CHANCE_RATIO, + min_y = 0, + max_light = 7, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:lava_flan", + within = {"default:lava_source"}, + on = { "any" }, + chance = BASE_CHANCE * 1500 / BASE_CHANCE_RATIO, + max_y = 0, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:mese_monster", + on = { "any" }, + near = { "default:mese", "default:stone_with_mese"}, + chance = BASE_CHANCE * 5000 / BASE_CHANCE_RATIO, + max_y = -20, + max_light = 7, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:oerkki", + on = { "group:cracky", "group:crumbly" }, + chance = BASE_CHANCE * 6000 / BASE_CHANCE_RATIO, + max_y = -10, + max_light = 6, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:oerkki", + on = { "group:cracky", "group:crumbly" }, + chance = BASE_CHANCE * 3000 / BASE_CHANCE_RATIO, + max_y = -10000, + max_light = 6, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:oerkki", + on = { "group:cracky", "group:crumbly" }, + chance = BASE_CHANCE * 1000 / BASE_CHANCE_RATIO, + max_y = -25000, + max_light = 6, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:sand_monster", + on = {"default:desert_sand"}, + chance = BASE_CHANCE * 7000 / BASE_CHANCE_RATIO, + min_y = 0, + max_light = 7, + max_in_area = 2, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:spider", + on = {"default:dirt_with_rainforest_litter", "default:snowblock", + "default:snow", "ethereal:crystal_dirt", "ethereal:cold_dirt"}, + chance = BASE_CHANCE * 7000 / BASE_CHANCE_RATIO, + min_y = 25, + max_light = 8, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:spider", + chance = BASE_CHANCE * 7000 / BASE_CHANCE_RATIO, + max_y = -40, + max_light = 7, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:stone_monster", + chance = BASE_CHANCE * 7000 / BASE_CHANCE_RATIO, + on = {"default:stone", "default:desert_stone", "default:sandstone"}, + max_y = 0, + max_light = 7, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:tree_monster", + chance = BASE_CHANCE * 7000 / BASE_CHANCE_RATIO, + on = {"group:soil"}, + near = {"group:tree", "group:leaves"}, + min_y = 0, + max_y = 5000, + max_light = 6, + max_in_area = 1, + min_time_of_day = DUSK, + max_time_of_day = DAWN, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "mobs_monster:tree_monster", + chance = BASE_CHANCE * 7000 / BASE_CHANCE_RATIO, + on = {"group:leaves"}, + min_y = 0, + max_light = 7, + max_in_area = 1, + min_time_of_day = DUSK, + max_time_of_day = DAWN, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/mobs_others.lua b/mobs_others.lua new file mode 100644 index 0000000..bb67501 --- /dev/null +++ b/mobs_others.lua @@ -0,0 +1,23 @@ +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +spawnit.register({ + entity_name = "mobs_others:snow_walker", + chance = 300, + on = {"default:dirt_with_snow", + "default:permafrost", + "default:permafrost_with_stones", + "default:permafrost_with_moss", + "default:snow", + "default:snowblock", + "default:ice", + "default:cave_ice"}, + min_y = -15, + max_in_area = 2, + min_time_of_day = DUSK, + max_time_of_day = DAWN, + min_player_distance = 12, + spawn_in_protected = false, +}) + +-- the ice monsters are automatically spawned w/ the snow walkers diff --git a/mobs_redo.lua b/mobs_redo.lua new file mode 100644 index 0000000..7c849f7 --- /dev/null +++ b/mobs_redo.lua @@ -0,0 +1,9 @@ +-- here, we try to do the impossible and unregister mobs_redo spawns... + +if minetest.settings:get_bool("mobs_spawn", true) then + minetest.settings:set_bool("mobs_spawn", false) + if not minetest.settings:write() then + error("cannot disable mobs_redo spawning") + end + error("mobs_redo spawning has been disabled; please restart, this error shouldn't occur again.") +end diff --git a/mobs_skeletons.lua b/mobs_skeletons.lua new file mode 100644 index 0000000..65c6f34 --- /dev/null +++ b/mobs_skeletons.lua @@ -0,0 +1 @@ +-- these are disabled diff --git a/mobs_umbra.lua b/mobs_umbra.lua new file mode 100644 index 0000000..72b0881 --- /dev/null +++ b/mobs_umbra.lua @@ -0,0 +1,9 @@ +spawnit.register({ + entity_name = "mobs_umbra:umbra", + chance = 300, + max_y = -300, + max_light = 5, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/mod.conf b/mod.conf index 9d8ff39..40d3bb5 100644 --- a/mod.conf +++ b/mod.conf @@ -1,4 +1,27 @@ name = spawn_things version = 2023-07-16 depends = fmod, spawnit -optional_depends = petz, mobs_animal +optional_depends = """ +caverealms_lite, +flower_cow, +mob_core, +mobs_animal, +mobs_balrog, +mobs_banshee, +mobs_gazer, +mobs_ghost_redo, +mobs_mime, +mobs_monster, +mobs_others, +mobs_redo, +mobs_skeletons, +mobs_umbra, +nether, +petz, +nether_monsters, +scorpion, +water_life, +xocean, +yl_commons, +yl_nether_mobs, +""" diff --git a/nether.lua b/nether.lua new file mode 100644 index 0000000..19425d1 --- /dev/null +++ b/nether.lua @@ -0,0 +1 @@ +-- this space intentionally left blank diff --git a/nether_monsters.lua b/nether_monsters.lua new file mode 100644 index 0000000..b803168 --- /dev/null +++ b/nether_monsters.lua @@ -0,0 +1,21 @@ +spawnit.register({ + entity_name = "nether_mobs:dragon", + chance = 150000, + cluster = 1, + on = {"any"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + min_player_distance = 16, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "nether_mobs:netherman", + chance = 15, + cluster = 2, + on = {"nether:sand", "nether:rack"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + min_player_distance = 5, + spawn_in_protected = false, +}) diff --git a/petz.lua b/petz.lua index 26dc739..02affbf 100644 --- a/petz.lua +++ b/petz.lua @@ -8,81 +8,92 @@ local DAWN = 4500 / 24000 local DUSK = 19500 / 24000 spawnit.register({ - entity = "petz:bat", + entity_name = "petz:bat", chance = BASE_CHANCE, within = { "breathable airlike" }, on = { "any" }, + max_y = 5000, + max_light = 5, min_time_of_day = DUSK, max_time_of_day = DAWN, - max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:beaver", + entity_name = "petz:beaver", chance = BASE_CHANCE / 0.6, within = { "default:river_water_source" }, on = { "any" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:bunny", + entity_name = "petz:bunny", chance = BASE_CHANCE / 0.6, cluster = 3, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:butterfly", + entity_name = "petz:butterfly", chance = BASE_CHANCE, - within = { "breathable" }, on = { "any" }, near = { "group:flower" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:calf", + entity_name = "petz:calf", chance = BASE_CHANCE / 0.6, cluster = 3, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:camel", + entity_name = "petz:camel", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "group:sand", "default:desert_sandstone", "default:sandstone" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:chimp", + entity_name = "petz:chimp", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:dirt_with_rainforest_litter", "ethereal:jungle_dirt", "default:jungleleaves", "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red", "ethereal:palmleaves", "moretrees:date_palm_leaves", "moretrees:palm_leaves" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 8, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:clownfish", + entity_name = "petz:clownfish", chance = BASE_CHANCE, cluster = 3, within = { "default:water_source" }, @@ -90,107 +101,115 @@ spawnit.register({ near = { "group:coral" }, min_y = -100, max_y = 5000, + min_light = 2, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:dolphin", + entity_name = "petz:dolphin", chance = BASE_CHANCE, cluster = 3, within = { "default:water_source" }, on = { "any" }, min_y = -100, max_y = 5000, + min_light = 2, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:ducky", + entity_name = "petz:ducky", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "group:soil", "group:water" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:elephant", + entity_name = "petz:elephant", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:dirt_with_rainforest_litter","default:dirt_with_dry_grass","default:dry_dirt","default:dry_dirt_with_dry_grass","ethereal:dry_dirt","ethereal:jungle_dirt" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:elephant_female", + entity_name = "petz:elephant_female", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:dirt_with_rainforest_litter","default:dirt_with_dry_grass","default:dry_dirt","default:dry_dirt_with_dry_grass","ethereal:dry_dirt","ethereal:jungle_dirt" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:flamingo", + entity_name = "petz:flamingo", chance = BASE_CHANCE / 0.8, - within = { "breathable" }, on = { "default:dirt_with_coniferous_litter","default:dirt_with_grass","default:dirt_with_dry_grass","default:dry_dirt","default:dry_dirt_with_dry_grass" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:foxy", + entity_name = "petz:foxy", chance = BASE_CHANCE / 0.8, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:frog", + entity_name = "petz:frog", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "default:dirt_with_grass","default:dirt_with_rainforest_litter","ethereal:bamboo_dirt","ethereal:grove_dirt","ethereal:jungle_dirt","ethereal:prairie_dirt","woodsoils:grass_with_leaves_1","woodsoils:grass_with_leaves_2" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 8, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:gecko", + entity_name = "petz:gecko", chance = BASE_CHANCE / 0.8, - within = { "breathable" }, on = { "default:dirt_with_coniferous_litter","default:dirt_with_grass","default:dirt_with_dry_grass","default:dry_dirt","default:dry_dirt_with_dry_grass" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:goat", + entity_name = "petz:goat", chance = BASE_CHANCE / 0.6, cluster = 3, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:grizzly", + entity_name = "petz:grizzly", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:dirt_with_grass","default:dirt_with_rainforest_litter","ethereal:bamboo_dirt","ethereal:grove_dirt","ethereal:jungle_dirt","ethereal:prairie_dirt","woodsoils:grass_with_leaves_1","woodsoils:grass_with_leaves_2" }, - min_y = -32, + min_y = 0, max_y = 5000, min_player_distance = 12, spawn_in_protected = false, @@ -198,52 +217,55 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:hamster", + entity_name = "petz:hamster", chance = BASE_CHANCE, - within = { "breathable" }, on = { "group:sand","default:desert_sandstone","default:sandstone" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:hen", + entity_name = "petz:hen", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:kitty", + entity_name = "petz:kitty", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_time_of_day = DUSK, + max_time_of_day = DAWN, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:lamb", + entity_name = "petz:lamb", chance = BASE_CHANCE / 0.6, cluster = 3, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:leopard", + entity_name = "petz:leopard", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:dirt_with_dry_grass","default:dry_dirt","default:dry_dirt_with_dry_grass","ethereal:dry_dirt" }, - min_y = -32, + min_y = 0, max_y = 5000, min_player_distance = 12, spawn_in_protected = false, @@ -251,11 +273,10 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:lion", + entity_name = "petz:lion", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:dirt_with_dry_grass","default:dry_dirt","default:dry_dirt_with_dry_grass","ethereal:dry_dirt" }, - min_y = -32, + min_y = 0, max_y = 5000, min_player_distance = 12, spawn_in_protected = false, @@ -263,19 +284,19 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:moth", + entity_name = "petz:moth", chance = BASE_CHANCE / 0.8, - within = { "breathable" }, on = { "any" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:mr_pumpkin", + entity_name = "petz:mr_pumpkin", chance = BASE_CHANCE / 0.1, - within = { "breathable" }, on = { "group:soil","group:stone" }, max_y = 5000, min_player_distance = 12, @@ -287,64 +308,68 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:panda", + entity_name = "petz:panda", chance = BASE_CHANCE, - within = { "breathable" }, - on = { "ethereal:bamboo_dirt" }, - min_y = -32, + on = {"group:soil"}, + near = {"ethereal:bamboo", "ethereal:bamboo_leaves", "ethereal:bamboo_sprout"}, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:parrot", + entity_name = "petz:parrot", chance = BASE_CHANCE/ 0.8, - within = { "breathable" }, on = { "any" }, near = { "default:jungleleaves","moretrees:jungletree_leaves_yellow","moretrees:jungletree_leaves_red","ethereal:palmleaves","moretrees:date_palm_leaves","moretrees:palm_leaves" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 10, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:penguin", + entity_name = "petz:penguin", chance = BASE_CHANCE, cluster = 3, - within = { "breathable" }, - on = { "default:snowblock","default:ice","default:dirt_with_snow","default:snow" }, - min_y = -32, + on = { "default:snowblock","default:ice" }, + min_y = 0, max_y = 10, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:pigeon", + entity_name = "petz:pigeon", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "any" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:piggy", + entity_name = "petz:piggy", chance = BASE_CHANCE / 0.6, cluster = 3, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:polar_bear", + entity_name = "petz:polar_bear", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:snowblock","default:ice","default:dirt_with_snow","default:snow" }, - min_y = -32, + min_y = 0, max_y = 5000, min_player_distance = 12, spawn_in_protected = false, @@ -352,51 +377,55 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:pony", + entity_name = "petz:pony", chance = BASE_CHANCE / 0.6, cluster = 5, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:puppy", + entity_name = "petz:puppy", chance = BASE_CHANCE / 0.6, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, + max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) + +spawnit.register({ + entity_name = "petz:queen_ant", + chance = BASE_CHANCE / 0.4, + on = { "group:soil" }, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:queen_ant", + entity_name = "petz:queen_bee", chance = BASE_CHANCE / 0.4, - within = { "breathable" }, - on = { "group:soil" }, - min_y = -32, - max_y = 5000, - max_in_area = MAX_IN_AREA, -}) - -spawnit.register({ - entity = "petz:queen_bee", - chance = BASE_CHANCE / 0.4, - within = { "breathable" }, on = { "any" }, near = { "group:flower" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:rat", + entity_name = "petz:rat", chance = BASE_CHANCE / 0.2, - within = { "breathable" }, on = { "group:soil","group:stone","rainbow_source:black_water_source" }, max_y = 5000, max_light = 10, @@ -406,9 +435,8 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:santa_killer", + entity_name = "petz:santa_killer", chance = BASE_CHANCE / 0.1, - within = { "breathable" }, on = { "default:snowblock","default:ice","default:dirt_with_snow","default:snow" }, min_y = -32, max_y = 10, @@ -421,19 +449,17 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:silkworm", + entity_name = "petz:silkworm", chance = BASE_CHANCE, - within = { "breathable" }, on = { "group:leaves" }, - min_y = -32, + min_y = 0, max_y = 5000, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:snow_leopard", + entity_name = "petz:snow_leopard", chance = BASE_CHANCE, - within = { "breathable" }, on = { "default:snowblock","default:ice","default:dirt_with_snow","default:snow" }, min_y = 20, max_y = 5000, @@ -443,20 +469,21 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:squirrel", + entity_name = "petz:squirrel", chance = BASE_CHANCE / 0.8, cluster = 3, - within = { "breathable" }, on = { "group:leaves", "group:tree" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 8, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:tarantula", + entity_name = "petz:tarantula", chance = BASE_CHANCE, - within = { "breathable" }, on = { "group:stone","default:dirt_with_rainforest_litter","ethereal:jungle_dirt","default:jungleleaves","moretrees:jungletree_leaves_yellow","moretrees:jungletree_leaves_red","ethereal:palmleaves","moretrees:date_palm_leaves","moretrees:palm_leaves" }, max_y = 5000, min_player_distance = 12, @@ -465,44 +492,49 @@ spawnit.register({ }) spawnit.register({ - entity = "petz:toucan", + entity_name = "petz:toucan", chance = BASE_CHANCE / 0.8, - within = { "breathable" }, on = { "any" }, near = { "default:jungleleaves","moretrees:jungletree_leaves_yellow","moretrees:jungletree_leaves_red","ethereal:palmleaves","moretrees:date_palm_leaves","moretrees:palm_leaves" }, - min_y = -32, + min_y = 0, max_y = 5000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:tropicalfish", + entity_name = "petz:tropicalfish", chance = BASE_CHANCE, within = { "default:water_source" }, on = { "any" }, near = { "group:coral" }, - min_y = -32, + min_y = -100, max_y = 5000, + min_light = 2, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:turtle", + entity_name = "petz:turtle", chance = BASE_CHANCE / 0.6, within = { "group:water" }, on = { "any" }, min_y = -100, max_y = 5000, + min_light = 8, + min_time_of_day = DAWN, + max_time_of_day = DUSK, max_in_area = MAX_IN_AREA, }) spawnit.register({ - entity = "petz:wolf", + entity_name = "petz:wolf", chance = BASE_CHANCE, cluster = 4, - within = { "breathable" }, on = { "group:soil" }, - min_y = -32, + min_y = 0, max_y = 5000, min_player_distance = 12, spawn_in_protected = false, diff --git a/scorpion.lua b/scorpion.lua new file mode 100644 index 0000000..fb96bed --- /dev/null +++ b/scorpion.lua @@ -0,0 +1,34 @@ +spawnit.register({ + entity_name = "scorpion:big", + chance = 500, + on = {"default:desert_sand"}, + min_y = -10, + max_y = 150, + max_light = 14, + max_in_area = 5, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "scorpion:boss", + chance = 5000, + on = {"default:desert_stone"}, + min_y = 0, + max_y = 150, + max_light = 10, + max_in_area = 1, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "scorpion:little", + chance = 300, + on = {"default:desert_sand", "default:dirt_with_rainforest_litter", "default:dry_dirt_with_dry_grass"}, + min_y = -10, + max_y = 200, + max_in_area = 5, + min_player_distance = 12, + spawn_in_protected = false, +}) diff --git a/water_life.lua b/water_life.lua new file mode 100644 index 0000000..43ba7c2 --- /dev/null +++ b/water_life.lua @@ -0,0 +1,255 @@ +local BASE_CHANCE = 300 -- one every 5 minutes + +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +-- disable all spawns +table.insert_all(water_life.no_spawn_table, { + "water_life:alligator", + "water_life:beaver", + "water_life:clams", + "water_life:clownfish", + "water_life:coralfish", + "water_life:croc", + "water_life:gecko", + "water_life:gull", + "water_life:jellyfish", + "water_life:piranha", + "water_life:fish", + "water_life:urchin", + "water_life:shark", + "water_life:snake", + "water_life:whale", +}) + +if water_life.swampz then + spawnit.register({ + entity_name = "water_life:alligator", + chance = BASE_CHANCE * 1, + within = {"default:river_water_source"}, + on = {"default:river_water_source"}, + min_y = -50, + max_y = 150, + min_light = 12, + max_in_area = 1, + max_in_area_radius = 32, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + min_player_distance = 12, + spawn_in_protected = false, + }) +end + +spawnit.register({ + entity_name = "water_life:beaver", + chance = BASE_CHANCE * 1, + within = {"default:river_water_source"}, + on = {"any"}, + min_y = 20, + max_y = 150, + min_light = 12, + max_in_area = 1, + max_in_area_radius = 32, + min_time_of_day = DAWN, + max_time_of_day = DUSK, +}) + +spawnit.register({ + entity_name = "water_life:clams", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + near = {"water_life:seagrassgreen","water_life:seagrassred"}, + min_y = -50, + max_y = 1, + max_in_area = 15, +}) + +spawnit.register({ + entity_name = "water_life:clownfish", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + on = {"any"}, + near = { + "group:coral", + "default:coral_brown", + "default:coral_cyan", + "default:coral_green", + "default:coral_pink", + "default:coral_orange", + "default:sand_with_kelp", + "water_life:kelpbrown", + "water_life:kelpgreen", + "water_life:seagrassgreen", + "water_life:seagrassred", + "water_life:coralmagenta", + "water_life:coralskyblue", + }, + min_y = -50, + max_y = 1, + min_light = 12, +}) + +spawnit.register({ + entity_name = "water_life:coralfish", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + min_y = -50, + max_y = 1, + max_in_area = 5, + on = {"any"}, + near = { + "group:coral", + "default:coral_brown", + "default:coral_cyan", + "default:coral_green", + "default:coral_pink", + "default:coral_orange", + "default:sand_with_kelp", + "water_life:kelpbrown", + "water_life:kelpgreen", + "water_life:seagrassgreen", + "water_life:seagrassred", + "water_life:coralmagenta", + "water_life:coralskyblue", + }, +}) + +spawnit.register({ + entity_name = "water_life:croc", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + on = {"default:water_source"}, + min_y = -50, + max_y = 150, + min_light = 12, + max_in_area = 1, + max_in_area_radius = 32, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "water_life:gecko", + chance = BASE_CHANCE * 1, + near = {"group:tree","group:leaves","default:junglegrass"}, + min_y = 0, + max_y = 150, + min_light = 12, + max_in_area = 1, + max_in_area_radius = 32, + min_time_of_day = DAWN, + max_time_of_day = DUSK, +}) + +spawnit.register({ + entity_name = "water_life:gull", + chance = BASE_CHANCE * 1, + on = {"any"}, + min_y = 0, + max_y = 150, + min_light = 12, + max_in_area = 3, + max_in_area_radius = 32, + min_time_of_day = DAWN, + max_time_of_day = DUSK, +}) + +spawnit.register({ + entity_name = "water_life:jellyfish", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + on = {"default:water_source"}, + min_y = -50, + max_y = 1, + max_in_area = 5, + max_in_area_radius = 32, +}) + +spawnit.register({ + entity_name = "water_life:piranha", + chance = BASE_CHANCE * 1, + within = {"default:river_water_source"}, + on = {"any"}, + min_y = 0, + max_y = 150, + max_in_area = 3, + max_in_area_radius = 32, +}) + +spawnit.register({ + entity_name = "water_life:fish", + chance = BASE_CHANCE * 1, + within = {"default:river_water_source"}, + on = {"default:river_water_source"}, + min_y = 0, + max_y = 150, + max_in_area = 3, + max_in_area_radius = 32, +}) + +spawnit.register({ + entity_name = "water_life:urchin", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + near = { + "group:coral", + "default:coral_brown", + "default:coral_cyan", + "default:coral_green", + "default:coral_pink", + "default:coral_orange", + "default:sand_with_kelp", + "water_life:kelpbrown", + "water_life:kelpgreen", + "water_life:seagrassgreen", + "water_life:seagrassred", + "water_life:coralmagenta", + "water_life:coralskyblue", + }, + min_y = -50, + max_y = 1, + max_in_area = 16, + max_in_area_radius = 32, +}) + +spawnit.register({ + entity_name = "water_life:shark", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + on = {"default:water_source"}, + min_y = -50, + max_y = 1, + max_in_area = 1, + max_in_area_radius = 32, + min_player_distance = 12, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "water_life:snake", + chance = BASE_CHANCE * 1, + on = { + "default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass", "default:dirt_with_rainforest_litter", + "default:sand", "default:desert_sand", "default:sandstone", "default:desert_sandstone", "default:desert_stone", + }, + min_y = 0, + max_y = 150, + min_light = 12, + max_in_area = 5, + min_time_of_day = DAWN, + max_time_of_day = DUSK, +}) + +spawnit.register({ + entity_name = "water_life:whale", + chance = BASE_CHANCE * 1, + within = {"default:water_source"}, + on = {"default:water_source"}, + min_y = -50, + max_y = 1, + max_in_area = 1, + max_in_area_radius = 32, + spawn_in_protected = false, +}) diff --git a/xocean.lua b/xocean.lua new file mode 100644 index 0000000..65c6f34 --- /dev/null +++ b/xocean.lua @@ -0,0 +1 @@ +-- these are disabled diff --git a/yl_commons.lua b/yl_commons.lua new file mode 100644 index 0000000..ae9b6a2 --- /dev/null +++ b/yl_commons.lua @@ -0,0 +1,19 @@ +local BASE_CHANCE = 300 -- one every 5 minutes +local BASE_CHANCE_RATIO = 60 * 8000 -- cow +local MAX_IN_AREA = 1 + +local DAWN = 4500 / 24000 +local DUSK = 19500 / 24000 + +spawnit.register({ + entity_name = "yl_commons:biome_cow", + chance = BASE_CHANCE * (60 * 80000) / BASE_CHANCE_RATIO, + on = { "group:soil" }, + near = { "group:grass" }, + min_y = 1, + max_y = 1000, + min_light = 12, + min_time_of_day = DAWN, + max_time_of_day = DUSK, + max_in_area = MAX_IN_AREA, +}) diff --git a/yl_nether_mobs.lua b/yl_nether_mobs.lua new file mode 100644 index 0000000..f527b16 --- /dev/null +++ b/yl_nether_mobs.lua @@ -0,0 +1,101 @@ +spawnit.register({ + entity_name = "yl_nether_mobs:blaze", + chance = 30.6, + cluster = 4, + on = {"nether:lava_crust"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 5, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:iron_golem", + chance = 13.7 * 2, + cluster = 4, + on = {"nether:rack_deep", "nether:rack"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 5, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:ogre", + chance = 13.3 * 2, + cluster = 5, + on = {"nether:rack_deep", "nether:rack"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 5, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:rat", + chance = 12.7 * 2, + cluster = 3, + on = {"nether:rack_deep", "nether:rack"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 5, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:witherskeleton", + chance = 20.1 * 2, + cluster = 6, + on = {"nether:rack", "nether:sand","nether:basalt", "nether:rack_deep"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 10, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:evoker", + chance = 27.3, + cluster = 3, + on = { + "nether:rack", + "nether:sand", + "nether:rack_deep", + "yl_nether:rack_deep_with_electrum", + "yl_nether:rack_deep_with_electrumite" + }, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 10, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:whip", + chance = 20.3, + cluster = 5, + on = {"nether:rack_deep","yl_nether:rack_deep_with_electrum", "yl_nether:rack_deep_with_electrumite"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 9, + spawn_in_protected = false, +}) + +spawnit.register({ + entity_name = "yl_nether_mobs:wither", + chance = 25.7, + cluster = 2, + on = {"nether:rack", "nether:sand", "nether:rack_deep", "nether:lava_crust"}, + min_y = nether.DEPTH_FLOOR, + max_y = nether.DEPTH_CEILING, + max_in_area = 6, + min_player_distance = 12, + spawn_in_protected = false, +})