diff --git a/mods/ENTITIES/mobs_mc/goat.lua b/mods/ENTITIES/mobs_mc/goat.lua new file mode 100644 index 000000000..7810c4169 --- /dev/null +++ b/mods/ENTITIES/mobs_mc/goat.lua @@ -0,0 +1,137 @@ +--License for code WTFPL and otherwise stated in readmes + +local S = minetest.get_translator("mobs_mc") + +local goat_def = { + description = S("Goat"), + type = "animal", + spawn_class = "passive", + passive = true, + runaway = true, + hp_min = 10, + hp_max = 10, + xp_min = 1, + xp_max = 3, + collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.39, 0.45}, + spawn_in_group = 4, + spawn_in_group_min = 3, + visual = "mesh", + mesh = "mobs_mc_goat.b3d", + textures = { { + "mobs_mc_goat.png", + "mobs_mc_goat2.png", + }, }, + head_swivel = "head.control", + bone_eye_height = 10, + head_eye_height = 1.1, + horrizonatal_head_height=-1.8, + curiosity = 2, + head_yaw="z", + makes_footstep_sound = true, + walk_velocity = 1, + drops = { + {name = "mcl_mobitems:mutton", + chance = 1, + min = 1, + max = 3, + looting = "common",}, + }, + sounds = { + random = "mobs_mc_goat", + damage = "mobs_mc_goat_hurt", + death = "mobs_mc_goat_hurt", + eat = "mobs_mc_animal_eat_generic", + distance = 16, + }, + animation = { + stand_start = 0, stand_end = 0, + walk_start = 0, walk_end = 40, walk_speed = 30, + run_start = 0, run_end = 40, run_speed = 40, + }, + child_animations = { + stand_start = 41, stand_end = 41, + walk_start = 41, walk_end = 81, walk_speed = 45, + run_start = 41, run_end = 81, run_speed = 60, + }, + on_rightclick = function(self, clicker) + if self:feed_tame(clicker, 1, true, false) then return end + if mcl_mobs:protect(self, clicker) then return end + + if self.child then + return + end + + local item = clicker:get_wielded_item() + if item:get_name() == "mcl_buckets:bucket_empty" and clicker:get_inventory() then + local inv = clicker:get_inventory() + inv:remove_item("main", "mcl_buckets:bucket_empty") + minetest.sound_play("mobs_mc_cow_milk", {pos=self.object:get_pos(), gain=0.6}) + -- if room add bucket of milk to inventory, otherwise drop as item + if inv:room_for_item("main", {name = "mcl_mobitems:milk_bucket"}) then + clicker:get_inventory():add_item("main", "mcl_mobitems:milk_bucket") + else + local pos = self.object:get_pos() + pos.y = pos.y + 0.5 + minetest.add_item(pos, {name = "mcl_mobitems:milk_bucket"}) + end + return + end + mcl_mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) + end, + follow = "mcl_farming:wheat_item", + view_range = 10, + fear_height = 4, +} + +mcl_mobs.register_mob("mobs_mc:goat", goat_def) + + + +-- Spawning +mcl_mobs:spawn_specific( +"mobs_mc:goat", +"overworld", +"ground", +{ + "flat", + "MegaTaiga", + "MegaSpruceTaiga", + "ExtremeHills", + "ExtremeHills_beach", + "ExtremeHillsM", + "ExtremeHills+", + "StoneBeach", + "Plains", + "Plains_beach", + "SunflowerPlains", + "Taiga", + "Taiga_beach", + "Forest", + "Forest_beach", + "FlowerForest", + "FlowerForest_beach", + "BirchForest", + "BirchForestM", + "RoofedForest", + "Savanna", + "Savanna_beach", + "SavannaM", + "Jungle", + "Jungle_shore", + "JungleM", + "JungleM_shore", + "JungleEdge", + "JungleEdgeM", + "Swampland", + "Swampland_shore" +}, +9, +minetest.LIGHT_MAX+1, +30, +17000, +10, +mobs_mc.water_level, +mcl_vars.mg_overworld_max) + +-- spawn egg +mcl_mobs.register_egg("mobs_mc:goat", S("Goat"), "#CCB9AF", "#575757", 0)