3 dungeon_loot.CHESTS_MIN = 10 -- not necessarily in a single dungeon
4 dungeon_loot.CHESTS_MAX = 50
5 dungeon_loot.STACKS_PER_CHEST_MAX = 10
9 function register_mob_spawner(mobname,texture,mesh)
10 minetest.register_node(":mob_spawners:"..mobname,{
11 description = mobname:gsub("^%l", string.upper).." Spawner",
12 drawtype = "allfaces",
13 tiles = {"spawner.png"},
14 groups = {stone = 3, pathable = 1},
15 sounds = main.stoneSound(),
16 sunlight_propagates = true,
19 on_construct = function(pos)
20 minetest.add_entity(pos, "mob_spawners:"..mobname)
22 after_destruct = function(pos)
23 for _,object in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
24 if not object:is_player() then
25 if object:get_luaentity().name == "mob_spawners:"..mobname then
34 table.insert(mob_spawners,"mob_spawners:"..mobname)
36 minetest.register_lbm({
37 name = ":mob_spawners:"..mobname,
38 nodenames = {"mob_spawners:"..mobname},
39 action = function(pos)
40 minetest.add_entity(pos, "mob_spawners:"..mobname)
44 minetest.register_abm({
45 label = "mob_spawners:"..mobname,
46 nodenames = {"mob_spawners:"..mobname},
50 action = function(pos)
51 --readd the mob visual
53 for _,object in ipairs(minetest.get_objects_inside_radius(pos, 0.5)) do
54 if not object:is_player() then
55 if object:get_luaentity().name == "mob_spawners:"..mobname then
61 if found == false then
62 minetest.add_entity(pos, "mob_spawners:"..mobname)
65 local player_found = false
66 for _,object in ipairs(minetest.get_objects_inside_radius(pos, 7)) do
67 if object:is_player() then
72 if not player_found then
77 for _,object in ipairs(minetest.get_objects_inside_radius(pos, 10)) do
78 if not object:is_player() and object:get_luaentity().mobname then
79 mobcount = mobcount + 1
86 for i = 1,math.random(2,4) do
87 local newpos = minetest.find_node_near(pos, 5, {"air"})
89 minetest.add_entity(newpos,"mob:"..mobname)
95 local spawner_entity = {}
96 spawner_entity.initial_properties = {
98 collide_with_objects = false,
99 collisionbox = {0,0,0,0,0,0},
101 visual_size = {x=1,y=1,z=1},
106 makes_footstep_sound = false,
110 spawner_entity.on_activate = function()
113 spawner_entity.on_step = function()
116 minetest.register_entity(":mob_spawners:"..mobname, spawner_entity)
119 dofile(minetest.get_modpath("mob_spawners") .. "/loot.lua")
120 dofile(minetest.get_modpath("mob_spawners") .. "/mapgen.lua")