From 818052dc6cf89cdc33fd5ff2fab91b00052d0324 Mon Sep 17 00:00:00 2001 From: ancientmarinerdev Date: Fri, 12 May 2023 14:27:02 +0100 Subject: [PATCH] Fix mob textures getting reset on shutdown/startup --- mods/ENTITIES/mcl_mobs/api.lua | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/api.lua b/mods/ENTITIES/mcl_mobs/api.lua index a5af89690..9c0beaeec 100644 --- a/mods/ENTITIES/mcl_mobs/api.lua +++ b/mods/ENTITIES/mcl_mobs/api.lua @@ -111,6 +111,21 @@ function mob_class:get_staticdata() return minetest.serialize(tmp) end +local function valid_texture(self, def_textures) + if not self.base_texture then + return false + end + + if self.texture_selected then + if #def_textures < self.texture_selected then + self.texture_selected = nil + else + return true + end + end + return false +end + function mob_class:mob_activate(staticdata, def, dtime) if not self.object:get_pos() or staticdata == "remove" then mcl_burning.extinguish(self.object) @@ -133,16 +148,20 @@ function mob_class:mob_activate(staticdata, def, dtime) end --If textures in definition change, reload textures - if not self.base_texture or (def.textures and table.indexof(def.textures, self.base_texture) == -1) then + if not valid_texture(self, def.textures) then + -- compatiblity with old simple mobs textures if type(def.textures[1]) == "string" then def.textures = {def.textures} end - local c = 1 - if #def.textures > c then c = #def.textures end + if not self.texture_selected then + local c = 1 + if #def.textures > c then c = #def.textures end + self.texture_selected = math.random(c) + end - self.base_texture = def.textures[math.random(c)] + self.base_texture = def.textures[self.texture_selected] self.base_mesh = def.mesh self.base_size = self.visual_size self.base_colbox = self.collisionbox