update from mobs_animal repo

master
Juraj Vajda 2018-12-10 22:23:48 -05:00
parent d5abd78ff2
commit 611dd1e656
43 changed files with 1070 additions and 192 deletions

38
bee.lua
View File

@ -18,7 +18,7 @@ mobs:register_mob("mobs_animal:bee", {
makes_footstep_sound = false, makes_footstep_sound = false,
sounds = { sounds = {
random = "mobs_bee", random = "mobs_bee",
}, },
walk_velocity = 1, walk_velocity = 1,
jump = true, jump = true,
drops = { drops = {
@ -37,11 +37,23 @@ mobs:register_mob("mobs_animal:bee", {
walk_end = 65, walk_end = 65,
}, },
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, 25, 80, 0, true, nil) mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:bee")
end, end,
-- after_activate = function(self, staticdata, def, dtime)
-- print ("------", self.name, dtime, self.health)
-- end,
}) })
mobs:register_spawn("mobs_animal:bee", {"group:flower"}, 20, 10, 9000, 2, 31000, true) mobs:spawn({
name = "mobs_animal:bee",
nodes = {"group:flower"},
min_light = 14,
interval = 60,
chance = 9000,
min_height = 3,
max_height = 200,
day_toggle = true,
})
mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png", 0) mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png", 0)
@ -52,14 +64,14 @@ mobs:alias_mob("mobs:bee", "mobs_animal:bee")
minetest.register_craftitem(":mobs:honey", { minetest.register_craftitem(":mobs:honey", {
description = S("Honey"), description = S("Honey"),
inventory_image = "mobs_honey_inv.png", 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},
}) })
-- beehive (when placed spawns bee) -- beehive (when placed spawns bee)
minetest.register_node(":mobs:beehive", { minetest.register_node(":mobs:beehive", {
description = S("Beehive"), description = S("Beehive"),
drawtype = "plantlike", drawtype = "plantlike",
visual_scale = 1.0,
tiles = {"mobs_beehive.png"}, tiles = {"mobs_beehive.png"},
inventory_image = "mobs_beehive.png", inventory_image = "mobs_beehive.png",
paramtype = "light", paramtype = "light",
@ -81,19 +93,19 @@ minetest.register_node(":mobs:beehive", {
meta:get_inventory():set_size("beehive", 1) meta:get_inventory():set_size("beehive", 1)
end, end,
--[[
after_place_node = function(pos, placer, itemstack) 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}) minetest.set_node(pos, {name = "mobs:beehive", param2 = 1})
if math.random(1, 4) == 1 then if math.random(1, 4) == 1 then
minetest.add_entity(pos, "mobs:bee") minetest.add_entity(pos, "mobs_animal:bee")
end end
end end
end, end,
]]
on_punch = function(pos, node, puncher) on_punch = function(pos, node, puncher)
-- yep, bee's don't like having their home punched by players -- yep, bee's don't like having their home punched by players
@ -122,7 +134,7 @@ minetest.register_node(":mobs:beehive", {
minetest.register_craft({ minetest.register_craft({
output = "mobs:beehive", output = "mobs:beehive",
recipe = { recipe = {
{"mobs_animal:bee_set","mobs_animal:bee_set","mobs_animal:bee_set"}, {"mobs:bee","mobs:bee","mobs:bee"},
} }
}) })
@ -153,7 +165,7 @@ minetest.register_craft({
-- beehive workings -- beehive workings
minetest.register_abm({ minetest.register_abm({
nodenames = {"mobs:beehive"}, nodenames = {"mobs:beehive"},
interval = 6, interval = 12,
chance = 6, chance = 6,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
@ -168,11 +180,11 @@ minetest.register_abm({
-- is hive full? -- is hive full?
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
if not meta then return end -- for older beehives if not meta then return end -- for older beehives
local inv = minetest.get_meta(pos):get_inventory() local inv = meta:get_inventory()
local honey = inv:get_stack("beehive", 1):get_count() local honey = inv:get_stack("beehive", 1):get_count()
-- is hive full? -- is hive full?
if honey > 19 then if honey > 11 then
return return
end end

143
bunny.lua
View File

@ -1,11 +1,12 @@
local S = mobs.intllib local S = mobs.intllib
-- Bunny by ExeterDad -- Bunny by ExeterDad
mobs:register_mob("mobs_animal:bunny", { mobs:register_mob("mobs_animal:bunny", {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6,
passive = true, passive = true,
reach = 1, reach = 1,
hp_min = 1, hp_min = 1,
@ -25,9 +26,12 @@ mobs:register_mob("mobs_animal:bunny", {
walk_velocity = 1, walk_velocity = 1,
run_velocity = 2, run_velocity = 2,
runaway = true, runaway = true,
-- runaway_from = {"mobs_animal:pumba", "player"},
jump = true, jump = true,
jump_height = 6,
drops = { drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1}, {name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1},
}, },
water_damage = 2, water_damage = 2,
lava_damage = 4, lava_damage = 4,
@ -42,48 +46,133 @@ mobs:register_mob("mobs_animal:bunny", {
punch_start = 16, punch_start = 16,
punch_end = 24, punch_end = 24,
}, },
follow = {"farming:carrot", "farming_plus:carrot_item"}, follow = {"farming_addons:carrot", "farming_plus:carrot_item", "default:grass_1"},
view_range = 8, view_range = 8,
replace_rate = 10, replace_rate = 10,
replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"}, replace_what = {"farming_addons:carrot_7", "farming_addons:carrot_8", "farming_plus:carrot"},
replace_with = "air", replace_with = "air",
on_rightclick = function(self, clicker) -- on_rightclick = function(self, clicker)
-- feed or tame -- -- feed or tame
if mobs:feed_tame(self, clicker, 4, true, true) then return end -- if mobs:feed_tame(self, clicker, 4, true, true) then return end
if mobs:protect(self, clicker) then return end -- if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 30, 50, 80, false, nil) then return end -- if mobs:capture_mob(self, clicker, 30, 50, 80, false, nil) then return end
-- Monty Python tribute -- -- Monty Python tribute
local item = clicker:get_wielded_item() -- local item = clicker:get_wielded_item()
if item:get_name() == "mobs:lava_orb" then -- if item:get_name() == "mobs:lava_orb" then
if not mobs.is_creative(clicker:get_player_name()) then -- if not mobs.is_creative(clicker:get_player_name()) then
item:take_item() -- item:take_item()
clicker:set_wielded_item(item) -- clicker:set_wielded_item(item)
end -- end
self.object:set_properties({ -- self.object:set_properties({
textures = {"mobs_bunny_evil.png"}, -- textures = {"mobs_bunny_evil.png"},
}) -- })
self.type = "monster" -- self.type = "monster"
self.object:set_hp(20) -- self.health = 20
-- self.passive = false
return -- 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 end
return true -- run only once, false/nil runs every activation
end, end,
attack_type = "dogfight", attack_type = "dogfight",
damage = 5, damage = 5,
}) })
mobs:register_spawn("mobs_animal:bunny",
{"default:dirt_with_grass", "ethereal:prairie_dirt"}, 20, 10, 15000, 2, 31000, true) local spawn_on = "default:dirt_with_grass"
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:prairie_dirt"
end
mobs:spawn({
name = "mobs_animal:bunny",
nodes = {spawn_on},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 8000, -- 15000
min_height = 5,
max_height = 200,
day_toggle = true,
})
mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0) mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0)
-- compatibility
mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") 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"
}
})

View File

@ -1,11 +1,12 @@
local S = mobs.intllib local S = mobs.intllib
-- Chicken by JK Murray -- Chicken by JK Murray
mobs:register_mob("mobs_animal:chicken", { mobs:register_mob("mobs_animal:chicken", {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6,
passive = true, passive = true,
hp_min = 15, hp_min = 15,
hp_max = 25, hp_max = 25,
@ -31,10 +32,10 @@ mobs:register_mob("mobs_animal:chicken", {
walk_velocity = 1, walk_velocity = 1,
run_velocity = 3, run_velocity = 3,
runaway = true, runaway = true,
jump = true, runaway_from = {"player", "mobs_animal:pumba"},
drops = { drops = {
{name = "mobs:chicken_raw", chance = 1, min = 2, max = 2}, {name = "mobs:chicken_raw", chance = 1, min = 1, max = 1},
{name = "mobs_animal:chicken", chance = 15, min = 1, max = 1}, -- {name = "mobs:chicken_feather", chance = 1, min = 0, max = 2},
}, },
water_damage = 2, water_damage = 2,
lava_damage = 5, lava_damage = 5,
@ -84,22 +85,31 @@ mobs:register_mob("mobs_animal:chicken", {
end, end,
}) })
-- mobs:register_spawn("mobs_animal:chicken",
-- {"default:dirt_with_grass", "ethereal:bamboo_dirt"}, 20, 10, 30000, 1, 31000, true) local spawn_on = "default:dirt_with_grass"
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:bamboo_dirt"
end
mobs:spawn({ mobs:spawn({
name = "mobs_animal:chicken", name = "mobs_animal:chicken",
nodes = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, nodes = {spawn_on},
interval = 30, neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 60000, chance = 60000,
active_object_count = 1, min_height = 5,
max_height = 200,
day_toggle = true, day_toggle = true,
}) })
mobs:register_egg("mobs_animal:chicken", S("Chicken"), "mobs_chicken_inv.png", 0) mobs:register_egg("mobs_animal:chicken", S("Chicken"), "mobs_chicken_inv.png", 0)
-- compatibility
mobs:alias_mob("mobs:chicken", "mobs_animal:chicken") mobs:alias_mob("mobs:chicken", "mobs_animal:chicken") -- compatibility
-- egg entity -- egg entity
@ -128,7 +138,7 @@ mobs:register_arrow("mobs_animal:egg_entity", {
if math.random(1, 10) > 1 then if math.random(1, 10) > 1 then
return return
end end
pos.y = pos.y + 1 pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos) local nod = minetest.get_node_or_nil(pos)
@ -140,30 +150,31 @@ mobs:register_arrow("mobs_animal:egg_entity", {
end end
local mob = minetest.add_entity(pos, "mobs_animal:chicken") local mob = minetest.add_entity(pos, "mobs_animal:chicken")
local ent2 = mob:get_luaentity() local ent2 = mob:get_luaentity()
mob:set_properties({ mob:set_properties({
textures = ent2.child_texture[1], textures = ent2.child_texture[1],
visual_size = { visual_size = {
x = ent2.base_size.x / 2, x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2 y = ent2.base_size.y / 2
}, },
collisionbox = { collisionbox = {
ent2.base_colbox[1] / 2, ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2, ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2, ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2, ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2, ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2 ent2.base_colbox[6] / 2
}, },
}) })
ent2.child = true ent2.child = true
ent2.tamed = true ent2.tamed = true
ent2.owner = self.playername ent2.owner = self.playername
end end
}) })
-- egg throwing item -- egg throwing item
local egg_GRAVITY = 9 local egg_GRAVITY = 9
@ -213,6 +224,7 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
return item return item
end end
-- egg -- egg
minetest.register_node(":mobs:egg", { minetest.register_node(":mobs:egg", {
description = S("Chicken Egg"), description = S("Chicken Egg"),
@ -229,7 +241,7 @@ minetest.register_node(":mobs:egg", {
type = "fixed", type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2} 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) after_place_node = function(pos, placer, itemstack)
if placer:is_player() then if placer:is_player() then
minetest.set_node(pos, {name = "mobs:egg", param2 = 1}) minetest.set_node(pos, {name = "mobs:egg", param2 = 1})
@ -238,11 +250,13 @@ minetest.register_node(":mobs:egg", {
on_use = mobs_shoot_egg on_use = mobs_shoot_egg
}) })
-- fried egg -- fried egg
minetest.register_craftitem(":mobs:chicken_egg_fried", { minetest.register_craftitem(":mobs:chicken_egg_fried", {
description = S("Fried Egg"), description = S("Fried Egg"),
inventory_image = "mobs_chicken_egg_fried.png", inventory_image = "mobs_chicken_egg_fried.png",
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
groups = {food_egg_fried = 1, flammable = 2},
}) })
minetest.register_craft({ minetest.register_craft({
@ -256,6 +270,7 @@ minetest.register_craftitem(":mobs:chicken_raw", {
description = S("Raw Chicken"), description = S("Raw Chicken"),
inventory_image = "mobs_chicken_raw.png", inventory_image = "mobs_chicken_raw.png",
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2},
}) })
-- cooked chicken -- cooked chicken
@ -263,6 +278,7 @@ minetest.register_craftitem(":mobs:chicken_cooked", {
description = S("Cooked Chicken"), description = S("Cooked Chicken"),
inventory_image = "mobs_chicken_cooked.png", inventory_image = "mobs_chicken_cooked.png",
on_use = minetest.item_eat(6), on_use = minetest.item_eat(6),
groups = {food_meat = 1, food_chicken = 1, flammable = 2},
}) })
minetest.register_craft({ minetest.register_craft({
@ -270,3 +286,16 @@ minetest.register_craft({
recipe = "mobs:chicken_raw", recipe = "mobs:chicken_raw",
output = "mobs:chicken_cooked", output = "mobs:chicken_cooked",
}) })
-- feather
-- 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,
-- })

119
cow.lua
View File

@ -1,12 +1,14 @@
local S = mobs.intllib local S = mobs.intllib
-- Cow by Krupnovpavel (additional texture by JurajVajda) -- Cow by Krupnovpavel (additional texture by JurajVajda)
mobs:register_mob("mobs_animal:cow", { mobs:register_mob("mobs_animal:cow", {
type = "animal", type = "animal",
passive = false, passive = false,
attack_type = "dogfight", attack_type = "dogfight",
attack_npcs = false,
reach = 2, reach = 2,
damage = 4, damage = 4,
hp_min = 25, hp_min = 25,
@ -26,13 +28,13 @@ mobs:register_mob("mobs_animal:cow", {
walk_velocity = 1, walk_velocity = 1,
run_velocity = 2, run_velocity = 2,
jump = true, jump = true,
jump_height = 6,
pushable = true,
drops = { drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 3}, {name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
{name = "mobs_animal:cow", chance = 15, min = 1, max = 1}, {name = "mobs:leather", chance = 1, min = 0, max = 2},
{name = "mobs:leather", chance = 1, min = 1, max = 2},
}, },
water_damage = 2, water_damage = 2,
floats = 0,
lava_damage = 5, lava_damage = 5,
light_damage = 0, light_damage = 0,
animation = { animation = {
@ -47,19 +49,29 @@ mobs:register_mob("mobs_animal:cow", {
punch_start = 70, punch_start = 70,
punch_end = 100, punch_end = 100,
}, },
follow = "farming:wheat", follow = {"farming:wheat", "default:grass_1"},
view_range = 8, view_range = 8,
replace_rate = 10, replace_rate = 10,
replace_what = { replace_what = {
{"group:grass", "air", 0}, {"group:grass", "air", 0},
{"default:dirt_with_grass", "default:dirt", -1} {"default:dirt_with_grass", "default:dirt", -1}
}, },
replace_with = "air",
fear_height = 2, fear_height = 2,
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
-- feed or tame -- 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 > 6 then
self.food = 0
self.gotten = false
end
return
end
if mobs:protect(self, clicker) then return end if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
@ -82,7 +94,8 @@ mobs:register_mob("mobs_animal:cow", {
local inv = clicker:get_inventory() 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 if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
clicker:get_inventory():add_item("main", "mobs:bucket_milk") clicker:get_inventory():add_item("main", "mobs:bucket_milk")
@ -96,17 +109,38 @@ mobs:register_mob("mobs_animal:cow", {
return return
end end
end,
on_replace = function(self, pos, oldnode, newnode)
self.food = (self.food or 0) + 1
-- if cow replaces 8x grass then it can be milked again
if self.food >= 8 then
self.food = 0
self.gotten = false
end
end, end,
}) })
mobs:register_spawn("mobs_animal:cow",
{"default:dirt_with_grass", "ethereal:green_dirt"}, 20, 10, 60000, 1, 31000, true) mobs:spawn({
name = "mobs_animal:cow",
nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 60000,
min_height = 5,
max_height = 200,
day_toggle = true,
})
mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1) mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1)
-- compatibility
mobs:alias_mob("mobs:cow", "mobs_animal:cow") mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility
-- bucket of milk -- bucket of milk
minetest.register_craftitem(":mobs:bucket_milk", { minetest.register_craftitem(":mobs:bucket_milk", {
@ -114,13 +148,70 @@ minetest.register_craftitem(":mobs:bucket_milk", {
inventory_image = "mobs_bucket_milk.png", inventory_image = "mobs_bucket_milk.png",
stack_max = 1, 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},
})
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 -- cheese wedge
minetest.register_craftitem(":mobs:cheese", { minetest.register_craftitem(":mobs:cheese", {
description = S("Cheese"), description = S("Cheese"),
inventory_image = "mobs_cheese.png", inventory_image = "mobs_cheese.png",
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
groups = {food_cheese = 1, flammable = 2},
}) })
minetest.register_craft({ minetest.register_craft({

View File

@ -1,3 +1,4 @@
default default
mobs mobs
intllib? intllib?
lucky_block?

View File

@ -14,11 +14,11 @@ dofile(path .. "/cow.lua") -- KrupnoPavel
dofile(path .. "/sheep.lua") -- PilzAdam dofile(path .. "/sheep.lua") -- PilzAdam
dofile(path .. "/warthog.lua") -- KrupnoPavel dofile(path .. "/warthog.lua") -- KrupnoPavel
dofile(path .. "/bee.lua") -- KrupnoPavel dofile(path .. "/bee.lua") -- KrupnoPavel
dofile(path .. "/squid.lua")
-- dofile(path .. "/bunny.lua") -- ExeterDad -- dofile(path .. "/bunny.lua") -- ExeterDad
-- dofile(path .. "/kitten.lua") -- Jordach/BFD -- dofile(path .. "/kitten.lua") -- Jordach/BFD
-- dofile(path .. "/penguin.lua") -- D00Med -- dofile(path .. "/penguin.lua") -- D00Med
-- dofile(path .. "/panda.lua") -- AspireMint
dofile(path .. "/lucky_block.lua") -- dofile(path .. "/lucky_block.lua")
print (S("[MOD] Mobs Redo 'Animals' loaded")) print (S("[MOD] Mobs Redo 'Animals' loaded"))

View File

@ -6,40 +6,40 @@
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua -- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...) local function format(str, ...)
local args = { ... } local args = { ... }
local function repl(escape, open, num, close) local function repl(escape, open, num, close)
if escape == "" then if escape == "" then
local replacement = tostring(args[tonumber(num)]) local replacement = tostring(args[tonumber(num)])
if open == "" then if open == "" then
replacement = replacement..close replacement = replacement..close
end end
return replacement return replacement
else else
return "@"..open..num..close return "@"..open..num..close
end end
end end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl)) return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end end
local gettext, ngettext local gettext, ngettext
if minetest.get_modpath("intllib") then if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then if intllib.make_gettext_pair then
-- New method using gettext. -- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair() gettext, ngettext = intllib.make_gettext_pair()
else else
-- Old method using text files. -- Old method using text files.
gettext = intllib.Getter() gettext = intllib.Getter()
end end
end end
-- Fill in missing functions. -- Fill in missing functions.
gettext = gettext or function(msgid, ...) gettext = gettext or function(msgid, ...)
return format(msgid, ...) return format(msgid, ...)
end end
ngettext = ngettext or function(msgid, msgid_plural, n, ...) ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...) return format(n==1 and msgid or msgid_plural, ...)
end end
return gettext, ngettext return gettext, ngettext

View File

@ -1,12 +1,19 @@
local S = mobs.intllib local S = mobs.intllib
local hairball = minetest.settings:get("mobs_hairball")
-- Kitten by Jordach / BFD -- Kitten by Jordach / BFD
mobs:register_mob("mobs_animal:kitten", { mobs:register_mob("mobs_animal:kitten", {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6, specific_attack = {"mobs_animal:rat"},
passive = true, damage = 1,
attack_type = "dogfight",
attack_animals = true, -- so it can attack rat
attack_players = false,
reach = 1,
passive = false,
hp_min = 5, hp_min = 5,
hp_max = 10, hp_max = 10,
armor = 200, armor = 200,
@ -25,13 +32,14 @@ mobs:register_mob("mobs_animal:kitten", {
random = "mobs_kitten", random = "mobs_kitten",
}, },
walk_velocity = 0.6, walk_velocity = 0.6,
walk_chance = 15,
run_velocity = 2, run_velocity = 2,
runaway = true, runaway = true,
jump = false, jump = false,
drops = { drops = {
{name = "farming:string", chance = 1, min = 1, max = 1}, {name = "farming:string", chance = 1, min = 0, max = 1},
}, },
water_damage = 2, water_damage = 1,
lava_damage = 5, lava_damage = 5,
fear_height = 3, fear_height = 3,
animation = { animation = {
@ -40,21 +48,120 @@ mobs:register_mob("mobs_animal:kitten", {
stand_end = 192, stand_end = 192,
walk_start = 0, walk_start = 0,
walk_end = 96, walk_end = 96,
stoodup_start = 0,
stoodup_end = 0,
}, },
follow = {"mobs_animal:rat", "ethereal:fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical"}, follow = {"mobs_animal:rat", "ethereal:fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical"},
view_range = 8, view_range = 8,
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 4, true, true) then return end if mobs:feed_tame(self, clicker, 4, true, true) then return end
if mobs:protect(self, clicker) then return end if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) then return end if mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) then return end
end
-- by right-clicking owner can switch between staying and walking
if self.owner and self.owner == clicker:get_player_name() then
if self.order ~= "stand" then
self.order = "stand"
self.state = "stand"
self.object:set_velocity({x = 0, y = 0, z = 0})
mobs:set_animation(self, "stand")
else
self.order = ""
mobs:set_animation(self, "stoodup")
end
end
end,
do_custom = function(self, dtime)
if hairball == "false" then
return
end
self.hairball_timer = (self.hairball_timer or 0) + dtime
if self.hairball_timer < 10 then
return
end
self.hairball_timer = 0
if self.child
or math.random(1, 250) > 1 then
return
end
local pos = self.object:get_pos()
minetest.add_item(pos, "mobs:hairball")
minetest.sound_play("default_dig_snappy", {
pos = pos,
gain = 1.0,
max_hear_distance = 5,
})
end,
})
local spawn_on = "default:dirt_with_grass"
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:grove_dirt"
end
mobs:spawn({
name = "mobs_animal:kitten",
nodes = {spawn_on},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 10000, -- 22000
min_height = 5,
max_height = 50,
day_toggle = true,
}) })
mobs:register_spawn("mobs_animal:kitten",
{"default:dirt_with_grass", "ethereal:grove_dirt"}, 20, 12, 22000, 2, 31000, true)
mobs:register_egg("mobs_animal:kitten", S("Kitten"), "mobs_kitten_inv.png", 0) mobs:register_egg("mobs_animal:kitten", S("Kitten"), "mobs_kitten_inv.png", 0)
-- compatibility
mobs:alias_mob("mobs:kitten", "mobs_animal:kitten") mobs:alias_mob("mobs:kitten", "mobs_animal:kitten") -- compatibility
local hairball_items = {
"default:stick", "default:coal_lump", "default:dry_shrub", "flowers:rose",
"mobs_animal:rat", "default:grass_1", "farming:seed_wheat", "dye:green", "",
"farming:seed_cotton", "default:flint", "default:sapling", "dye:white", "",
"default:clay_lump", "default:paper", "default:dry_grass_1", "dye:red", "",
"farming:string", "mobs:chicken_feather", "default:acacia_bush_sapling", "",
"default:bush_sapling", "default:copper_lump", "default:iron_lump", "",
"dye:black", "dye:brown", "default:obsidian_shard", "default:tin_lump"
}
minetest.register_craftitem(":mobs:hairball", {
description = S("Hairball"),
inventory_image = "mobs_hairball.png",
on_use = function(itemstack, user, pointed_thing)
local pos = user:get_pos()
local dir = user:get_look_dir()
local newpos = {x = pos.x + dir.x, y = pos.y + dir.y + 1.5, z = pos.z + dir.z}
local item = hairball_items[math.random(1, #hairball_items)]
if item ~= "" then
minetest.add_item(newpos, {name = item})
end
minetest.sound_play("default_place_node_hard", {
pos = newpos,
gain = 1.0,
max_hear_distance = 5,
})
itemstack:take_item()
return itemstack
end,
})

View File

@ -19,3 +19,7 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
Chicken sounds from freesounds.org under CC0
Mutton, Pork and Rabbit meat textures by Piezo_ under CC0

View File

@ -38,6 +38,18 @@ msgstr "Honigblock"
msgid "Bunny" msgid "Bunny"
msgstr "Häschen" msgstr "Häschen"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Rohes Kaninchen"
#: bunny.lua
msgid "Cooked Rabbit"
msgstr "Gekochtes Kaninchen"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Kaninchenfell"
#: chicken.lua #: chicken.lua
msgid "Chicken" msgid "Chicken"
msgstr "Huhn" msgstr "Huhn"
@ -169,6 +181,15 @@ msgstr "Gelbes"
msgid "@1 Sheep" msgid "@1 Sheep"
msgstr "@1 Schaf" msgstr "@1 Schaf"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Rohes Hammelfleisch"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Gekochtes Hammelfleisch"
#: warthog.lua #: warthog.lua
msgid "Warthog" msgid "Warthog"
msgstr "Warzenschwein" msgstr "Warzenschwein"
@ -179,4 +200,4 @@ msgstr "Rohes Schweinekotelett"
#: warthog.lua #: warthog.lua
msgid "Cooked Porkchop" msgid "Cooked Porkchop"
msgstr "Gekochtes Schweinekotelett" msgstr "Gekochtes Schweinekotelett"

View File

@ -38,6 +38,19 @@ msgstr "Bloc de miel"
msgid "Bunny" msgid "Bunny"
msgstr "Lapin" msgstr "Lapin"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Lapin Cru"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "Lapin Cuit"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Fourrure de Lapin"
#: chicken.lua #: chicken.lua
msgid "Chicken" msgid "Chicken"
msgstr "Poule" msgstr "Poule"
@ -167,6 +180,15 @@ msgstr "jaune"
msgid "@1 Sheep" msgid "@1 Sheep"
msgstr "Mouton @1" msgstr "Mouton @1"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Mouton Cru"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Mouton Cuit"
#: warthog.lua #: warthog.lua
msgid "Warthog" msgid "Warthog"
msgstr "Sanglier" msgstr "Sanglier"

View File

@ -38,6 +38,19 @@ msgstr "Blocco di miele"
msgid "Bunny" msgid "Bunny"
msgstr "Coniglietto" msgstr "Coniglietto"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Coniglio Crudo"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "Coniglio Cotto"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Pelle di Coniglio"
#: chicken.lua #: chicken.lua
msgid "Chicken" msgid "Chicken"
msgstr "Gallina" msgstr "Gallina"
@ -166,6 +179,15 @@ msgstr "Gialla"
msgid "@1 Sheep" msgid "@1 Sheep"
msgstr "Pecora @1" msgstr "Pecora @1"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Montone Crudo"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Montone Cotto"
#: warthog.lua #: warthog.lua
msgid "Warthog" msgid "Warthog"
msgstr "Facocero" msgstr "Facocero"

199
locale/ms.po Normal file
View File

@ -0,0 +1,199 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-06 00:17+0800\n"
"PO-Revision-Date: 2018-02-06 00:25+0800\n"
"Last-Translator: MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>\n"
"Language-Team: \n"
"Language: ms\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: bee.lua
msgid "Bee"
msgstr "Lebah"
#: bee.lua
msgid "Honey"
msgstr "Madu"
#: bee.lua
msgid "Beehive"
msgstr "Sarang Lebah"
#: bee.lua
msgid "Honey Block"
msgstr "Blok Madu"
#: bunny.lua
msgid "Bunny"
msgstr "Arnab"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Daging Arnab Mentah"
#: bunny.lua
msgid "Cooked Rabbit"
msgstr "Daging Arnab Bakar"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Belulang Arnab"
#: chicken.lua
msgid "Chicken"
msgstr "Ayam"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Telur Ayam"
#: chicken.lua
msgid "Fried Egg"
msgstr "Telur Goreng"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Ayam Mentah"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Ayam Bakar"
#: chicken.lua
msgid "Feather"
msgstr "Bulu"
#: cow.lua
msgid "Cow already milked!"
msgstr "Lembu telah diperah susunya!"
#: cow.lua
msgid "Cow"
msgstr "Lembu"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Baldi Susu"
#: cow.lua
msgid "Cheese"
msgstr "Keju"
#: cow.lua
msgid "Cheese Block"
msgstr "Blok Keju"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MODS] Mobs Redo 'Animals' telah dimuatkan"
#: kitten.lua
msgid "Kitten"
msgstr "Anak Kucing"
#: penguin.lua
msgid "Penguin"
msgstr "Penguin"
#: rat.lua
msgid "Rat"
msgstr "Tikus"
#: rat.lua
msgid "Cooked Rat"
msgstr "Tikus Bakar"
#: sheep.lua
msgid "Black"
msgstr "Hitam"
#: sheep.lua
msgid "Blue"
msgstr "Biru"
#: sheep.lua
msgid "Brown"
msgstr "Perang"
#: sheep.lua
msgid "Cyan"
msgstr "Sian"
#: sheep.lua
msgid "Dark Green"
msgstr "Hijau Gelap"
#: sheep.lua
msgid "Dark Grey"
msgstr "Kelabu Gelap"
#: sheep.lua
msgid "Green"
msgstr "Hijau"
#: sheep.lua
msgid "Grey"
msgstr "Kelabu"
#: sheep.lua
msgid "Magenta"
msgstr "Merah Lembayung"
#: sheep.lua
msgid "Orange"
msgstr "Jingga"
#: sheep.lua
msgid "Pink"
msgstr "Merah Jambu"
#: sheep.lua
msgid "Red"
msgstr "Merah"
#: sheep.lua
msgid "Violet"
msgstr "Ungu"
#: sheep.lua
msgid "White"
msgstr "Putih"
#: sheep.lua
msgid "Yellow"
msgstr "Kuning"
#: sheep.lua
msgid "@1 Sheep"
msgstr "Biri-biri @1"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Daging Biri-biri Mentah"
#: sheep.lua
msgid "Cooked Mutton"
msgstr "Daging Biri-biri Bakar"
#: warthog.lua
msgid "Warthog"
msgstr "Babi Hutan"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Daging Babi Mentah"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Daging Babi Bakar"

View File

@ -8,9 +8,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-13 16:00+0200\n" "POT-Creation-Date: 2017-08-13 16:00 (UTC+5)\n"
"PO-Revision-Date: 2017-08-13 16:00+ZONE\n" "PO-Revision-Date: 2018-03-29 18:00 (UTC+5)\n"
"Last-Translator: Oleg720 <olegsiriak@yandex.ru>\n" "Last-Translator: Oleg720 <contact@oleg720.ru>\n"
"Language-Team: 720 Locales <>\n" "Language-Team: 720 Locales <>\n"
"Language: ru\n" "Language: ru\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -23,7 +23,7 @@ msgstr "Пчела"
#: bee.lua #: bee.lua
msgid "Honey" msgid "Honey"
msgstr "Мед" msgstr "Мёд"
#: bee.lua #: bee.lua
msgid "Beehive" msgid "Beehive"
@ -31,12 +31,25 @@ msgstr "Улей"
#: bee.lua #: bee.lua
msgid "Honey Block" msgid "Honey Block"
msgstr "Блок меда" msgstr "Блок мёда"
#: bunny.lua #: bunny.lua
msgid "Bunny" msgid "Bunny"
msgstr "Кролик" msgstr "Кролик"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Сырой кролик"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "Приготовленный кролик"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Кролик скрыть"
#: chicken.lua #: chicken.lua
msgid "Chicken" msgid "Chicken"
msgstr "Курица" msgstr "Курица"
@ -165,6 +178,15 @@ msgstr "Желтый"
msgid "@1 Sheep" msgid "@1 Sheep"
msgstr "@1 Овец" msgstr "@1 Овец"
#: sheep.lua
msgid "Raw Mutton"
msgstr "сырой ягненок"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "приготовленный ягненок"
#: warthog.lua #: warthog.lua
msgid "Warthog" msgid "Warthog"
msgstr "Бородавочник" msgstr "Бородавочник"

View File

@ -37,6 +37,18 @@ msgstr ""
msgid "Bunny" msgid "Bunny"
msgstr "" msgstr ""
#: bunny.lua
msgid "Raw Rabbit"
msgstr ""
#: bunny.lua
msgid "Cooked Rabbit"
msgstr ""
#: bunny.lua
msgid "Rabbit Hide"
msgstr ""
#: chicken.lua #: chicken.lua
msgid "Chicken" msgid "Chicken"
msgstr "" msgstr ""
@ -165,6 +177,14 @@ msgstr ""
msgid "@1 Sheep" msgid "@1 Sheep"
msgstr "" msgstr ""
#: sheep.lua
msgid "Raw Mutton"
msgstr ""
#: sheep.lua
msgid "Cooked Mutton"
msgstr ""
#: warthog.lua #: warthog.lua
msgid "Warthog" msgid "Warthog"
msgstr "" msgstr ""

View File

@ -38,6 +38,19 @@ msgstr "Bal bloğu"
msgid "Bunny" msgid "Bunny"
msgstr "Tavşan" msgstr "Tavşan"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "çiğ tavşan"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "pişmiş tavşan"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "tavşan kürkü"
#: chicken.lua #: chicken.lua
msgid "Chicken" msgid "Chicken"
msgstr "Tavuk" msgstr "Tavuk"
@ -167,6 +180,15 @@ msgstr "Sarı"
msgid "@1 Sheep" msgid "@1 Sheep"
msgstr "@1 Koyun" msgstr "@1 Koyun"
#: sheep.lua
msgid "Raw Mutton"
msgstr "çiğ kuzu"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "pişmiş kuzu"
#: warthog.lua #: warthog.lua
msgid "Warthog" msgid "Warthog"
msgstr "Domuz" msgstr "Domuz"

View File

@ -1,7 +1,11 @@
if minetest.get_modpath("lucky_block") then if minetest.get_modpath("lucky_block") then
lucky_block:add_blocks({ lucky_block:add_blocks({
{"spw", "mobs:sheep", 5}, {"spw", "mobs:sheep", 5},
{"spw", "mobs:rat", 5},
{"dro", {"mobs:rat_cooked"}, 5},
{"spw", "mobs:bunny", 3},
{"nod", "mobs:honey_block", 0}, {"nod", "mobs:honey_block", 0},
{"spw", "mobs:pumba", 5}, {"spw", "mobs:pumba", 5},
{"nod", "mobs:cheeseblock", 0}, {"nod", "mobs:cheeseblock", 0},
@ -9,7 +13,19 @@ if minetest.get_modpath("lucky_block") then
{"dro", {"mobs:egg"}, 5}, {"dro", {"mobs:egg"}, 5},
{"spw", "mobs:cow", 5}, {"spw", "mobs:cow", 5},
{"dro", {"mobs:bucket_milk"}, 8}, {"dro", {"mobs:bucket_milk"}, 8},
{"spw", "mobs:kitten", 2},
{"exp"}, {"exp"},
{"dro", {"mobs:hairball"}, 3},
{"dro", {"mobs:chicken_raw", "mobs:chicken_cooked"}, 10},
{"dro", {"mobs:pork_raw", "mobs:pork_cooked"}, 10},
{"dro", {"mobs:mutton_raw", "mobs:mutton_cooked"}, 10},
{"dro", {"mobs:meat_raw", "mobs:meat"}, 10},
{"dro", {"mobs:glass_milk"}, 5},
}) })
end if minetest.registered_nodes["default:nyancat"] then
lucky_block:add_blocks({
{"tro", "default:nyancat", "mobs_kitten", true},
})
end
end

0
models/mobs_kitten.b3d Executable file → Normal file
View File

BIN
models/mobs_panda.b3d Normal file

Binary file not shown.

86
panda.lua Normal file
View File

@ -0,0 +1,86 @@
local S = mobs.intllib
-- Panda by AspireMint (CC BY-SA 3.0)
mobs:register_mob("mobs_animal:panda", {
stepheight = 0.6,
type = "animal",
passive = false,
attack_type = "dogfight",
group_attack = false,
owner_loyal = true,
attack_npcs = false,
reach = 2,
damage = 3,
hp_min = 10,
hp_max = 24,
armor = 200,
collisionbox = {-0.4, -0.45, -0.4, 0.4, 0.45, 0.4},
visual = "mesh",
mesh = "mobs_panda.b3d",
textures = {
{"mobs_panda.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_panda",
attack = "mobs_panda",
},
walk_chance = 5,
walk_velocity = 0.5,
run_velocity = 1.5,
jump = false,
jump_height = 6,
follow = {"ethereal:bamboo"},
view_range = 8,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
fear_height = 6,
animation = {
speed_normal = 15,
stand_start = 130,
stand_end = 270,
stand1_start = 0,
stand1_end = 0,
stand2_start = 1,
stand2_end = 1,
stand3_start = 2,
stand3_end = 2,
walk_start = 10,
walk_end = 70,
run_start = 10,
run_end = 70,
punch_start = 80,
punch_end = 120,
-- 0 = rest, 1 = hiding (covers eyes), 2 = surprised
},
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 20, true, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 5, 50, false, nil) then return end
end,
})
if minetest.get_modpath("ethereal") then
mobs:spawn({
name = "mobs_animal:panda",
nodes = {"ethereal:bamboo_dirt"},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 8000, -- 15000
min_height = 10,
max_height = 80,
day_toggle = true,
})
end
mobs:register_egg("mobs_animal:panda", S("Panda"), "wool_green.png", 1)

View File

@ -5,8 +5,8 @@ local S = mobs.intllib
-- Penguin by D00Med -- Penguin by D00Med
mobs:register_mob("mobs_animal:penguin", { mobs:register_mob("mobs_animal:penguin", {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6,
passive = true, passive = true,
reach = 1, reach = 1,
hp_min = 5, hp_min = 5,
@ -43,9 +43,9 @@ mobs:register_mob("mobs_animal:penguin", {
fly_end = 95, fly_end = 95,
-- 50-70 is slide/water idle -- 50-70 is slide/water idle
}, },
fly_in = "default:water_source", fly_in = {"default:water_source", "default:water_flowing"},
floats = 0, floats = 0,
follow = {"ethereal:fish_raw"}, follow = {"ethereal:fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical"},
view_range = 5, view_range = 5,
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
@ -61,11 +61,13 @@ mobs:register_mob("mobs_animal:penguin", {
mobs:spawn({ mobs:spawn({
name = "mobs_animal:penguin", name = "mobs_animal:penguin",
nodes = {"default:snowblock"}, nodes = {"default:snowblock"},
min_light = 10, min_light = 14,
interval = 60,
chance = 20000, chance = 20000,
min_height = 0, min_height = 0,
max_height = 200,
day_toggle = true, day_toggle = true,
}) })
mobs:register_egg("mobs_animal:penguin", S("Penguin"), "default_snow.png", 1) mobs:register_egg("mobs_animal:penguin", S("Penguin"), "default_snow.png", 1)

33
rat.lua
View File

@ -1,11 +1,12 @@
local S = mobs.intllib local S = mobs.intllib
-- Rat by PilzAdam -- Rat by PilzAdam
mobs:register_mob("mobs_animal:rat", { mobs:register_mob("mobs_animal:rat", {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6,
passive = true, passive = true,
hp_min = 1, hp_min = 1,
hp_max = 4, hp_max = 4,
@ -30,7 +31,7 @@ mobs:register_mob("mobs_animal:rat", {
light_damage = 0, light_damage = 0,
fear_height = 2, fear_height = 2,
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, 25, 80, 0, true, nil) mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:rat")
end, end,
--[[ --[[
do_custom = function(self, dtime) do_custom = function(self, dtime)
@ -58,23 +59,43 @@ mobs:register_mob("mobs_animal:rat", {
]] ]]
}) })
mobs:register_spawn("mobs_animal:rat", {"default:stone"}, 20, 5, 15000, 2, 0)
local function rat_spawn(self, pos)
self = self:get_luaentity()
print (self.name, pos.x, pos.y, pos.z)
self.hp_max = 100
self.health = 100
end
mobs:spawn({
name = "mobs_animal:rat",
nodes = {"default:stone"},
min_light = 3,
max_light = 9,
interval = 60,
chance = 8000,
max_height = 0,
-- on_spawn = rat_spawn,
})
mobs:register_egg("mobs_animal:rat", S("Rat"), "mobs_rat_inventory.png", 0) mobs:register_egg("mobs_animal:rat", S("Rat"), "mobs_rat_inventory.png", 0)
-- compatibility
mobs:alias_mob("mobs:rat", "mobs_animal:rat") mobs:alias_mob("mobs:rat", "mobs_animal:rat") -- compatibility
-- cooked rat, yummy! -- cooked rat, yummy!
minetest.register_craftitem(":mobs:rat_cooked", { minetest.register_craftitem(":mobs:rat_cooked", {
description = S("Cooked Rat"), description = S("Cooked Rat"),
inventory_image = "mobs_cooked_rat.png", inventory_image = "mobs_cooked_rat.png",
on_use = minetest.item_eat(3), on_use = minetest.item_eat(3),
groups = {food_rat = 1, flammable = 2},
}) })
minetest.register_craft({ minetest.register_craft({
type = "cooking", type = "cooking",
output = "mobs:rat_cooked", output = "mobs:rat_cooked",
recipe = "mobs:rat", recipe = "mobs_animal:rat",
cooktime = 5, cooktime = 5,
}) })

View File

@ -1,36 +1,45 @@
# ANIMAL MOBS
ANIMAL MOBS ### Bee
Tends to buzz around flowers and gives honey when killed, you can also right-click a bee to pick it up and place in inventory. 3x bee's in a row can craft a beehive.
Bee ---
### Bunny
Bunnies appear in green grass areas (prairie biome in ethereal) and can be tamed with 4 carrots or grass. Can also be picked up and placed in inventory and gives 1 raw rabbit and 1 rabbit hide when killed.
- Tends to buzz around flowers and gives honey when killed, you can also right-click a bee to pick it up and place in inventory. 3x bee's in a row can craft a beehive. ---
### Chicken
Found in green areas (bamboo biome in ethereal) and lays eggs on flat ground, Can be picked up and placed in inventory and gives 1-2 raw chicken when killed. Feed 8x wheat seed to breed.
Bunny ---
### Cow
Wanders around eating grass/wheat and can be right-clicked with empty bucket to get milk. Cows will defend themselves when hit and can be right-clicked with 8x wheat to tame and breed.
- Bunnies appear in green grass areas (prairie biome in ethereal) and can be tamed with 4 carrots. Can also be picked up and placed in inventory and gives 1-2 meat when killed. ---
### Kitten
Found on green grass these cute cats walk around and can be picked up and placed in inventory as pets or right-clicked with 4x live rats or raw fish (found in ethereal) and tamed. They can sometimes leave you little gifts of a hairball.
Chicken ---
### Rat
Typically found around stone they can be picked up and cooked for eating.
- Found in green areas (bamboo biome in ethereal) and lays eggs on flat ground, Can be picked up and placed in inventory and gives 1-2 raw chicken when killed. Feed 8x wheat seed to breed. ---
### Sheep
Green grass and wheat munchers that can be clipped using shears to give 1-3 wool. Feed sheep 8x wheat to regrow wool, tame and breed. Right-click a tamed sheep with dye to change it's colour. Will drop 1-3 raw mutton when killed.
Cow ---
### Warthog
Warthogs unlike pigs defend themselves when hit and give 1-3 raw pork when killed, they can also be right-clicked with 8x apples to tame or breed.
- Wanders around eating grass/wheat and can be right-clicked with empty bucket to get milk. Cows will defend themselves when hit and can be right-clicked with 8x wheat to tame and breed. ---
### Penguin
These little guys can be found in glacier biomes on top of snow and have the ability to swim if they fall into water.
Kitten ---
### Panda
These monochrome cuties spawn in Ethereal's bamboo biome and can be tamed with bamboo stalks :) Remember they have claws though.
- Found on green grass these cute cats walk around and can be picked up and placed in inventory as pets or right-clicked with 4x raw fish (found in ethereal) and tamed. ---
*Note: After breeding, animals need to rest for 4 minutes and baby animals take 4 minutes to grow up, also feeding them helps them grow quicker...*
Rat #### Lucky Blocks: 20
- Typically found around stone they can be picked up and cooked for eating.
Sheep
- Green grass and wheat munchers that can be clipped using shears to give 1-3 wool. Feed sheep 8x wheat to regrow wool, tame and breed. Right-click a tamed sheep with dye to change it's colour. Will drop 1-3 meat when killed.
Warthog
- Warthogs unlike pigs defend themselves when hit and give 1-3 raw pork when killed, they can also be right-clicked with 8x apples to tame or breed.
Note: After breeding animals need to rest for 4 minutes, baby animals take 4 minutes to grow up and feeding them helps them grow quicker...

View File

@ -1,6 +1,7 @@
local S = mobs.intllib local S = mobs.intllib
local all_colours = { local all_colours = {
{"black", S("Black"), "#000000b0"}, {"black", S("Black"), "#000000b0"},
{"blue", S("Blue"), "#015dbb70"}, {"blue", S("Blue"), "#015dbb70"},
@ -19,13 +20,14 @@ local all_colours = {
{"yellow", S("Yellow"), "#e3ff0070"}, {"yellow", S("Yellow"), "#e3ff0070"},
} }
-- Sheep by PilzAdam, texture converted to minetest by AMMOnym from Summerfield pack -- Sheep by PilzAdam, texture converted to minetest by AMMOnym from Summerfield pack
for _, col in pairs(all_colours) do for _, col in ipairs(all_colours) do
mobs:register_mob("mobs_animal:sheep_"..col[1], { mobs:register_mob("mobs_animal:sheep_"..col[1], {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6,
passive = true, passive = true,
hp_min = 25, hp_min = 25,
hp_max = 35, hp_max = 35,
@ -46,10 +48,11 @@ for _, col in pairs(all_colours) do
run_velocity = 2, run_velocity = 2,
runaway = true, runaway = true,
jump = true, jump = true,
jump_height = 6,
pushable = true,
drops = { drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2}, {name = "mobs:mutton_raw", chance = 1, min = 1, max = 2},
{name = "mobs_animal:sheep_white", chance = 15, min = 1, max = 1}, {name = "wool:"..col[1], chance = 1, min = 1, max = 1},
--{name = "wool:"..col[1], chance = 1, min = 1, max = 1},
}, },
water_damage = 2, water_damage = 2,
lava_damage = 5, lava_damage = 5,
@ -62,21 +65,40 @@ for _, col in pairs(all_colours) do
walk_start = 81, walk_start = 81,
walk_end = 100, walk_end = 100,
}, },
follow = {"farming:wheat", "default:grass_5"}, follow = {"farming:wheat", "default:grass_1"},
view_range = 8, view_range = 8,
replace_rate = 10, replace_rate = 10,
replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"}, replace_what = {
replace_with = "air", {"group:grass", "air", -1},
replace_offset = -1, {"default:dirt_with_grass", "default:dirt", -2}
},
fear_height = 3, fear_height = 3,
on_replace = function(self, pos, oldnode, newnode)
self.food = (self.food or 0) + 1
-- if sheep replaces 8x grass then it regrows wool
if self.food >= 8 then
self.food = 0
self.gotten = false
self.object:set_properties({
textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
mesh = "mobs_sheep.b3d",
})
end
end,
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
--are we feeding? --are we feeding?
if mobs:feed_tame(self, clicker, 8, true, true) then if mobs:feed_tame(self, clicker, 8, true, true) then
--if full grow fuzz --if fed 7x grass or wheat then sheep regrows wool
if self.gotten == false then if self.food > 6 then
self.food = 0
self.gotten = false
self.object:set_properties({ self.object:set_properties({
textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"}, textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
@ -89,12 +111,14 @@ for _, col in pairs(all_colours) do
local item = clicker:get_wielded_item() local item = clicker:get_wielded_item()
local itemname = item:get_name() local itemname = item:get_name()
local name = clicker:get_player_name()
--are we giving a haircut> --are we giving a haircut>
if itemname == "mobs:shears" then if itemname == "mobs:shears" then
if self.gotten ~= false if self.gotten ~= false
or self.child ~= false or self.child ~= false
or name ~= self.owner
or not minetest.get_modpath("wool") then or not minetest.get_modpath("wool") then
return return
end end
@ -127,8 +151,6 @@ for _, col in pairs(all_colours) do
return return
end end
local name = clicker:get_player_name()
--are we coloring? --are we coloring?
if itemname:find("dye:") then if itemname:find("dye:") then
@ -166,6 +188,7 @@ for _, col in pairs(all_colours) do
return return
end end
-- protect mod with mobs:protector item -- protect mod with mobs:protector item
if mobs:protect(self, clicker) then return end if mobs:protect(self, clicker) then return end
@ -174,16 +197,48 @@ for _, col in pairs(all_colours) do
end end
}) })
mobs:register_egg("mobs_animal:sheep_"..col[1], col[2] .. " " .. S("Sheep"), "wool_"..col[1]..".png", 1) mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]), "wool_"..col[1]..".png", 1)
-- compatibility -- compatibility
mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1]) mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1])
end end
mobs:register_spawn("mobs_animal:sheep_white",
{"default:dirt_with_grass", "ethereal:green_dirt"}, 20, 10, 60000, 1, 31000, true) mobs:spawn({
name = "mobs_animal:sheep_white",
nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 60000,
min_height = 0,
max_height = 200,
day_toggle = true,
})
-- compatibility mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white")
-- raw mutton
minetest.register_craftitem(":mobs:mutton_raw", {
description = S("Raw Mutton"),
inventory_image = "mobs_mutton_raw.png",
on_use = minetest.item_eat(2),
groups = {food_meat_raw = 1, food_mutton_raw = 1, flammable = 2},
})
-- cooked mutton
minetest.register_craftitem(":mobs:mutton_cooked", {
description = S("Cooked Mutton"),
inventory_image = "mobs_mutton_cooked.png",
on_use = minetest.item_eat(6),
groups = {food_meat = 1, food_mutton = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:mutton_cooked",
recipe = "mobs:mutton_raw",
cooktime = 5,
})

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
sounds/mobs_panda.ogg Normal file

Binary file not shown.

BIN
textures/mobs_butter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 B

After

Width:  |  Height:  |  Size: 180 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

BIN
textures/mobs_hairball.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

BIN
textures/mobs_panda.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 B

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

View File

@ -1,16 +1,17 @@
local S = mobs.intllib local S = mobs.intllib
-- Warthog by KrupnoPavel -- Warthog by KrupnoPavel
mobs:register_mob("mobs_animal:pumba", { mobs:register_mob("mobs_animal:pumba", {
stepheight = 0.6,
type = "animal", type = "animal",
stepheight = 0.6,
passive = false, passive = false,
attack_type = "dogfight", attack_type = "dogfight",
group_attack = true, group_attack = true,
owner_loyal = true, owner_loyal = true,
pathfinding = true, attack_npcs = false,
reach = 2, reach = 2,
damage = 2, damage = 2,
hp_min = 25, hp_min = 25,
@ -30,11 +31,12 @@ mobs:register_mob("mobs_animal:pumba", {
walk_velocity = 2, walk_velocity = 2,
run_velocity = 3, run_velocity = 3,
jump = true, jump = true,
follow = {"default:apple", "farming_addons:potato"}, jump_height = 6,
pushable = true,
follow = {"default:apple", "farming:potato"},
view_range = 10, view_range = 10,
drops = { drops = {
{name = "mobs:pork_raw", chance = 1, min = 1, max = 3}, {name = "mobs:pork_raw", chance = 1, min = 1, max = 3},
{name = "mobs_animal:pumba", chance = 15, min = 1, max = 1}
}, },
water_damage = 2, water_damage = 2,
lava_damage = 5, lava_damage = 5,
@ -57,19 +59,44 @@ mobs:register_mob("mobs_animal:pumba", {
end, end,
}) })
mobs:register_spawn("mobs_animal:pumba", local spawn_on = {"default:dirt_with_grass"}
{"ethereal:mushroom_dirt", "default:dirt_with_dry_grass"}, 20, 10, 60000, 1, 31000, true) local spawn_by = {"group:grass"}
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
spawn_on = {"default:dirt_with_dry_grass"}
spawn_by = {"group:dry_grass"}
end
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:mushroom_dirt"}
spawn_by = {"flowers:mushroom_brown", "flowers:mushroom_brown"}
end
mobs:spawn({
name = "mobs_animal:pumba",
nodes = spawn_on,
neighbors = spawn_by,
min_light = 14,
interval = 60,
chance = 60000,
min_height = 0,
max_height = 200,
day_toggle = true,
})
mobs:register_egg("mobs_animal:pumba", S("Warthog"), "wool_pink.png", 1) mobs:register_egg("mobs_animal:pumba", S("Warthog"), "wool_pink.png", 1)
-- compatibility
mobs:alias_mob("mobs:pumba", "mobs_animal:pumba") mobs:alias_mob("mobs:pumba", "mobs_animal:pumba") -- compatibility
-- raw porkchop -- raw porkchop
minetest.register_craftitem(":mobs:pork_raw", { minetest.register_craftitem(":mobs:pork_raw", {
description = S("Raw Porkchop"), description = S("Raw Porkchop"),
inventory_image = "mobs_pork_raw.png", inventory_image = "mobs_pork_raw.png",
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
groups = {food_meat_raw = 1, food_pork_raw = 1, flammable = 2},
}) })
-- cooked porkchop -- cooked porkchop
@ -77,6 +104,7 @@ minetest.register_craftitem(":mobs:pork_cooked", {
description = S("Cooked Porkchop"), description = S("Cooked Porkchop"),
inventory_image = "mobs_pork_cooked.png", inventory_image = "mobs_pork_cooked.png",
on_use = minetest.item_eat(8), on_use = minetest.item_eat(8),
groups = {food_meat = 1, food_pork = 1, flammable = 2},
}) })
minetest.register_craft({ minetest.register_craft({