1 --this is where mob spawning is defined
3 --spawn mob in a square doughnut shaped radius
7 --inner and outer part of square donut radius
11 --for debug testing to isolate mobs
14 local spawn_table = {"pig"}
15 local dark_spawn_table = {"slime","creepig"}
16 local aether_spawn_table = {"flying_pig"}
18 minetest.register_globalstep(function(dtime)
21 if timer >= tick and math.random(1,chance) == chance then
24 --check through players
25 for _,player in ipairs(minetest.get_connected_players()) do
26 --don't spawn near dead players
27 if player:get_hp() > 0 then
29 --local mob_number = math.random(0,2)
32 local pos = vector.floor(vector.add(player:getpos(),0.5))
36 --this is used to determine the axis buffer from the player
37 local axis = math.random(0,1)
39 --cast towards the direction
41 x = pos.x + math.random(inner,outer)*int[math.random(1,2)]
42 z = pos.z + math.random(-outer,outer)
44 z = pos.z + math.random(inner,outer)*int[math.random(1,2)]
45 x = pos.x + math.random(-outer,outer)
49 if pos.y >= 21000 then
50 spawner = minetest.find_nodes_in_area_under_air(vector.new(x,pos.y-32,z), vector.new(x,pos.y+32,z), {"aether:grass"})
52 spawner = minetest.find_nodes_in_area_under_air(vector.new(x,pos.y-32,z), vector.new(x,pos.y+32,z), {"main:grass","main:sand","main:water"})
55 --print(dump(spawner))
56 if table.getn(spawner) > 0 then
57 local mob_pos = spawner[1]
59 if mob_pos.y >= 21000 then
60 mob_pos.y = mob_pos.y + 1
61 local mob_spawning = aether_spawn_table[math.random(1,table.getn(spawn_table))]
62 print("Aether Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos))
63 minetest.add_entity(mob_pos,"mob:"..mob_spawning)
66 local light_level = minetest.get_node_light(spawner[1])
67 if light_level < 10 then
68 mob_pos.y = mob_pos.y + 1
69 local mob_spawning = dark_spawn_table[math.random(1,table.getn(dark_spawn_table))]
70 print("Dark Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos))
71 minetest.add_entity(mob_pos,"mob:"..mob_spawning)
73 mob_pos.y = mob_pos.y + 1
74 local mob_spawning = spawn_table[math.random(1,table.getn(spawn_table))]
75 print("Light Spawning "..mob_spawning.." at: "..minetest.pos_to_string(mob_pos))
76 minetest.add_entity(mob_pos,"mob:"..mob_spawning)
82 elseif timer > tick then