Delete spawn.lua

This commit is contained in:
ElCeejo 2022-02-10 18:00:15 -08:00 committed by GitHub
parent e773fab121
commit 74003ab4e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 0 additions and 289 deletions

View File

@ -1,289 +0,0 @@
animalia.grassland_biomes = {}
animalia.temperate_biomes = {}
animalia.boreal_biomes = {}
animalia.tropical_biomes = {}
local chicken_biomes = {}
local pig_biomes = {}
local function insert_all(tbl, tbl2)
for i = 1, #tbl2 do
table.insert(tbl, tbl2[i])
end
end
minetest.register_on_mods_loaded(function()
for name in pairs(minetest.registered_biomes) do
local biome = minetest.registered_biomes[name]
if name:find("forest") then
local turf = biome.node_top
local heat = biome.heat_point or 0
local humidity = biome.humidity_point or 50
if turf then
if turf:find("dirt") then
if heat >= 40
and humidity >= 60 then
table.insert(animalia.tropical_biomes, name)
else
table.insert(animalia.boreal_biomes, name)
end
elseif turf:find("grass") then
if heat >= 40 then
table.insert(animalia.boreal_biomes, name)
else
table.insert(animalia.temperate_biomes, name)
end
elseif turf:find("litter") then
if heat >= 40
and humidity >= 80 then
table.insert(animalia.tropical_biomes, name)
else
table.insert(animalia.temperate_biomes, name)
end
elseif turf:find("snow") then
table.insert(animalia.temperate_biomes, name)
end
end
else
local turf = biome.node_top
local heat = biome.heat_point or 0
--local humidity = biome.humidity_point or 50
if turf then
if turf:find("grass")
or (turf:find("dirt")
and heat < 60) then
table.insert(animalia.grassland_biomes, name)
end
end
end
end
insert_all(chicken_biomes, animalia.grassland_biomes)
insert_all(chicken_biomes, animalia.tropical_biomes)
insert_all(pig_biomes, animalia.grassland_biomes)
insert_all(pig_biomes, animalia.temperate_biomes)
insert_all(pig_biomes, animalia.boreal_biomes)
end)
-- Chicken --
mob_core.register_spawn({
name = "animalia:chicken",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
min_rad = 24,
max_rad = 256,
group = 6,
optional = {
biomes = chicken_biomes
}
}, animalia.spawn_interval, 4)
-- Cat --
local house_nodes = {}
minetest.register_on_mods_loaded(function()
for name in pairs(minetest.registered_nodes) do
if minetest.get_item_group(name, "stairs") > 0
or minetest.get_item_group(name, "wood") > 0 then
table.insert(house_nodes, name)
end
end
end)
mob_core.register_spawn({
name = "animalia:cat",
nodes = house_nodes,
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
min_rad = 24,
max_rad = 256,
group = 0,
}, animalia.spawn_interval, 6)
-- Cow --
mob_core.register_spawn({
name = "animalia:cow",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
group = 3,
optional = {
biomes = animalia.grassland_biomes
}
}, animalia.spawn_interval, 2)
-- Horse --
mob_core.register_spawn({
name = "animalia:horse",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
group = 6,
optional = {
biomes = animalia.grassland_biomes
}
}, animalia.spawn_interval, 16)
-- Pig --
mob_core.register_spawn({
name = "animalia:pig",
nodes = {"default:dirt_with_grass"},
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
group = 3,
optional = {
biomes = pig_biomes
}
}, animalia.spawn_interval, 4)
-- Reindeer --
mob_core.register_spawn({
name = "animalia:reindeer",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
group = 6,
optional = {
biomes = animalia.temperate_biomes
}
}, animalia.spawn_interval, 4)
-- Sheep --
mob_core.register_spawn({
name = "animalia:sheep",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
min_rad = 24,
max_rad = 256,
group = 6,
optional = {
biomes = animalia.grassland_biomes
}
}, animalia.spawn_interval, 4)
-- Turkey --
mob_core.register_spawn({
name = "animalia:turkey",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
min_rad = 24,
max_rad = 256,
group = 6,
optional = {
biomes = animalia.temperate_biomes
}
}, animalia.spawn_interval, 6)
-- Wolf --
mob_core.register_spawn({
name = "animalia:wolf",
min_light = 0,
max_light = 15,
min_height = -31000,
max_height = 31000,
group = 4,
optional = {
biomes = animalia.temperate_biomes
}
}, animalia.spawn_interval, 4)
---------------------
-- Mapgen Spawning --
---------------------
animalia.chunks_since_last_spawn = 0
local chunk_spawn_add_int = tonumber(minetest.settings:get("chunk_spawn_add_int")) or 64
animalia.spawn_queue = {}
minetest.register_on_generated(function(minp, maxp)
animalia.chunks_since_last_spawn = animalia.chunks_since_last_spawn + 1
local heightmap = minetest.get_mapgen_object("heightmap")
if not heightmap then return end
local pos = {
x = minp.x + math.floor((maxp.x - minp.x) / 2),
y = minp.y,
z = minp.z + math.floor((maxp.z - minp.z) / 2)
}
local hm_i = (pos.x - minp.x + 1) + (((pos.z - minp.z)) * 80)
pos.y = heightmap[hm_i]
if animalia.chunks_since_last_spawn > chunk_spawn_add_int
and pos.y > 0 then
local heightmap = minetest.get_mapgen_object("heightmap")
if not heightmap then return end
local center = {
x = math.floor(minp.x + ((maxp.x - minp.x) * 0.5) + 0.5),
y = minp.y,
z = math.floor(minp.z + ((maxp.z - minp.z) * 0.5) + 0.5),
}
local light = minetest.get_natural_light(center)
while center.y < maxp.y
and light < 10 do
center.y = center.y + 1
light = minetest.get_natural_light(center)
end
local spawnable_mobs = {}
for i = 1, #animalia.mobs do
local spawn_def = mob_core.registered_spawns[animalia.mobs[i]].def
if spawn_def.optional
and mob_core.find_val(spawn_def.optional.biomes, mob_core.get_biome_name(center))
and (#animalia.spawn_queue < 1
or animalia.spawn_queue[#animalia.spawn_queue].mob ~= animalia.mobs[i]) then
table.insert(spawnable_mobs, animalia.mobs[i])
end
end
table.insert(animalia.spawn_queue, {pos = center, mob = spawnable_mobs[math.random(#spawnable_mobs)]})
animalia.chunks_since_last_spawn = 0
end
end)
local chunk_spawn_queue_int = tonumber(minetest.settings:get("chunk_spawn_queue_int")) or 16
local function spawn_queued()
local queue = animalia.spawn_queue
if #queue > 0 then
for i = #queue, 1, -1 do
if queue[i].mob then
local def = mob_core.registered_spawns[queue[i].mob].def
mob_core.spawn_at_pos(
queue[i].pos,
def.name,
def.nodes or nil,
def.group or 1,
def.optional or nil
)
end
table.remove(animalia.spawn_queue, i)
end
end
minetest.after(chunk_spawn_queue_int, spawn_queued)
end
minetest.after(chunk_spawn_queue_int, spawn_queued)