From 5765bd633bc24ca3bb875a0b47930ded9352a63a Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 29 Sep 2022 02:03:46 +0200 Subject: [PATCH] Fix mobs not dropping the entity-inv on death on_death is not called when a mob dies for some reason --- mods/ENTITIES/mcl_entity_invs/init.lua | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mods/ENTITIES/mcl_entity_invs/init.lua b/mods/ENTITIES/mcl_entity_invs/init.lua index 554c6e12a..abd467a71 100644 --- a/mods/ENTITIES/mcl_entity_invs/init.lua +++ b/mods/ENTITIES/mcl_entity_invs/init.lua @@ -81,6 +81,12 @@ local function drop_inv(ent) end end +local function on_remove(self,killer,oldf) + save_inv(self) + drop_inv(self) + if oldf then return oldf(self,killer) end +end + minetest.register_on_player_receive_fields(function(player, formname, fields) for k,v in pairs(open_invs) do if formname == k._inv_id then @@ -139,13 +145,22 @@ function mcl_entity_invs.register_inv(entity_name,show_name,size,no_on_righclick local old_ode = minetest.registered_entities[entity_name].on_deactivate minetest.registered_entities[entity_name].on_deactivate = function(self,removal) save_inv(self) + if removal then + on_remove(self) + end if old_ode then return old_ode(self,removal) end end local old_od = minetest.registered_entities[entity_name].on_death minetest.registered_entities[entity_name].on_death = function(self,killer) - drop_inv(self) - minetest.remove_detached_inventory(self._inv_id) - if old_od then return old_od(self,killer) end + if not self.is_mob then + on_remove(self,killer,old_od) + end + end + local old_odi = minetest.registered_entities[entity_name].on_die + minetest.registered_entities[entity_name].on_die = function(self,killer) + if self.is_mob then + on_remove(self,killer,old_od) + end end end