mods that hopefully work for a TechAge-based pack

This commit is contained in:
2026-09-09 06:27:51 -06:00
parent 4e6b08d194
commit c27db2a537
6234 changed files with 375578 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

+209
View File
@@ -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
})
+202
View File
@@ -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"}
}
})
+298
View File
@@ -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})
+334
View File
@@ -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
+54
View File
@@ -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")
+212
View File
@@ -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
})
+104
View File
@@ -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
+50
View File
@@ -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
+50
View File
@@ -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=
+50
View File
@@ -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=
+50
View File
@@ -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
+46
View File
@@ -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
+50
View File
@@ -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
+50
View File
@@ -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=
+50
View File
@@ -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=
+46
View File
@@ -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
+49
View File
@@ -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=Желтая
+50
View File
@@ -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=
+52
View File
@@ -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=
+34
View File
@@ -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
+5
View File
@@ -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
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+87
View File
@@ -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")
+77
View File
@@ -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")
+110
View File
@@ -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
})
+45
View File
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

+13
View File
@@ -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
+518
View File
@@ -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
})
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+195
View File
@@ -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,
})
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 239 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 610 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 892 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Some files were not shown because too many files have changed in this diff Show More