Loading bee.lua +27 −13 Original line number Diff line number Diff line local S = mobs.intllib -- Bee by KrupnoPavel -- Bee by KrupnoPavel (.b3d model by sirrobzeroone) mobs:register_mob("mobs_animal:bee", { type = "animal", Loading @@ -11,10 +11,12 @@ mobs:register_mob("mobs_animal:bee", { armor = 200, collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.5, 0.2}, visual = "mesh", mesh = "mobs_bee.x", mesh = "mobs_bee.b3d", textures = { {"mobs_bee.png"}, }, blood_texture = "mobs_bee_inv.png", blood_amount = 1, makes_footstep_sound = false, sounds = { random = "mobs_bee", Loading @@ -24,7 +26,7 @@ mobs:register_mob("mobs_animal:bee", { drops = { {name = "mobs:pollen", chance = 2, min = 1, max = 2}, }, water_damage = 2, water_damage = 1, lava_damage = 2, light_damage = 0, fall_damage = 0, Loading @@ -39,10 +41,11 @@ mobs:register_mob("mobs_animal:bee", { on_rightclick = function(self, clicker) mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:bee") end, -- after_activate = function(self, staticdata, def, dtime) -- print ("------", self.name, dtime, self.health) -- end, }) -- Bee by tchncs mobs:register_mob("mobs_animal:bee_angry", { type = "monster", passive = false, Loading Loading @@ -85,11 +88,21 @@ mobs:register_mob("mobs_animal:bee_angry", { end, }) mobs:register_spawn("mobs_animal:bee", {"group:flower"}, 20, 10, 9000, 2, 2000, true) mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png", 0) mobs:register_egg("mobs_animal:bee_angry", S("Angry Bee"), "mobs_bee_inv.png", 0) mobs:spawn({ name = "mobs_animal:bee", nodes = {"group:flower"}, min_light = 14, interval = 60, chance = 7000, min_height = 3, max_height = 200, day_toggle = true, }) mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png") -- compatibility mobs:alias_mob("mobs:bee", "mobs_animal:bee") Loading @@ -97,7 +110,8 @@ mobs:alias_mob("mobs:bee", "mobs_animal:bee") minetest.register_craftitem(":mobs:honey", { description = S("Honey"), inventory_image = "mobs_honey_inv.png", on_use = minetest.item_eat(6), on_use = minetest.item_eat(4), groups = {food_honey = 1, food_sugar = 1, flammable = 1}, }) -- pollen Loading Loading @@ -145,7 +159,7 @@ minetest.register_node(":mobs:beehive", { after_place_node = function(pos, placer, itemstack) if placer:is_player() then if placer and placer:is_player() then minetest.set_node(pos, {name = "mobs:beehive", param2 = 1}) Loading Loading @@ -217,7 +231,7 @@ minetest.register_craft({ -- beehive workings minetest.register_abm({ nodenames = {"mobs:beehive"}, interval = 6, interval = 12, chance = 6, catch_up = false, action = function(pos, node) Loading @@ -236,7 +250,7 @@ minetest.register_abm({ local honey = inv:get_stack("beehive", 1):get_count() -- is hive full? if honey > 19 then if honey > 11 then return end Loading bunny.lua +81 −6 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ local S = mobs.intllib -- Bunny by ExeterDad mobs:register_mob("mobs_animal:bunny", { stepheight = 0.6, type = "animal", passive = true, reach = 1, Loading @@ -25,12 +26,15 @@ mobs:register_mob("mobs_animal:bunny", { walk_velocity = 1, run_velocity = 2, runaway = true, runaway_from = {"mobs_animal:pumba", "player"}, jump = true, jump_height = 6, drops = { {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, {name = "ethereal:bone", chance = 2, min = 1, max = 1} {name = "ethereal:bone", chance = 2, min = 1, max = 1}, {name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1}, }, water_damage = 1, water_damage = 0, lava_damage = 4, light_damage = 0, fear_height = 2, Loading Loading @@ -60,7 +64,7 @@ mobs:register_mob("mobs_animal:bunny", { if item:get_name() == "mobs:lava_orb" then if not minetest.setting_getbool("creative_mode") then if not mobs.is_creative(clicker:get_player_name()) then item:take_item() clicker:set_wielded_item(item) end Loading @@ -71,11 +75,34 @@ mobs:register_mob("mobs_animal:bunny", { self.type = "monster" self.health = 20 self.passive = false return end end, on_spawn = function(self) local pos = self.object:get_pos() ; pos.y = pos.y - 1 -- white snowy bunny if minetest.find_node_near(pos, 1, {"default:snow", "default:snowblock", "default:dirt_with_snow"}) then self.base_texture = {"mobs_bunny_white.png"} self.object:set_properties({textures = self.base_texture}) -- brown desert bunny elseif minetest.find_node_near(pos, 1, {"default:desert_sand", "default:desert_stone"}) then self.base_texture = {"mobs_bunny_brown.png"} self.object:set_properties({textures = self.base_texture}) -- grey stone bunny elseif minetest.find_node_near(pos, 1, {"default:stone", "default:gravel"}) then self.base_texture = {"mobs_bunny_grey.png"} self.object:set_properties({textures = self.base_texture}) end return true -- run only once, false/nil runs every activation end, attack_type = "dogfight", damage = 5, }) Loading @@ -90,9 +117,11 @@ end mobs:spawn({ name = "mobs_animal:bunny", nodes = {spawn_on}, min_light = 10, chance = 15000, min_height = 0, neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = 8000, -- 15000 min_height = 5, max_height = 310, day_toggle = true, }) Loading @@ -102,3 +131,49 @@ mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0) mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") -- compatibility -- raw rabbit minetest.register_craftitem(":mobs:rabbit_raw", { description = S("Raw Rabbit"), inventory_image = "mobs_rabbit_raw.png", on_use = minetest.item_eat(3), groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2}, }) -- cooked rabbit minetest.register_craftitem(":mobs:rabbit_cooked", { description = S("Cooked Rabbit"), inventory_image = "mobs_rabbit_cooked.png", on_use = minetest.item_eat(5), groups = {food_meat = 1, food_rabbit = 1, flammable = 2}, }) minetest.register_craft({ type = "cooking", output = "mobs:rabbit_cooked", recipe = "mobs:rabbit_raw", cooktime = 5, }) -- rabbit hide minetest.register_craftitem(":mobs:rabbit_hide", { description = S("Rabbit Hide"), inventory_image = "mobs_rabbit_hide.png", groups = {flammable = 2}, }) minetest.register_craft({ type = "fuel", recipe = "mobs:rabbit_hide", burntime = 2, }) minetest.register_craft({ output = "mobs:leather", type = "shapeless", recipe = { "mobs:rabbit_hide", "mobs:rabbit_hide", "mobs:rabbit_hide", "mobs:rabbit_hide" } }) chicken.lua +40 −22 Original line number Diff line number Diff line Loading @@ -2,9 +2,10 @@ local S = mobs.intllib -- Chicken by JK Murray -- Chicken by JK Murray and Sirrobzeroone mobs:register_mob("mobs_animal:chicken", { stepheight = 0.6, type = "animal", passive = true, hp_min = 5, Loading @@ -12,17 +13,14 @@ mobs:register_mob("mobs_animal:chicken", { armor = 200, collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3}, visual = "mesh", mesh = "mobs_chicken.x", -- seems a lot of textures but this fixes the problem with the model mesh = "mobs_chicken.b3d", textures = { {"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"}, {"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"}, {"mobs_chicken.png"}, -- white {"mobs_chicken_brown.png"}, {"mobs_chicken_black.png"}, }, child_texture = { {"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"}, {"mobs_chick.png"}, }, makes_footstep_sound = true, sounds = { Loading @@ -31,10 +29,11 @@ mobs:register_mob("mobs_animal:chicken", { walk_velocity = 1, run_velocity = 3, runaway = true, runaway_from = {"player", "mobs_animal:pumba"}, drops = { {name = "mobs:chicken_raw", chance = 1, min = 2, max = 2}, {name = "mobs:chicken_raw", chance = 1, min = 1, max = 2}, {name = "ethereal:bone", chance = 2, min = 1, max = 1}, {name = "mobs:chicken_feather", chance = 3, min = 1, max = 2}, {name = "mobs:chicken_feather", chance = 1, min = 0, max = 2}, }, water_damage = 1, lava_damage = 5, Loading @@ -44,10 +43,18 @@ mobs:register_mob("mobs_animal:chicken", { fear_height = 5, animation = { speed_normal = 15, stand_start = 0, stand_end = 1, -- 20 walk_start = 20, walk_end = 40, stand_start = 1, stand_end = 30, stand_speed = 28, stand1_start = 31, stand1_end = 70, stand1_speed = 32, walk_start = 71, walk_end = 90, walk_speed = 24, run_start = 91, run_end = 110, run_speed = 24, }, follow = {"farming:seed_wheat", "farming:seed_cotton"}, view_range = 5, Loading @@ -72,7 +79,7 @@ mobs:register_mob("mobs_animal:chicken", { return end local pos = self.object:getpos() local pos = self.object:get_pos() minetest.add_item(pos, "mobs:egg") Loading @@ -94,10 +101,11 @@ end mobs:spawn({ name = "mobs_animal:chicken", nodes = {spawn_on}, min_light = 10, chance = 15000, active_object_count = 2, min_height = 0, neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = 8000, -- 15000 min_height = 2, max_height = 120, day_toggle = true, }) Loading Loading @@ -181,7 +189,7 @@ local egg_VELOCITY = 19 -- shoot egg local mobs_shoot_egg = function (item, player, pointed_thing) local playerpos = player:getpos() local playerpos = player:get_pos() minetest.sound_play("default_place_node_hard", { pos = playerpos, Loading Loading @@ -239,7 +247,7 @@ minetest.register_node(":mobs:egg", { type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} }, groups = {snappy = 2, dig_immediate = 3}, groups = {food_egg = 1, snappy = 2, dig_immediate = 3}, after_place_node = function(pos, placer, itemstack) if placer:is_player() then minetest.set_node(pos, {name = "mobs:egg", param2 = 1}) Loading @@ -254,6 +262,7 @@ minetest.register_craftitem(":mobs:chicken_egg_fried", { description = S("Fried Egg"), inventory_image = "mobs_chicken_egg_fried.png", on_use = minetest.item_eat(2), groups = {food_egg_fried = 1, flammable = 2}, }) minetest.register_craft({ Loading @@ -267,6 +276,7 @@ minetest.register_craftitem(":mobs:chicken_raw", { description = S("Raw Chicken"), inventory_image = "mobs_chicken_raw.png", on_use = minetest.item_eat(2), groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2}, }) -- cooked chicken Loading @@ -274,6 +284,7 @@ minetest.register_craftitem(":mobs:chicken_cooked", { description = S("Cooked Chicken"), inventory_image = "mobs_chicken_cooked.png", on_use = minetest.item_eat(6), groups = {food_meat = 1, food_chicken = 1, flammable = 2}, }) minetest.register_craft({ Loading @@ -286,4 +297,11 @@ minetest.register_craft({ minetest.register_craftitem(":mobs:chicken_feather", { description = S("Feather"), inventory_image = "mobs_chicken_feather.png", groups = {flammable = 2}, }) minetest.register_craft({ type = "fuel", recipe = "mobs:chicken_feather", burntime = 1, }) cow.lua +118 −34 Original line number Diff line number Diff line Loading @@ -2,20 +2,21 @@ local S = mobs.intllib -- Cow by Krupnovpavel (additional texture by JurajVajda) -- Cow by sirrobzeroone mobs:register_mob("mobs_animal:cow", { type = "animal", passive = false, attack_type = "dogfight", attack_npcs = false, reach = 2, damage = 4, hp_min = 5, hp_max = 20, armor = 200, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.2, 0.4}, visual = "mesh", mesh = "mobs_cow.x", mesh = "mobs_cow.b3d", textures = { {"mobs_cow.png"}, {"mobs_cow2.png"}, Loading @@ -27,40 +28,58 @@ mobs:register_mob("mobs_animal:cow", { walk_velocity = 1, run_velocity = 2, jump = true, jump_height = 6, pushable = true, drops = { {name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, {name = "mobs:leather", chance = 1, min = 1, max = 2}, {name = "mobs:leather", chance = 1, min = 0, max = 2}, {name = "ethereal:bone", chance = 2, min = 2, max = 6} }, water_damage = 1, water_damage = 0, lava_damage = 5, light_damage = 0, animation = { speed_normal = 15, speed_run = 15, stand_start = 0, stand_end = 30, walk_start = 35, walk_end = 65, run_start = 105, run_end = 135, punch_start = 70, punch_end = 100, stand_speed = 20, stand1_start = 35, stand1_end = 75, stand1_speed = 20, walk_start = 85, walk_end = 114, walk_speed = 20, run_start = 120, run_end = 140, run_speed = 30, punch_start = 145, punch_end = 160, punch_speed = 20, die_start = 165, die_end = 185, die_speed = 10, die_loop = false, }, follow = "farming:wheat", follow = {"farming:wheat", "default:grass_1"}, view_range = 8, replace_rate = 10, -- replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, replace_what = { {"group:grass", "air", 0}, {"default:dirt_with_grass", "default:dirt", -1} }, replace_with = "air", fear_height = 2, on_rightclick = function(self, clicker) -- feed or tame if mobs:feed_tame(self, clicker, 8, true, true) then return end if mobs:feed_tame(self, clicker, 8, true, true) then -- if fed 7x wheat or grass then cow can be milked again if self.food and self.food > 6 then self.gotten = false end return end if mobs:protect(self, clicker) then return end if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end Loading @@ -83,12 +102,13 @@ mobs:register_mob("mobs_animal:cow", { local inv = clicker:get_inventory() inv:remove_item("main", "bucket:bucket_empty") tool:take_item() clicker:set_wielded_item(tool) if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then clicker:get_inventory():add_item("main", "mobs:bucket_milk") else local pos = self.object:getpos() local pos = self.object:get_pos() pos.y = pos.y + 0.5 minetest.add_item(pos, {name = "mobs:bucket_milk"}) end Loading @@ -98,27 +118,34 @@ mobs:register_mob("mobs_animal:cow", { return end end, }) on_replace = function(self, pos, oldnode, newnode) local spawn_on = "default:dirt_with_grass" self.food = (self.food or 0) + 1 if minetest.get_modpath("ethereal") then spawn_on = "ethereal:green_dirt" -- if cow replaces 8x grass then it can be milked again if self.food >= 8 then self.food = 0 self.gotten = false end end, }) mobs:spawn({ name = "mobs_animal:cow", nodes = {spawn_on}, min_light = 10, chance = 15000, min_height = 0, nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = 8000, -- 15000 min_height = 5, max_height = 210, day_toggle = true, }) mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1) mobs:register_egg("mobs_animal:cow", S("Cow"), "mobs_cow_inv.png") mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility Loading @@ -129,14 +156,71 @@ minetest.register_craftitem(":mobs:bucket_milk", { description = S("Bucket of Milk"), inventory_image = "mobs_bucket_milk.png", stack_max = 1, on_use = minetest.item_eat(8, 'bucket:bucket_empty'), on_use = minetest.item_eat(8, "bucket:bucket_empty"), groups = {food_milk = 1, flammable = 3}, }) -- glass of milk minetest.register_craftitem(":mobs:glass_milk", { description = S("Glass of Milk"), inventory_image = "mobs_glass_milk.png", on_use = minetest.item_eat(2, "vessels:drinking_glass"), groups = {food_milk_glass = 1, flammable = 3, vessel = 1}, }) minetest.register_craft({ type = "shapeless", output = "mobs:glass_milk 4", recipe = { "vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass", "mobs:bucket_milk" }, replacements = { {"mobs:bucket_milk", "bucket:bucket_empty"} } }) minetest.register_craft({ type = "shapeless", output = "mobs:bucket_milk", recipe = { "mobs:glass_milk", "mobs:glass_milk", "mobs:glass_milk", "mobs:glass_milk", "bucket:bucket_empty" }, replacements = { {"mobs:glass_milk", "vessels:drinking_glass 4"} } }) -- butter minetest.register_craftitem(":mobs:butter", { description = S("Butter"), inventory_image = "mobs_butter.png", on_use = minetest.item_eat(1), groups = {food_butter = 1, flammable = 2}, }) if minetest.get_modpath("farming") and farming and farming.mod then minetest.register_craft({ type = "shapeless", output = "mobs:butter", recipe = {"mobs:bucket_milk", "farming:salt"}, replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} }) else -- some saplings are high in sodium so makes a good replacement item minetest.register_craft({ type = "shapeless", output = "mobs:butter", recipe = {"mobs:bucket_milk", "default:sapling"}, replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} }) end -- cheese wedge minetest.register_craftitem(":mobs:cheese", { description = S("Cheese"), inventory_image = "mobs_cheese.png", on_use = minetest.item_eat(4), groups = {food_cheese = 1, flammable = 2}, }) minetest.register_craft({ Loading @@ -159,15 +243,15 @@ minetest.register_node(":mobs:cheeseblock", { minetest.register_craft({ output = "mobs:cheeseblock", recipe = { {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, {"mobs:cheese", "mobs:cheese", "mobs:cheese"}, {"mobs:cheese", "mobs:cheese", "mobs:cheese"}, {"mobs:cheese", "mobs:cheese", "mobs:cheese"}, } }) minetest.register_craft({ output = "mobs:cheese 9", recipe = { {'mobs:cheeseblock'}, {"mobs:cheeseblock"}, } }) init.lua +2 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,8 @@ dofile(path .. "/bee.lua") -- KrupnoPavel dofile(path .. "/bunny.lua") -- ExeterDad dofile(path .. "/kitten.lua") -- Jordach/BFD dofile(path .. "/penguin.lua") -- D00Med dofile(path .. "/panda.lua") -- AspireMint dofile(path .. "/lucky_block.lua") print (S("[MOD] Mobs Redo 'Animals' loaded")) print (S("[MOD] Mobs Redo Animals loaded")) Loading
bee.lua +27 −13 Original line number Diff line number Diff line local S = mobs.intllib -- Bee by KrupnoPavel -- Bee by KrupnoPavel (.b3d model by sirrobzeroone) mobs:register_mob("mobs_animal:bee", { type = "animal", Loading @@ -11,10 +11,12 @@ mobs:register_mob("mobs_animal:bee", { armor = 200, collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.5, 0.2}, visual = "mesh", mesh = "mobs_bee.x", mesh = "mobs_bee.b3d", textures = { {"mobs_bee.png"}, }, blood_texture = "mobs_bee_inv.png", blood_amount = 1, makes_footstep_sound = false, sounds = { random = "mobs_bee", Loading @@ -24,7 +26,7 @@ mobs:register_mob("mobs_animal:bee", { drops = { {name = "mobs:pollen", chance = 2, min = 1, max = 2}, }, water_damage = 2, water_damage = 1, lava_damage = 2, light_damage = 0, fall_damage = 0, Loading @@ -39,10 +41,11 @@ mobs:register_mob("mobs_animal:bee", { on_rightclick = function(self, clicker) mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:bee") end, -- after_activate = function(self, staticdata, def, dtime) -- print ("------", self.name, dtime, self.health) -- end, }) -- Bee by tchncs mobs:register_mob("mobs_animal:bee_angry", { type = "monster", passive = false, Loading Loading @@ -85,11 +88,21 @@ mobs:register_mob("mobs_animal:bee_angry", { end, }) mobs:register_spawn("mobs_animal:bee", {"group:flower"}, 20, 10, 9000, 2, 2000, true) mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png", 0) mobs:register_egg("mobs_animal:bee_angry", S("Angry Bee"), "mobs_bee_inv.png", 0) mobs:spawn({ name = "mobs_animal:bee", nodes = {"group:flower"}, min_light = 14, interval = 60, chance = 7000, min_height = 3, max_height = 200, day_toggle = true, }) mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png") -- compatibility mobs:alias_mob("mobs:bee", "mobs_animal:bee") Loading @@ -97,7 +110,8 @@ mobs:alias_mob("mobs:bee", "mobs_animal:bee") minetest.register_craftitem(":mobs:honey", { description = S("Honey"), inventory_image = "mobs_honey_inv.png", on_use = minetest.item_eat(6), on_use = minetest.item_eat(4), groups = {food_honey = 1, food_sugar = 1, flammable = 1}, }) -- pollen Loading Loading @@ -145,7 +159,7 @@ minetest.register_node(":mobs:beehive", { after_place_node = function(pos, placer, itemstack) if placer:is_player() then if placer and placer:is_player() then minetest.set_node(pos, {name = "mobs:beehive", param2 = 1}) Loading Loading @@ -217,7 +231,7 @@ minetest.register_craft({ -- beehive workings minetest.register_abm({ nodenames = {"mobs:beehive"}, interval = 6, interval = 12, chance = 6, catch_up = false, action = function(pos, node) Loading @@ -236,7 +250,7 @@ minetest.register_abm({ local honey = inv:get_stack("beehive", 1):get_count() -- is hive full? if honey > 19 then if honey > 11 then return end Loading
bunny.lua +81 −6 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ local S = mobs.intllib -- Bunny by ExeterDad mobs:register_mob("mobs_animal:bunny", { stepheight = 0.6, type = "animal", passive = true, reach = 1, Loading @@ -25,12 +26,15 @@ mobs:register_mob("mobs_animal:bunny", { walk_velocity = 1, run_velocity = 2, runaway = true, runaway_from = {"mobs_animal:pumba", "player"}, jump = true, jump_height = 6, drops = { {name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, {name = "ethereal:bone", chance = 2, min = 1, max = 1} {name = "ethereal:bone", chance = 2, min = 1, max = 1}, {name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1}, }, water_damage = 1, water_damage = 0, lava_damage = 4, light_damage = 0, fear_height = 2, Loading Loading @@ -60,7 +64,7 @@ mobs:register_mob("mobs_animal:bunny", { if item:get_name() == "mobs:lava_orb" then if not minetest.setting_getbool("creative_mode") then if not mobs.is_creative(clicker:get_player_name()) then item:take_item() clicker:set_wielded_item(item) end Loading @@ -71,11 +75,34 @@ mobs:register_mob("mobs_animal:bunny", { self.type = "monster" self.health = 20 self.passive = false return end end, on_spawn = function(self) local pos = self.object:get_pos() ; pos.y = pos.y - 1 -- white snowy bunny if minetest.find_node_near(pos, 1, {"default:snow", "default:snowblock", "default:dirt_with_snow"}) then self.base_texture = {"mobs_bunny_white.png"} self.object:set_properties({textures = self.base_texture}) -- brown desert bunny elseif minetest.find_node_near(pos, 1, {"default:desert_sand", "default:desert_stone"}) then self.base_texture = {"mobs_bunny_brown.png"} self.object:set_properties({textures = self.base_texture}) -- grey stone bunny elseif minetest.find_node_near(pos, 1, {"default:stone", "default:gravel"}) then self.base_texture = {"mobs_bunny_grey.png"} self.object:set_properties({textures = self.base_texture}) end return true -- run only once, false/nil runs every activation end, attack_type = "dogfight", damage = 5, }) Loading @@ -90,9 +117,11 @@ end mobs:spawn({ name = "mobs_animal:bunny", nodes = {spawn_on}, min_light = 10, chance = 15000, min_height = 0, neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = 8000, -- 15000 min_height = 5, max_height = 310, day_toggle = true, }) Loading @@ -102,3 +131,49 @@ mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0) mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") -- compatibility -- raw rabbit minetest.register_craftitem(":mobs:rabbit_raw", { description = S("Raw Rabbit"), inventory_image = "mobs_rabbit_raw.png", on_use = minetest.item_eat(3), groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2}, }) -- cooked rabbit minetest.register_craftitem(":mobs:rabbit_cooked", { description = S("Cooked Rabbit"), inventory_image = "mobs_rabbit_cooked.png", on_use = minetest.item_eat(5), groups = {food_meat = 1, food_rabbit = 1, flammable = 2}, }) minetest.register_craft({ type = "cooking", output = "mobs:rabbit_cooked", recipe = "mobs:rabbit_raw", cooktime = 5, }) -- rabbit hide minetest.register_craftitem(":mobs:rabbit_hide", { description = S("Rabbit Hide"), inventory_image = "mobs_rabbit_hide.png", groups = {flammable = 2}, }) minetest.register_craft({ type = "fuel", recipe = "mobs:rabbit_hide", burntime = 2, }) minetest.register_craft({ output = "mobs:leather", type = "shapeless", recipe = { "mobs:rabbit_hide", "mobs:rabbit_hide", "mobs:rabbit_hide", "mobs:rabbit_hide" } })
chicken.lua +40 −22 Original line number Diff line number Diff line Loading @@ -2,9 +2,10 @@ local S = mobs.intllib -- Chicken by JK Murray -- Chicken by JK Murray and Sirrobzeroone mobs:register_mob("mobs_animal:chicken", { stepheight = 0.6, type = "animal", passive = true, hp_min = 5, Loading @@ -12,17 +13,14 @@ mobs:register_mob("mobs_animal:chicken", { armor = 200, collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3}, visual = "mesh", mesh = "mobs_chicken.x", -- seems a lot of textures but this fixes the problem with the model mesh = "mobs_chicken.b3d", textures = { {"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"}, {"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"}, {"mobs_chicken.png"}, -- white {"mobs_chicken_brown.png"}, {"mobs_chicken_black.png"}, }, child_texture = { {"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"}, {"mobs_chick.png"}, }, makes_footstep_sound = true, sounds = { Loading @@ -31,10 +29,11 @@ mobs:register_mob("mobs_animal:chicken", { walk_velocity = 1, run_velocity = 3, runaway = true, runaway_from = {"player", "mobs_animal:pumba"}, drops = { {name = "mobs:chicken_raw", chance = 1, min = 2, max = 2}, {name = "mobs:chicken_raw", chance = 1, min = 1, max = 2}, {name = "ethereal:bone", chance = 2, min = 1, max = 1}, {name = "mobs:chicken_feather", chance = 3, min = 1, max = 2}, {name = "mobs:chicken_feather", chance = 1, min = 0, max = 2}, }, water_damage = 1, lava_damage = 5, Loading @@ -44,10 +43,18 @@ mobs:register_mob("mobs_animal:chicken", { fear_height = 5, animation = { speed_normal = 15, stand_start = 0, stand_end = 1, -- 20 walk_start = 20, walk_end = 40, stand_start = 1, stand_end = 30, stand_speed = 28, stand1_start = 31, stand1_end = 70, stand1_speed = 32, walk_start = 71, walk_end = 90, walk_speed = 24, run_start = 91, run_end = 110, run_speed = 24, }, follow = {"farming:seed_wheat", "farming:seed_cotton"}, view_range = 5, Loading @@ -72,7 +79,7 @@ mobs:register_mob("mobs_animal:chicken", { return end local pos = self.object:getpos() local pos = self.object:get_pos() minetest.add_item(pos, "mobs:egg") Loading @@ -94,10 +101,11 @@ end mobs:spawn({ name = "mobs_animal:chicken", nodes = {spawn_on}, min_light = 10, chance = 15000, active_object_count = 2, min_height = 0, neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = 8000, -- 15000 min_height = 2, max_height = 120, day_toggle = true, }) Loading Loading @@ -181,7 +189,7 @@ local egg_VELOCITY = 19 -- shoot egg local mobs_shoot_egg = function (item, player, pointed_thing) local playerpos = player:getpos() local playerpos = player:get_pos() minetest.sound_play("default_place_node_hard", { pos = playerpos, Loading Loading @@ -239,7 +247,7 @@ minetest.register_node(":mobs:egg", { type = "fixed", fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} }, groups = {snappy = 2, dig_immediate = 3}, groups = {food_egg = 1, snappy = 2, dig_immediate = 3}, after_place_node = function(pos, placer, itemstack) if placer:is_player() then minetest.set_node(pos, {name = "mobs:egg", param2 = 1}) Loading @@ -254,6 +262,7 @@ minetest.register_craftitem(":mobs:chicken_egg_fried", { description = S("Fried Egg"), inventory_image = "mobs_chicken_egg_fried.png", on_use = minetest.item_eat(2), groups = {food_egg_fried = 1, flammable = 2}, }) minetest.register_craft({ Loading @@ -267,6 +276,7 @@ minetest.register_craftitem(":mobs:chicken_raw", { description = S("Raw Chicken"), inventory_image = "mobs_chicken_raw.png", on_use = minetest.item_eat(2), groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2}, }) -- cooked chicken Loading @@ -274,6 +284,7 @@ minetest.register_craftitem(":mobs:chicken_cooked", { description = S("Cooked Chicken"), inventory_image = "mobs_chicken_cooked.png", on_use = minetest.item_eat(6), groups = {food_meat = 1, food_chicken = 1, flammable = 2}, }) minetest.register_craft({ Loading @@ -286,4 +297,11 @@ minetest.register_craft({ minetest.register_craftitem(":mobs:chicken_feather", { description = S("Feather"), inventory_image = "mobs_chicken_feather.png", groups = {flammable = 2}, }) minetest.register_craft({ type = "fuel", recipe = "mobs:chicken_feather", burntime = 1, })
cow.lua +118 −34 Original line number Diff line number Diff line Loading @@ -2,20 +2,21 @@ local S = mobs.intllib -- Cow by Krupnovpavel (additional texture by JurajVajda) -- Cow by sirrobzeroone mobs:register_mob("mobs_animal:cow", { type = "animal", passive = false, attack_type = "dogfight", attack_npcs = false, reach = 2, damage = 4, hp_min = 5, hp_max = 20, armor = 200, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4}, collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.2, 0.4}, visual = "mesh", mesh = "mobs_cow.x", mesh = "mobs_cow.b3d", textures = { {"mobs_cow.png"}, {"mobs_cow2.png"}, Loading @@ -27,40 +28,58 @@ mobs:register_mob("mobs_animal:cow", { walk_velocity = 1, run_velocity = 2, jump = true, jump_height = 6, pushable = true, drops = { {name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, {name = "mobs:leather", chance = 1, min = 1, max = 2}, {name = "mobs:leather", chance = 1, min = 0, max = 2}, {name = "ethereal:bone", chance = 2, min = 2, max = 6} }, water_damage = 1, water_damage = 0, lava_damage = 5, light_damage = 0, animation = { speed_normal = 15, speed_run = 15, stand_start = 0, stand_end = 30, walk_start = 35, walk_end = 65, run_start = 105, run_end = 135, punch_start = 70, punch_end = 100, stand_speed = 20, stand1_start = 35, stand1_end = 75, stand1_speed = 20, walk_start = 85, walk_end = 114, walk_speed = 20, run_start = 120, run_end = 140, run_speed = 30, punch_start = 145, punch_end = 160, punch_speed = 20, die_start = 165, die_end = 185, die_speed = 10, die_loop = false, }, follow = "farming:wheat", follow = {"farming:wheat", "default:grass_1"}, view_range = 8, replace_rate = 10, -- replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, replace_what = { {"group:grass", "air", 0}, {"default:dirt_with_grass", "default:dirt", -1} }, replace_with = "air", fear_height = 2, on_rightclick = function(self, clicker) -- feed or tame if mobs:feed_tame(self, clicker, 8, true, true) then return end if mobs:feed_tame(self, clicker, 8, true, true) then -- if fed 7x wheat or grass then cow can be milked again if self.food and self.food > 6 then self.gotten = false end return end if mobs:protect(self, clicker) then return end if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end Loading @@ -83,12 +102,13 @@ mobs:register_mob("mobs_animal:cow", { local inv = clicker:get_inventory() inv:remove_item("main", "bucket:bucket_empty") tool:take_item() clicker:set_wielded_item(tool) if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then clicker:get_inventory():add_item("main", "mobs:bucket_milk") else local pos = self.object:getpos() local pos = self.object:get_pos() pos.y = pos.y + 0.5 minetest.add_item(pos, {name = "mobs:bucket_milk"}) end Loading @@ -98,27 +118,34 @@ mobs:register_mob("mobs_animal:cow", { return end end, }) on_replace = function(self, pos, oldnode, newnode) local spawn_on = "default:dirt_with_grass" self.food = (self.food or 0) + 1 if minetest.get_modpath("ethereal") then spawn_on = "ethereal:green_dirt" -- if cow replaces 8x grass then it can be milked again if self.food >= 8 then self.food = 0 self.gotten = false end end, }) mobs:spawn({ name = "mobs_animal:cow", nodes = {spawn_on}, min_light = 10, chance = 15000, min_height = 0, nodes = {"default:dirt_with_grass", "ethereal:green_dirt"}, neighbors = {"group:grass"}, min_light = 14, interval = 60, chance = 8000, -- 15000 min_height = 5, max_height = 210, day_toggle = true, }) mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1) mobs:register_egg("mobs_animal:cow", S("Cow"), "mobs_cow_inv.png") mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility Loading @@ -129,14 +156,71 @@ minetest.register_craftitem(":mobs:bucket_milk", { description = S("Bucket of Milk"), inventory_image = "mobs_bucket_milk.png", stack_max = 1, on_use = minetest.item_eat(8, 'bucket:bucket_empty'), on_use = minetest.item_eat(8, "bucket:bucket_empty"), groups = {food_milk = 1, flammable = 3}, }) -- glass of milk minetest.register_craftitem(":mobs:glass_milk", { description = S("Glass of Milk"), inventory_image = "mobs_glass_milk.png", on_use = minetest.item_eat(2, "vessels:drinking_glass"), groups = {food_milk_glass = 1, flammable = 3, vessel = 1}, }) minetest.register_craft({ type = "shapeless", output = "mobs:glass_milk 4", recipe = { "vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass", "vessels:drinking_glass", "mobs:bucket_milk" }, replacements = { {"mobs:bucket_milk", "bucket:bucket_empty"} } }) minetest.register_craft({ type = "shapeless", output = "mobs:bucket_milk", recipe = { "mobs:glass_milk", "mobs:glass_milk", "mobs:glass_milk", "mobs:glass_milk", "bucket:bucket_empty" }, replacements = { {"mobs:glass_milk", "vessels:drinking_glass 4"} } }) -- butter minetest.register_craftitem(":mobs:butter", { description = S("Butter"), inventory_image = "mobs_butter.png", on_use = minetest.item_eat(1), groups = {food_butter = 1, flammable = 2}, }) if minetest.get_modpath("farming") and farming and farming.mod then minetest.register_craft({ type = "shapeless", output = "mobs:butter", recipe = {"mobs:bucket_milk", "farming:salt"}, replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} }) else -- some saplings are high in sodium so makes a good replacement item minetest.register_craft({ type = "shapeless", output = "mobs:butter", recipe = {"mobs:bucket_milk", "default:sapling"}, replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}} }) end -- cheese wedge minetest.register_craftitem(":mobs:cheese", { description = S("Cheese"), inventory_image = "mobs_cheese.png", on_use = minetest.item_eat(4), groups = {food_cheese = 1, flammable = 2}, }) minetest.register_craft({ Loading @@ -159,15 +243,15 @@ minetest.register_node(":mobs:cheeseblock", { minetest.register_craft({ output = "mobs:cheeseblock", recipe = { {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, {'mobs:cheese', 'mobs:cheese', 'mobs:cheese'}, {"mobs:cheese", "mobs:cheese", "mobs:cheese"}, {"mobs:cheese", "mobs:cheese", "mobs:cheese"}, {"mobs:cheese", "mobs:cheese", "mobs:cheese"}, } }) minetest.register_craft({ output = "mobs:cheese 9", recipe = { {'mobs:cheeseblock'}, {"mobs:cheeseblock"}, } })
init.lua +2 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,8 @@ dofile(path .. "/bee.lua") -- KrupnoPavel dofile(path .. "/bunny.lua") -- ExeterDad dofile(path .. "/kitten.lua") -- Jordach/BFD dofile(path .. "/penguin.lua") -- D00Med dofile(path .. "/panda.lua") -- AspireMint dofile(path .. "/lucky_block.lua") print (S("[MOD] Mobs Redo 'Animals' loaded")) print (S("[MOD] Mobs Redo Animals loaded"))