Initial commit
|
@ -0,0 +1,188 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Bee by KrupnoPavel
|
||||
|
||||
mobs:register_mob("mobs_animal:bee", {
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 1,
|
||||
hp_max = 2,
|
||||
armor = 200,
|
||||
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_bee.x",
|
||||
textures = {
|
||||
{"mobs_bee.png"},
|
||||
},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_bee",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "mobs:honey", chance = 2, min = 1, max = 2},
|
||||
},
|
||||
water_damage = 2,
|
||||
lava_damage = 2,
|
||||
light_damage = 0,
|
||||
fall_damage = 0,
|
||||
fall_speed = -3,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 0,
|
||||
stand_end = 30,
|
||||
walk_start = 35,
|
||||
walk_end = 65,
|
||||
},
|
||||
on_rightclick = function(self, clicker)
|
||||
mobs:capture_mob(self, clicker, 25, 80, 0, true, nil)
|
||||
end,
|
||||
})
|
||||
|
||||
mobs:register_spawn("mobs_animal:bee", {"group:flower"}, 20, 10, 9000, 2, 31000, true)
|
||||
|
||||
mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png", 0)
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:bee", "mobs_animal:bee")
|
||||
|
||||
-- honey
|
||||
minetest.register_craftitem(":mobs:honey", {
|
||||
description = S("Honey"),
|
||||
inventory_image = "mobs_honey_inv.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
-- 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",
|
||||
sunlight_propagates = true,
|
||||
walkable = true,
|
||||
groups = {oddly_breakable_by_hand = 3, flammable = 1},
|
||||
sounds = default.node_sound_defaults(),
|
||||
|
||||
on_construct = function(pos)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
meta:set_string("formspec", "size[8,6]"
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots
|
||||
.. "image[3,0.8;0.8,0.8;mobs_bee_inv.png]"
|
||||
.. "list[current_name;beehive;4,0.5;1,1;]"
|
||||
.. "list[current_player;main;0,2.35;8,4;]"
|
||||
.. "listring[]")
|
||||
|
||||
meta:get_inventory():set_size("beehive", 1)
|
||||
end,
|
||||
--[[
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
|
||||
if 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")
|
||||
end
|
||||
end
|
||||
end,
|
||||
]]
|
||||
on_punch = function(pos, node, puncher)
|
||||
|
||||
-- yep, bee's don't like having their home punched by players
|
||||
puncher:set_hp(puncher:get_hp() - 4)
|
||||
end,
|
||||
|
||||
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
|
||||
if listname == "beehive" then
|
||||
return 0
|
||||
end
|
||||
|
||||
return stack:get_count()
|
||||
end,
|
||||
|
||||
can_dig = function(pos,player)
|
||||
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
-- only dig beehive if no honey inside
|
||||
return meta:get_inventory():is_empty("beehive")
|
||||
end,
|
||||
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:beehive",
|
||||
recipe = {
|
||||
{"mobs:bee","mobs:bee","mobs:bee"},
|
||||
}
|
||||
})
|
||||
|
||||
-- honey block
|
||||
minetest.register_node(":mobs:honey_block", {
|
||||
description = S("Honey Block"),
|
||||
tiles = {"mobs_honey_block.png"},
|
||||
groups = {snappy = 3, flammable = 2},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:honey_block",
|
||||
recipe = {
|
||||
{"mobs:honey", "mobs:honey", "mobs:honey"},
|
||||
{"mobs:honey", "mobs:honey", "mobs:honey"},
|
||||
{"mobs:honey", "mobs:honey", "mobs:honey"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:honey 9",
|
||||
recipe = {
|
||||
{"mobs:honey_block"},
|
||||
}
|
||||
})
|
||||
|
||||
-- beehive workings
|
||||
minetest.register_abm({
|
||||
nodenames = {"mobs:beehive"},
|
||||
interval = 6,
|
||||
chance = 6,
|
||||
catch_up = false,
|
||||
action = function(pos, node)
|
||||
|
||||
-- bee's only make honey during the day
|
||||
local tod = (minetest.get_timeofday() or 0) * 24000
|
||||
|
||||
if tod < 5500 or tod > 18500 then
|
||||
return
|
||||
end
|
||||
|
||||
-- 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 honey = inv:get_stack("beehive", 1):get_count()
|
||||
|
||||
-- is hive full?
|
||||
if honey > 19 then
|
||||
return
|
||||
end
|
||||
|
||||
-- no flowers no honey, nuff said!
|
||||
if #minetest.find_nodes_in_area_under_air(
|
||||
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
|
||||
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
|
||||
"group:flower") > 3 then
|
||||
|
||||
inv:add_item("beehive", "mobs:honey")
|
||||
end
|
||||
end
|
||||
})
|
|
@ -0,0 +1,89 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Bunny by ExeterDad
|
||||
|
||||
mobs:register_mob("mobs_animal:bunny", {
|
||||
type = "animal",
|
||||
passive = true,
|
||||
reach = 1,
|
||||
hp_min = 1,
|
||||
hp_max = 4,
|
||||
armor = 200,
|
||||
collisionbox = {-0.268, -0.5, -0.268, 0.268, 0.167, 0.268},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_bunny.b3d",
|
||||
drawtype = "front",
|
||||
textures = {
|
||||
{"mobs_bunny_grey.png"},
|
||||
{"mobs_bunny_brown.png"},
|
||||
{"mobs_bunny_white.png"},
|
||||
},
|
||||
sounds = {},
|
||||
makes_footstep_sound = false,
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 4,
|
||||
light_damage = 0,
|
||||
fear_height = 2,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 1,
|
||||
stand_end = 15,
|
||||
walk_start = 16,
|
||||
walk_end = 24,
|
||||
punch_start = 16,
|
||||
punch_end = 24,
|
||||
},
|
||||
follow = {"farming:carrot", "farming_plus:carrot_item"},
|
||||
view_range = 8,
|
||||
replace_rate = 10,
|
||||
replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"},
|
||||
replace_with = "air",
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
-- feed or tame
|
||||
if mobs:feed_tame(self, clicker, 4, true, true) then
|
||||
return
|
||||
end
|
||||
|
||||
-- Monty Python tribute
|
||||
local item = clicker:get_wielded_item()
|
||||
|
||||
if item:get_name() == "mobs:lava_orb" then
|
||||
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
item:take_item()
|
||||
clicker:set_wielded_item(item)
|
||||
end
|
||||
|
||||
self.object:set_properties({
|
||||
textures = {"mobs_bunny_evil.png"},
|
||||
})
|
||||
|
||||
self.type = "monster"
|
||||
self.object:set_hp(20)
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
mobs:capture_mob(self, clicker, 30, 50, 80, false, nil)
|
||||
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)
|
||||
|
||||
mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0)
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:bunny", "mobs_animal:bunny")
|
|
@ -0,0 +1,258 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Chicken by JK Murray
|
||||
|
||||
mobs:register_mob("mobs_animal:chicken", {
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 5,
|
||||
hp_max = 10,
|
||||
armor = 200,
|
||||
collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_chicken.x",
|
||||
-- seems a lot of textures but this fixes the problem with the model
|
||||
textures = {
|
||||
{"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png",
|
||||
"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"},
|
||||
{"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png",
|
||||
"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"},
|
||||
},
|
||||
child_texture = {
|
||||
{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
|
||||
"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"},
|
||||
},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_chicken",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
runaway = true,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "mobs:chicken_raw", chance = 1, min = 2, max = 2},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
fall_damage = 0,
|
||||
fall_speed = -8,
|
||||
fear_height = 5,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 0,
|
||||
stand_end = 1, -- 20
|
||||
walk_start = 20,
|
||||
walk_end = 40,
|
||||
},
|
||||
follow = {"farming:seed_wheat", "farming:seed_cotton"},
|
||||
view_range = 5,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
if mobs:feed_tame(self, clicker, 8, true, true) then
|
||||
return
|
||||
end
|
||||
|
||||
mobs:capture_mob(self, clicker, 30, 50, 80, false, nil)
|
||||
end,
|
||||
|
||||
do_custom = function(self)
|
||||
|
||||
if self.child
|
||||
or math.random(1, 5000) > 1 then
|
||||
return
|
||||
end
|
||||
|
||||
local pos = self.object:getpos()
|
||||
|
||||
minetest.add_item(pos, "mobs:egg")
|
||||
|
||||
minetest.sound_play("default_place_node_hard", {
|
||||
pos = pos,
|
||||
gain = 1.0,
|
||||
max_hear_distance = 5,
|
||||
})
|
||||
end,
|
||||
})
|
||||
|
||||
mobs:register_spawn("mobs_animal:chicken",
|
||||
{"default:dirt_with_grass", "ethereal:bamboo_dirt"}, 20, 10, 15000, 2, 31000, true)
|
||||
|
||||
mobs:register_egg("mobs_animal:chicken", S("Chicken"), "mobs_chicken_inv.png", 0)
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:chicken", "mobs_animal:chicken")
|
||||
|
||||
-- egg entity
|
||||
|
||||
mobs:register_arrow("mobs_animal:egg_entity", {
|
||||
visual = "sprite",
|
||||
visual_size = {x=.5, y=.5},
|
||||
textures = {"mobs_chicken_egg.png"},
|
||||
velocity = 6,
|
||||
|
||||
hit_player = function(self, player)
|
||||
player:punch(self.object, 1.0, {
|
||||
full_punch_interval = 1.0,
|
||||
damage_groups = {fleshy = 1},
|
||||
}, nil)
|
||||
end,
|
||||
|
||||
hit_mob = function(self, player)
|
||||
player:punch(self.object, 1.0, {
|
||||
full_punch_interval = 1.0,
|
||||
damage_groups = {fleshy = 1},
|
||||
}, nil)
|
||||
end,
|
||||
|
||||
hit_node = function(self, pos, node)
|
||||
|
||||
local num = math.random(1, 10)
|
||||
|
||||
if num == 1 then
|
||||
|
||||
pos.y = pos.y + 1
|
||||
|
||||
local nod = minetest.get_node_or_nil(pos)
|
||||
|
||||
if not nod
|
||||
or not minetest.registered_nodes[nod.name]
|
||||
or minetest.registered_nodes[nod.name].walkable == true then
|
||||
return
|
||||
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
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- egg throwing item
|
||||
|
||||
local egg_GRAVITY = 9
|
||||
local egg_VELOCITY = 19
|
||||
|
||||
-- shoot egg
|
||||
local mobs_shoot_egg = function (item, player, pointed_thing)
|
||||
|
||||
local playerpos = player:getpos()
|
||||
|
||||
minetest.sound_play("default_place_node_hard", {
|
||||
pos = playerpos,
|
||||
gain = 1.0,
|
||||
max_hear_distance = 5,
|
||||
})
|
||||
|
||||
local obj = minetest.add_entity({
|
||||
x = playerpos.x,
|
||||
y = playerpos.y +1.5,
|
||||
z = playerpos.z
|
||||
}, "mobs_animal:egg_entity")
|
||||
|
||||
local ent = obj:get_luaentity()
|
||||
local dir = player:get_look_dir()
|
||||
|
||||
ent.velocity = egg_VELOCITY -- needed for api internal timing
|
||||
ent.switch = 1 -- needed so that egg doesn't despawn straight away
|
||||
|
||||
obj:setvelocity({
|
||||
x = dir.x * egg_VELOCITY,
|
||||
y = dir.y * egg_VELOCITY,
|
||||
z = dir.z * egg_VELOCITY
|
||||
})
|
||||
|
||||
obj:setacceleration({
|
||||
x = dir.x * -3,
|
||||
y = -egg_GRAVITY,
|
||||
z = dir.z * -3
|
||||
})
|
||||
|
||||
-- pass player name to egg for chick ownership
|
||||
local ent2 = obj:get_luaentity()
|
||||
ent2.playername = player:get_player_name()
|
||||
|
||||
item:take_item()
|
||||
|
||||
return item
|
||||
end
|
||||
|
||||
-- egg
|
||||
minetest.register_node(":mobs:egg", {
|
||||
description = S("Chicken Egg"),
|
||||
tiles = {"mobs_chicken_egg.png"},
|
||||
inventory_image = "mobs_chicken_egg.png",
|
||||
visual_scale = 0.7,
|
||||
drawtype = "plantlike",
|
||||
wield_image = "mobs_chicken_egg.png",
|
||||
paramtype = "light",
|
||||
walkable = false,
|
||||
is_ground_content = true,
|
||||
sunlight_propagates = true,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
|
||||
},
|
||||
groups = {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})
|
||||
end
|
||||
end,
|
||||
on_use = mobs_shoot_egg
|
||||
})
|
||||
|
||||
-- fried egg
|
||||
minetest.register_craftitem(":mobs:chicken_egg_fried", {
|
||||
description = S("Fried Egg"),
|
||||
inventory_image = "mobs_chicken_egg_fried.png",
|
||||
on_use = minetest.item_eat(2),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
recipe = "mobs:egg",
|
||||
output = "mobs:chicken_egg_fried",
|
||||
})
|
||||
|
||||
-- raw chicken
|
||||
minetest.register_craftitem(":mobs:chicken_raw", {
|
||||
description = S("Raw Chicken"),
|
||||
inventory_image = "mobs_chicken_raw.png",
|
||||
on_use = minetest.item_eat(2),
|
||||
})
|
||||
|
||||
-- cooked chicken
|
||||
minetest.register_craftitem(":mobs:chicken_cooked", {
|
||||
description = S("Cooked Chicken"),
|
||||
inventory_image = "mobs_chicken_cooked.png",
|
||||
on_use = minetest.item_eat(6),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
recipe = "mobs:chicken_raw",
|
||||
output = "mobs:chicken_cooked",
|
||||
})
|
|
@ -0,0 +1,152 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Cow by Krupnovpavel (additional texture by JurajVajda)
|
||||
|
||||
mobs:register_mob("mobs_animal:cow", {
|
||||
type = "animal",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
reach = 2,
|
||||
damage = 4,
|
||||
hp_min = 5,
|
||||
hp_max = 20,
|
||||
armor = 200,
|
||||
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_cow.x",
|
||||
textures = {
|
||||
{"mobs_cow.png"},
|
||||
{"mobs_cow2.png"},
|
||||
},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_cow",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
|
||||
{name = "mobs:leather", chance = 1, min = 1, max = 2},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
stand_start = 0,
|
||||
stand_end = 30,
|
||||
walk_start = 35,
|
||||
walk_end = 65,
|
||||
run_start = 105,
|
||||
run_end = 135,
|
||||
punch_start = 70,
|
||||
punch_end = 100,
|
||||
},
|
||||
follow = "farming:wheat",
|
||||
view_range = 7,
|
||||
replace_rate = 10,
|
||||
replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"},
|
||||
replace_with = "air",
|
||||
fear_height = 2,
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
-- feed or tame
|
||||
if mobs:feed_tame(self, clicker, 8, true, true) then
|
||||
return
|
||||
end
|
||||
|
||||
local tool = clicker:get_wielded_item()
|
||||
|
||||
-- milk cow with empty bucket
|
||||
if tool:get_name() == "bucket:bucket_empty" then
|
||||
|
||||
--if self.gotten == true
|
||||
if self.child == true then
|
||||
return
|
||||
end
|
||||
|
||||
if self.gotten == true then
|
||||
minetest.chat_send_player(clicker:get_player_name(),
|
||||
S("Cow already milked!"))
|
||||
return
|
||||
end
|
||||
|
||||
local inv = clicker:get_inventory()
|
||||
|
||||
inv:remove_item("main", "bucket:bucket_empty")
|
||||
|
||||
if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
|
||||
clicker:get_inventory():add_item("main", "mobs:bucket_milk")
|
||||
else
|
||||
local pos = self.object:getpos()
|
||||
pos.y = pos.y + 0.5
|
||||
minetest.add_item(pos, {name = "mobs:bucket_milk"})
|
||||
end
|
||||
|
||||
self.gotten = true -- milked
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
|
||||
end,
|
||||
})
|
||||
|
||||
mobs:register_spawn("mobs_animal:cow",
|
||||
{"default:dirt_with_grass", "ethereal:green_dirt"}, 20, 10, 15000, 3, 31000, true)
|
||||
|
||||
mobs:register_egg("mobs_animal:cow", S("Cow"), "default_grass.png", 1)
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:cow", "mobs_animal:cow")
|
||||
|
||||
-- bucket of milk
|
||||
minetest.register_craftitem(":mobs:bucket_milk", {
|
||||
description = S("Bucket of Milk"),
|
||||
inventory_image = "mobs_bucket_milk.png",
|
||||
stack_max = 1,
|
||||
on_use = minetest.item_eat(8, 'bucket:bucket_empty'),
|
||||
})
|
||||
|
||||
-- cheese wedge
|
||||
minetest.register_craftitem(":mobs:cheese", {
|
||||
description = S("Cheese"),
|
||||
inventory_image = "mobs_cheese.png",
|
||||
on_use = minetest.item_eat(4),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:cheese",
|
||||
recipe = "mobs:bucket_milk",
|
||||
cooktime = 5,
|
||||
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
|
||||
})
|
||||
|
||||
-- cheese block
|
||||
minetest.register_node(":mobs:cheeseblock", {
|
||||
description = S("Cheese Block"),
|
||||
tiles = {"mobs_cheeseblock.png"},
|
||||
is_ground_content = false,
|
||||
groups = {crumbly = 3},
|
||||
sounds = default.node_sound_dirt_defaults()
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:cheeseblock",
|
||||
recipe = {
|
||||
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
|
||||
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
|
||||
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "mobs:cheese 9",
|
||||
recipe = {
|
||||
{'mobs:cheeseblock'},
|
||||
}
|
||||
})
|
|
@ -0,0 +1,3 @@
|
|||
default
|
||||
mobs
|
||||
intllib?
|
|
@ -0,0 +1 @@
|
|||
Adds farm animals.
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
local path = minetest.get_modpath("mobs_animal")
|
||||
|
||||
-- Intllib
|
||||
local S
|
||||
if minetest.get_modpath("intllib") then
|
||||
S = intllib.Getter()
|
||||
else
|
||||
S = function(s) return s end
|
||||
end
|
||||
mobs.intllib = S
|
||||
|
||||
-- Animals
|
||||
|
||||
dofile(path .. "/chicken.lua") -- JKmurray
|
||||
dofile(path .. "/cow.lua") -- KrupnoPavel
|
||||
-- dofile(path .. "/rat.lua") -- PilzAdam
|
||||
dofile(path .. "/sheep.lua") -- PilzAdam
|
||||
dofile(path .. "/warthog.lua") -- KrupnoPavel
|
||||
dofile(path .. "/bee.lua") -- KrupnoPavel
|
||||
-- dofile(path .. "/bunny.lua") -- ExeterDad
|
||||
-- dofile(path .. "/kitten.lua") -- Jordach/BFD
|
||||
|
||||
print (S("[MOD] Mobs Redo 'Animals' loaded"))
|
|
@ -0,0 +1,61 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Kitten by Jordach / BFD
|
||||
|
||||
mobs:register_mob("mobs_animal:kitten", {
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 5,
|
||||
hp_max = 10,
|
||||
armor = 200,
|
||||
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.1, 0.3},
|
||||
visual = "mesh",
|
||||
visual_size = {x = 0.5, y = 0.5},
|
||||
mesh = "mobs_kitten.b3d",
|
||||
textures = {
|
||||
{"mobs_kitten_striped.png"},
|
||||
{"mobs_kitten_splotchy.png"},
|
||||
{"mobs_kitten_ginger.png"},
|
||||
{"mobs_kitten_sandy.png"},
|
||||
},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_kitten",
|
||||
},
|
||||
walk_velocity = 0.6,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
jump = false,
|
||||
drops = {
|
||||
{name = "farming:string", chance = 1, min = 1, max = 1},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
fear_height = 3,
|
||||
animation = {
|
||||
speed_normal = 42,
|
||||
stand_start = 97,
|
||||
stand_end = 192,
|
||||
walk_start = 0,
|
||||
walk_end = 96,
|
||||
},
|
||||
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
|
||||
|
||||
mobs:capture_mob(self, clicker, 50, 50, 90, false, nil)
|
||||
end
|
||||
})
|
||||
|
||||
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")
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
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.
|
|
@ -0,0 +1,60 @@
|
|||
# German Translation for mobs_animal mod
|
||||
# Deutsche Übersetzung der mobs_animal Mod
|
||||
# last update: 2016/June/10
|
||||
# Author: Xanthin
|
||||
|
||||
#bee.lua
|
||||
Bee = Biene
|
||||
Honey = Honig
|
||||
Beehive = Bienenstock
|
||||
Honey Block = Honigblock
|
||||
|
||||
#bunny.lua
|
||||
Bunny = Häschen
|
||||
|
||||
#chicken.lua
|
||||
Chicken = Huhn
|
||||
Chicken Egg = Hühnerei
|
||||
Fried Egg = Spiegelei
|
||||
Raw Chicken = Rohes Hühnchen
|
||||
Cooked Chicken = Gekochtes Hühnchen
|
||||
|
||||
#cow.lua
|
||||
Cow already milked! = Kuh ist bereits gemolken!
|
||||
Cow = Kuh
|
||||
Bucket of Milk = Eimer Milch
|
||||
Cheese = Käse
|
||||
Cheese Block = Käseblock
|
||||
|
||||
#init.lua
|
||||
[MOD] Mobs Redo 'Animals' loaded = [MOD] Mobs Redo 'Animals' geladen
|
||||
|
||||
#kitten.lua
|
||||
Kitten = Kätzchen
|
||||
|
||||
#rat.lua
|
||||
Rat = Ratte
|
||||
Cooked Rat = Gekochte Ratte
|
||||
|
||||
#sheep.lua
|
||||
Black = Schwarzes
|
||||
Blue = Blaues
|
||||
Brown = Braunes
|
||||
Cyan = Cyan
|
||||
Dark Green = Dunkelgrünes
|
||||
Dark Grey = Dunkelgraues
|
||||
Green = Grünes
|
||||
Grey = Graues
|
||||
Magenta = Magenta
|
||||
Orange = Oranges
|
||||
Pink = Pinkes
|
||||
Red = Rotes
|
||||
Violet = Violettes
|
||||
White = Weißes
|
||||
Yellow = Gelbes
|
||||
Sheep = Schaf
|
||||
|
||||
#warthog.lua
|
||||
Warthog = Warzenschwein
|
||||
Raw Porkchop = Rohes Schweinekotelett
|
||||
Cooked Porkchop = Gekochtes Schweinekotelett
|
|
@ -0,0 +1,58 @@
|
|||
# Template for translations of mobs_animal mod
|
||||
# last update: 2016/June/10
|
||||
|
||||
#bee.lua
|
||||
Bee =
|
||||
Honey =
|
||||
Beehive =
|
||||
Honey Block =
|
||||
|
||||
#bunny.lua
|
||||
Bunny =
|
||||
|
||||
#chicken.lua
|
||||
Chicken =
|
||||
Chicken Egg =
|
||||
Fried Egg =
|
||||
Raw Chicken =
|
||||
Cooked Chicken =
|
||||
|
||||
#cow.lua
|
||||
Cow already milked! =
|
||||
Cow =
|
||||
Bucket of Milk =
|
||||
Cheese =
|
||||
Cheese Block =
|
||||
|
||||
#init.lua
|
||||
[MOD] Mobs Redo 'Animals' loaded =
|
||||
|
||||
#kitten.lua
|
||||
Kitten =
|
||||
|
||||
#rat.lua
|
||||
Rat =
|
||||
Cooked Rat =
|
||||
|
||||
#sheep.lua
|
||||
Black =
|
||||
Blue =
|
||||
Brown =
|
||||
Cyan =
|
||||
Dark Green =
|
||||
Dark Grey =
|
||||
Green =
|
||||
Grey =
|
||||
Magenta =
|
||||
Orange =
|
||||
Pink =
|
||||
Red =
|
||||
Violet =
|
||||
White =
|
||||
Yellow =
|
||||
Sheep =
|
||||
|
||||
#warthog.lua
|
||||
Warthog =
|
||||
Raw Porkchop =
|
||||
Cooked Porkchop =
|
|
@ -0,0 +1,79 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Rat by PilzAdam
|
||||
|
||||
mobs:register_mob("mobs_animal:rat", {
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 1,
|
||||
hp_max = 4,
|
||||
armor = 200,
|
||||
collisionbox = {-0.2, -1, -0.2, 0.2, -0.8, 0.2},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_rat.b3d",
|
||||
textures = {
|
||||
{"mobs_rat.png"},
|
||||
{"mobs_rat2.png"},
|
||||
},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {
|
||||
random = "mobs_rat",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
jump = true,
|
||||
water_damage = 0,
|
||||
lava_damage = 4,
|
||||
light_damage = 0,
|
||||
fear_height = 2,
|
||||
on_rightclick = function(self, clicker)
|
||||
mobs:capture_mob(self, clicker, 25, 80, 0, true, nil)
|
||||
end,
|
||||
--[[
|
||||
do_custom = function(self, dtime)
|
||||
|
||||
self.rat_timer = (self.rat_timer or 0) + dtime
|
||||
|
||||
if self.rat_timer < 1 then return end -- every 1 second
|
||||
|
||||
self.rat_timer = 0
|
||||
|
||||
local pos = self.object:getpos()
|
||||
|
||||
print("rat pos", pos.x, pos.y, pos.z, dtime)
|
||||
|
||||
return false -- return but skip doing rest of API
|
||||
end,
|
||||
]]
|
||||
--[[
|
||||
on_blast = function(obj, damage)
|
||||
print ("--- damage is", damage)
|
||||
print ("--- mob is", obj.object:get_luaentity().name)
|
||||
-- return's do_damage, do_knockback and drops
|
||||
return false, true, {"default:mese"}
|
||||
end,
|
||||
]]
|
||||
})
|
||||
|
||||
mobs:register_spawn("mobs_animal:rat", {"default:stone"}, 20, 5, 15000, 2, 0)
|
||||
|
||||
mobs:register_egg("mobs_animal:rat", S("Rat"), "mobs_rat_inventory.png", 0)
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:rat", "mobs_animal:rat")
|
||||
|
||||
-- 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),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:rat_cooked",
|
||||
recipe = "mobs:rat",
|
||||
cooktime = 5,
|
||||
})
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
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.
|
||||
|
||||
Bunny
|
||||
|
||||
- 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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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 raw fish (found in ethereal) and tamed.
|
||||
|
||||
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...
|
After Width: | Height: | Size: 33 KiB |
|
@ -0,0 +1,185 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
local all_colours = {
|
||||
{"black", S("Black"), "#000000b0"},
|
||||
{"blue", S("Blue"), "#015dbb70"},
|
||||
{"brown", S("Brown"), "#663300a0"},
|
||||
{"cyan", S("Cyan"), "#01ffd870"},
|
||||
{"dark_green", S("Dark Green"), "#005b0770"},
|
||||
{"dark_grey", S("Dark Grey"), "#303030b0"},
|
||||
{"green", S("Green"), "#61ff0170"},
|
||||
{"grey", S("Grey"), "#5b5b5bb0"},
|
||||
{"magenta", S("Magenta"), "#ff05bb70"},
|
||||
{"orange", S("Orange"), "#ff840170"},
|
||||
{"pink", S("Pink"), "#ff65b570"},
|
||||
{"red", S("Red"), "#ff0000a0"},
|
||||
{"violet", S("Violet"), "#2000c970"},
|
||||
{"white", S("White"), "#abababc0"},
|
||||
{"yellow", S("Yellow"), "#e3ff0070"},
|
||||
}
|
||||
|
||||
-- Sheep by PilzAdam, texture converted to minetest by AMMOnym from Summerfield pack
|
||||
|
||||
for _, col in pairs(all_colours) do
|
||||
|
||||
mobs:register_mob("mobs_animal:sheep_"..col[1], {
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 8,
|
||||
hp_max = 10,
|
||||
armor = 200,
|
||||
collisionbox = {-0.5, -1, -0.5, 0.5, 0.3, 0.5},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_sheep.b3d",
|
||||
textures = {
|
||||
{"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
|
||||
},
|
||||
gotten_texture = {"mobs_sheep_shaved.png"},
|
||||
gotten_mesh = "mobs_sheep_shaved.b3d",
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_sheep",
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
jump = true,
|
||||
drops = {
|
||||
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2},
|
||||
--{name = "wool:"..col[1], chance = 1, min = 1, max = 1},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
speed_run = 15,
|
||||
stand_start = 0,
|
||||
stand_end = 80,
|
||||
walk_start = 81,
|
||||
walk_end = 100,
|
||||
},
|
||||
follow = {"farming:wheat", "default:grass_5"},
|
||||
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,
|
||||
fear_height = 3,
|
||||
|
||||
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
|
||||
|
||||
self.object:set_properties({
|
||||
textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
|
||||
mesh = "mobs_sheep.b3d",
|
||||
})
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local item = clicker:get_wielded_item()
|
||||
local itemname = item:get_name()
|
||||
|
||||
--are we giving a haircut>
|
||||
if itemname == "mobs:shears" then
|
||||
|
||||
if self.gotten ~= false
|
||||
or self.child ~= false
|
||||
or not minetest.get_modpath("wool") then
|
||||
return
|
||||
end
|
||||
|
||||
self.gotten = true -- shaved
|
||||
|
||||
local obj = minetest.add_item(
|
||||
self.object:getpos(),
|
||||
ItemStack( "wool:" .. col[1] .. " " .. math.random(1, 3) )
|
||||
)
|
||||
|
||||
if obj then
|
||||
|
||||
obj:setvelocity({
|
||||
x = math.random(-1, 1),
|
||||
y = 5,
|
||||
z = math.random(-1, 1)
|
||||
})
|
||||
end
|
||||
|
||||
item:add_wear(650) -- 100 uses
|
||||
|
||||
clicker:set_wielded_item(item)
|
||||
|
||||
self.object:set_properties({
|
||||
textures = {"mobs_sheep_shaved.png"},
|
||||
mesh = "mobs_sheep_shaved.b3d",
|
||||
})
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local name = clicker:get_player_name()
|
||||
|
||||
--are we coloring?
|
||||
if itemname:find("dye:") then
|
||||
|
||||
if self.gotten == false
|
||||
and self.child == false
|
||||
and self.tamed == true
|
||||
and name == self.owner then
|
||||
|
||||
local colr = string.split(itemname, ":")[2]
|
||||
|
||||
for _,c in pairs(all_colours) do
|
||||
|
||||
if c[1] == colr then
|
||||
|
||||
local pos = self.object:getpos()
|
||||
|
||||
self.object:remove()
|
||||
|
||||
local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr)
|
||||
local ent = mob:get_luaentity()
|
||||
|
||||
ent.owner = name
|
||||
ent.tamed = true
|
||||
|
||||
-- take item
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
item:take_item()
|
||||
clicker:set_wielded_item(item)
|
||||
end
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
--are we capturing?
|
||||
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
|
||||
end
|
||||
})
|
||||
|
||||
mobs:register_egg("mobs_animal:sheep_"..col[1], col[2] .. " " .. S("Sheep"), "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, 15000, 3, 31000, true)
|
||||
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white")
|
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 934 B |
After Width: | Height: | Size: 513 B |
After Width: | Height: | Size: 241 B |
After Width: | Height: | Size: 999 B |
After Width: | Height: | Size: 809 B |
After Width: | Height: | Size: 771 B |
After Width: | Height: | Size: 466 B |
After Width: | Height: | Size: 809 B |
After Width: | Height: | Size: 247 B |
After Width: | Height: | Size: 609 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 216 B |
After Width: | Height: | Size: 166 B |
After Width: | Height: | Size: 369 B |
After Width: | Height: | Size: 218 B |
After Width: | Height: | Size: 239 B |
After Width: | Height: | Size: 948 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 272 B |
After Width: | Height: | Size: 301 B |
After Width: | Height: | Size: 440 B |
After Width: | Height: | Size: 377 B |
After Width: | Height: | Size: 404 B |
After Width: | Height: | Size: 456 B |
After Width: | Height: | Size: 416 B |
After Width: | Height: | Size: 224 B |
After Width: | Height: | Size: 198 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 834 B |
After Width: | Height: | Size: 565 B |
After Width: | Height: | Size: 635 B |
After Width: | Height: | Size: 983 B |
After Width: | Height: | Size: 1.0 KiB |
|
@ -0,0 +1,85 @@
|
|||
|
||||
local S = mobs.intllib
|
||||
|
||||
-- Warthog by KrupnoPavel
|
||||
|
||||
mobs:register_mob("mobs_animal:pumba", {
|
||||
type = "animal",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
group_attack = true,
|
||||
reach = 2,
|
||||
damage = 2,
|
||||
hp_min = 5,
|
||||
hp_max = 15,
|
||||
armor = 200,
|
||||
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_pumba.x",
|
||||
textures = {
|
||||
{"mobs_pumba.png"},
|
||||
},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_pig",
|
||||
attack = "mobs_pig_angry",
|
||||
},
|
||||
walk_velocity = 2,
|
||||
run_velocity = 3,
|
||||
jump = true,
|
||||
follow = {"default:apple", "farming:potato"},
|
||||
view_range = 10,
|
||||
drops = {
|
||||
{name = "mobs:pork_raw", chance = 1, min = 1, max = 3},
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
fear_height = 2,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 25,
|
||||
stand_end = 55,
|
||||
walk_start = 70,
|
||||
walk_end = 100,
|
||||
punch_start = 70,
|
||||
punch_end = 100,
|
||||
},
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
if mobs:feed_tame(self, clicker, 8, true, true) then
|
||||
return
|
||||
end
|
||||
|
||||
mobs:capture_mob(self, clicker, 0, 5, 50, false, nil)
|
||||
end,
|
||||
})
|
||||
|
||||
mobs:register_spawn("mobs_animal:pumba",
|
||||
{"ethereal:mushroom_dirt", "default:dirt_with_dry_grass"}, 20, 10, 15000, 3, 31000, true)
|
||||
|
||||
mobs:register_egg("mobs_animal:pumba", S("Warthog"), "wool_pink.png", 1)
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:pumba", "mobs_animal:pumba")
|
||||
|
||||
-- raw porkchop
|
||||
minetest.register_craftitem(":mobs:pork_raw", {
|
||||
description = S("Raw Porkchop"),
|
||||
inventory_image = "mobs_pork_raw.png",
|
||||
on_use = minetest.item_eat(4),
|
||||
})
|
||||
|
||||
-- cooked porkchop
|
||||
minetest.register_craftitem(":mobs:pork_cooked", {
|
||||
description = S("Cooked Porkchop"),
|
||||
inventory_image = "mobs_pork_cooked.png",
|
||||
on_use = minetest.item_eat(8),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:pork_cooked",
|
||||
recipe = "mobs:pork_raw",
|
||||
cooktime = 5,
|
||||
})
|