--[[ Critters for Minetest Copyright (c) 2012 cornernote, Brett O'Donnell Source Code: https://github.com/cornernote/minetest-critters License: BSD-3-Clause https://raw.github.com/cornernote/\ minetest-critters/master/LICENSE API ]]-- -- =================================================================== local codermobs_disable_mobs = minetest.setting_getbool ("codermobs_disable_mobs" ) local codermobs_disable_monsters = minetest.setting_getbool ("codermobs_disable_monsters" ) local codermobs_enable_thismob = minetest.setting_getbool ("codermobs_enable_critters" ) local codermobs_logless = minetest.setting_getbool ("codermobs_logless" ) -- =================================================================== local minlight = 5 local maxlight = 20 local minheight = 0 local maxheight = 31000 -- There are a lot of critters, so even with chance set to (one in) -- 50000, they should be pretty common. local spawn_chance = 400000 local spawn_type = "animal" local spawn_nodes = { "darkage:silt" , "default:dirt" , "default:dirt_with_dry_grass" , "default:dirt_with_grass" , "default:desert_sand" , "default:desert_stonebrick" , "default:sand" , "default:snowblock" , "default:stonebrick" , "earthgen:dirt_with_dry_grass" , "ethereal:dry_dirt" , "ethereal:green_dirt" , "fargen:dirt_with_leafy_grass" , "mg:dirt_with_dry_grass" , "wool:green" , "wool:white" , } -- =================================================================== -- include mobs api dofile (minetest.get_modpath ("critters") .. "/api.lua") -- expose the api critters = {} -- get_critter_def -- @param name - name of the critter -- @param modname - name of the mod -- @param def - definition table -- @return - definition table merged with defaults local get_critter_def = function (name, modname, def) local default = { mob = { -- visual settings visual = "upright_sprite" , visual_size = { x=1, y=1} , drawtype = "front" , textures = { modname .. "_" .. name .. ".png" , modname .. "_" .. name .. ".png" , } , collisionbox = { -0.4, -0.5, -0.4, 0.4, 0.5, 0.4 } , makes_footstep_sound = false , type = spawn_type , hp_max = 1 , armor = 1 , walk_velocity = 1 , run_velocity = 2 , view_range = 5 , damage = 1 , water_damage = 1 , lava_damage = 5 , light_damage = 0 , light_resistant = true , drops = { { name = "default:apple" , chance = 10 , min = 1 , max = 1 , } , } } , spawn = { max_height = maxheight , chance = spawn_chance , max_light = maxlight , min_light = minlight , nodes = spawn_nodes , } } for k,v in pairs (def) do for kk,vv in pairs(v) do default [k][kk] = vv end end return default end -- register -- @param modname - name of the mod -- @param critters - table, key is name of critter, value is definition table critters.register = function (modname, critters) local critter for name,def in pairs (critters) do critter = get_critter_def (name, modname, def) critterapi:register_mob (modname .. ":" .. name, critter.mob) if not codermobs_disable_mobs and codermobs_enable_thismob then critterapi:register_spawn (modname .. ":" .. name, critter.spawn) end end end -- =================================================================== -- register critters critters.register (minetest.get_current_modname(), { alien={}, angel={}, baby={}, boxer={}, chef={}, clown={}, dad={}, devil={}, doctor={}, dragon={}, firefighter={}, ghost={}, girl={}, kid={}, king={}, knight={}, lawyer={}, leprechaun={}, man={}, mermaid={}, monster={}, ninja={}, nurse={}, pirate={}, policeman={}, prince={}, princess={}, queen={}, robot={}, santa={}, snowman={}, superhero={}, teacher={}, troll={}, vampire={}, werewolf={}, witch={}, zombie={}, }) -- =================================================================== -- register more critters critters.register(minetest.get_current_modname(), { alligator={}, ant={}, bat={}, bear={}, bee={}, bird={}, bull={}, bulldog={}, butterfly={}, cat={}, chicken={}, cow={}, crab={}, crocodile={}, deer={}, dog={}, donkey={}, duck={}, eagle={}, elephant={}, fish={}, fox={}, frog={}, giraffe={}, gorilla={}, hippo={}, horse={}, insect={}, lion={}, monkey={}, moose={}, mouse={}, owl={}, panda={}, penguin={}, pig={}, rabbit={}, rhino={}, rooster={}, shark={}, sheep={}, snake={}, tiger={}, turkey={}, turtle={}, wolf={}, }) -- =================================================================== minetest.log ("action", minetest.get_current_modname() .." loaded")