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,
sounds = {
random = "mobs_bee",
},
},
walk_velocity = 1,
jump = true,
drops = {
@ -37,11 +37,23 @@ mobs:register_mob("mobs_animal:bee", {
walk_end = 65,
},
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,
-- 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)
@ -52,14 +64,14 @@ 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},
})
-- beehive (when placed spawns bee)
minetest.register_node(":mobs:beehive", {
description = S("Beehive"),
drawtype = "plantlike",
visual_scale = 1.0,
tiles = {"mobs_beehive.png"},
inventory_image = "mobs_beehive.png",
paramtype = "light",
@ -81,19 +93,19 @@ minetest.register_node(":mobs:beehive", {
meta:get_inventory():set_size("beehive", 1)
end,
--[[
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})
if math.random(1, 4) == 1 then
minetest.add_entity(pos, "mobs:bee")
minetest.add_entity(pos, "mobs_animal:bee")
end
end
end,
]]
on_punch = function(pos, node, puncher)
-- yep, bee's don't like having their home punched by players
@ -122,7 +134,7 @@ minetest.register_node(":mobs:beehive", {
minetest.register_craft({
output = "mobs:beehive",
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
minetest.register_abm({
nodenames = {"mobs:beehive"},
interval = 6,
interval = 12,
chance = 6,
catch_up = false,
action = function(pos, node)
@ -168,11 +180,11 @@ minetest.register_abm({
-- is hive full?
local meta = minetest.get_meta(pos)
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()
-- is hive full?
if honey > 19 then
if honey > 11 then
return
end

143
bunny.lua
View File

@ -1,11 +1,12 @@
local S = mobs.intllib
-- Bunny by ExeterDad
mobs:register_mob("mobs_animal:bunny", {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = true,
reach = 1,
hp_min = 1,
@ -25,9 +26,12 @@ 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 = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1},
},
water_damage = 2,
lava_damage = 4,
@ -42,48 +46,133 @@ mobs:register_mob("mobs_animal:bunny", {
punch_start = 16,
punch_end = 24,
},
follow = {"farming:carrot", "farming_plus:carrot_item"},
follow = {"farming_addons:carrot", "farming_plus:carrot_item", "default:grass_1"},
view_range = 8,
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",
on_rightclick = function(self, clicker)
-- on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 4, true, true) 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
-- -- feed or tame
-- if mobs:feed_tame(self, clicker, 4, true, true) 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
-- Monty Python tribute
local item = clicker:get_wielded_item()
-- -- Monty Python tribute
-- 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
item:take_item()
clicker:set_wielded_item(item)
end
-- if not mobs.is_creative(clicker:get_player_name()) then
-- item:take_item()
-- clicker:set_wielded_item(item)
-- end
self.object:set_properties({
textures = {"mobs_bunny_evil.png"},
})
-- self.object:set_properties({
-- textures = {"mobs_bunny_evil.png"},
-- })
self.type = "monster"
self.object:set_hp(20)
-- self.type = "monster"
-- 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
return true -- run only once, false/nil runs every activation
end,
attack_type = "dogfight",
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)
-- 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
-- Chicken by JK Murray
mobs:register_mob("mobs_animal:chicken", {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = true,
hp_min = 15,
hp_max = 25,
@ -31,10 +32,10 @@ mobs:register_mob("mobs_animal:chicken", {
walk_velocity = 1,
run_velocity = 3,
runaway = true,
jump = true,
runaway_from = {"player", "mobs_animal:pumba"},
drops = {
{name = "mobs:chicken_raw", chance = 1, min = 2, max = 2},
{name = "mobs_animal:chicken", chance = 15, min = 1, max = 1},
{name = "mobs:chicken_raw", chance = 1, min = 1, max = 1},
-- {name = "mobs:chicken_feather", chance = 1, min = 0, max = 2},
},
water_damage = 2,
lava_damage = 5,
@ -84,22 +85,31 @@ mobs:register_mob("mobs_animal:chicken", {
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({
name = "mobs_animal:chicken",
nodes = {"default:dirt_with_grass", "default:dirt_with_dry_grass"},
interval = 30,
nodes = {spawn_on},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 60000,
active_object_count = 1,
min_height = 5,
max_height = 200,
day_toggle = true,
})
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
@ -128,7 +138,7 @@ mobs:register_arrow("mobs_animal:egg_entity", {
if math.random(1, 10) > 1 then
return
end
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
@ -140,30 +150,31 @@ mobs:register_arrow("mobs_animal:egg_entity", {
end
local mob = minetest.add_entity(pos, "mobs_animal:chicken")
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
local ent2 = mob:get_luaentity()
mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})
ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
})
-- egg throwing item
local egg_GRAVITY = 9
@ -213,6 +224,7 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
return item
end
-- egg
minetest.register_node(":mobs:egg", {
description = S("Chicken Egg"),
@ -229,7 +241,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})
@ -238,11 +250,13 @@ minetest.register_node(":mobs:egg", {
on_use = mobs_shoot_egg
})
-- fried egg
minetest.register_craftitem(":mobs:chicken_egg_fried", {
description = S("Fried Egg"),
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({
@ -256,6 +270,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
@ -263,6 +278,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({
@ -270,3 +286,16 @@ minetest.register_craft({
recipe = "mobs:chicken_raw",
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
-- Cow by Krupnovpavel (additional texture by JurajVajda)
mobs:register_mob("mobs_animal:cow", {
type = "animal",
passive = false,
attack_type = "dogfight",
attack_npcs = false,
reach = 2,
damage = 4,
hp_min = 25,
@ -26,13 +28,13 @@ 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_animal:cow", chance = 15, min = 1, max = 1},
{name = "mobs:leather", chance = 1, min = 1, max = 2},
{name = "mobs:leather", chance = 1, min = 0, max = 2},
},
water_damage = 2,
floats = 0,
lava_damage = 5,
light_damage = 0,
animation = {
@ -47,19 +49,29 @@ mobs:register_mob("mobs_animal:cow", {
punch_start = 70,
punch_end = 100,
},
follow = "farming:wheat",
follow = {"farming:wheat", "default:grass_1"},
view_range = 8,
replace_rate = 10,
replace_what = {
{"group:grass", "air", 0},
{"default:dirt_with_grass", "default:dirt", -1}
},
replace_with = "air",
{"group:grass", "air", 0},
{"default:dirt_with_grass", "default:dirt", -1}
},
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 > 6 then
self.food = 0
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
@ -82,7 +94,8 @@ 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")
@ -96,17 +109,38 @@ mobs:register_mob("mobs_animal:cow", {
return
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,
})
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)
-- compatibility
mobs:alias_mob("mobs:cow", "mobs_animal:cow")
mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility
-- bucket of milk
minetest.register_craftitem(":mobs:bucket_milk", {
@ -114,13 +148,70 @@ minetest.register_craftitem(":mobs:bucket_milk", {
inventory_image = "mobs_bucket_milk.png",
stack_max = 1,
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
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({

View File

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

View File

@ -14,11 +14,11 @@ dofile(path .. "/cow.lua") -- KrupnoPavel
dofile(path .. "/sheep.lua") -- PilzAdam
dofile(path .. "/warthog.lua") -- KrupnoPavel
dofile(path .. "/bee.lua") -- KrupnoPavel
dofile(path .. "/squid.lua")
-- 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")
-- dofile(path .. "/lucky_block.lua")
print (S("[MOD] Mobs Redo 'Animals' loaded"))

View File

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

View File

@ -1,12 +1,19 @@
local S = mobs.intllib
local hairball = minetest.settings:get("mobs_hairball")
-- Kitten by Jordach / BFD
mobs:register_mob("mobs_animal:kitten", {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = true,
specific_attack = {"mobs_animal:rat"},
damage = 1,
attack_type = "dogfight",
attack_animals = true, -- so it can attack rat
attack_players = false,
reach = 1,
passive = false,
hp_min = 5,
hp_max = 10,
armor = 200,
@ -25,13 +32,14 @@ mobs:register_mob("mobs_animal:kitten", {
random = "mobs_kitten",
},
walk_velocity = 0.6,
walk_chance = 15,
run_velocity = 2,
runaway = true,
jump = false,
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,
fear_height = 3,
animation = {
@ -40,21 +48,120 @@ mobs:register_mob("mobs_animal:kitten", {
stand_end = 192,
walk_start = 0,
walk_end = 96,
stoodup_start = 0,
stoodup_end = 0,
},
follow = {"mobs_animal:rat", "ethereal:fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical"},
view_range = 8,
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 4, true, true) 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
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)
-- 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,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
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"
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
msgid "Chicken"
msgstr "Huhn"
@ -169,6 +181,15 @@ msgstr "Gelbes"
msgid "@1 Sheep"
msgstr "@1 Schaf"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Rohes Hammelfleisch"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Gekochtes Hammelfleisch"
#: warthog.lua
msgid "Warthog"
msgstr "Warzenschwein"
@ -179,4 +200,4 @@ msgstr "Rohes Schweinekotelett"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Gekochtes Schweinekotelett"
msgstr "Gekochtes Schweinekotelett"

View File

@ -38,6 +38,19 @@ msgstr "Bloc de miel"
msgid "Bunny"
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
msgid "Chicken"
msgstr "Poule"
@ -167,6 +180,15 @@ msgstr "jaune"
msgid "@1 Sheep"
msgstr "Mouton @1"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Mouton Cru"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Mouton Cuit"
#: warthog.lua
msgid "Warthog"
msgstr "Sanglier"

View File

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

View File

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

View File

@ -38,6 +38,19 @@ msgstr "Bal bloğu"
msgid "Bunny"
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
msgid "Chicken"
msgstr "Tavuk"
@ -167,6 +180,15 @@ msgstr "Sarı"
msgid "@1 Sheep"
msgstr "@1 Koyun"
#: sheep.lua
msgid "Raw Mutton"
msgstr "çiğ kuzu"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "pişmiş kuzu"
#: warthog.lua
msgid "Warthog"
msgstr "Domuz"

View File

@ -1,7 +1,11 @@
if minetest.get_modpath("lucky_block") then
lucky_block:add_blocks({
{"spw", "mobs:sheep", 5},
{"spw", "mobs:rat", 5},
{"dro", {"mobs:rat_cooked"}, 5},
{"spw", "mobs:bunny", 3},
{"nod", "mobs:honey_block", 0},
{"spw", "mobs:pumba", 5},
{"nod", "mobs:cheeseblock", 0},
@ -9,7 +13,19 @@ if minetest.get_modpath("lucky_block") then
{"dro", {"mobs:egg"}, 5},
{"spw", "mobs:cow", 5},
{"dro", {"mobs:bucket_milk"}, 8},
{"spw", "mobs:kitten", 2},
{"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
mobs:register_mob("mobs_animal:penguin", {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = true,
reach = 1,
hp_min = 5,
@ -43,9 +43,9 @@ mobs:register_mob("mobs_animal:penguin", {
fly_end = 95,
-- 50-70 is slide/water idle
},
fly_in = "default:water_source",
fly_in = {"default:water_source", "default:water_flowing"},
floats = 0,
follow = {"ethereal:fish_raw"},
follow = {"ethereal:fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical"},
view_range = 5,
on_rightclick = function(self, clicker)
@ -61,11 +61,13 @@ mobs:register_mob("mobs_animal:penguin", {
mobs:spawn({
name = "mobs_animal:penguin",
nodes = {"default:snowblock"},
min_light = 10,
min_light = 14,
interval = 60,
chance = 20000,
min_height = 0,
max_height = 200,
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
-- Rat by PilzAdam
mobs:register_mob("mobs_animal:rat", {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = true,
hp_min = 1,
hp_max = 4,
@ -30,7 +31,7 @@ mobs:register_mob("mobs_animal:rat", {
light_damage = 0,
fear_height = 2,
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,
--[[
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)
-- compatibility
mobs:alias_mob("mobs:rat", "mobs_animal:rat")
mobs:alias_mob("mobs:rat", "mobs_animal:rat") -- compatibility
-- cooked rat, yummy!
minetest.register_craftitem(":mobs:rat_cooked", {
description = S("Cooked Rat"),
inventory_image = "mobs_cooked_rat.png",
on_use = minetest.item_eat(3),
groups = {food_rat = 1, flammable = 2},
})
minetest.register_craft({
type = "cooking",
output = "mobs:rat_cooked",
recipe = "mobs:rat",
recipe = "mobs_animal:rat",
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
- 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...
#### Lucky Blocks: 20

View File

@ -1,6 +1,7 @@
local S = mobs.intllib
local all_colours = {
{"black", S("Black"), "#000000b0"},
{"blue", S("Blue"), "#015dbb70"},
@ -19,13 +20,14 @@ local all_colours = {
{"yellow", S("Yellow"), "#e3ff0070"},
}
-- 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], {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = true,
hp_min = 25,
hp_max = 35,
@ -46,10 +48,11 @@ for _, col in pairs(all_colours) do
run_velocity = 2,
runaway = true,
jump = true,
jump_height = 6,
pushable = true,
drops = {
{name = "mobs:meat_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 = "mobs:mutton_raw", chance = 1, min = 1, max = 2},
{name = "wool:"..col[1], chance = 1, min = 1, max = 1},
},
water_damage = 2,
lava_damage = 5,
@ -62,21 +65,40 @@ for _, col in pairs(all_colours) do
walk_start = 81,
walk_end = 100,
},
follow = {"farming:wheat", "default:grass_5"},
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_with = "air",
replace_offset = -1,
replace_what = {
{"group:grass", "air", -1},
{"default:dirt_with_grass", "default:dirt", -2}
},
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)
--are we feeding?
if mobs:feed_tame(self, clicker, 8, true, true) then
--if full grow fuzz
if self.gotten == false then
--if fed 7x grass or wheat then sheep regrows wool
if self.food > 6 then
self.food = 0
self.gotten = false
self.object:set_properties({
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 itemname = item:get_name()
local name = clicker:get_player_name()
--are we giving a haircut>
if itemname == "mobs:shears" then
if self.gotten ~= false
or self.child ~= false
or name ~= self.owner
or not minetest.get_modpath("wool") then
return
end
@ -127,8 +151,6 @@ for _, col in pairs(all_colours) do
return
end
local name = clicker:get_player_name()
--are we coloring?
if itemname:find("dye:") then
@ -166,6 +188,7 @@ for _, col in pairs(all_colours) do
return
end
-- protect mod with mobs:protector item
if mobs:protect(self, clicker) then return end
@ -174,16 +197,48 @@ for _, col in pairs(all_colours) do
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
mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1])
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")
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility
-- 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
-- Warthog by KrupnoPavel
mobs:register_mob("mobs_animal:pumba", {
stepheight = 0.6,
type = "animal",
stepheight = 0.6,
passive = false,
attack_type = "dogfight",
group_attack = true,
owner_loyal = true,
pathfinding = true,
attack_npcs = false,
reach = 2,
damage = 2,
hp_min = 25,
@ -30,11 +31,12 @@ mobs:register_mob("mobs_animal:pumba", {
walk_velocity = 2,
run_velocity = 3,
jump = true,
follow = {"default:apple", "farming_addons:potato"},
jump_height = 6,
pushable = true,
follow = {"default:apple", "farming:potato"},
view_range = 10,
drops = {
{name = "mobs:pork_raw", chance = 1, min = 1, max = 3},
{name = "mobs_animal:pumba", chance = 15, min = 1, max = 1}
},
water_damage = 2,
lava_damage = 5,
@ -57,19 +59,44 @@ mobs:register_mob("mobs_animal:pumba", {
end,
})
mobs:register_spawn("mobs_animal:pumba",
{"ethereal:mushroom_dirt", "default:dirt_with_dry_grass"}, 20, 10, 60000, 1, 31000, true)
local spawn_on = {"default:dirt_with_grass"}
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)
-- compatibility
mobs:alias_mob("mobs:pumba", "mobs_animal:pumba")
mobs:alias_mob("mobs:pumba", "mobs_animal:pumba") -- compatibility
-- raw porkchop
minetest.register_craftitem(":mobs:pork_raw", {
description = S("Raw Porkchop"),
inventory_image = "mobs_pork_raw.png",
on_use = minetest.item_eat(4),
groups = {food_meat_raw = 1, food_pork_raw = 1, flammable = 2},
})
-- cooked porkchop
@ -77,6 +104,7 @@ minetest.register_craftitem(":mobs:pork_cooked", {
description = S("Cooked Porkchop"),
inventory_image = "mobs_pork_cooked.png",
on_use = minetest.item_eat(8),
groups = {food_meat = 1, food_pork = 1, flammable = 2},
})
minetest.register_craft({