mods that hopefully work for a TechAge-based pack
|
After Width: | Height: | Size: 609 B |
@@ -0,0 +1,209 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- Bee by KrupnoPavel (.b3d model by sirrobzeroone)
|
||||
|
||||
mobs:register_mob("mobs_animal:bee", {
|
||||
description = S("Bee"),
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 1,
|
||||
hp_max = 2,
|
||||
armor = 100,
|
||||
collisionbox = {-0.2, 0.2, -0.2, 0.2, 0.5, 0.2},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_bee.b3d",
|
||||
textures = { {"mobs_bee.png"} },
|
||||
blood_texture = "mobs_bee_inv.png",
|
||||
blood_amount = 1,
|
||||
makes_footstep_sound = false,
|
||||
sounds = { random = "mobs_bee" },
|
||||
walk_velocity = 1,
|
||||
drops = {
|
||||
{name = "mobs:honey", chance = 2, min = 1, max = 2}
|
||||
},
|
||||
water_damage = 1,
|
||||
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, 50, 90, 0, true, "mobs_animal:bee")
|
||||
end,
|
||||
|
||||
-- after_activate = function(self, staticdata, def, dtime)
|
||||
-- print ("------", self.name, dtime, self.health)
|
||||
-- end,
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:bee",
|
||||
nodes = {"group:flower"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 7000,
|
||||
min_height = 3,
|
||||
max_height = 200,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:bee", S("Bee"), "mobs_bee_inv.png")
|
||||
|
||||
-- compatibility (only required if moving from old mobs to mobs_redo)
|
||||
|
||||
mobs:alias_mob("mobs:bee", "mobs_animal:bee")
|
||||
|
||||
-- honey
|
||||
|
||||
core.register_craftitem(":mobs:honey", {
|
||||
description = S("Honey"),
|
||||
inventory_image = "mobs_honey_inv.png",
|
||||
on_use = core.item_eat(4),
|
||||
groups = {food_honey = 1, food_sugar = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:honey", 4)
|
||||
|
||||
-- beehive (1 in 4 chance of spawning bee when placed)
|
||||
|
||||
core.register_node(":mobs:beehive", {
|
||||
description = S("Beehive"),
|
||||
drawtype = "plantlike",
|
||||
tiles = {"mobs_beehive.png"},
|
||||
inventory_image = "mobs_beehive.png",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
walkable = true,
|
||||
groups = {oddly_breakable_by_hand = 3, flammable = 1, disable_suffocation = 1},
|
||||
is_ground_content = false,
|
||||
sounds = mobs.node_sound_defaults(),
|
||||
|
||||
on_construct = function(pos)
|
||||
|
||||
local meta = core.get_meta(pos)
|
||||
local gui_bg = default and default.gui_bg .. default.gui_bg_img .. default.gui_slots or ""
|
||||
|
||||
meta:set_string("formspec", "size[8,6]"
|
||||
.. gui_bg
|
||||
.. "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 and placer:is_player() then
|
||||
|
||||
core.set_node(pos, {name = "mobs:beehive", param2 = 1})
|
||||
|
||||
if math.random(4) == 1 then
|
||||
core.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
|
||||
core.after(0.2, function()
|
||||
|
||||
local hp = puncher and puncher:get_hp()
|
||||
|
||||
if hp then puncher:set_hp(hp - 4) end
|
||||
end)
|
||||
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) -- can only dig when no honey inside
|
||||
|
||||
local meta = core.get_meta(pos)
|
||||
|
||||
return meta:get_inventory():is_empty("beehive")
|
||||
end
|
||||
})
|
||||
|
||||
-- beehive recipe
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:beehive",
|
||||
recipe = {{"mobs:bee","mobs:bee","mobs:bee"}}
|
||||
})
|
||||
|
||||
-- honey block and craft recipes
|
||||
|
||||
core.register_node(":mobs:honey_block", {
|
||||
description = S("Honey Block"),
|
||||
tiles = {"mobs_honey_block.png"},
|
||||
groups = {snappy = 3, flammable = 2},
|
||||
is_ground_content = false,
|
||||
sounds = mobs.node_sound_dirt_defaults()
|
||||
})
|
||||
|
||||
core.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"}
|
||||
}
|
||||
})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:honey 9",
|
||||
recipe = {
|
||||
{"mobs:honey_block"}
|
||||
}
|
||||
})
|
||||
|
||||
-- beehive workings
|
||||
|
||||
core.register_abm({
|
||||
nodenames = {"mobs:beehive"},
|
||||
interval = 12,
|
||||
chance = 6,
|
||||
catch_up = false,
|
||||
|
||||
action = function(pos, node)
|
||||
|
||||
-- bee's only make honey during the day
|
||||
local tod = (core.get_timeofday() or 0) * 24000
|
||||
|
||||
if tod < 5500 or tod > 18500 then return end
|
||||
|
||||
local meta = core.get_meta(pos) ; if not meta then return end
|
||||
local inv = meta:get_inventory()
|
||||
local honey = inv:get_stack("beehive", 1):get_count()
|
||||
|
||||
if honey > 11 then return end -- return if hive full
|
||||
|
||||
-- no flowers no honey, nuff said!
|
||||
if #core.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,202 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- Bunny by ExeterDad
|
||||
|
||||
mobs:register_mob("mobs_animal:bunny", {
|
||||
description = S("Bunny"),
|
||||
type = "animal",
|
||||
passive = true,
|
||||
reach = 1,
|
||||
stepheight = 0.6,
|
||||
hp_min = 1,
|
||||
hp_max = 4,
|
||||
armor = 100,
|
||||
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,
|
||||
runaway_from = {"mobs_animal:pumba", "player"},
|
||||
jump = true,
|
||||
jump_height = 6,
|
||||
drops = {
|
||||
{name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
|
||||
{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1}
|
||||
},
|
||||
water_damage = 0.01,
|
||||
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,
|
||||
run_start = 16, run_end = 24, run_speed = 40,
|
||||
punch_start = 16, punch_end = 24
|
||||
},
|
||||
follow = {"farming: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_with = "air",
|
||||
|
||||
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
|
||||
|
||||
-- Monty Python tribute
|
||||
local item = clicker:get_wielded_item()
|
||||
local player_name = clicker:get_player_name()
|
||||
|
||||
if self.owner == player_name
|
||||
and item:get_name() == "mobs:lava_orb" then
|
||||
|
||||
-- take orb
|
||||
if not mobs.is_creative(clicker:get_player_name()) then
|
||||
item:take_item()
|
||||
clicker:set_wielded_item(item)
|
||||
end
|
||||
|
||||
-- set special bunny attributes
|
||||
local staticdata = core.serialize({
|
||||
type = "monster",
|
||||
attack_type = "dogfight",
|
||||
health = 20,
|
||||
damage = 5,
|
||||
run_velocity = 3,
|
||||
passive = false,
|
||||
runaway = false,
|
||||
runaway_from = {},
|
||||
runaway_timer = 0,
|
||||
tamed = false,
|
||||
base_texture = {"mobs_bunny_evil.png"}
|
||||
})
|
||||
|
||||
-- add evil bunny
|
||||
local obj = core.add_entity(
|
||||
self.object:get_pos(), "mobs_animal:bunny", staticdata)
|
||||
|
||||
obj:set_properties({textures = {"mobs_bunny_evil.png"}, hp_max = 20})
|
||||
|
||||
-- remove old bunny
|
||||
if obj:get_luaentity() then mobs:remove(self, true) end
|
||||
end
|
||||
end,
|
||||
|
||||
on_spawn = function(self)
|
||||
|
||||
local pos = self.object:get_pos() ; pos.y = pos.y - 1
|
||||
|
||||
-- white snowy bunny
|
||||
if core.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 core.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 core.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
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
local spawn_on = "default:dirt_with_grass"
|
||||
|
||||
if core.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,
|
||||
min_height = 5,
|
||||
max_height = 200,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:bunny", S("Bunny"), "mobs_bunny_inv.png", 0)
|
||||
|
||||
-- compatibility (only used for older mobs compatibility)
|
||||
|
||||
mobs:alias_mob("mobs:bunny", "mobs_animal:bunny")
|
||||
|
||||
-- raw rabbit
|
||||
|
||||
core.register_craftitem(":mobs:rabbit_raw", {
|
||||
description = S("Raw Rabbit"),
|
||||
inventory_image = "mobs_rabbit_raw.png",
|
||||
on_use = core.item_eat(3),
|
||||
groups = {food_meat_raw = 1, food_rabbit_raw = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:rabbit_raw", 3)
|
||||
|
||||
-- cooked rabbit
|
||||
|
||||
core.register_craftitem(":mobs:rabbit_cooked", {
|
||||
description = S("Cooked Rabbit"),
|
||||
inventory_image = "mobs_rabbit_cooked.png",
|
||||
on_use = core.item_eat(5),
|
||||
groups = {food_meat = 1, food_rabbit = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:rabbit_cooked", 5)
|
||||
|
||||
core.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:rabbit_cooked",
|
||||
recipe = "mobs:rabbit_raw",
|
||||
cooktime = 5
|
||||
})
|
||||
|
||||
-- rabbit hide and recipes
|
||||
|
||||
core.register_craftitem(":mobs:rabbit_hide", {
|
||||
description = S("Rabbit Hide"),
|
||||
inventory_image = "mobs_rabbit_hide.png",
|
||||
groups = {flammable = 2, pelt = 1}
|
||||
})
|
||||
|
||||
core.register_craft({type = "fuel", recipe = "mobs:rabbit_hide", burntime = 2})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:leather",
|
||||
recipe = {
|
||||
{"mobs:rabbit_hide", "mobs:rabbit_hide"},
|
||||
{"mobs:rabbit_hide", "mobs:rabbit_hide"}
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,298 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- Chicken by JK Murray and Sirrobzeroone
|
||||
|
||||
mobs:register_mob("mobs_animal:chicken", {
|
||||
description = S("Chicken"),
|
||||
stepheight = 0.6,
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 5,
|
||||
hp_max = 10,
|
||||
armor = 100,
|
||||
collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_chicken.b3d",
|
||||
textures = {
|
||||
{"mobs_chicken.png"}, -- white
|
||||
{"mobs_chicken_brown.png"},
|
||||
{"mobs_chicken_black.png"}
|
||||
},
|
||||
child_texture = {{"mobs_chick.png"}},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_chicken",
|
||||
replace = "default_dig_crumbly"
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 3,
|
||||
runaway = true,
|
||||
runaway_from = {"player", "mobs_animal:pumba"},
|
||||
drops = {
|
||||
{name = "mobs:chicken_raw", chance = 1, min = 1, max = 1},
|
||||
{name = "mobs:chicken_feather", chance = 1, min = 0, max = 2}
|
||||
},
|
||||
water_damage = 1,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
fall_damage = 0,
|
||||
fall_speed = -4,
|
||||
fear_height = 5,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 1, stand_end = 30, stand_speed = 28,
|
||||
stand1_start = 31, stand1_end = 70, stand1_speed = 32,
|
||||
walk_start = 71, walk_end = 90, walk_speed = 24,
|
||||
run_start = 91, run_end = 110, run_speed = 34
|
||||
},
|
||||
follow = {
|
||||
"farming:seed_wheat", "farming:seed_cotton", "farming:seed_barley",
|
||||
"farming:seed_oat", "farming:seed_rye", "farming:seed_rice",
|
||||
"farming:seed_hemp", "farming:seed_sunflower", "farming:seed_mint"
|
||||
},
|
||||
view_range = 5,
|
||||
replace_rate = 5,
|
||||
replace_what = {
|
||||
{"farming:seed_wheat", "air", 0},
|
||||
{"farming:seed_cotton", "air", 0},
|
||||
{"farming:seed_barley", "air", 0},
|
||||
{"farming:seed_oat", "air", 0},
|
||||
{"farming:seed_rye", "air", 0},
|
||||
{"farming:seed_rice", "air", 0},
|
||||
{"farming:seed_hemp", "air", 0},
|
||||
{"farming:seed_mint", "air", 0},
|
||||
{"farming:seed_sunflower", "air", 0}
|
||||
},
|
||||
stay_near = {{"group:seed"}, 7},
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
if mobs:feed_tame(self, clicker, 8, 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
|
||||
end,
|
||||
|
||||
do_custom = function(self, dtime)
|
||||
|
||||
self.egg_timer = (self.egg_timer or 0) + dtime
|
||||
if self.egg_timer < 10 then return end
|
||||
self.egg_timer = 0
|
||||
|
||||
if self.child then return end
|
||||
|
||||
local pos = self.object:get_pos() ; if not pos then return end
|
||||
|
||||
if math.random(100) == 1 then
|
||||
|
||||
core.add_item(pos, "mobs:egg")
|
||||
|
||||
core.sound_play("default_place_node_hard",
|
||||
{pos = pos, max_hear_distance = 5}, true)
|
||||
|
||||
elseif math.random(100) < 3 then
|
||||
core.add_item(pos, "mobs:chicken_feather")
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
local spawn_on = {"default:dirt_with_grass"}
|
||||
|
||||
if core.get_modpath("ethereal") then
|
||||
spawn_on = {"ethereal:bamboo_dirt", "ethereal:prairie_dirt"}
|
||||
end
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:chicken",
|
||||
nodes = spawn_on,
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 5,
|
||||
max_height = 200,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:chicken", S("Chicken"), "mobs_chicken_inv.png", 0)
|
||||
|
||||
-- compatibility with older mobs mod
|
||||
|
||||
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(core.get_player_by_name(self.playername) or 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)
|
||||
|
||||
if math.random(10) > 1 then return end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
|
||||
local nod = core.get_node_or_nil(pos)
|
||||
|
||||
if not nod or not core.registered_nodes[nod.name]
|
||||
or core.registered_nodes[nod.name].walkable == true then
|
||||
return
|
||||
end
|
||||
|
||||
mobs:add_mob(pos, {
|
||||
name = "mobs_animal:chicken",
|
||||
child = true,
|
||||
owner = self.playername,
|
||||
-- nametag = "Chicky",
|
||||
ignore_count = true -- ignores mob count per map area
|
||||
})
|
||||
end
|
||||
})
|
||||
|
||||
-- egg throwing function
|
||||
|
||||
local egg_GRAVITY = 9
|
||||
local egg_VELOCITY = 19
|
||||
|
||||
local mobs_shoot_egg = function (item, player, pointed_thing)
|
||||
|
||||
local playerpos = player:get_pos()
|
||||
|
||||
core.sound_play("default_place_node_hard",
|
||||
{pos = playerpos, gain = 1.0, max_hear_distance = 5}, true)
|
||||
|
||||
local obj = core.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
|
||||
ent._is_arrow = true -- tell advanced mob protection this is an arrow
|
||||
|
||||
obj:set_velocity({
|
||||
x = dir.x * egg_VELOCITY, y = dir.y * egg_VELOCITY, z = dir.z * egg_VELOCITY})
|
||||
|
||||
obj:set_acceleration({
|
||||
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
|
||||
|
||||
core.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 = false,
|
||||
sunlight_propagates = true,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
|
||||
},
|
||||
groups = {food_egg = 1, snappy = 2, dig_immediate = 3},
|
||||
sounds = mobs.node_sound_defaults(),
|
||||
|
||||
after_place_node = function(pos, placer, itemstack)
|
||||
core.set_node(pos, {name = "mobs:egg", param2 = 1})
|
||||
end,
|
||||
|
||||
on_use = mobs_shoot_egg
|
||||
})
|
||||
|
||||
-- fried egg and recipe
|
||||
|
||||
core.register_craftitem(":mobs:chicken_egg_fried", {
|
||||
description = S("Fried Egg"),
|
||||
inventory_image = "mobs_chicken_egg_fried.png",
|
||||
on_use = core.item_eat(2),
|
||||
groups = {food_egg_fried = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:chicken_egg_fried", 2)
|
||||
|
||||
core.register_craft({
|
||||
type = "cooking",
|
||||
recipe = "mobs:egg",
|
||||
output = "mobs:chicken_egg_fried"
|
||||
})
|
||||
|
||||
-- raw chicken
|
||||
|
||||
core.register_craftitem(":mobs:chicken_raw", {
|
||||
description = S("Raw Chicken"),
|
||||
inventory_image = "mobs_chicken_raw.png",
|
||||
on_use = core.item_eat(2),
|
||||
groups = {food_meat_raw = 1, food_chicken_raw = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:chicken_raw", 2)
|
||||
|
||||
-- cooked chicken and recipe
|
||||
|
||||
core.register_craftitem(":mobs:chicken_cooked", {
|
||||
description = S("Cooked Chicken"),
|
||||
inventory_image = "mobs_chicken_cooked.png",
|
||||
on_use = core.item_eat(6),
|
||||
groups = {food_meat = 1, food_chicken = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:chicken_cooked", 6)
|
||||
|
||||
core.register_craft({
|
||||
type = "cooking",
|
||||
recipe = "mobs:chicken_raw",
|
||||
output = "mobs:chicken_cooked"
|
||||
})
|
||||
|
||||
-- feather and fuel
|
||||
|
||||
core.register_craftitem(":mobs:chicken_feather", {
|
||||
description = S("Feather"),
|
||||
inventory_image = "mobs_chicken_feather.png",
|
||||
groups = {flammable = 2, feather = 1}
|
||||
})
|
||||
|
||||
core.register_craft({type = "fuel", recipe = "mobs:chicken_feather", burntime = 1})
|
||||
@@ -0,0 +1,334 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- should cows eat grass blocks and mess up the environment?
|
||||
|
||||
local eat_gb = core.settings:get_bool("mobs_animal.eat_grass_block")
|
||||
local replace_what = { {"group:grass", "air", 0} }
|
||||
|
||||
if eat_gb then
|
||||
table.insert(replace_what, {"default:dirt_with_grass", "default:dirt", -1})
|
||||
end
|
||||
|
||||
-- Cow by sirrobzeroone
|
||||
|
||||
mobs:register_mob("mobs_animal:cow", {
|
||||
description = S("Cow"),
|
||||
type = "animal",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
attack_npcs = false,
|
||||
reach = 2,
|
||||
damage = 4, attack_chance = 98,
|
||||
hp_min = 10,
|
||||
hp_max = 20,
|
||||
armor = 100,
|
||||
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.2, 0.4},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_cow.b3d",
|
||||
textures = {
|
||||
{"mobs_cow.png"},
|
||||
{"mobs_cow2.png"}
|
||||
},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_cow",
|
||||
replace = "default_dig_crumbly"
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
jump_height = 6,
|
||||
pushable = true,
|
||||
drops = {
|
||||
{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
|
||||
{name = "mobs:leather", chance = 1, min = 0, max = 2}
|
||||
},
|
||||
water_damage = 0.01,
|
||||
lava_damage = 5,
|
||||
light_damage = 0,
|
||||
animation = {
|
||||
stand_start = 0, stand_end = 30, stand_speed = 20,
|
||||
stand1_start = 35, stand1_end = 75, stand1_speed = 20,
|
||||
walk_start = 85, walk_end = 114, walk_speed = 20,
|
||||
run_start = 120, run_end = 140, run_speed = 40,
|
||||
punch_start = 145, punch_end = 160, punch_speed = 20,
|
||||
die_start = 165, die_end = 185, die_speed = 25, die_loop = false
|
||||
},
|
||||
follow = {
|
||||
"farming:wheat", "default:grass_1", "farming:barley",
|
||||
"farming:oat", "farming:rye"
|
||||
},
|
||||
view_range = 8,
|
||||
replace_rate = 10,
|
||||
replace_what = replace_what,
|
||||
--[[
|
||||
pick_up = {"default:grass_1", "default:dry_grass_1"},
|
||||
on_pick_up = function(self, entity)
|
||||
|
||||
local istack = ItemStack(entity.itemstring)
|
||||
|
||||
print("-- took", istack:get_name())
|
||||
|
||||
istack:take_item(1)
|
||||
|
||||
return istack
|
||||
end,
|
||||
]]
|
||||
-- stay_near = {{"farming:straw", "group:grass"}, 10},
|
||||
fear_height = 2,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
-- feed or tame
|
||||
if mobs:feed_tame(self, clicker, 8, true, true) then
|
||||
|
||||
-- if fed 7x wheat or grass then cow can be milked again
|
||||
if self.food and self.food > 6 then self.gotten = false end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
if mobs:protect(self, clicker) then return end
|
||||
if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
|
||||
|
||||
local tool = clicker:get_wielded_item()
|
||||
local name = clicker:get_player_name()
|
||||
local item = tool:get_name()
|
||||
|
||||
-- milk cow with empty bucket
|
||||
if item == "bucket:bucket_empty"
|
||||
or item == "wooden_bucket:bucket_wood_empty"
|
||||
or item == "bucket_wooden:bucket_empty" then
|
||||
|
||||
if self.child == true then return end
|
||||
|
||||
if self.gotten == true then
|
||||
|
||||
core.chat_send_player(name, S("Cow already milked!"))
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local inv = clicker:get_inventory()
|
||||
|
||||
tool:take_item()
|
||||
clicker:set_wielded_item(tool)
|
||||
|
||||
-- which bucket are we using
|
||||
local ret_item = "mobs:bucket_milk"
|
||||
|
||||
if item == "wooden_bucket:bucket_wood_empty"
|
||||
or item == "bucket_wooden:bucket_empty" then
|
||||
ret_item = "mobs:wooden_bucket_milk"
|
||||
end
|
||||
|
||||
if inv:room_for_item("main", {name = ret_item}) then
|
||||
clicker:get_inventory():add_item("main", ret_item)
|
||||
else
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
pos.y = pos.y + 0.5
|
||||
|
||||
core.add_item(pos, {name = ret_item})
|
||||
end
|
||||
|
||||
self.gotten = true -- milked
|
||||
|
||||
return
|
||||
end
|
||||
end,
|
||||
|
||||
on_replace = function(self, pos, oldnode, newnode)
|
||||
|
||||
self.food = (self.food or 0) + 1
|
||||
|
||||
if self.food >= 8 then -- replace 8x grass and can be milked again
|
||||
self.food = 0
|
||||
self.gotten = false
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:cow",
|
||||
nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 5,
|
||||
max_height = 200,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:cow", S("Cow"), "mobs_cow_inv.png")
|
||||
|
||||
-- old mobs mod compatibility
|
||||
|
||||
mobs:alias_mob("mobs:cow", "mobs_animal:cow")
|
||||
|
||||
-- bucket of milk
|
||||
|
||||
core.register_craftitem(":mobs:bucket_milk", {
|
||||
description = S("Bucket of Milk"),
|
||||
inventory_image = "mobs_bucket_milk.png",
|
||||
stack_max = 1,
|
||||
on_use = core.item_eat(8, "bucket:bucket_empty"),
|
||||
groups = {food_milk = 1, drink = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:bucket_milk", 8, 3)
|
||||
|
||||
-- glass of milk and recipes
|
||||
core.register_craftitem(":mobs:glass_milk", {
|
||||
description = S("Glass of Milk"),
|
||||
inventory_image = "mobs_glass_milk.png",
|
||||
on_use = core.item_eat(2, "vessels:drinking_glass"),
|
||||
groups = {food_milk_glass = 1, vessel = 1, drink = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:glass_milk", 2, 3)
|
||||
|
||||
core.register_craft({
|
||||
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"}}
|
||||
})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:bucket_milk",
|
||||
recipe = {
|
||||
{"group:food_milk_glass", "group:food_milk_glass"},
|
||||
{"group:food_milk_glass", "group:food_milk_glass"},
|
||||
{"bucket:bucket_empty", ""}
|
||||
},
|
||||
replacements = {
|
||||
{"group:food_milk_glass", "vessels:drinking_glass 4"}
|
||||
}
|
||||
})
|
||||
|
||||
-- butter and recipe
|
||||
|
||||
core.register_craftitem(":mobs:butter", {
|
||||
description = S("Butter"),
|
||||
inventory_image = "mobs_butter.png",
|
||||
on_use = core.item_eat(1),
|
||||
groups = {food_butter = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:butter", 1)
|
||||
|
||||
local salt_item = "default:sapling" -- some saplings are high in sodium
|
||||
|
||||
if core.get_modpath("farming") and farming and farming.mod then
|
||||
salt_item = "farming:salt"
|
||||
end
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:butter",
|
||||
recipe = {{"mobs:bucket_milk", salt_item}},
|
||||
replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
|
||||
})
|
||||
|
||||
-- cheese wedge and recipe
|
||||
|
||||
core.register_craftitem(":mobs:cheese", {
|
||||
description = S("Cheese"),
|
||||
inventory_image = "mobs_cheese.png",
|
||||
on_use = core.item_eat(4),
|
||||
groups = {food_cheese = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:cheese", 4)
|
||||
|
||||
core.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:cheese",
|
||||
recipe = "mobs:bucket_milk",
|
||||
cooktime = 5,
|
||||
replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
|
||||
})
|
||||
|
||||
-- cheese block and recipe
|
||||
|
||||
core.register_node(":mobs:cheeseblock", {
|
||||
description = S("Cheese Block"),
|
||||
tiles = {"mobs_cheeseblock.png"},
|
||||
is_ground_content = false,
|
||||
groups = {oddly_breakable_by_hand = 3},
|
||||
sounds = mobs.node_sound_dirt_defaults()
|
||||
})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:cheeseblock",
|
||||
recipe = {
|
||||
{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
|
||||
{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
|
||||
{"group:food_cheese", "group:food_cheese", "group:food_cheese"}
|
||||
}
|
||||
})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:cheese 9",
|
||||
recipe = {{"mobs:cheeseblock"}}
|
||||
})
|
||||
|
||||
-- check for either of the wood bucket mods and add compatibility
|
||||
|
||||
local wb = core.get_modpath("wooden_bucket")
|
||||
local bw = core.get_modpath("bucket_wooden")
|
||||
|
||||
if wb or bw then
|
||||
|
||||
local return_item = wb and "wooden_bucket:bucket_wood_empty"
|
||||
or "bucket_wooden:bucket_empty"
|
||||
|
||||
core.register_craftitem(":mobs:wooden_bucket_milk", {
|
||||
description = S("Wooden Bucket of Milk"),
|
||||
inventory_image = "mobs_wooden_bucket_milk.png",
|
||||
stack_max = 1,
|
||||
on_use = core.item_eat(8, return_item),
|
||||
groups = {food_milk = 1, drink = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:wooden_bucker_milk", 8, 3)
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:glass_milk 4",
|
||||
recipe = {
|
||||
{"vessels:drinking_glass", "vessels:drinking_glass"},
|
||||
{"vessels:drinking_glass", "vessels:drinking_glass"},
|
||||
{"mobs:wooden_bucket_milk", ""}
|
||||
},
|
||||
replacements = {{"mobs:wooden_bucket_milk", return_item}}
|
||||
})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:wooden_bucket_milk",
|
||||
recipe = {
|
||||
{"group:food_milk_glass", "group:food_milk_glass"},
|
||||
{"group:food_milk_glass", "group:food_milk_glass"},
|
||||
{return_item, ""}
|
||||
},
|
||||
replacements = {
|
||||
{"group:food_milk_glass", "vessels:drinking_glass 4"}
|
||||
}
|
||||
})
|
||||
|
||||
core.register_craft({
|
||||
output = "mobs:butter",
|
||||
recipe = {{"mobs:wooden_bucket_milk", salt_item}},
|
||||
replacements = {{"mobs:wooden_bucket_milk", return_item}}
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
-- translation and mod path
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
local path = core.get_modpath(core.get_current_modname()) .. "/"
|
||||
|
||||
-- Check for custom mob spawn file
|
||||
|
||||
local input = io.open(path .. "spawn.lua", "r")
|
||||
|
||||
if input then
|
||||
mobs.custom_spawn_animal = true
|
||||
input:close()
|
||||
input = nil
|
||||
end
|
||||
|
||||
-- helper function
|
||||
|
||||
local function ddoo(mob)
|
||||
|
||||
if core.settings:get_bool("mobs_animal." .. mob) == false then
|
||||
print("[Mobs_Animal] " .. mob .. " disabled!")
|
||||
return
|
||||
end
|
||||
|
||||
dofile(path .. mob .. ".lua")
|
||||
end
|
||||
|
||||
-- Animals
|
||||
|
||||
ddoo("chicken") -- JKmurray
|
||||
ddoo("cow") -- KrupnoPavel
|
||||
ddoo("rat") -- PilzAdam
|
||||
ddoo("sheep") -- PilzAdam
|
||||
ddoo("warthog") -- KrupnoPavel
|
||||
ddoo("bee") -- KrupnoPavel
|
||||
ddoo("bunny") -- ExeterDad
|
||||
ddoo("kitten") -- Jordach/BFD
|
||||
ddoo("penguin") -- D00Med
|
||||
ddoo("panda") -- AspireMint
|
||||
|
||||
-- Load custom spawning if found
|
||||
|
||||
if mobs.custom_spawn_animal then
|
||||
dofile(path .. "spawn.lua")
|
||||
end
|
||||
|
||||
-- Lucky Blocks
|
||||
|
||||
if core.get_modpath("lucky_block") then
|
||||
dofile(path .. "lucky_block.lua")
|
||||
end
|
||||
|
||||
print ("[MOD] Mobs Redo Animals loaded")
|
||||
@@ -0,0 +1,212 @@
|
||||
|
||||
-- translation and hairball setting
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
local hairball = core.settings:get_bool("mobs_animal.hairball") ~= false
|
||||
|
||||
-- custom kitty types
|
||||
|
||||
local kitten_types = {
|
||||
|
||||
{ nodes = {"farming:jackolantern_on"},
|
||||
skins = {"mobs_kitten_black.png"}
|
||||
}
|
||||
}
|
||||
|
||||
-- Kitten by Jordach / BFD
|
||||
|
||||
mobs:register_mob("mobs_animal:kitten", {
|
||||
description = S("Kitten"),
|
||||
stepheight = 0.6,
|
||||
type = "animal",
|
||||
specific_attack = {"mobs_animal:rat"},
|
||||
damage = 1,
|
||||
attack_type = "dogfight",
|
||||
attack_animals = true, -- so it can attack rat
|
||||
attack_players = false,
|
||||
reach = 1,
|
||||
stepheight = 1.1,
|
||||
passive = false,
|
||||
hp_min = 5,
|
||||
hp_max = 10,
|
||||
armor = 100,
|
||||
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,
|
||||
walk_chance = 15,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
drops = {
|
||||
{name = "farming:string", chance = 1, min = 0, max = 1}
|
||||
},
|
||||
water_damage = 0.01,
|
||||
lava_damage = 5,
|
||||
fear_height = 3,
|
||||
animation = {
|
||||
speed_normal = 42,
|
||||
stand_start = 97, stand_end = 192,
|
||||
walk_start = 0, walk_end = 96,
|
||||
run_start = 0, run_end = 96, run_speed = 50,
|
||||
stoodup_start = 0, stoodup_end = 0,
|
||||
},
|
||||
follow = {
|
||||
"mobs_animal:rat", "group:food_fish_raw", "mobs:glass_milk",
|
||||
"mobs_fish:tropical", "mobs_fish:clownfish", "xocean:fish_edible"
|
||||
},
|
||||
view_range = 8,
|
||||
|
||||
-- check surrounding nodes and spawn a specific kitten
|
||||
on_spawn = function(self)
|
||||
|
||||
local pos = self.object:get_pos() ; pos.y = pos.y - 1
|
||||
local tmp
|
||||
|
||||
for n = 1, #kitten_types do
|
||||
|
||||
tmp = kitten_types[n]
|
||||
|
||||
if core.find_node_near(pos, 1, tmp.nodes) then
|
||||
|
||||
self.base_texture = tmp.skins
|
||||
self.object:set_properties({textures = tmp.skins})
|
||||
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return true -- run only once, false/nil runs every activation
|
||||
end,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
-- what are we holding?
|
||||
local tool = clicker:get_wielded_item()
|
||||
local item = tool and tool:get_name()
|
||||
|
||||
if mobs:feed_tame(self, clicker, 4, true, true) then
|
||||
|
||||
-- return empty glass if kitten drinks a glass of milk
|
||||
if item == "mobs:glass_milk" and core.get_modpath("vessels")
|
||||
and not mobs.is_creative(clicker:get_player_name()) then
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
core.add_item(pos, "vessels:drinking_glass")
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
if mobs:protect(self, clicker) then return end
|
||||
if mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) then return 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})
|
||||
self:set_animation("stand")
|
||||
else
|
||||
self.order = ""
|
||||
self:set_animation("stoodup")
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
do_custom = function(self, dtime)
|
||||
|
||||
if not hairball 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(250) > 1 then return end
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
core.add_item(pos, "mobs:hairball")
|
||||
|
||||
core.sound_play("default_dig_snappy", {pos = pos, max_hear_distance = 5}, true)
|
||||
end
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
local spawn_on = "default:dirt_with_grass"
|
||||
|
||||
if core.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,
|
||||
min_height = 5,
|
||||
max_height = 50,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:kitten", S("Kitten"), "mobs_kitten_inv.png", 0)
|
||||
|
||||
-- compatibility with old mobs mod
|
||||
|
||||
mobs:alias_mob("mobs:kitten", "mobs_animal:kitten")
|
||||
|
||||
-- hairball and items
|
||||
|
||||
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",
|
||||
"ethereal:fish_tetra"
|
||||
}
|
||||
|
||||
core.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 ~= "" and core.registered_items[item] then
|
||||
core.add_item(newpos, {name = item})
|
||||
end
|
||||
|
||||
core.sound_play("default_place_node_hard", {
|
||||
pos = newpos, gain = 1.0, max_hear_distance = 5}, true)
|
||||
|
||||
itemstack:take_item()
|
||||
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
@@ -0,0 +1,104 @@
|
||||
|
||||
All my models (K Pavel) and change code on valid license The MIT License
|
||||
|
||||
|
||||
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.
|
||||
|
||||
Honey block, cheese and Cheese block by TenPlus1 under CC0
|
||||
|
||||
Chicken/Cow/Panda/Pig/Sheep sounds from freesounds.org under CC0
|
||||
|
||||
Mutton, Pork and Rabbit meat textures by Piezo_ under CC0
|
||||
|
||||
mobs_panda_viking.png by Zlo under CC0
|
||||
|
||||
mobs_bucket_milk.png under (CC BY-SA 3.0) by ElementW (edited)
|
||||
|
||||
Models/Textures/Media by Krupnov Pavel (WTFPL)
|
||||
mobs_rat.b3d
|
||||
mobs_rat.png
|
||||
mobs_sheep.b3d (converted to .b3d by sirrobzerrone)
|
||||
mobs_stone_monster.b3d
|
||||
mobs_stone_monster.png
|
||||
mobs_dirt_monster.png
|
||||
mobs_sand_monster.png
|
||||
mobs_tree_monster.b3d
|
||||
mobs_tree_monster.png
|
||||
mobs_oerkki.b3d
|
||||
mobs_oerkki.png
|
||||
mobs_dungeon_master.b3d
|
||||
mobs_dungeon_master.png
|
||||
mobs_fireball.ogg
|
||||
|
||||
Models/Textures by Krupno Pavel (MIT)
|
||||
mobs_bee.b3d (converted to .b3d by sirrobzerrone)
|
||||
mobs_pumba.b3d (converted to .b3d by sirrobzerrone)
|
||||
mobs_pumba.png
|
||||
|
||||
Models/Textures by ExeterDad (CC0)
|
||||
mobs_bunny.b3d
|
||||
mobs_bunny_grey.png
|
||||
mobs_bunny_brown.png
|
||||
mobs_bunny_white.png
|
||||
|
||||
Models/Textures by JK Murray (CC0)
|
||||
mobs_chicken.b3d (converted to .b3d by sirrobzerrone)
|
||||
mobs_chicken.png
|
||||
mobs_chicken_brown.png
|
||||
mobs_chicken_black.png
|
||||
mobs_chick.png
|
||||
|
||||
Models/Textures by sirrobzerrone (CC0)
|
||||
mobs_bee.png
|
||||
mobs_cow.b3d
|
||||
mobs_cow.png
|
||||
mobs_cow2.png
|
||||
|
||||
Models/Textures by Jordach/BFD (WTFPL)
|
||||
mobs_kitten.b3d
|
||||
mobs_kitten_striped.png
|
||||
mobs_kitten_splotchy.png
|
||||
mobs_kitten_ginger.png
|
||||
mobs_kitten_sandy.png
|
||||
|
||||
Sounds by lolamadeus (CC0) http://freesound.org/people/lolamadeus/sounds/196251/
|
||||
mobs_kitten.ogg
|
||||
|
||||
Models/Textures by AspireMint (CC BY-SA 3.0)
|
||||
mobs_panda.b3d
|
||||
mobs_panda.png
|
||||
|
||||
Models/Textures by D00Med (CC BY-SA 3.0)
|
||||
mobs_penguin.b3d
|
||||
mobs_penguin.png
|
||||
|
||||
Textures by LithiumSound's Summer Field Texture Pack (CC BY-SA 4.0 NC ShareAlike International)
|
||||
mobs_sheep_base.png
|
||||
mobs_sheep_horns.png
|
||||
mobs_sheep_shaved.png
|
||||
mobs_sheep_wool.png [all edited by sirrobzeroone]
|
||||
|
||||
Sounds by Cyberpangolin (WTFPL) https://forum.minetest.net/viewtopic.php?t=10798
|
||||
mobs_bee.ogg
|
||||
mobs_spider.ogg
|
||||
mobs_rat.ogg
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=@1 Får
|
||||
Bee=Bi
|
||||
Beehive=Bikube
|
||||
Black=Sort
|
||||
Blue=Blå
|
||||
Brown=Brun
|
||||
Bucket of Milk=Spand med mælk
|
||||
Bunny=Kanin
|
||||
Butter=Smør
|
||||
Cheese=Ost
|
||||
Cheese Block=Osteblok
|
||||
Chicken=Høne
|
||||
Chicken Egg=Æg
|
||||
Cooked Chicken=Kogt høne
|
||||
Cooked Mutton=Kogt fårekød
|
||||
Cooked Porkchop=Kogt svinekotelet
|
||||
Cooked Rabbit=Kogt kanin
|
||||
Cooked Rat=Kogt rotte
|
||||
Cow=Ko
|
||||
Cow already milked!=Koen er allerede malket!
|
||||
Cyan=Cyan
|
||||
Dark Green=Dunkelgrøn
|
||||
Dark Grey=Dunkelgrå
|
||||
Feather=Fjer
|
||||
Fried Egg=Spejlæg
|
||||
Glass of Milk=Glas med mælk
|
||||
Green=Grøn
|
||||
Grey=Grå
|
||||
Hairball=Hårbold
|
||||
Honey=Honning
|
||||
Honey Block=Honningblok
|
||||
Kitten=Killing
|
||||
Magenta=Magenta
|
||||
Orange=Orange
|
||||
Panda=Panda
|
||||
Penguin=Pingvin
|
||||
Pink=Pink
|
||||
Rabbit Hide=Kaninhul
|
||||
Rat=Rotte
|
||||
Raw Chicken=Råt kyllingkød
|
||||
Raw Mutton=Råt fårekød
|
||||
Raw Porkchop=Rå svinekotelet
|
||||
Raw Rabbit=Råt kaninkød
|
||||
Red=Rød
|
||||
Violet=Violet
|
||||
Warthog=Vortesvin
|
||||
White=Hvid
|
||||
Yellow=Gul
|
||||
[MOD] Mobs Redo Animals loaded=[MOD] Mobs Redo Animals Hentet ind
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=@1 Schaf
|
||||
Bee=Biene
|
||||
Beehive=Bienenstock
|
||||
Black=Schwarzes
|
||||
Blue=Blaues
|
||||
Brown=Braunes
|
||||
Bucket of Milk=Eimer Milch
|
||||
Bunny=Häschen
|
||||
#Butter=
|
||||
Cheese=Käse
|
||||
Cheese Block=Käseblock
|
||||
Chicken=Huhn
|
||||
Chicken Egg=Hühnerei
|
||||
Cooked Chicken=Gekochtes Hühnchen
|
||||
Cooked Mutton=Gekochtes Hammelfleisch
|
||||
Cooked Porkchop=Gekochtes Schweinekotelett
|
||||
Cooked Rabbit=Gekochtes Kaninchen
|
||||
Cooked Rat=Gekochte Ratte
|
||||
Cow=Kuh
|
||||
Cow already milked!=Kuh ist bereits gemolken!
|
||||
Cyan=Cyan
|
||||
Dark Green=Dunkelgrünes
|
||||
Dark Grey=Dunkelgraues
|
||||
Feather=Feder
|
||||
Fried Egg=Spiegelei
|
||||
#Glass of Milk=
|
||||
Green=Grünes
|
||||
Grey=Graues
|
||||
#Hairball=
|
||||
Honey=Honig
|
||||
Honey Block=Honigblock
|
||||
Kitten=Kätzchen
|
||||
Magenta=Magenta
|
||||
Orange=Oranges
|
||||
#Panda=
|
||||
Penguin=Pinguin
|
||||
Pink=Pinkes
|
||||
Rabbit Hide=Kaninchenfell
|
||||
Rat=Ratte
|
||||
Raw Chicken=Rohes Hühnchen
|
||||
Raw Mutton=Rohes Hammelfleisch
|
||||
Raw Porkchop=Rohes Schweinekotelett
|
||||
Raw Rabbit=Rohes Kaninchen
|
||||
Red=Rotes
|
||||
Violet=Violettes
|
||||
Warthog=Warzenschwein
|
||||
White=Weißes
|
||||
Yellow=Gelbes
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
#@1 Sheep=
|
||||
#Bee=
|
||||
#Beehive=
|
||||
#Black=
|
||||
#Blue=
|
||||
#Brown=
|
||||
#Bucket of Milk=
|
||||
#Bunny=
|
||||
#Butter=
|
||||
#Cheese=
|
||||
#Cheese Block=
|
||||
#Chicken=
|
||||
#Chicken Egg=
|
||||
#Cooked Chicken=
|
||||
#Cooked Mutton=
|
||||
#Cooked Porkchop=
|
||||
#Cooked Rabbit=
|
||||
#Cooked Rat=
|
||||
#Cow=
|
||||
#Cow already milked!=
|
||||
#Cyan=
|
||||
#Dark Green=
|
||||
#Dark Grey=
|
||||
#Feather=
|
||||
#Fried Egg=
|
||||
#Glass of Milk=
|
||||
#Green=
|
||||
#Grey=
|
||||
#Hairball=
|
||||
#Honey=
|
||||
#Honey Block=
|
||||
#Kitten=
|
||||
#Magenta=
|
||||
#Orange=
|
||||
#Panda=
|
||||
#Penguin=
|
||||
#Pink=
|
||||
#Rabbit Hide=
|
||||
#Rat=
|
||||
#Raw Chicken=
|
||||
#Raw Mutton=
|
||||
#Raw Porkchop=
|
||||
#Raw Rabbit=
|
||||
#Red=
|
||||
#Violet=
|
||||
#Warthog=
|
||||
#White=
|
||||
#Yellow=
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain: mobs_animal
|
||||
Bee=Abelo
|
||||
Honey=Mielo
|
||||
Beehive=Abelujo
|
||||
Honey Block=Miela bloko
|
||||
Bunny=Kuniklo
|
||||
Raw Rabbit=Kruda kuniklaĵo
|
||||
Cooked Rabbit=Kuirita kuniklaĵo
|
||||
Rabbit Hide=Kuniklofelo
|
||||
Chicken=Koko
|
||||
Chicken Egg=Koka ovo
|
||||
Fried Egg=Kuirita ovo
|
||||
Raw Chicken=Kruda kokaĵo
|
||||
Cooked Chicken=Kuirita koko
|
||||
Feather=Plumo
|
||||
Cow already milked!=Bovo jam melkita!
|
||||
Cow=Bovo
|
||||
Bucket of Milk=Sitelo da lakto
|
||||
Glass of Milk=Glaso da lakto
|
||||
Butter=Butero
|
||||
Cheese=Fromaĝo
|
||||
Cheese Block=Fromaĝa bloko
|
||||
Wooden Bucket of Milk=Ligna sitelo da lakto
|
||||
Kitten=Katido
|
||||
Hairball=Haraĵo
|
||||
Panda=Ĉina urso
|
||||
Penguin=Pingveno
|
||||
Rat=Rato
|
||||
Cooked Rat=Kuirita rataĵo
|
||||
Black=Nigra
|
||||
Blue=Blua
|
||||
Brown=Bruna
|
||||
Cyan=Bluverda
|
||||
Dark Green=Malhela verda
|
||||
Dark Grey=Malhela griza
|
||||
Green=Verda
|
||||
Grey=Griza
|
||||
Magenta=Fuksina
|
||||
Orange=Oranĝa
|
||||
Pink=Rozkolora
|
||||
Red=Ruĝa
|
||||
Violet=Violkolora
|
||||
White=Blanka
|
||||
Yellow=Flava
|
||||
@1 Sheep=@1 ŝafo
|
||||
Raw Mutton=Kruda ŝafaĵo
|
||||
Cooked Mutton=Kuirita ŝafaĵo
|
||||
Warthog=Verukapro
|
||||
Raw Porkchop=Kruda porkaĵo
|
||||
Cooked Porkchop=Kuirita porkaĵo
|
||||
@@ -0,0 +1,46 @@
|
||||
# textdomain: mobs_animal
|
||||
Bee=Abeja
|
||||
Honey=Miel
|
||||
Beehive=Colmena
|
||||
Honey Block=Bloque de Mel
|
||||
Bunny=Conejo
|
||||
Raw Rabbit=Carne de Conejo
|
||||
Cooked Rabbit=Conejo Asado
|
||||
Rabbit Hide=Conejo oculto
|
||||
Chicken=Gallina
|
||||
Chicken Egg=Huevo de Gallina
|
||||
Fried Egg=Huevo Frito
|
||||
Raw Chicken=Gallina cruda
|
||||
Cooked Chicken=Gallina Asada
|
||||
Feather=Pluma
|
||||
Cow already milked!=Vaca ordeñada
|
||||
Cow=Vaca
|
||||
Bucket of Milk=Balde de leche
|
||||
Cheese=Queso
|
||||
Cheese Block=Bloque de queso
|
||||
[MOD] Mobs Redo 'Animals' loaded=[MOD] Mobs redo Animals cargado
|
||||
Kitten=Gato
|
||||
Penguin=Pinguino
|
||||
Rat=Raton
|
||||
Cooked Rat=Raton Asado
|
||||
Black=Negro
|
||||
Blue=Azul
|
||||
Brown=Marrom
|
||||
Cyan=Cian
|
||||
Dark Green=Verde Oscuro
|
||||
Dark Grey=Gris Oscuro
|
||||
Green=Verde
|
||||
Grey=Gris
|
||||
Magenta=Magenta
|
||||
Orange=Naranja
|
||||
Pink=Rosa
|
||||
Red=Rojo
|
||||
Violet=Violeta
|
||||
White=Blanco
|
||||
Yellow=Amarillo
|
||||
@1 Sheep=Oveja @1
|
||||
Raw Mutton=Carnero crudo
|
||||
Cooked Mutton=Carnero Assado
|
||||
Warthog=Javali
|
||||
Raw Porkchop=Costilla de Jabali crudo
|
||||
Cooked Porkchop=Costilla de Javali Assada
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=Mouton @1
|
||||
Bee=Abeille
|
||||
Beehive=Ruche
|
||||
Black=noir
|
||||
Blue=bleu
|
||||
Brown=marron
|
||||
Bucket of Milk=Seau de lait
|
||||
Bunny=Lapin
|
||||
Butter=Beurre
|
||||
Cheese=Fromage
|
||||
Cheese Block=Bloc de fromage
|
||||
Chicken=Poule
|
||||
Chicken Egg=Œuf
|
||||
Cooked Chicken=Poulet cuit
|
||||
Cooked Mutton=Mouton cuit
|
||||
Cooked Porkchop=Côte de sanglier cuite
|
||||
Cooked Rabbit=Lapin cuit
|
||||
Cooked Rat=Rat cuit
|
||||
Cow=Vache
|
||||
Cow already milked!=Vache déjà traite !
|
||||
Cyan=cyan
|
||||
Dark Green=vert foncé
|
||||
Dark Grey=gris foncé
|
||||
Feather=Plume
|
||||
Fried Egg=Œuf au plat
|
||||
Glass of Milk=Verre de lait
|
||||
Green=vert
|
||||
Grey=gris
|
||||
Hairball=Boule de poils
|
||||
Honey=Miel
|
||||
Honey Block=Bloc de miel
|
||||
Kitten=Chaton
|
||||
Magenta=magenta
|
||||
Orange=orange
|
||||
Panda=Panda
|
||||
Penguin=Manchot
|
||||
Pink=rose
|
||||
Rabbit Hide=Fourrure de lapin
|
||||
Rat=Rat
|
||||
Raw Chicken=Poulet cru
|
||||
Raw Mutton=Mouton cru
|
||||
Raw Porkchop=Côte de sanglier crue
|
||||
Raw Rabbit=Lapin cru
|
||||
Red=rouge
|
||||
Violet=violet
|
||||
Warthog=Sanglier
|
||||
White=blanc
|
||||
Yellow=jaune
|
||||
[MOD] Mobs Redo Animals loaded=[MOD] Animaux «Mobs Redo» chargés
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=Pecora @1
|
||||
Bee=Ape
|
||||
Beehive=Favo
|
||||
Black=Nera
|
||||
Blue=Blu
|
||||
Brown=Marrone
|
||||
Bucket of Milk=Secchio di latte
|
||||
Bunny=Coniglietto
|
||||
#Butter=
|
||||
Cheese=Formaggio
|
||||
Cheese Block=Blocco di formaggio
|
||||
Chicken=Gallina
|
||||
Chicken Egg=Uovo di gallina
|
||||
Cooked Chicken=Pollo cotto
|
||||
Cooked Mutton=Montone Cotto
|
||||
Cooked Porkchop=Bistecca di maiale cotta
|
||||
Cooked Rabbit=Coniglio Cotto
|
||||
Cooked Rat=Ratto cotto
|
||||
Cow=Mucca
|
||||
Cow already milked!=Mucca già munta!
|
||||
Cyan=Ciano
|
||||
Dark Green=Verde scuro
|
||||
Dark Grey=Grigio scuro
|
||||
Feather=Piuma
|
||||
Fried Egg=Uovo fritto
|
||||
#Glass of Milk=
|
||||
Green=Verde
|
||||
Grey=Grigia
|
||||
#Hairball=
|
||||
Honey=Miele
|
||||
Honey Block=Blocco di miele
|
||||
Kitten=Gattino
|
||||
Magenta=Magenta
|
||||
Orange=Arancione
|
||||
#Panda=
|
||||
Penguin=Pinguino
|
||||
Pink=Rosa
|
||||
Rabbit Hide=Pelle di Coniglio
|
||||
Rat=Ratto
|
||||
Raw Chicken=Pollo crudo
|
||||
Raw Mutton=Montone Crudo
|
||||
Raw Porkchop=Bistecca di maiale cruda
|
||||
Raw Rabbit=Coniglio Crudo
|
||||
Red=Rossa
|
||||
Violet=Viola
|
||||
Warthog=Facocero
|
||||
White=Bianca
|
||||
Yellow=Gialla
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=Biri-biri @1
|
||||
Bee=Lebah
|
||||
Beehive=Sarang Lebah
|
||||
Black=Hitam
|
||||
Blue=Biru
|
||||
Brown=Perang
|
||||
Bucket of Milk=Baldi Susu
|
||||
Bunny=Arnab
|
||||
#Butter=
|
||||
Cheese=Keju
|
||||
Cheese Block=Blok Keju
|
||||
Chicken=Ayam
|
||||
Chicken Egg=Telur Ayam
|
||||
Cooked Chicken=Ayam Bakar
|
||||
Cooked Mutton=Daging Biri-biri Bakar
|
||||
Cooked Porkchop=Daging Babi Bakar
|
||||
Cooked Rabbit=Daging Arnab Bakar
|
||||
Cooked Rat=Tikus Bakar
|
||||
Cow=Lembu
|
||||
Cow already milked!=Lembu telah diperah susunya!
|
||||
Cyan=Sian
|
||||
Dark Green=Hijau Gelap
|
||||
Dark Grey=Kelabu Gelap
|
||||
Feather=Bulu
|
||||
Fried Egg=Telur Goreng
|
||||
#Glass of Milk=
|
||||
Green=Hijau
|
||||
Grey=Kelabu
|
||||
#Hairball=
|
||||
Honey=Madu
|
||||
Honey Block=Blok Madu
|
||||
Kitten=Anak Kucing
|
||||
Magenta=Merah Lembayung
|
||||
Orange=Jingga
|
||||
#Panda=
|
||||
Penguin=Penguin
|
||||
Pink=Merah Jambu
|
||||
Rabbit Hide=Belulang Arnab
|
||||
Rat=Tikus
|
||||
Raw Chicken=Ayam Mentah
|
||||
Raw Mutton=Daging Biri-biri Mentah
|
||||
Raw Porkchop=Daging Babi Mentah
|
||||
Raw Rabbit=Daging Arnab Mentah
|
||||
Red=Merah
|
||||
Violet=Ungu
|
||||
Warthog=Babi Hutan
|
||||
White=Putih
|
||||
Yellow=Kuning
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,46 @@
|
||||
# textdomain:mobs_animal
|
||||
Bee=Abelha
|
||||
Honey=Mel
|
||||
Beehive=Colméia
|
||||
Honey Block=Bloco de Mel
|
||||
Bunny=Coelho
|
||||
Raw Rabbit=Carne de Coelho (Cru)
|
||||
Cooked Rabbit=Coelho (Assado)
|
||||
Rabbit Hide=Pele de Coelho
|
||||
Chicken=Galinha
|
||||
Chicken Egg=Ovo de Galinha
|
||||
Fried Egg=Ovo Frito
|
||||
Raw Chicken=Carne de Galinha (Crua)
|
||||
Cooked Chicken=Galinha Assada
|
||||
Feather=Pluma
|
||||
Cow already milked!=Vaca já ordenhada!
|
||||
Cow=Vaca
|
||||
Bucket of Milk=Balde de leite
|
||||
Cheese=Queijo
|
||||
Cheese Block=Bloco de Queijo
|
||||
[MOD] Mobs Redo 'Animals' loaded=[MOBS_ANIMAL] Mod carregado completamente
|
||||
Kitten=Gato
|
||||
Penguin=Pinguim
|
||||
Rat=Rato
|
||||
Cooked Rat=Rato (Assado)
|
||||
Black=Preto
|
||||
Blue=Azul
|
||||
Brown=Marrom
|
||||
Cyan=Ciano
|
||||
Dark Green=Verde Escuro
|
||||
Dark Grey=Cinza Escuro
|
||||
Green=Verde
|
||||
Grey=Cinza
|
||||
Magenta=Rosa Magenta
|
||||
Orange=Laranja
|
||||
Pink=Rosa
|
||||
Red=Vermelho
|
||||
Violet=Violeta
|
||||
White=Branco
|
||||
Yellow=Amarelo
|
||||
@1 Sheep=Ovelha @1
|
||||
Raw Mutton=Carneiro (Cru)
|
||||
Cooked Mutton=Carneiro (Assado)
|
||||
Warthog=Javali
|
||||
Raw Porkchop=Costeleta de Javali (Crua)
|
||||
Cooked Porkchop=Costeleta de Javali Assada
|
||||
@@ -0,0 +1,46 @@
|
||||
# textdomain:mobs_animal
|
||||
Bee=Abelha
|
||||
Honey=Mel
|
||||
Beehive=Colméia
|
||||
Honey Block=Bloco de Mel
|
||||
Bunny=Coelho
|
||||
Raw Rabbit=Carne de Coelho (Cru)
|
||||
Cooked Rabbit=Coelho (Assado)
|
||||
Rabbit Hide=Pele de Coelho
|
||||
Chicken=Galinha
|
||||
Chicken Egg=Ovo de Galinha
|
||||
Fried Egg=Ovo Frito
|
||||
Raw Chicken=Carne de Galinha (Crua)
|
||||
Cooked Chicken=Galinha Assada
|
||||
Feather=Pluma
|
||||
Cow already milked!=Vaca já ordenhada!
|
||||
Cow=Vaca
|
||||
Bucket of Milk=Balde de leite
|
||||
Cheese=Queijo
|
||||
Cheese Block=Bloco de Queijo
|
||||
[MOD] Mobs Redo 'Animals' loaded=[MOBS_ANIMAL] Mod carregado completamente
|
||||
Kitten=Gato
|
||||
Penguin=Pinguim
|
||||
Rat=Rato
|
||||
Cooked Rat=Rato (Assado)
|
||||
Black=Preto
|
||||
Blue=Azul
|
||||
Brown=Marrom
|
||||
Cyan=Ciano
|
||||
Dark Green=Verde Escuro
|
||||
Dark Grey=Cinza Escuro
|
||||
Green=Verde
|
||||
Grey=Cinza
|
||||
Magenta=Rosa Magenta
|
||||
Orange=Laranja
|
||||
Pink=Rosa
|
||||
Red=Vermelho
|
||||
Violet=Violeta
|
||||
White=Branco
|
||||
Yellow=Amarelo
|
||||
@1 Sheep=Ovelha @1
|
||||
Raw Mutton=Carneiro (Cru)
|
||||
Cooked Mutton=Carneiro (Assado)
|
||||
Warthog=Javali
|
||||
Raw Porkchop=Costeleta de Javali (Crua)
|
||||
Cooked Porkchop=Costeleta de Javali Assada
|
||||
@@ -0,0 +1,49 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=@1 Овца
|
||||
Bee=Пчела
|
||||
Beehive=Пчелиный Улей
|
||||
Black=Черная
|
||||
Blue=Синяя
|
||||
Brown=Коричневая
|
||||
Bucket of Milk=Ведро Молока
|
||||
Bunny=Кролик
|
||||
Butter=Масло
|
||||
Cheese=Сыр
|
||||
Cheese Block=Блок Сыра
|
||||
Chicken=Курица
|
||||
Chicken Egg=Куриное Яйцо
|
||||
Cooked Chicken=Приготовленная Курятина
|
||||
Cooked Mutton=Приготовленная Баранина
|
||||
Cooked Porkchop=Приготовленные Отбивные
|
||||
Cooked Rabbit=Приготовленная Крольчатина
|
||||
Cooked Rat=Приготовленная Крыса
|
||||
Cow=Корова
|
||||
Cow already milked!=Корова уже подоена!
|
||||
Cyan=Голубая
|
||||
Dark Green=Темно-зеленая
|
||||
Dark Grey=Темно-серая
|
||||
Feather=Перо
|
||||
Fried Egg=Яичница
|
||||
Glass of Milk=Стакан Молока
|
||||
Green=Зеленая
|
||||
Grey=Серая
|
||||
Hairball=Комочек шерсти
|
||||
Honey=Мёд
|
||||
Honey Block=Блок Мёда
|
||||
Kitten=Котенок
|
||||
Magenta=Пурпурная
|
||||
Orange=Оранжевая
|
||||
Panda=Панда
|
||||
Penguin=Пингвин
|
||||
Pink=Розовая
|
||||
Rabbit Hide=Кроличья Шкурка
|
||||
Rat=Крыса
|
||||
Raw Chicken=Сырая Курятина
|
||||
Raw Mutton=Сырая Баранина
|
||||
Raw Porkchop=Свиные Отбивные
|
||||
Raw Rabbit=Сырая Крольчатина
|
||||
Red=Красная
|
||||
Violet=Фиолетовая
|
||||
Warthog=Бородавочник
|
||||
White=Белая
|
||||
Yellow=Желтая
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=@1 Koyun
|
||||
Bee=Arı
|
||||
Beehive=Arı kovanı
|
||||
Black=Siyah
|
||||
Blue=Mavi
|
||||
Brown=Kahverengi
|
||||
Bucket of Milk=Süt kovası
|
||||
Bunny=Tavşan
|
||||
#Butter=
|
||||
Cheese=Peynir
|
||||
Cheese Block=Peynir bloğu
|
||||
Chicken=Tavuk
|
||||
Chicken Egg=Tavuk yumurtası
|
||||
Cooked Chicken=Pişmiş tavuk
|
||||
Cooked Mutton=pişmiş kuzu
|
||||
Cooked Porkchop=Pişmiş pirzola
|
||||
Cooked Rabbit=pişmiş tavşan
|
||||
Cooked Rat=Pişmiş sıçan
|
||||
Cow=İnek
|
||||
Cow already milked!=İnekte süt yok!
|
||||
Cyan=Camgöbeği
|
||||
Dark Green=Koyu yeşil
|
||||
Dark Grey=Koyu gri
|
||||
#Feather=
|
||||
Fried Egg=Kızarmış yumurta
|
||||
#Glass of Milk=
|
||||
Green=Yeşil
|
||||
Grey=Gri
|
||||
#Hairball=
|
||||
Honey=Bal
|
||||
Honey Block=Bal bloğu
|
||||
Kitten=Yavru kedi
|
||||
Magenta=Macenta
|
||||
Orange=Turuncu
|
||||
#Panda=
|
||||
#Penguin=
|
||||
Pink=Pembe
|
||||
Rabbit Hide=tavşan kürkü
|
||||
Rat=Sıçan
|
||||
Raw Chicken=Çiğ tavuk
|
||||
Raw Mutton=çiğ kuzu
|
||||
Raw Porkchop=Çiğ pirzola
|
||||
Raw Rabbit=çiğ tavşan
|
||||
Red=Kırmızı
|
||||
Violet=Mor
|
||||
Warthog=Domuz
|
||||
White=Beyaz
|
||||
Yellow=Sarı
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,52 @@
|
||||
# textdomain:mobs_animal
|
||||
Mobs Animal=Моби Тварини
|
||||
Add farm animals and a few extra into your world.=Додає свійських тварин і трохи додаткового контенту у світ.
|
||||
Adds farm animals.=Додає свійських тварин.
|
||||
@1 Sheep=@1 вівця
|
||||
Bee=Бджола
|
||||
Beehive=Бджолиний вулик
|
||||
Black=Чорна
|
||||
Blue=Синя
|
||||
Brown=Коричнева
|
||||
Bucket of Milk=Відро молока
|
||||
Bunny=Кролик
|
||||
Butter=Масло
|
||||
Cheese=Твердий сир
|
||||
Cheese Block=Блок твердого сиру
|
||||
Chicken=Курка
|
||||
Chicken Egg=Яйце курки
|
||||
Cooked Chicken=Приготовлена курятина
|
||||
Cooked Mutton=Приготовлена баранина
|
||||
Cooked Porkchop=Приготовлені відбивні
|
||||
Cooked Rabbit=Приготовлена крольчатина
|
||||
Cooked Rat=Приготовлений пацюк
|
||||
Cow=Корова
|
||||
Cow already milked!=Корова вже подоєна!
|
||||
Cyan=Блакитна
|
||||
Dark Green=Темно-зелена
|
||||
Dark Grey=Темно-сіра
|
||||
Feather=Перо
|
||||
Fried Egg=Яєшня
|
||||
Glass of Milk=Склянка молока
|
||||
Green=Зелена
|
||||
Grey=Сіра
|
||||
Hairball=Купка шерсті
|
||||
Honey=Мед
|
||||
Honey Block=Блок меду
|
||||
Kitten=Кошеня
|
||||
Magenta=Пурпурна
|
||||
Orange=Помаранчева
|
||||
Panda=Панда
|
||||
Penguin=Пінгвін
|
||||
Pink=Рожева
|
||||
Rabbit Hide=Кроляча шкірка
|
||||
Rat=Пацюк
|
||||
Raw Chicken=Сира курятина
|
||||
Raw Mutton=Сира баранина
|
||||
Raw Porkchop=Свинячі відбивні
|
||||
Raw Rabbit=Сира крольчатина
|
||||
Red=Червона
|
||||
Violet=Фіолетова
|
||||
Warthog=Бородавочник
|
||||
White=Біла
|
||||
Yellow=Жовта
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=@1羊
|
||||
Bee=蜜蜂
|
||||
Beehive=蜂巢
|
||||
Black=黑
|
||||
Blue=蓝
|
||||
Brown=棕
|
||||
Bucket of Milk=一桶牛奶
|
||||
Bunny=兔子
|
||||
Butter=黄油
|
||||
Cheese=奶酪
|
||||
Cheese Block=奶酪方块
|
||||
Chicken=鸡
|
||||
Chicken Egg=鸡蛋
|
||||
Cooked Chicken=熟鸡肉
|
||||
Cooked Mutton=熟羊肉
|
||||
Cooked Porkchop=熟猪排
|
||||
Cooked Rabbit=熟兔肉
|
||||
Cooked Rat=熟老鼠
|
||||
Cow=奶牛
|
||||
Cow already milked!=奶牛已被挤奶!
|
||||
Cyan=青
|
||||
Dark Green=暗绿
|
||||
Dark Grey=暗灰
|
||||
Feather=羽毛
|
||||
Fried Egg=煎蛋
|
||||
Glass of Milk=一杯牛奶
|
||||
Green=绿
|
||||
Grey=灰
|
||||
Hairball=毛球
|
||||
Honey=蜂蜜
|
||||
Honey Block=蜂蜜方块
|
||||
Kitten=小猫
|
||||
Magenta=品红
|
||||
Orange=橙
|
||||
Panda=熊猫
|
||||
Penguin=企鹅
|
||||
Pink=粉红
|
||||
Rabbit Hide=兔子皮
|
||||
Rat=老鼠
|
||||
Raw Chicken=生鸡肉
|
||||
Raw Mutton=生羊肉
|
||||
Raw Porkchop=生猪排
|
||||
Raw Rabbit=生兔肉
|
||||
Red=红
|
||||
Violet=紫
|
||||
Warthog=野猪
|
||||
White=白
|
||||
Yellow=黄
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,50 @@
|
||||
# textdomain:mobs_animal
|
||||
@1 Sheep=@1羊
|
||||
Bee=蜜蜂
|
||||
Beehive=蜂巢
|
||||
Black=黑
|
||||
Blue=藍
|
||||
Brown=棕
|
||||
Bucket of Milk=一桶牛奶
|
||||
Bunny=兔子
|
||||
Butter=黃油
|
||||
Cheese=奶酪
|
||||
Cheese Block=奶酪方塊
|
||||
Chicken=雞
|
||||
Chicken Egg=雞蛋
|
||||
Cooked Chicken=熟雞肉
|
||||
Cooked Mutton=熟羊肉
|
||||
Cooked Porkchop=熟豬排
|
||||
Cooked Rabbit=熟兔肉
|
||||
Cooked Rat=熟老鼠
|
||||
Cow=奶牛
|
||||
Cow already milked!=奶牛已被擠奶!
|
||||
Cyan=青
|
||||
Dark Green=暗綠
|
||||
Dark Grey=暗灰
|
||||
Feather=羽毛
|
||||
Fried Egg=煎蛋
|
||||
Glass of Milk=一杯牛奶
|
||||
Green=綠
|
||||
Grey=灰
|
||||
Hairball=毛球
|
||||
Honey=蜂蜜
|
||||
Honey Block=蜂蜜方塊
|
||||
Kitten=小貓
|
||||
Magenta=品紅
|
||||
Orange=橙
|
||||
Panda=熊貓
|
||||
Penguin=企鵝
|
||||
Pink=粉紅
|
||||
Rabbit Hide=兔子皮
|
||||
Rat=老鼠
|
||||
Raw Chicken=生雞肉
|
||||
Raw Mutton=生羊肉
|
||||
Raw Porkchop=生豬排
|
||||
Raw Rabbit=生兔肉
|
||||
Red=紅
|
||||
Violet=紫
|
||||
Warthog=野豬
|
||||
White=白
|
||||
Yellow=黃
|
||||
#[MOD] Mobs Redo Animals loaded=
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
-- add lucky blocks
|
||||
|
||||
lucky_block:add_blocks({
|
||||
{"spw", "mobs_animal:sheep", 5},
|
||||
{"spw", "mobs_animal:rat", 5},
|
||||
{"dro", {"mobs:rat_cooked"}, 5},
|
||||
{"spw", "mobs_animal:bunny", 3},
|
||||
{"nod", "mobs:honey_block", 0},
|
||||
{"spw", "mobs_animal:pumba", 5},
|
||||
{"nod", "mobs:cheeseblock", 0},
|
||||
{"spw", "mobs_animal:chicken", 5},
|
||||
{"dro", {"mobs:egg"}, 5},
|
||||
{"spw", "mobs_animal:cow", 5},
|
||||
{"dro", {"mobs:bucket_milk", "bucket:bucket_water"}, 8},
|
||||
{"spw", "mobs_animal: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},
|
||||
{"spw", "mobs_animal:penguin", 2}
|
||||
})
|
||||
|
||||
-- if nyancat found add special block
|
||||
|
||||
if core.registered_nodes["default:nyancat"] then
|
||||
|
||||
lucky_block:add_blocks({
|
||||
{"tro", "default:nyancat", "mobs_kitten", true}
|
||||
})
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
name = mobs_animal
|
||||
description = Add farm animals and a few extra into your world.
|
||||
depends = mobs
|
||||
optional_depends = default, farming, lucky_block
|
||||
min_minetest_version = 5.0
|
||||
@@ -0,0 +1,87 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- Panda by AspireMint (CC BY-SA 3.0)
|
||||
|
||||
mobs:register_mob("mobs_animal:panda", {
|
||||
description = S("Panda"),
|
||||
stepheight = 0.6,
|
||||
type = "animal",
|
||||
passive = false,
|
||||
attack_type = "dogfight",
|
||||
group_attack = false,
|
||||
owner_loyal = true,
|
||||
attack_npcs = false,
|
||||
reach = 2,
|
||||
damage = 3, attack_chance = 90,
|
||||
hp_min = 10,
|
||||
hp_max = 24,
|
||||
armor = 100,
|
||||
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_height = 3,
|
||||
follow = {"ethereal:bamboo", "bamboo:trunk", "group:bamboo"},
|
||||
view_range = 8,
|
||||
drops = {
|
||||
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2}
|
||||
},
|
||||
water_damage = 0.01,
|
||||
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, -- rest
|
||||
stand2_start = 1, stand2_end = 1, -- covers eyes
|
||||
stand3_start = 2, stand3_end = 2, -- surprised
|
||||
walk_start = 10, walk_end = 70,
|
||||
run_start = 10, run_end = 70, run_speed = 60,
|
||||
punch_start = 80, punch_end = 120
|
||||
},
|
||||
|
||||
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
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
local spawn_on = "default:dirt_with_rainforest_litter"
|
||||
|
||||
if core.get_modpath("ethereal") then
|
||||
spawn_on = "ethereal:bamboo_dirt"
|
||||
elseif core.get_modpath("everness") then
|
||||
spawn_on = "everness:dirt_with_grass_1"
|
||||
end
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:panda",
|
||||
nodes = {spawn_on},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 10,
|
||||
max_height = 80,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:panda", S("Panda"), "mobs_panda_inv.png")
|
||||
@@ -0,0 +1,77 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- Penguin by D00Med
|
||||
|
||||
mobs:register_mob("mobs_animal:penguin", {
|
||||
description = S("Penguin"),
|
||||
stepheight = 0.6,
|
||||
type = "animal",
|
||||
passive = true,
|
||||
reach = 1,
|
||||
hp_min = 5,
|
||||
hp_max = 10,
|
||||
armor = 100,
|
||||
collisionbox = {-0.2, -0.0, -0.2, 0.2, 0.5, 0.2},
|
||||
visual = "mesh",
|
||||
mesh = "mobs_penguin.b3d",
|
||||
visual_size = {x = 0.25, y = 0.25},
|
||||
textures = {{"mobs_penguin.png"}},
|
||||
sounds = {},
|
||||
makes_footstep_sound = true,
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
jump_height = 3,
|
||||
stepheight = 1.1,
|
||||
drops = {
|
||||
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1}
|
||||
},
|
||||
water_damage = 0,
|
||||
lava_damage = 4,
|
||||
light_damage = 0,
|
||||
fear_height = 2,
|
||||
animation = {
|
||||
speed_normal = 15,
|
||||
stand_start = 1, stand_end = 20,
|
||||
walk_start = 25, walk_end = 45,
|
||||
fly_start = 75, fly_end = 95 -- swim animation
|
||||
-- 50-70 is slide/water idle
|
||||
},
|
||||
fly_in = {"default:water_source", "default:water_flowing"},
|
||||
floats = 0,
|
||||
follow = {
|
||||
"group:food_fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical",
|
||||
"mobs_fish:clownfish_set", "mobs_fish:tropical_set", "xocean:fish_edible",
|
||||
"group:fish"
|
||||
},
|
||||
view_range = 5,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
-- feed or tame
|
||||
if mobs:feed_tame(self, clicker, 4, false, true) then return end
|
||||
if mobs:protect(self, clicker) then return end
|
||||
if mobs:capture_mob(self, clicker, 5, 50, 80, false, nil) then return end
|
||||
end
|
||||
})
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:penguin",
|
||||
nodes = {"default:snowblock"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 20000,
|
||||
min_height = 0,
|
||||
max_height = 200,
|
||||
day_toggle = true
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:penguin", S("Penguin"), "mobs_penguin_inv.png")
|
||||
@@ -0,0 +1,110 @@
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
|
||||
-- Rat by KPavel and PilzAdam (B3D model by sirrobzeroone)
|
||||
|
||||
mobs:register_mob("mobs_animal:rat", {
|
||||
description = S("Rat"),
|
||||
stepheight = 0.6,
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 1,
|
||||
hp_max = 4,
|
||||
armor = 100,
|
||||
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"},
|
||||
{"mobs_rat3.png"}
|
||||
},
|
||||
makes_footstep_sound = false,
|
||||
sounds = {random = "mobs_rat"},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
water_damage = 0,
|
||||
lava_damage = 4,
|
||||
light_damage = 0,
|
||||
fear_height = 2,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
mobs:capture_mob(self, clicker, 50, 90, 0, true, "mobs_animal:rat")
|
||||
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:get_pos()
|
||||
|
||||
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,
|
||||
]]
|
||||
})
|
||||
|
||||
-- example on_spawn function
|
||||
|
||||
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
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
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,
|
||||
})
|
||||
end
|
||||
|
||||
-- spawn egg
|
||||
|
||||
mobs:register_egg("mobs_animal:rat", S("Rat"), "mobs_rat_inv.png")
|
||||
|
||||
-- compatibility with older mobs mod
|
||||
|
||||
mobs:alias_mob("mobs:rat", "mobs_animal:rat")
|
||||
|
||||
-- cooked rat, yummy!
|
||||
|
||||
core.register_craftitem(":mobs:rat_cooked", {
|
||||
description = S("Cooked Rat"),
|
||||
inventory_image = "mobs_cooked_rat.png",
|
||||
on_use = core.item_eat(3),
|
||||
groups = {food_rat = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:rat_cooked", 3)
|
||||
|
||||
core.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:rat_cooked",
|
||||
recipe = "mobs_animal:rat",
|
||||
cooktime = 5
|
||||
})
|
||||
@@ -0,0 +1,45 @@
|
||||
# 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 or grass. Can also be picked up and placed in inventory and gives 1 raw rabbit and 1 rabbit hide 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 live rats or raw fish (found in ethereal) and tamed. They can sometimes leave you little gifts of a hairball, remember to check just incase it contains an item.
|
||||
|
||||
---
|
||||
### 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 when tamed. 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.
|
||||
|
||||
---
|
||||
### 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.
|
||||
|
||||
---
|
||||
### 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.
|
||||
|
||||
---
|
||||
### Panda
|
||||
These monochrome cuties spawn in Ethereal's bamboo biome and can be tamed with bamboo stalks :) Remember they have claws though.
|
||||
|
||||
---
|
||||
*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...*
|
||||
|
||||
#### Lucky Blocks: 21
|
||||
|
After Width: | Height: | Size: 229 KiB |
@@ -0,0 +1,13 @@
|
||||
mobs_animal.bee (Enable Bee) bool true
|
||||
mobs_animal.bunny (Enable Bunny) bool true
|
||||
mobs_animal.chicken (Enable Chicken) bool true
|
||||
mobs_animal.cow (Enable Cow) bool true
|
||||
mobs_animal.kitten (Enable Kitten) bool true
|
||||
mobs_animal.panda (Enable Panda) bool true
|
||||
mobs_animal.penguin (Enable Penguin) bool true
|
||||
mobs_animal.rat (Enable Rat) bool true
|
||||
mobs_animal.sheep (Enable Sheep) bool true
|
||||
mobs_animal.warthog (Enable Warthog) bool true
|
||||
mobs_animal.hairball (Enable Kitten Hairball drops) bool true
|
||||
|
||||
mobs_animal.eat_grass_block (Enable Cow/Sheep eating grass blocks) bool false
|
||||
@@ -0,0 +1,518 @@
|
||||
|
||||
-- translation and localize function
|
||||
|
||||
local S = core.get_translator("mobs_animal")
|
||||
local random = math.random
|
||||
|
||||
-- should sheep eat grass blocks and mess up the environment?
|
||||
|
||||
local eat_gb = core.settings:get_bool("mobs_animal.eat_grass_block")
|
||||
local replace_what = { {"group:grass", "air", -1} }
|
||||
|
||||
if eat_gb then
|
||||
table.insert(replace_what, {"default:dirt_with_grass", "default:dirt", -2})
|
||||
end
|
||||
|
||||
-- sheep colour table
|
||||
|
||||
local all_colours = {
|
||||
{"black", S("Black"), "#212121b0"}, -- referenced down in mobs:spawn
|
||||
{"blue", S("Blue"), "#015dbb70"},
|
||||
{"brown", S("Brown"), "#663300a0"}, -- referenced down in mobs:spawn
|
||||
{"cyan", S("Cyan"), "#00b4bf70"},
|
||||
{"dark_green", S("Dark Green"), "#005b0770"},
|
||||
{"dark_grey", S("Dark Grey"), "#444444b0"}, -- referenced down in mobs:spawn
|
||||
{"green", S("Green"), "#61ff0170"},
|
||||
{"grey", S("Grey"), "#919191b0"}, -- referenced down in mobs:spawn
|
||||
{"magenta", S("Magenta"), "#ed03ad70"},
|
||||
{"orange", S("Orange"), "#ff840170"},
|
||||
{"pink", S("Pink"), "#ff85c470"},
|
||||
{"red", S("Red"), "#ff0000a0"},
|
||||
{"violet", S("Violet"), "#5c00c970"},
|
||||
{"white", S("White"), "#ffffffc0"}, -- referenced down in mobs:spawn
|
||||
{"yellow", S("Yellow"), "#fff80070"}
|
||||
}
|
||||
|
||||
-- Sheep by PilzAdam/K Pavel, texture converted to minetest by AMMOnym from Summerfield pack
|
||||
|
||||
for _, col in ipairs(all_colours) do
|
||||
|
||||
local drops_normal = {
|
||||
{name = "mobs:mutton_raw", chance = 1, min = 1, max = 2},
|
||||
{name = "wool:" .. col[1], chance = 1, min = 1, max = 1}
|
||||
}
|
||||
|
||||
local drops_gotten = {
|
||||
{name = "mobs:mutton_raw", chance = 1, min = 1, max = 2}
|
||||
}
|
||||
|
||||
local function horn_texture_sel(horns, gotten, colr)
|
||||
|
||||
-- get override colours hex value from table
|
||||
if colr then
|
||||
|
||||
for _2, col2 in ipairs(all_colours) do
|
||||
|
||||
if col2[1] == colr then colr = col2[3] ; break end
|
||||
end
|
||||
end
|
||||
|
||||
local base_text = "mobs_sheep_base.png"
|
||||
local wool_shave_text = "mobs_sheep_wool.png"
|
||||
local shav_text = "mobs_sheep_shaved.png"
|
||||
local horn_text = "mobs_sheep_horns.png"
|
||||
local col_override = colr and colr or col[3]
|
||||
local col_text = "^[multiply:" .. col_override
|
||||
|
||||
if gotten then
|
||||
wool_shave_text = shav_text ; col_text = ""
|
||||
end
|
||||
|
||||
-- results in unneccesary brackets for shaved but these are ignored by engine
|
||||
local textures = base_text .. "^(" .. wool_shave_text .. col_text .. ")"
|
||||
|
||||
if horns then
|
||||
textures = base_text .. "^" .. horn_text .. "^(" .. wool_shave_text
|
||||
.. col_text .. ")"
|
||||
end
|
||||
|
||||
return textures
|
||||
end
|
||||
|
||||
mobs:register_mob("mobs_animal:sheep_" .. col[1], {
|
||||
description = S("@1 Sheep", col[2]),
|
||||
stay_near = {"farming:straw", 10},
|
||||
stepheight = 0.6,
|
||||
type = "animal",
|
||||
passive = true,
|
||||
hp_min = 8,
|
||||
hp_max = 12,
|
||||
armor = 100,
|
||||
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^[multiply:" .. col[3] .. ")"}
|
||||
},
|
||||
gotten_texture = {"mobs_sheep_base.png^mobs_sheep_shaved.png"},
|
||||
makes_footstep_sound = true,
|
||||
sounds = {
|
||||
random = "mobs_sheep",
|
||||
replace = "default_dig_crumbly"
|
||||
},
|
||||
walk_velocity = 1,
|
||||
run_velocity = 2,
|
||||
runaway = true,
|
||||
jump_height = 5,
|
||||
pushable = true,
|
||||
drops = drops_normal,
|
||||
water_damage = 0.01,
|
||||
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,
|
||||
run_start = 81, run_end = 100, run_speed = 40,
|
||||
-- no death animation so we'll re-use 2 standing frames at a speed of 1 fps
|
||||
-- and have mob rotate while dying.
|
||||
die_start = 1, die_end = 2, die_speed = 1,
|
||||
die_loop = false, die_rotate = true
|
||||
},
|
||||
follow = {
|
||||
"farming:wheat", "default:grass_1", "farming:barley",
|
||||
"farming:oat", "farming:rye"
|
||||
},
|
||||
view_range = 8,
|
||||
replace_rate = 10,
|
||||
replace_what = replace_what,
|
||||
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.drops = drops_normal
|
||||
|
||||
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
|
||||
|
||||
self.object:set_properties({textures = {textures}})
|
||||
|
||||
-- base_texture must be kept up to date for static_save so horns persist
|
||||
-- visually on server/game restart
|
||||
self.base_texture = {textures}
|
||||
end
|
||||
end,
|
||||
|
||||
on_breed = function(parent1, parent2)
|
||||
|
||||
-- simple truth table P1/P2 horns/no_horns
|
||||
local breed_out = {
|
||||
["P1_N"] = {["P2_N"] = 5 ,["P2_H"] = 50},
|
||||
["P1_H"] = {["P2_N"] = 50,["P2_H"] = 95}
|
||||
}
|
||||
|
||||
local p1 = parent1.attribute_horns and "P1_H" or "P1_N"
|
||||
local p2 = parent2.attribute_horns and "P2_H" or "P2_N"
|
||||
local horn_chance = breed_out[p1][p2]
|
||||
local horns = random(100) <= horn_chance
|
||||
local pos = parent1.object:get_pos()
|
||||
|
||||
-- can't see an easy way to pass horn attribute into
|
||||
-- child entity def, handle all spawning here, unfortunate
|
||||
-- code replication from mobs_redo api.lua line 1497+
|
||||
-- replace "self" with "parent1" and few other minor tweaks
|
||||
----------------------------------------------------
|
||||
pos.y = pos.y + 0.5 -- spawn child a little higher
|
||||
|
||||
local mob = core.add_entity(pos, parent1.name)
|
||||
local ent2 = mob:get_luaentity()
|
||||
|
||||
-- remove horns from parents' texture string, lambs dont have horns
|
||||
local textures = string.gsub(parent1.base_texture[1],
|
||||
"%^mobs_sheep_horns.png", "")
|
||||
|
||||
-- using specific child texture (if found)
|
||||
if parent1.child_texture then
|
||||
textures = parent1.child_texture[1]
|
||||
end
|
||||
|
||||
-- set baby mob to half size
|
||||
mobs:scale_mob(ent2, .5, .5)
|
||||
mob:set_properties({textures = {textures}})
|
||||
|
||||
-- tamed and owned by parents' owner
|
||||
ent2.child = true
|
||||
ent2.tamed = true
|
||||
ent2.owner = parent1.owner
|
||||
ent2.attribute_horns = horns
|
||||
|
||||
-- stop mobs_redo api from spawning child
|
||||
return false
|
||||
end,
|
||||
|
||||
-- fix any issue with horns by re-checking
|
||||
on_spawn = function(self)
|
||||
|
||||
if self.child then return end -- baby sheep dont have horns
|
||||
|
||||
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
|
||||
|
||||
self.object:set_properties({textures = {textures}})
|
||||
self.base_texture = {textures}
|
||||
end,
|
||||
|
||||
on_grown = function(self)
|
||||
|
||||
-- add the horns if we have horns when fully grown
|
||||
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
|
||||
|
||||
self.object:set_properties({textures = {textures}})
|
||||
self.base_texture = {textures}
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
local prop = self.object:get_properties()
|
||||
|
||||
pos.y = pos.y + (prop.collisionbox[2] * -1) - 0.4
|
||||
|
||||
self.object:set_pos(pos)
|
||||
|
||||
-- jump slightly when fully grown so as not to fall into ground
|
||||
self.object:set_velocity({x = 0, y = 2, z = 0 })
|
||||
end,
|
||||
|
||||
on_rightclick = function(self, clicker)
|
||||
|
||||
-- are we feeding?
|
||||
if mobs:feed_tame(self, clicker, 8, true, true) then
|
||||
|
||||
if not self.child then
|
||||
|
||||
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
|
||||
|
||||
self.object:set_properties({textures = {textures}})
|
||||
self.base_texture = {textures}
|
||||
end
|
||||
|
||||
--if fed 7 times then sheep regrows wool
|
||||
if self.food and self.food > 6 then
|
||||
|
||||
self.gotten = false
|
||||
self.drops = drops_normal
|
||||
|
||||
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
|
||||
|
||||
self.object:set_properties({textures = {textures}})
|
||||
self.base_texture = {textures}
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
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 core.get_modpath("wool") then
|
||||
return
|
||||
end
|
||||
|
||||
self.gotten = true -- shaved
|
||||
self.drops = drops_gotten
|
||||
self.food = 0 -- reset food
|
||||
|
||||
local obj = core.add_item(
|
||||
self.object:get_pos(),
|
||||
ItemStack("wool:" .. col[1] .. " " .. random(3))
|
||||
)
|
||||
|
||||
if obj then
|
||||
obj:set_velocity({x = random(-1, 1), y = 5, z = random(-1, 1)})
|
||||
end
|
||||
|
||||
item:add_wear(650) -- 100 uses
|
||||
|
||||
clicker:set_wielded_item(item)
|
||||
|
||||
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
|
||||
|
||||
self.object:set_properties({textures = {textures}})
|
||||
self.base_texture = {textures}
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
-- 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
|
||||
|
||||
-- only dye if colour option available and sheep not same colour
|
||||
if c[1] == colr and self.name ~= "mobs_animal:sheep_" .. colr then
|
||||
|
||||
local pos = self.object:get_pos()
|
||||
|
||||
-- add new coloured sheep
|
||||
local mob = core.add_entity(pos, "mobs_animal:sheep_" .. colr)
|
||||
local ent = mob:get_luaentity()
|
||||
|
||||
if ent then
|
||||
|
||||
local prop = self.object:get_properties()
|
||||
|
||||
-- add old sheep attributes
|
||||
ent.attribute_horns = self.attribute_horns
|
||||
ent._nametag = prop.nametag
|
||||
ent.owner = name
|
||||
ent.tamed = true
|
||||
ent.protected = self.protected
|
||||
ent.fire_damage = self.fire_damage
|
||||
|
||||
-- set sheep texture with colour override since we're
|
||||
-- calling function inside different sheep
|
||||
local textures = horn_texture_sel(
|
||||
self.attribute_horns, false, colr)
|
||||
|
||||
ent.base_texture = {textures}
|
||||
ent.object:set_properties({
|
||||
textures = {textures}
|
||||
})
|
||||
|
||||
-- remove old sheep
|
||||
self.object:remove()
|
||||
|
||||
-- take item
|
||||
if not mobs.is_creative(clicker:get_player_name()) then
|
||||
item:take_item()
|
||||
clicker:set_wielded_item(item)
|
||||
end
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
-- protect mod with mobs:protector item
|
||||
if mobs:protect(self, clicker) then return end
|
||||
|
||||
--are we capturing?
|
||||
if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
|
||||
end
|
||||
})
|
||||
|
||||
-- spawn egg
|
||||
mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]),
|
||||
"wool_" .. col[1] .. ".png^mobs_sheep_inv.png")
|
||||
|
||||
-- compatibility
|
||||
mobs:alias_mob("mobs:sheep_" .. col[1], "mobs_animal:sheep_" .. col[1])
|
||||
end
|
||||
|
||||
-- where to spawn
|
||||
|
||||
if not mobs.custom_spawn_animal then
|
||||
|
||||
local max_ht = 400
|
||||
local spawn_on = {"default:dirt_with_grass", "ethereal:green_dirt"}
|
||||
local mod_ethereal = core.get_modpath("ethereal")
|
||||
local spawn_chance = mod_ethereal and 12000 or 8000
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:sheep_white",
|
||||
nodes = spawn_on,
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = spawn_chance,
|
||||
min_height = 0,
|
||||
max_height = max_ht,
|
||||
day_toggle = true,
|
||||
active_object_count = 3,
|
||||
|
||||
-- custom function to spawn sheep herds around main mob
|
||||
on_spawn = function(self, pos)
|
||||
|
||||
local nat_colors = {-- reference for all_colours table
|
||||
["white"] = 14,
|
||||
["grey"] = 8,
|
||||
["dark_grey"] = 6,
|
||||
["black"] = 1,
|
||||
["brown"] = 3
|
||||
}
|
||||
|
||||
local function random_sheep(pos, first)
|
||||
|
||||
local types = "white"
|
||||
local color = all_colours[nat_colors["white"]][3]
|
||||
|
||||
-- Random colour selection
|
||||
-- black(1/8), brown(1/16), dark_grey(1/32), grey(1/32), 6/8 white
|
||||
local ran_col = random(32)
|
||||
|
||||
if ran_col <= 8 then
|
||||
if ran_col == 1 then
|
||||
types = "dark_grey"
|
||||
elseif ran_col == 2 then
|
||||
types = "grey"
|
||||
elseif ran_col >= 3 and ran_col <= 4 then
|
||||
types = "brown"
|
||||
else
|
||||
types = "black"
|
||||
end
|
||||
end
|
||||
|
||||
-- 1/4 chance of lamb
|
||||
local lamb
|
||||
|
||||
if not first then
|
||||
lamb = random(4) == 1
|
||||
end
|
||||
|
||||
-- store returned entity data from mobs:add_mob, "nil" indicates the
|
||||
-- rules in mobs:add_mob stopped mob from being spawned/created.
|
||||
local entity = mobs:add_mob(pos,
|
||||
{name = "mobs_animal:sheep_" .. types, child = lamb})
|
||||
|
||||
-- nil check
|
||||
if not entity then return end
|
||||
|
||||
if not lamb then
|
||||
-- Set horns attribute, lower height will be rarer.
|
||||
-- This wont affect mobs spawned by egg those only spawn hornless sheep.
|
||||
local horns = random(max_ht) <= pos.y
|
||||
|
||||
if horns then
|
||||
|
||||
local text = "mobs_sheep_base.png^mobs_sheep_horns.png"
|
||||
.."^(mobs_sheep_wool.png^[multiply:"
|
||||
.. all_colours[nat_colors[types]][3] .. ")"
|
||||
|
||||
entity.object:set_properties({textures = {text}})
|
||||
entity.base_texture = {text}
|
||||
entity.attribute_horns = horns
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- First Sheep, Randomize color/horns
|
||||
self.object:remove()
|
||||
|
||||
random_sheep(pos, true)
|
||||
|
||||
-- Rest of herd
|
||||
local nods = core.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}, spawn_on)
|
||||
|
||||
if nods and #nods > 0 then
|
||||
|
||||
-- min herd of 3
|
||||
local iter = math.min(#nods, 3)
|
||||
|
||||
for n = 1, iter do
|
||||
|
||||
local pos2 = nods[random(#nods)]
|
||||
|
||||
pos2.y = pos2.y + 2
|
||||
|
||||
if core.get_node(pos2).name == "air" then
|
||||
|
||||
-- Add a sheep or lamb
|
||||
random_sheep(pos2, false)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
-- compatibility with older mobs mod
|
||||
|
||||
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white")
|
||||
|
||||
-- raw mutton
|
||||
|
||||
core.register_craftitem(":mobs:mutton_raw", {
|
||||
description = S("Raw Mutton"),
|
||||
inventory_image = "mobs_mutton_raw.png",
|
||||
on_use = core.item_eat(2),
|
||||
groups = {food_meat_raw = 1, food_mutton_raw = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:mutton_raw", 2)
|
||||
|
||||
-- cooked mutton and recipe
|
||||
|
||||
core.register_craftitem(":mobs:mutton_cooked", {
|
||||
description = S("Cooked Mutton"),
|
||||
inventory_image = "mobs_mutton_cooked.png",
|
||||
on_use = core.item_eat(6),
|
||||
groups = {food_meat = 1, food_mutton = 1}
|
||||
})
|
||||
|
||||
mobs.add_eatable("mobs:mutton_cooked", 6)
|
||||
|
||||
core.register_craft({
|
||||
type = "cooking",
|
||||
output = "mobs:mutton_cooked",
|
||||
recipe = "mobs:mutton_raw",
|
||||
cooktime = 5
|
||||
})
|
||||
@@ -0,0 +1,195 @@
|
||||
|
||||
--[[ Spawn Template, defaults to values shown if line not provided
|
||||
|
||||
mobs:spawn({
|
||||
|
||||
name = "",
|
||||
|
||||
- Name of mob, must be provided e.g. "mymod:my_mob"
|
||||
|
||||
nodes = {"group:soil, "group:stone"},
|
||||
|
||||
- Nodes to spawn on top of.
|
||||
|
||||
neighbors = {"air"},
|
||||
|
||||
- Nodes to spawn beside.
|
||||
|
||||
min_light = 0,
|
||||
|
||||
- Minimum light level.
|
||||
|
||||
max_light = 15,
|
||||
|
||||
- Maximum light level, 15 is sunlight only.
|
||||
|
||||
interval = 30,
|
||||
|
||||
- Spawn interval in seconds.
|
||||
|
||||
chance = 5000,
|
||||
|
||||
- Spawn chance, 1 in every 5000 nodes.
|
||||
|
||||
active_object_count = 1,
|
||||
|
||||
- Active mobs of this type in area.
|
||||
|
||||
min_height = -31000,
|
||||
|
||||
- Minimum height level.
|
||||
|
||||
max_height = 31000,
|
||||
|
||||
- Maximum height level.
|
||||
|
||||
day_toggle = nil,
|
||||
|
||||
- Daytime toggle, true to spawn during day, false for night, nil for both
|
||||
|
||||
on_spawn = nil,
|
||||
|
||||
- On spawn function to run when mob spawns in world
|
||||
|
||||
on_map_load = nil,
|
||||
|
||||
- On map load, when true mob only spawns in newly generated map areas
|
||||
})
|
||||
]]--
|
||||
|
||||
|
||||
-- Bee
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:bee",
|
||||
nodes = {"group:flower"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 7000,
|
||||
min_height = 3,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Bunny
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:bunny",
|
||||
nodes = {"default:dirt_with_grass"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 5,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Chicken
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:chicken",
|
||||
nodes = {"default:dirt_with_grass"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 5,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Cow
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:cow",
|
||||
nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 5,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Kitten
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:kitten",
|
||||
nodes = {"default:dirt_with_grass"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 10000,
|
||||
min_height = 5,
|
||||
max_height = 50,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Panda
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:panda",
|
||||
nodes = {"ethereal:bamboo_dirt"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 10,
|
||||
max_height = 80,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Penguin
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:penguin",
|
||||
nodes = {"default:snowblock"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 20000,
|
||||
min_height = 0,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Rat
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:rat",
|
||||
nodes = {"default:stone"},
|
||||
min_light = 3,
|
||||
max_light = 9,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
max_height = 0,
|
||||
})
|
||||
|
||||
-- Sheep
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:sheep_white",
|
||||
nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
|
||||
neighbors = {"group:grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 0,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
||||
-- Warthog
|
||||
|
||||
mobs:spawn({
|
||||
name = "mobs_animal:pumba",
|
||||
nodes = {"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass"},
|
||||
neighbors = {"group:dry_grass"},
|
||||
min_light = 14,
|
||||
interval = 60,
|
||||
chance = 8000,
|
||||
min_height = 0,
|
||||
max_height = 200,
|
||||
day_toggle = true,
|
||||
})
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 934 B |
|
After Width: | Height: | Size: 513 B |
|
After Width: | Height: | Size: 211 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: 181 B |
|
After Width: | Height: | Size: 247 B |
|
After Width: | Height: | Size: 272 B |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 216 B |
|
After Width: | Height: | Size: 166 B |
|
After Width: | Height: | Size: 167 B |
|
After Width: | Height: | Size: 369 B |
|
After Width: | Height: | Size: 218 B |
|
After Width: | Height: | Size: 103 B |
|
After Width: | Height: | Size: 239 B |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 610 B |
|
After Width: | Height: | Size: 199 B |
|
After Width: | Height: | Size: 363 B |
|
After Width: | Height: | Size: 272 B |
|
After Width: | Height: | Size: 301 B |
|
After Width: | Height: | Size: 166 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: 472 B |
|
After Width: | Height: | Size: 520 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 378 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 892 B |
|
After Width: | Height: | Size: 312 B |
|
After Width: | Height: | Size: 462 B |
|
After Width: | Height: | Size: 406 B |
|
After Width: | Height: | Size: 1.1 KiB |