animalia/init.lua

114 lines
2.9 KiB
Lua
Raw Normal View History

animalia = {}
2020-11-11 23:16:50 -08:00
local path = minetest.get_modpath("animalia")
local storage = dofile(path .. "/api/storage.lua")
animalia.spawn_points = storage.spawn_points
animalia.libri_font_size = storage.libri_font_size
2022-02-10 18:00:06 -08:00
animalia.pets = {}
2020-11-11 23:16:50 -08:00
2022-02-10 18:00:06 -08:00
minetest.register_on_joinplayer(function(player)
2022-08-12 22:17:42 -07:00
local name = player:get_player_name()
animalia.pets[name] = {}
2020-11-11 23:16:50 -08:00
end)
2022-02-10 18:00:06 -08:00
minetest.register_on_leaveplayer(function(player)
2022-08-12 22:17:42 -07:00
local name = player:get_player_name()
animalia.pets[name] = nil
2022-02-10 18:00:06 -08:00
end)
2020-11-25 00:29:47 -08:00
-- Daytime Tracking
animalia.is_day = true
local function is_day()
2022-08-12 22:17:42 -07:00
local time = (minetest.get_timeofday() or 0) * 24000
animalia.is_day = time < 19500 and time > 4500
minetest.after(10, is_day)
end
is_day()
2020-11-11 23:16:50 -08:00
dofile(path.."/api/api.lua")
2022-02-10 18:00:06 -08:00
dofile(path.."/api/behaviors.lua")
dofile(path.."/api/lasso.lua")
2020-11-11 23:16:50 -08:00
dofile(path.."/craftitems.lua")
2022-02-10 18:00:06 -08:00
animalia.animals = {
2022-08-12 22:17:42 -07:00
"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",
2022-02-10 18:00:06 -08:00
}
for i = 1, #animalia.animals do
2022-08-12 22:17:42 -07:00
local name = animalia.animals[i]:split(":")[2]
dofile(path.."/mobs/" .. name .. ".lua")
2022-02-10 18:00:06 -08:00
end
2022-02-10 18:00:06 -08:00
if minetest.settings:get_bool("spawn_mobs", true) then
2022-08-12 22:17:42 -07:00
dofile(path.."/api/spawning.lua")
end
2020-11-11 23:16:50 -08:00
dofile(path.."/api/libri.lua")
2022-02-10 18:00:06 -08:00
minetest.register_on_mods_loaded(function()
2022-08-12 22:17:42 -07:00
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
2022-02-10 18:00:06 -08:00
end
end)
2022-08-27 21:30:18 -07:00
local convert_mobs_redo = minetest.settings:get_bool("convert_redo_items", false)
if convert_mobs_redo then
minetest.register_alias_force("mobs:leather", "animalia:leather")
minetest.register_alias_force("mobs:meat_raw", "animalia:beef_raw")
minetest.register_alias_force("mobs:meat", "animalia:beef_cooked")
minetest.register_alias_force("mobs:lasso", "animalia:lasso")
minetest.register_alias_force("mobs:net", "animalia:net")
minetest.register_alias_force("mobs:shears", "animalia:shears")
minetest.register_alias_force("mobs:saddles", "animalia:saddles")
minetest.register_alias_force("mobs:nametag", "animalia:nametag")
end
minetest.log("action", "[MOD] Animalia [0.4] loaded")