From 9e97331bdc3a15a63802f9676d68d3fc1c11b3f0 Mon Sep 17 00:00:00 2001 From: Elias Fleckenstein Date: Sun, 3 Jan 2021 15:10:50 +0100 Subject: [PATCH] Fix mobs despawning while close to player --- mods/ENTITIES/mcl_mobs/api.lua | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index be7086e8d..da2543645 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -647,9 +647,9 @@ local item_drop = function(self, cooked, looting_level) -- no drops if disabled by setting if not mobs_drop_items then return end - + looting_level = looting_level or 0 - + -- no drops for child mobs (except monster) if (self.child and self.type ~= "monster") then return @@ -938,7 +938,7 @@ local is_at_cliff_or_danger = function(self) return true else local def = minetest.registered_nodes[bnode.name] - if def and def.walkable then + if def and def.walkable then return false end end @@ -951,7 +951,7 @@ end -- copy the 'mob facing cliff_or_danger check' from above, and rework to avoid water local is_at_water_danger = function(self) - + if not self.object:get_luaentity() then return false end @@ -976,7 +976,7 @@ local is_at_water_danger = function(self) return true else local def = minetest.registered_nodes[bnode.name] - if def and def.walkable then + if def and def.walkable then return false end end @@ -2350,10 +2350,10 @@ local do_states = function(self, dtime) lp = minetest.find_nodes_in_area_under_air( {x = s.x - 5, y = s.y - 0.5, z = s.z - 5}, {x = s.x + 5, y = s.y + 1, z = s.z + 5}, - {"group:solid"}) + {"group:solid"}) lp = #lp > 0 and lp[random(#lp)] - + -- did we find land? if lp then @@ -3598,15 +3598,15 @@ local mob_step = function(self, dtime) for n = 1, #close_objs do if close_objs[n]:is_player() then self.lifetimer = 20 - else - if math.random(1,10) <= 3 then - minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos)) - mcl_burning.extinguish(self.object) - self.object:remove() - return - end + return end end + if math.random(1, 10) <= 3 then + minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos)) + mcl_burning.extinguish(self.object) + self.object:remove() + return + end else minetest.log("action", "Mob "..self.name.." despawns in mob_step at "..minetest.pos_to_string(pos)) mcl_burning.extinguish(self.object) @@ -3842,7 +3842,7 @@ minetest.register_entity(name, { get_staticdata = function(self) return mob_staticdata(self) end, - + harmed_by_heal = def.harmed_by_heal, })