animalia = {} better_fauna = animalia animalia.pets = {} minetest.register_on_joinplayer(function(player) local name = player:get_player_name() animalia.pets[name] = {} end) minetest.register_on_leaveplayer(function(player) local name = player:get_player_name() animalia.pets[name] = nil end) local path = minetest.get_modpath("animalia") dofile(path.."/api/api.lua") dofile(path.."/api/behaviors.lua") dofile(path.."/api/lasso.lua") dofile(path.."/craftitems.lua") animalia.animals = { "animalia:bat", "animalia:bird", "animalia:cat", "animalia:chicken", "animalia:cow", "animalia:tropical_fish", "animalia:frog", "animalia:horse", "animalia:pig", "animalia:reindeer", "animalia:sheep", "animalia:turkey", "animalia:wolf", } for i = 1, #animalia.animals do local name = string.split(animalia.animals[i], ":")[2] dofile(path.."/mobs/" .. name .. ".lua") end if minetest.settings:get_bool("spawn_mobs", true) then dofile(path.."/api/spawning.lua") end minetest.register_on_mods_loaded(function() for name, def in pairs(minetest.registered_entities) do if def.logic or def.brainfunc or def.bh_tree or def._cmi_is_mob then local old_punch = def.on_punch if not old_punch then old_punch = function() end end local on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir, damage) old_punch(self, puncher, time_from_last_punch, tool_capabilities, dir, damage) local pos = self.object:get_pos() if not pos then return end if puncher:is_player() and animalia.pets[puncher:get_player_name()] then local pets = animalia.pets[puncher:get_player_name()] if #pets < 1 then return end for i = 1, #pets do local ent = pets[i]:get_luaentity() if ent.assist_owner then ent.owner_target = self end end end end def.on_punch = on_punch minetest.register_entity(":" .. name, def) end end end) minetest.log("action", "[MOD] Animalia [0.3] loaded")