From a17c6b07451bf1f605b03eeee3bd132601c1616b Mon Sep 17 00:00:00 2001 From: teknomunk Date: Wed, 26 Jun 2024 19:24:55 -0500 Subject: [PATCH] Add short circuit if sub-node space check isn't possible: --- mods/ENTITIES/mcl_mobs/spawning.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mods/ENTITIES/mcl_mobs/spawning.lua b/mods/ENTITIES/mcl_mobs/spawning.lua index 22d6f6cb6..464e34ff7 100644 --- a/mods/ENTITIES/mcl_mobs/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/spawning.lua @@ -771,6 +771,10 @@ local function has_room(self,pos) -- If we don't have an implementation of get_node_boxes, we can't check for sub-node space if not minetest.get_node_boxes then return false end + -- Check if it's possible for a sub-node space check to succeed + local needed_in_bottom_section = (dx * dz * ( dy - 1)) + if n < needed_in_bottom_section then return false end + -- Make sure the entire volume except for the top level is free before checking the top layer if dy > 1 then -- Remove nodes in the top layer from the count @@ -781,7 +785,7 @@ local function has_room(self,pos) end -- If the entire volume except the top layer isn't air (or nodes) then we can't spawn this mob here - if n < (dx * dz * ( dy - 1)) then return false end + if n < needed_in_bottom_section then return false end end -- Check the top layer to see if we have enough space to spawn in