Add checks for invalid spawners not containing spawn_in
parent
9d7e4279f4
commit
ec41aa93f6
2
init.lua
2
init.lua
|
@ -8,7 +8,7 @@
|
||||||
--
|
--
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
local version = "0.0.12"
|
local version = "0.0.13"
|
||||||
|
|
||||||
if adv_spawning ~= nil then
|
if adv_spawning ~= nil then
|
||||||
core.log("error", "MOD: adv_spawning requires adv_spawning variable to be available")
|
core.log("error", "MOD: adv_spawning requires adv_spawning variable to be available")
|
||||||
|
|
14
internal.lua
14
internal.lua
|
@ -423,6 +423,10 @@ function adv_spawning.handlespawner(spawnername,spawnerpos,minp,maxp,ignore_acti
|
||||||
new_pos.y, yreason = adv_spawning.get_surface(lower_y,upper_y,new_pos,
|
new_pos.y, yreason = adv_spawning.get_surface(lower_y,upper_y,new_pos,
|
||||||
spawndef.spawn_inside)
|
spawndef.spawn_inside)
|
||||||
else
|
else
|
||||||
|
if spawndef.spawn_inside == nil then
|
||||||
|
print("ERROR: " .. spawnername .. " tries to spawn within nil")
|
||||||
|
assert(false)
|
||||||
|
end
|
||||||
new_pos.y, yreason = adv_spawning.get_relative_pos(lower_y,upper_y,new_pos,
|
new_pos.y, yreason = adv_spawning.get_relative_pos(lower_y,upper_y,new_pos,
|
||||||
spawndef.spawn_inside,
|
spawndef.spawn_inside,
|
||||||
spawndef.relative_height,
|
spawndef.relative_height,
|
||||||
|
@ -1660,9 +1664,11 @@ end
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
function adv_spawning.find_nodes_in(pos, min_range, max_range, nodetypes)
|
function adv_spawning.find_nodes_in(pos, min_range, max_range, nodetypes)
|
||||||
|
|
||||||
|
local nodetypes_to_use = nodetypes
|
||||||
|
|
||||||
if type(nodetypes) == "string" then
|
if type(nodetypes) == "string" then
|
||||||
local templist = { nodetypes }
|
nodetypes_to_use = { }
|
||||||
nodetypes = templist
|
table.insert(nodetypes_to_use, nodetypes)
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = min_range, max_range, 1 do
|
for i = min_range, max_range, 1 do
|
||||||
|
@ -1672,8 +1678,8 @@ function adv_spawning.find_nodes_in(pos, min_range, max_range, nodetypes)
|
||||||
local node = minetest.get_node_or_nil(positions[i])
|
local node = minetest.get_node_or_nil(positions[i])
|
||||||
|
|
||||||
if node ~= nil then
|
if node ~= nil then
|
||||||
for i = 1, #nodetypes, 1 do
|
for i = 1, #nodetypes_to_use, 1 do
|
||||||
if node.name == nodetypes[i] then
|
if node.name == nodetypes_to_use[i] then
|
||||||
return positions[i]
|
return positions[i]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -328,6 +328,11 @@ function adv_spawning.init_spawner(self, pos, name, spawnerdef)
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if spawnerdef.spawn_inside == nil then
|
||||||
|
print(name .. " tries to spawn within nil")
|
||||||
|
assert(false)
|
||||||
|
end
|
||||||
|
|
||||||
local resultpos = adv_spawning.find_nodes_in(pos, runidx, runidx, spawnerdef.spawn_inside)
|
local resultpos = adv_spawning.find_nodes_in(pos, runidx, runidx, spawnerdef.spawn_inside)
|
||||||
|
|
||||||
if (resultpos ~= nil) then
|
if (resultpos ~= nil) then
|
||||||
|
|
Loading…
Reference in New Issue