1
0
mirror of https://codeberg.org/tenplus1/mobs_animal.git synced 2025-07-21 17:40:29 +02:00

Compare commits

27 Commits

Author SHA1 Message Date
cac5e8328f Merge remote-tracking branch 'upstream/master' 2021-11-01 10:31:14 +01:00
bcb158d241 Fix crash on shift + right-click on a goat 2021-08-25 22:37:07 +02:00
99cf81611a Merge remote-tracking branch 'upstream/master' 2021-07-26 22:21:44 +02:00
a7b08928c5 Merge remote-tracking branch 'upstream/master' 2021-06-26 18:55:19 +02:00
630c73cdd7 Merge remote-tracking branch 'upstream/master' 2021-06-20 17:15:09 +02:00
eba1ac7f10 Merge remote-tracking branch 'upstream/master' 2021-04-17 13:51:50 +02:00
86987aadde Merge remote-tracking branch 'upstream/master' 2021-04-08 13:28:50 +02:00
5293673547 Merge remote-tracking branch 'upstream/master' 2021-04-04 21:01:44 +02:00
0873ef4119 Merge remote-tracking branch 'upstream/master' 2021-03-25 21:47:49 +01:00
498b3fbf10 Merge remote-tracking branch 'upstream/master' 2021-02-13 14:13:02 +01:00
01bdea97c7 Merge remote-tracking branch 'upstream/master' 2021-02-07 13:11:00 +01:00
620bdfe33d Merge remote-tracking branch 'upstream/master' 2021-01-23 12:55:30 +01:00
061cbb10b7 Merge remote-tracking branch 'upstream/master' 2021-01-19 23:36:36 +01:00
ba305db9ca Merge remote-tracking branch 'upstream/master' 2021-01-15 21:10:27 +01:00
e3ca168e7e Merge remote-tracking branch 'upstream/master' 2021-01-08 23:36:50 +01:00
66be327567 Merge remote-tracking branch 'upstream/master' 2020-12-08 22:38:39 +01:00
8ef65e2292 Merge remote-tracking branch 'upstream/master' 2020-09-21 18:02:56 +02:00
03acd94c3b Merge remote-tracking branch 'upstream/master' 2020-09-04 21:40:00 +02:00
a5ed775333 Merge remote-tracking branch 'upstream/master' 2020-08-30 12:52:14 +02:00
b98fc2186f Merge remote-tracking branch 'upstream/master' 2020-08-25 20:06:08 +02:00
a14d29bd55 Merge remote-tracking branch 'upstream/master' 2020-07-17 22:42:54 +02:00
0aa7224ebc Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-06-20 15:38:41 +02:00
9776d5dfd4 Merge remote-tracking branch 'upstream/master' into nalc-1.2-dev 2020-02-29 18:07:18 +01:00
4a8cd67f6d Merge branch 'master' of yunohost.local:mtcontrib/mobs_animal into nalc-1.2-dev 2019-12-22 13:56:39 +01:00
ad864bd1c8 Merge branch 'master' into nalc-1.2 2019-05-10 00:53:43 +02:00
99794a8cdc Merge tag '20181016' into nalc 2018-12-31 16:15:02 +01:00
24bf26253c Ajout du mob goat (chèvre) et quelques drops en plus 2018-11-02 19:01:28 +01:00
64 changed files with 3247 additions and 1403 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 B

147
bee.lua
View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Bee by KrupnoPavel (.b3d model by sirrobzeroone)
@ -8,19 +8,23 @@ mobs:register_mob("mobs_animal:bee", {
passive = true,
hp_min = 1,
hp_max = 2,
armor = 100,
armor = 200,
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.5, 0.2},
visual = "mesh",
mesh = "mobs_bee.b3d",
textures = { {"mobs_bee.png"} },
textures = {
{"mobs_bee.png"},
},
blood_texture = "mobs_bee_inv.png",
blood_amount = 1,
makes_footstep_sound = false,
sounds = { random = "mobs_bee" },
sounds = {
random = "mobs_bee",
},
walk_velocity = 1,
jump = true,
drops = {
{name = "mobs:honey", chance = 2, min = 1, max = 2}
{name = "mobs:honey", chance = 2, min = 1, max = 2},
},
water_damage = 1,
lava_damage = 2,
@ -29,57 +33,47 @@ mobs:register_mob("mobs_animal:bee", {
fall_speed = -3,
animation = {
speed_normal = 15,
stand_start = 0, stand_end = 30,
walk_start = 35, walk_end = 65
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
})
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)
-- compatibility
mobs:alias_mob("mobs:bee", "mobs_animal:bee")
-- honey
core.register_craftitem(":mobs:honey", {
minetest.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}
on_use = minetest.item_eat(4),
groups = {food_honey = 1, food_sugar = 1, flammable = 1},
})
mobs.add_eatable("mobs:honey", 4)
-- beehive (1 in 4 chance of spawning bee when placed)
core.register_node(":mobs:beehive", {
-- beehive (when placed spawns bee)
minetest.register_node(":mobs:beehive", {
description = S("Beehive"),
drawtype = "plantlike",
tiles = {"mobs_beehive.png"},
@ -88,16 +82,14 @@ core.register_node(":mobs:beehive", {
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(),
sounds = default.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 ""
local meta = minetest.get_meta(pos)
meta:set_string("formspec", "size[8,6]"
.. gui_bg
..default.gui_bg..default.gui_bg_img..default.gui_slots
.. "image[3,0.8;0.8,0.8;mobs_bee_inv.png]"
.. "list[current_name;beehive;4,0.5;1,1;]"
.. "list[current_player;main;0,2.35;8,4;]"
@ -110,10 +102,10 @@ core.register_node(":mobs:beehive", {
if placer and placer:is_player() then
core.set_node(pos, {name = "mobs:beehive", param2 = 1})
minetest.set_node(pos, {name = "mobs:beehive", param2 = 1})
if math.random(4) == 1 then
core.add_entity(pos, "mobs_animal:bee")
if math.random(1, 4) == 1 then
minetest.add_entity(pos, "mobs_animal:bee")
end
end
end,
@ -121,87 +113,90 @@ core.register_node(":mobs:beehive", {
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)
puncher:set_hp(puncher:get_hp() - 4)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if listname == "beehive" then return 0 end
if listname == "beehive" then
return 0
end
return stack:get_count()
end,
can_dig = function(pos,player) -- can only dig when no honey inside
can_dig = function(pos,player)
local meta = core.get_meta(pos)
local meta = minetest.get_meta(pos)
-- only dig beehive if no honey inside
return meta:get_inventory():is_empty("beehive")
end
end,
})
-- beehive recipe
core.register_craft({
minetest.register_craft({
output = "mobs:beehive",
recipe = {{"mobs:bee","mobs:bee","mobs:bee"}}
recipe = {
{"mobs:bee","mobs:bee","mobs:bee"},
}
})
-- honey block and craft recipes
core.register_node(":mobs:honey_block", {
-- honey block
minetest.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()
sounds = default.node_sound_dirt_defaults(),
})
core.register_craft({
minetest.register_craft({
output = "mobs:honey_block",
recipe = {
{"mobs:honey", "mobs:honey", "mobs:honey"},
{"mobs:honey", "mobs:honey", "mobs:honey"},
{"mobs:honey", "mobs:honey", "mobs:honey"}
{"mobs:honey", "mobs:honey", "mobs:honey"},
}
})
core.register_craft({
minetest.register_craft({
output = "mobs:honey 9",
recipe = {
{"mobs:honey_block"}
{"mobs:honey_block"},
}
})
-- beehive workings
core.register_abm({
minetest.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
local tod = (minetest.get_timeofday() or 0) * 24000
if tod < 5500 or tod > 18500 then return end
if tod < 5500 or tod > 18500 then
return
end
local meta = core.get_meta(pos) ; if not meta then return end
-- is hive full?
local meta = minetest.get_meta(pos)
if not meta then return end -- for older beehives
local inv = meta:get_inventory()
local honey = inv:get_stack("beehive", 1):get_count()
if honey > 11 then return end -- return if hive full
-- is hive full?
if honey > 11 then
return
end
-- 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
if #minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
"group:flower") > 3 then
inv:add_item("beehive", "mobs:honey")
end

148
bunny.lua
View File

@ -1,24 +1,25 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Bunny by ExeterDad
mobs:register_mob("mobs_animal:bunny", {
stepheight = 0.6,
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},
armor = 200,
collisionbox = {-0.268, -0.5, -0.268, 0.268, 0.167, 0.268},
visual = "mesh",
mesh = "mobs_bunny.b3d",
drawtype = "front",
textures = {
{"mobs_bunny_grey.png"},
{"mobs_bunny_brown.png"},
{"mobs_bunny_white.png"}
{"mobs_bunny_white.png"},
},
sounds = {},
makes_footstep_sound = false,
@ -30,24 +31,26 @@ mobs:register_mob("mobs_animal:bunny", {
jump_height = 6,
drops = {
{name = "mobs:rabbit_raw", chance = 1, min = 1, max = 1},
{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1}
{name = "mobs:rabbit_hide", chance = 1, min = 0, max = 1},
},
water_damage = 0.01,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 2,
animation = {
speed_normal = 15,
stand_start = 1, stand_end = 15,
walk_start = 16, walk_end = 24,
punch_start = 16, punch_end = 24
stand_start = 1,
stand_end = 15,
walk_start = 16,
walk_end = 24,
punch_start = 16,
punch_end = 24,
},
follow = {"farming:carrot", "farming_plus:carrot_item", "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
@ -57,142 +60,119 @@ mobs:register_mob("mobs_animal:bunny", {
-- 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
if 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"}
self.object:set_properties({
textures = {"mobs_bunny_evil.png"},
})
-- add evil bunny
local obj = core.add_entity(
self.object:get_pos(), "mobs_animal:bunny", staticdata)
self.type = "monster"
self.health = 20
self.passive = false
obj:set_properties({textures = {"mobs_bunny_evil.png"}, hp_max = 20})
-- remove old bunny
if obj:get_luaentity() then mobs:remove(self, true) end
return
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,
if minetest.find_node_near(pos, 1,
{"default:snow", "default:snowblock", "default:dirt_with_snow"}) then
self.base_texture = {"mobs_bunny_white.png"}
self.object:set_properties({textures = self.base_texture})
-- brown desert bunny
elseif core.find_node_near(pos, 1,
elseif minetest.find_node_near(pos, 1,
{"default:desert_sand", "default:desert_stone"}) then
self.base_texture = {"mobs_bunny_brown.png"}
self.object:set_properties({textures = self.base_texture})
-- grey stone bunny
elseif core.find_node_near(pos, 1,
elseif minetest.find_node_near(pos, 1,
{"default:stone", "default:gravel"}) then
self.base_texture = {"mobs_bunny_grey.png"}
self.object:set_properties({textures = self.base_texture})
end
return true -- run only once, false/nil runs every activation
end
end,
attack_type = "dogfight",
damage = 5,
})
-- where to spawn
if not mobs.custom_spawn_animal then
local spawn_on = "default:dirt_with_grass"
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
})
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:prairie_dirt"
end
if not mobs.custom_spawn_animal then
mobs:spawn({
name = "mobs_animal:bunny",
nodes = {spawn_on},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 8000, -- 15000
min_height = 5,
max_height = 200,
day_toggle = true,
})
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")
mobs:alias_mob("mobs:bunny", "mobs_animal:bunny") -- compatibility
-- raw rabbit
core.register_craftitem(":mobs:rabbit_raw", {
minetest.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}
on_use = minetest.item_eat(3),
groups = {food_meat_raw = 1, food_rabbit_raw = 1, flammable = 2},
})
mobs.add_eatable("mobs:rabbit_raw", 3)
-- cooked rabbit
core.register_craftitem(":mobs:rabbit_cooked", {
minetest.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}
on_use = minetest.item_eat(5),
groups = {food_meat = 1, food_rabbit = 1, flammable = 2},
})
mobs.add_eatable("mobs:rabbit_cooked", 5)
core.register_craft({
minetest.register_craft({
type = "cooking",
output = "mobs:rabbit_cooked",
recipe = "mobs:rabbit_raw",
cooktime = 5
cooktime = 5,
})
-- rabbit hide and recipes
core.register_craftitem(":mobs:rabbit_hide", {
-- rabbit hide
minetest.register_craftitem(":mobs:rabbit_hide", {
description = S("Rabbit Hide"),
inventory_image = "mobs_rabbit_hide.png",
groups = {flammable = 2, pelt = 1}
groups = {flammable = 2, pelt = 1},
})
core.register_craft({type = "fuel", recipe = "mobs:rabbit_hide", burntime = 2})
minetest.register_craft({
type = "fuel",
recipe = "mobs:rabbit_hide",
burntime = 2,
})
core.register_craft({
minetest.register_craft({
output = "mobs:leather",
-- type = "shapeless",
recipe = {
{"mobs:rabbit_hide", "mobs:rabbit_hide"},
{"mobs:rabbit_hide", "mobs:rabbit_hide"}

View File

@ -1,28 +1,30 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Chicken by JK Murray and Sirrobzeroone
mobs:register_mob("mobs_animal:chicken", {
stepheight = 0.6,
stepheight = 0.6,
type = "animal",
passive = true,
hp_min = 5,
hp_max = 10,
armor = 100,
armor = 200,
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"}
{"mobs_chicken_black.png"},
},
child_texture = {
{"mobs_chick.png"},
},
child_texture = {{"mobs_chick.png"}},
makes_footstep_sound = true,
sounds = {
random = "mobs_chicken",
replace = "default_dig_crumbly"
},
walk_velocity = 1,
run_velocity = 3,
@ -30,7 +32,7 @@ mobs:register_mob("mobs_animal:chicken", {
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}
{name = "mobs:chicken_feather", chance = 1, min = 0, max = 2},
},
water_damage = 1,
lava_damage = 5,
@ -40,30 +42,24 @@ mobs:register_mob("mobs_animal:chicken", {
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 = 24
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 = 24,
},
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"
"farming:seed_oat", "farming:seed_rye"
},
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)
@ -75,117 +71,120 @@ mobs:register_mob("mobs_animal:chicken", {
do_custom = function(self, dtime)
self.egg_timer = (self.egg_timer or 0) + dtime
if self.egg_timer < 10 then return end
if self.egg_timer < 10 then
return
end
self.egg_timer = 0
if self.child then return end
if self.child
or math.random(1, 100) > 1 then
return
end
local pos = self.object:get_pos() ; if not pos then return end
if math.random(100) == 1 then
minetest.add_item(pos, "mobs:egg")
core.add_item(pos, "mobs:egg")
core.sound_play("default_place_node_hard",
{pos = pos, gain = 1.0, max_hear_distance = 5}, true)
elseif math.random(100) < 3 then
core.add_item(pos, "mobs:chicken_feather")
end
end
minetest.sound_play("default_place_node_hard", {
pos = pos,
gain = 1.0,
max_hear_distance = 5,
})
end,
})
-- where to spawn
if not mobs.custom_spawn_animal then
local spawn_on = {"default:dirt_with_grass"}
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
})
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:bamboo_dirt", "ethereal:prairie_dirt"}
end
if not mobs.custom_spawn_animal then
mobs:spawn({
name = "mobs_animal:chicken",
nodes = spawn_on,
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 8000, -- 15000
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")
mobs:alias_mob("mobs:chicken", "mobs_animal:chicken") -- compatibility
-- egg entity
mobs:register_arrow("mobs_animal:egg_entity", {
visual = "sprite",
visual_size = {x = .5, y = .5},
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, {
player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1}
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}
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
if math.random(10) > 1 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
})
pos.y = pos.y + 1
local nod = minetest.get_node_or_nil(pos)
if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
local staticdata = minetest.serialize(
{child = true, tamed = true, owner = self.playername})
minetest.add_entity(pos, "mobs_animal:chicken", staticdata)
end
})
-- egg throwing function
-- egg throwing item
local egg_GRAVITY = 9
local egg_VELOCITY = 19
-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)
local playerpos = player:get_pos()
core.sound_play("default_place_node_hard",
{pos = playerpos, gain = 1.0, max_hear_distance = 5}, true)
minetest.sound_play("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
})
local obj = core.add_entity({
local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
@ -199,10 +198,16 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
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})
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})
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})
-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
@ -214,9 +219,9 @@ local mobs_shoot_egg = function (item, player, pointed_thing)
return item
end
-- egg
core.register_node(":mobs:egg", {
-- egg
minetest.register_node(":mobs:egg", {
description = S("Chicken Egg"),
tiles = {"mobs_chicken_egg.png"},
inventory_image = "mobs_chicken_egg.png",
@ -225,73 +230,67 @@ core.register_node(":mobs:egg", {
wield_image = "mobs_chicken_egg.png",
paramtype = "light",
walkable = false,
is_ground_content = false,
is_ground_content = true,
sunlight_propagates = true,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
},
groups = {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})
if placer:is_player() then
minetest.set_node(pos, {name = "mobs:egg", param2 = 1})
end
end,
on_use = mobs_shoot_egg
})
-- fried egg and recipe
core.register_craftitem(":mobs:chicken_egg_fried", {
-- fried egg
minetest.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}
on_use = minetest.item_eat(2),
groups = {food_egg_fried = 1, flammable = 2},
})
mobs.add_eatable("mobs:chicken_egg_fried", 2)
core.register_craft({
minetest.register_craft({
type = "cooking",
recipe = "mobs:egg",
output = "mobs:chicken_egg_fried"
output = "mobs:chicken_egg_fried",
})
-- raw chicken
core.register_craftitem(":mobs:chicken_raw", {
description = S("Raw Chicken"),
minetest.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}
on_use = minetest.item_eat(2),
groups = {food_meat_raw = 1, food_chicken_raw = 1, flammable = 2},
})
mobs.add_eatable("mobs:chicken_raw", 2)
-- cooked chicken and recipe
core.register_craftitem(":mobs:chicken_cooked", {
description = S("Cooked Chicken"),
-- cooked chicken
minetest.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}
on_use = minetest.item_eat(6),
groups = {food_meat = 1, food_chicken = 1, flammable = 2},
})
mobs.add_eatable("mobs:chicken_cooked", 6)
core.register_craft({
minetest.register_craft({
type = "cooking",
recipe = "mobs:chicken_raw",
output = "mobs:chicken_cooked"
output = "mobs:chicken_cooked",
})
-- feather and fuel
core.register_craftitem(":mobs:chicken_feather", {
-- feather
minetest.register_craftitem(":mobs:chicken_feather", {
description = S("Feather"),
inventory_image = "mobs_chicken_feather.png",
groups = {flammable = 2, feather = 1}
groups = {flammable = 2, feather = 1},
})
core.register_craft({type = "fuel", recipe = "mobs:chicken_feather", burntime = 1})
minetest.register_craft({
type = "fuel",
recipe = "mobs:chicken_feather",
burntime = 1,
})

298
cow.lua
View File

@ -1,14 +1,6 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- 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
@ -18,21 +10,20 @@ mobs:register_mob("mobs_animal:cow", {
attack_type = "dogfight",
attack_npcs = false,
reach = 2,
damage = 4, attack_chance = 98,
hp_min = 10,
damage = 4,
hp_min = 5,
hp_max = 20,
armor = 100,
armor = 200,
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"}
{"mobs_cow2.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_cow",
replace = "default_dig_crumbly"
},
walk_velocity = 1,
run_velocity = 2,
@ -41,18 +32,32 @@ mobs:register_mob("mobs_animal:cow", {
pushable = true,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
{name = "mobs:leather", chance = 1, min = 0, max = 2}
{name = "mobs:leather", chance = 1, min = 0, max = 2},
{name = "maptools:silver_coin", chance = 10, min = 0, max = 1,},
},
water_damage = 0.01,
water_damage = 0,
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 = 30,
punch_start = 145, punch_end = 160, punch_speed = 20,
die_start = 165, die_end = 185, die_speed = 25, die_loop = false
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 = 30,
punch_start = 145,
punch_end = 160,
punch_speed = 20,
die_start = 165,
die_end = 185,
die_speed = 10,
die_loop = false,
},
follow = {
"farming:wheat", "default:grass_1", "farming:barley",
@ -60,30 +65,21 @@ mobs:register_mob("mobs_animal:cow", {
},
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,
]]
replace_what = {
{"group:grass", "mobs:dung", 0},
{"default:dirt_with_grass", "default:dirt", -1}
},
-- 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
if self.food and self.food > 6 then
self.gotten = false
end
return
end
@ -93,19 +89,18 @@ mobs:register_mob("mobs_animal:cow", {
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 tool:get_name() == "bucket:bucket_empty" then
if self.child == true then return end
--if self.gotten == true
if self.child == true then
return
end
if self.gotten == true then
core.chat_send_player(name, S("Cow already milked!"))
minetest.chat_send_player(name,
S("Cow already milked!"))
return
end
@ -114,22 +109,12 @@ mobs:register_mob("mobs_animal:cow", {
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)
if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
clicker:get_inventory():add_item("main", "mobs:bucket_milk")
else
local pos = self.object:get_pos()
pos.y = pos.y + 0.5
core.add_item(pos, {name = ret_item})
minetest.add_item(pos, {name = "mobs:bucket_milk"})
end
self.gotten = true -- milked
@ -142,71 +127,66 @@ mobs:register_mob("mobs_animal:cow", {
self.food = (self.food or 0) + 1
if self.food >= 8 then -- replace 8x grass and can be milked again
-- if cow replaces 8x grass then it can be milked again
if self.food >= 8 then
self.food = 0
self.gotten = false
end
end
end,
})
-- 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
})
mobs:spawn({
name = "mobs_animal:cow",
nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 8000, -- 15000
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")
mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility
-- bucket of milk
core.register_craftitem(":mobs:bucket_milk", {
minetest.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}
on_use = minetest.item_eat(8, "bucket:bucket_empty"),
groups = {food_milk = 1, flammable = 3, drink = 1},
})
mobs.add_eatable("mobs:bucket_milk", 8)
-- glass of milk and recipes
core.register_craftitem(":mobs:glass_milk", {
-- glass of milk
minetest.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}
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
groups = {food_milk_glass = 1, flammable = 3, vessel = 1, drink = 1},
})
mobs.add_eatable("mobs:glass_milk", 2)
core.register_craft({
minetest.register_craft({
-- type = "shapeless",
output = "mobs:glass_milk 4",
recipe = {
{"vessels:drinking_glass", "vessels:drinking_glass"},
{"vessels:drinking_glass", "vessels:drinking_glass"},
{"mobs:bucket_milk", ""}
},
replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
replacements = { {"mobs:bucket_milk", "bucket:bucket_empty"} }
})
core.register_craft({
minetest.register_craft({
-- type = "shapeless",
output = "mobs:bucket_milk",
recipe = {
{"group:food_milk_glass", "group:food_milk_glass"},
@ -218,115 +198,97 @@ core.register_craft({
}
})
-- butter and recipe
core.register_craftitem(":mobs:butter", {
-- butter
minetest.register_craftitem(":mobs:butter", {
description = S("Butter"),
inventory_image = "mobs_butter.png",
on_use = core.item_eat(1),
groups = {food_butter = 1}
on_use = minetest.item_eat(1),
groups = {food_butter = 1, flammable = 2}
})
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"
if minetest.get_modpath("farming") and farming and farming.mod then
minetest.register_craft({
type = "shapeless",
output = "mobs:butter",
recipe = {"mobs:bucket_milk", "farming:salt"},
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})
else -- some saplings are high in sodium so makes a good replacement item
minetest.register_craft({
type = "shapeless",
output = "mobs:butter",
recipe = {"mobs:bucket_milk", "default:sapling"},
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})
end
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", {
-- cheese wedge
minetest.register_craftitem(":mobs:cheese", {
description = S("Cheese"),
inventory_image = "mobs_cheese.png",
on_use = core.item_eat(4),
groups = {food_cheese = 1}
on_use = minetest.item_eat(4),
groups = {food_cheese = 1, flammable = 2},
})
mobs.add_eatable("mobs:cheese", 4)
core.register_craft({
minetest.register_craft({
type = "cooking",
output = "mobs:cheese",
recipe = "mobs:bucket_milk",
cooktime = 5,
replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})
-- cheese block and recipe
core.register_node(":mobs:cheeseblock", {
-- cheese block
minetest.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()
sounds = default.node_sound_dirt_defaults()
})
core.register_craft({
minetest.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"}
{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
}
})
core.register_craft({
minetest.register_craft({
output = "mobs:cheese 9",
recipe = {{"mobs:cheeseblock"}}
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, flammable = 3, drink = 1}
})
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"}
-- Dung (from factory's fertilizer)
minetest.register_node(
":mobs:dung",
{
tiles = {"default_dirt.png"},
inventory_image = "mobs_dung.png",
description = "Cow dung",
drawtype = "nodebox",
paramtype = "light",
is_ground_content = true,
groups = {snappy = 3, attached_node = 1},
node_box = {
type = "fixed",
fixed = {
{-0.1875, -0.5, -0.1875, 0.1875, -0.4375, 0.1875},
{-0.125, -0.4375, -0.125, 0.125, -0.375, 0.125},
{0, -0.375, -0.0625, 0.0625, -0.3125, 0.0625},
{0, -0.3125, -0.0625, 0.0625, -0.25, 0},
{-0.0625, -0.375, -0.0625, 0, -0.3125, 0},
}
}
})
core.register_craft({
output = "mobs:butter",
recipe = {{"mobs:wooden_bucket_milk", salt_item}},
replacements = {{"mobs:wooden_bucket_milk", return_item}}
})
end
minetest.register_craft({
type = "fuel",
recipe = "mobs:dung",
burntime = "8",
})

4
depends.txt Normal file
View File

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

1
description.txt Normal file
View File

@ -0,0 +1 @@
Adds farm animals.

107
goat.lua Executable file
View File

@ -0,0 +1,107 @@
-- Goat by DonBatman
mobs:register_mob("mobs_animal:goat", {
-- animal, monster, npc, barbarian
type = "animal",
-- aggressive, does 5 damage to player when threatened
passive = false,
group_attack = true,
attack_type = "dogfight",
reach = 2,
damage = 3,
-- health & armor
hp_min = 10,
hp_max = 20,
armor = 200,
-- textures and model
collisionbox = {-0.3, -0.01, -0.3, 0.3, 0.75, 0.3},
visual = "mesh",
mesh = "mobs_goat.b3d",
drawtype = "front",
textures = {
{"mobs_goat_white.png"},
{"mobs_goat_brown.png"},
{"mobs_goat_grey.png"},
},
blood_texture = "mobs_blood.png",
visual_size = {x=2,y=2},
-- sounds
makes_footstep_sound = true,
sounds = {
random = "mobs_sheep",
},
-- speed and jump
walk_velocity = 1.5,
run_velocity = 3,
jump = true,
-- drops raw meat when dead
drops = {
{name = "mobs:meat_raw",
chance = 1, min = 2, max = 4},
{name = "maptools:silver_coin",
chance = 10, min = 1, max = 1,},
},
-- damaged by
water_damage = 1,
lava_damage = 5,
light_damage = 0,
-- model animation
animation = {
speed_normal = 25, speed_run = 30,
stand_start = 0, stand_end = 60, -- head down/up
walk_start = 80, walk_end = 110, -- walk
run_start = 160, run_end = 198, -- walk
punch_start = 120, punch_end = 150, -- attack
},
-- follows wheat
follow = {"farming:wheat"},
view_range = 10,
-- replace grass/wheat with air (eat)
replace_rate = 50,
replace_what = {"group:flora"},
replace_with = "air",
on_rightclick = function(self, clicker)
-- feed or tame
if mobs:feed_tame(self, clicker, 8, true, true) then
return
end
local tool = clicker:get_wielded_item()
-- milk goat with empty bucket
if tool:get_name() == "bucket:bucket_empty" then
if self.child == true then
return
end
if self.gotten == true then
minetest.chat_send_player(clicker:get_player_name(),
"Goat already milked!")
return
end
local inv = clicker:get_inventory()
inv:remove_item("main", "bucket:bucket_empty")
if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
clicker:get_inventory():add_item("main", "mobs:bucket_milk")
else
local pos = self.object:getpos()
pos.y = pos.y + 0.5
minetest.add_item(pos, {name = "mobs:bucket_milk"})
end
self.gotten = true -- milked
return
end
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
end,
})
-- spawn on dirt_with_grass between -1 and 20 light, 1 in 20000 chance, 1 goat in area up to 31000 in height
mobs:spawn_specific("mobs_animal:goat", {"default:dirt_with_grass"}, {"air"}, -1, 20, 30, 20000, 1, -31000, 31000, true)
-- register spawn egg
mobs:register_egg("mobs_animal:goat", "Goat", "mobs_goat_inv.png", 1)
mobs:alias_mob("mobs:goat", "mobs_animal:goat")

View File

@ -1,11 +1,14 @@
-- translation and mod path
-- Load support for intllib.
local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
local S = minetest.get_translator and minetest.get_translator("mobs_animal") or
dofile(path .. "intllib.lua")
mobs.intllib = S
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
@ -14,41 +17,28 @@ if input then
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
dofile(path .. "chicken.lua") -- JKmurray
dofile(path .. "cow.lua") -- KrupnoPavel
dofile(path .. "rat.lua") -- PilzAdam
dofile(path .. "sheep.lua") -- PilzAdam
dofile(path .. "warthog.lua") -- KrupnoPavel
dofile(path .. "bee.lua") -- KrupnoPavel
dofile(path .. "bunny.lua") -- ExeterDad
dofile(path .. "kitten.lua") -- Jordach/BFD
dofile(path .. "penguin.lua") -- D00Med
dofile(path .. "panda.lua") -- AspireMint
dofile(path .. "goat.lua") -- NALC(sys4 fork MFF)
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
-- Load custom spawning
if mobs.custom_spawn_animal then
dofile(path .. "spawn.lua")
end
-- Lucky Blocks
dofile(path .. "lucky_block.lua")
if core.get_modpath("lucky_block") then
dofile(path .. "lucky_block.lua")
end
print ("[MOD] Mobs Redo Animals loaded")
print (S("[MOD] Mobs Redo Animals loaded"))

3
intllib.lua Normal file
View File

@ -0,0 +1,3 @@
-- Support for the old multi-load method
dofile(minetest.get_modpath("intllib").."/init.lua")

View File

@ -1,34 +1,23 @@
-- 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"}
}
}
local S = mobs.intllib
local hairball = minetest.settings:get("mobs_hairball")
-- Kitten by Jordach / BFD
mobs:register_mob("mobs_animal:kitten", {
stepheight = 0.6,
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,
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,
armor = 200,
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.1, 0.3},
visual = "mesh",
visual_size = {x = 0.5, y = 0.5},
@ -37,75 +26,42 @@ mobs:register_mob("mobs_animal:kitten", {
{"mobs_kitten_striped.png"},
{"mobs_kitten_splotchy.png"},
{"mobs_kitten_ginger.png"},
{"mobs_kitten_sandy.png"}
{"mobs_kitten_sandy.png"},
},
makes_footstep_sound = false,
sounds = {random = "mobs_kitten"},
sounds = {
random = "mobs_kitten",
},
walk_velocity = 0.6,
walk_chance = 15,
run_velocity = 2,
runaway = true,
jump = false,
drops = {
{name = "farming:string", chance = 1, min = 0, max = 1}
{name = "farming:string", chance = 1, min = 0, max = 1},
},
water_damage = 0.01,
water_damage = 0,
lava_damage = 5,
fear_height = 3,
animation = {
speed_normal = 42,
stand_start = 97, stand_end = 192,
walk_start = 0, walk_end = 96,
stoodup_start = 0, stoodup_end = 0,
stand_start = 97,
stand_end = 192,
walk_start = 0,
walk_end = 96,
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"
"mobs_animal:rat", "group:food_fish_raw",
"mobs_fish:tropical", "xocean:fish_edible",
"group:fishraw" -- NALC: Group from fishing mod
},
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:feed_tame(self, clicker, 4, true, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 50, 50, 90, false, nil) then return end
@ -116,65 +72,70 @@ mobs:register_mob("mobs_animal:kitten", {
self.order = "stand"
self.state = "stand"
self.object:set_velocity({x = 0, y = 0, z = 0})
self:set_animation("stand")
mobs:set_animation(self, "stand")
else
self.order = ""
self:set_animation("stoodup")
mobs:set_animation(self, "stoodup")
end
end
end,
do_custom = function(self, dtime)
if not hairball then return end
if hairball == "false" then
return
end
self.hairball_timer = (self.hairball_timer or 0) + dtime
if self.hairball_timer < 10 then return end
if self.hairball_timer < 10 then
return
end
self.hairball_timer = 0
if self.child or math.random(250) > 1 then return end
if self.child
or math.random(1, 250) > 1 then
return
end
local pos = self.object:get_pos()
core.add_item(pos, "mobs:hairball")
minetest.add_item(pos, "mobs:hairball")
core.sound_play("default_dig_snappy", {
pos = pos, gain = 1.0, max_hear_distance = 5}, true)
end
minetest.sound_play("default_dig_snappy", {
pos = pos,
gain = 1.0,
max_hear_distance = 5,
})
end,
})
-- where to spawn
if not mobs.custom_spawn_animal then
local spawn_on = "default:dirt_with_grass"
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
})
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:grove_dirt"
end
if not mobs.custom_spawn_animal then
mobs:spawn({
name = "mobs_animal:kitten",
nodes = {spawn_on},
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 10000, -- 22000
min_height = 5,
max_height = 50,
day_toggle = true,
})
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")
mobs:alias_mob("mobs:kitten", "mobs_animal:kitten") -- compatibility
-- hairball and items
local hairball_items = {
"default:stick", "default:coal_lump", "default:dry_shrub", "flowers:rose",
@ -183,14 +144,12 @@ local hairball_items = {
"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"
"dye:black", "dye:brown", "default:obsidian_shard", "default:tin_lump"
}
core.register_craftitem(":mobs:hairball", {
minetest.register_craftitem(":mobs:hairball", {
description = S("Hairball"),
inventory_image = "mobs_hairball.png",
on_use = function(itemstack, user, pointed_thing)
local pos = user:get_pos()
@ -198,15 +157,19 @@ core.register_craftitem(":mobs:hairball", {
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})
if item ~= ""
and minetest.registered_items[item] then
minetest.add_item(newpos, {name = item})
end
core.sound_play("default_place_node_hard", {
pos = newpos, gain = 1.0, max_hear_distance = 5}, true)
minetest.sound_play("default_place_node_hard", {
pos = newpos,
gain = 1.0,
max_hear_distance = 5,
})
itemstack:take_item()
return itemstack
end
end,
})

View File

@ -1,7 +1,3 @@
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
@ -24,79 +20,10 @@ 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
Chicken sounds from freesounds.org under CC0
Mutton, Pork and Rabbit meat textures by Piezo_ under CC0
Cow textures by sirrobzeroone under CC0
mobs_panda_viking.png by Zlo under CC0
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

10
locale/README.md Normal file
View File

@ -0,0 +1,10 @@
# Convert '.po' file to '.txt' file.
### COMMAND SAMPLE
''''
$ lua po2tr.lua "Your Name (Your Site) <Your Email>" "pt_BR.po"
rm "pt_BR.tr" "mobs_animal.pt_BR.tr"
$ cat mobs_animal.pt_BR.tr | less
''''
Source Code: https://gitlab.com/4w/xtend/-/blob/master/xtend_default/tools/convert_po_file_to_tr_file/convert_po_file_to_tr_file.lua

203
locale/de.po Normal file
View File

@ -0,0 +1,203 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: 2016-06-10 08:58+0200\n"
"Last-Translator: Xanthin\n"
"Language-Team: \n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.12\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: bee.lua
msgid "Bee"
msgstr "Biene"
#: bee.lua
msgid "Honey"
msgstr "Honig"
#: bee.lua
msgid "Beehive"
msgstr "Bienenstock"
#: bee.lua
msgid "Honey Block"
msgstr "Honigblock"
#: bunny.lua
msgid "Bunny"
msgstr "Häschen"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Rohes Kaninchen"
#: bunny.lua
msgid "Cooked Rabbit"
msgstr "Gekochtes Kaninchen"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Kaninchenfell"
#: chicken.lua
msgid "Chicken"
msgstr "Huhn"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Hühnerei"
#: chicken.lua
msgid "Fried Egg"
msgstr "Spiegelei"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Rohes Hühnchen"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Gekochtes Hühnchen"
#: chicken.lua
#, fuzzy
msgid "Feather"
msgstr "Feder"
#: cow.lua
msgid "Cow already milked!"
msgstr "Kuh ist bereits gemolken!"
#: cow.lua
msgid "Cow"
msgstr "Kuh"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Eimer Milch"
#: cow.lua
msgid "Cheese"
msgstr "Käse"
#: cow.lua
msgid "Cheese Block"
msgstr "Käseblock"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MOD] Mobs Redo 'Animals' geladen"
#: kitten.lua
msgid "Kitten"
msgstr "Kätzchen"
#: penguin.lua
#, fuzzy
msgid "Penguin"
msgstr "Pinguin"
#: rat.lua
msgid "Rat"
msgstr "Ratte"
#: rat.lua
msgid "Cooked Rat"
msgstr "Gekochte Ratte"
#: sheep.lua
msgid "Black"
msgstr "Schwarzes"
#: sheep.lua
msgid "Blue"
msgstr "Blaues"
#: sheep.lua
msgid "Brown"
msgstr "Braunes"
#: sheep.lua
msgid "Cyan"
msgstr "Cyan"
#: sheep.lua
msgid "Dark Green"
msgstr "Dunkelgrünes"
#: sheep.lua
msgid "Dark Grey"
msgstr "Dunkelgraues"
#: sheep.lua
msgid "Green"
msgstr "Grünes"
#: sheep.lua
msgid "Grey"
msgstr "Graues"
#: sheep.lua
msgid "Magenta"
msgstr "Magenta"
#: sheep.lua
msgid "Orange"
msgstr "Oranges"
#: sheep.lua
msgid "Pink"
msgstr "Pinkes"
#: sheep.lua
msgid "Red"
msgstr "Rotes"
#: sheep.lua
msgid "Violet"
msgstr "Violettes"
#: sheep.lua
msgid "White"
msgstr "Weißes"
#: sheep.lua
msgid "Yellow"
msgstr "Gelbes"
#: sheep.lua
#, fuzzy
msgid "@1 Sheep"
msgstr "@1 Schaf"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Rohes Hammelfleisch"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Gekochtes Hammelfleisch"
#: warthog.lua
msgid "Warthog"
msgstr "Warzenschwein"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Rohes Schweinekotelett"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Gekochtes Schweinekotelett"

202
locale/fr.po Normal file
View File

@ -0,0 +1,202 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: 2017-07-31 09:18+0200\n"
"Last-Translator: fat115 <fat115@framasoft.org>\n"
"Language-Team: \n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.12\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: bee.lua
msgid "Bee"
msgstr "Abeille"
#: bee.lua
msgid "Honey"
msgstr "Miel"
#: bee.lua
msgid "Beehive"
msgstr "Ruche"
#: bee.lua
msgid "Honey Block"
msgstr "Bloc de miel"
#: bunny.lua
msgid "Bunny"
msgstr "Lapin"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Lapin Cru"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "Lapin Cuit"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Fourrure de Lapin"
#: chicken.lua
msgid "Chicken"
msgstr "Poule"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Œuf"
#: chicken.lua
msgid "Fried Egg"
msgstr "Œuf au plat"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Poulet cru"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Poulet cuit"
#: chicken.lua
msgid "Feather"
msgstr "Plume"
#: cow.lua
msgid "Cow already milked!"
msgstr "Vache déjà traite !"
#: cow.lua
msgid "Cow"
msgstr "Vache"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Seau de lait"
#: cow.lua
msgid "Cheese"
msgstr "Fromage"
#: cow.lua
msgid "Cheese Block"
msgstr "Bloc de fromage"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MOD] Mobs Redo 'Animals' chargé"
#: kitten.lua
msgid "Kitten"
msgstr "Chaton"
#: penguin.lua
msgid "Penguin"
msgstr "Manchot"
#: rat.lua
msgid "Rat"
msgstr "Rat"
#: rat.lua
msgid "Cooked Rat"
msgstr "Rat cuit"
#: sheep.lua
msgid "Black"
msgstr "noir"
#: sheep.lua
msgid "Blue"
msgstr "bleu"
#: sheep.lua
msgid "Brown"
msgstr "marron"
#: sheep.lua
msgid "Cyan"
msgstr "cyan"
#: sheep.lua
msgid "Dark Green"
msgstr "vert foncé"
#: sheep.lua
msgid "Dark Grey"
msgstr "gris foncé"
#: sheep.lua
msgid "Green"
msgstr "vert"
#: sheep.lua
msgid "Grey"
msgstr "gris"
#: sheep.lua
msgid "Magenta"
msgstr "magenta"
#: sheep.lua
msgid "Orange"
msgstr "orange"
#: sheep.lua
msgid "Pink"
msgstr "rose"
#: sheep.lua
msgid "Red"
msgstr "rouge"
#: sheep.lua
msgid "Violet"
msgstr "violet"
#: sheep.lua
msgid "White"
msgstr "blanc"
#: sheep.lua
msgid "Yellow"
msgstr "jaune"
#: sheep.lua
#, fuzzy
msgid "@1 Sheep"
msgstr "Mouton @1"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Mouton Cru"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Mouton Cuit"
#: warthog.lua
msgid "Warthog"
msgstr "Sanglier"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Côte de sanglier crue"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Côte de sanglier cuite"

201
locale/it.po Normal file
View File

@ -0,0 +1,201 @@
# ITALIAN LOCALE FILE FOR THE MOBS ANMAL MODULE
# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
# This file is distributed under the same license as the MOBS ANIMAL package.
# Hamlet <h4mlet@riseup.net>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Italian localization file for the Mobs Animal mod\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: 2017-08-18 00:56+0100\n"
"Last-Translator: H4mlet <h4mlet@riseup.net>\n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.6.10\n"
#: bee.lua
msgid "Bee"
msgstr "Ape"
#: bee.lua
msgid "Honey"
msgstr "Miele"
#: bee.lua
msgid "Beehive"
msgstr "Favo"
#: bee.lua
msgid "Honey Block"
msgstr "Blocco di miele"
#: bunny.lua
msgid "Bunny"
msgstr "Coniglietto"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Coniglio Crudo"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "Coniglio Cotto"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Pelle di Coniglio"
#: chicken.lua
msgid "Chicken"
msgstr "Gallina"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Uovo di gallina"
#: chicken.lua
msgid "Fried Egg"
msgstr "Uovo fritto"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Pollo crudo"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Pollo cotto"
#: chicken.lua
msgid "Feather"
msgstr "Piuma"
#: cow.lua
msgid "Cow already milked!"
msgstr "Mucca già munta!"
#: cow.lua
msgid "Cow"
msgstr "Mucca"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Secchio di latte"
#: cow.lua
msgid "Cheese"
msgstr "Formaggio"
#: cow.lua
msgid "Cheese Block"
msgstr "Blocco di formaggio"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MOD] Mobs Redo 'Animals' caricato"
#: kitten.lua
msgid "Kitten"
msgstr "Gattino"
#: penguin.lua
msgid "Penguin"
msgstr "Pinguino"
#: rat.lua
msgid "Rat"
msgstr "Ratto"
#: rat.lua
msgid "Cooked Rat"
msgstr "Ratto cotto"
#: sheep.lua
msgid "Black"
msgstr "Nera"
#: sheep.lua
msgid "Blue"
msgstr "Blu"
#: sheep.lua
msgid "Brown"
msgstr "Marrone"
#: sheep.lua
msgid "Cyan"
msgstr "Ciano"
#: sheep.lua
msgid "Dark Green"
msgstr "Verde scuro"
#: sheep.lua
msgid "Dark Grey"
msgstr "Grigio scuro"
#: sheep.lua
msgid "Green"
msgstr "Verde"
#: sheep.lua
msgid "Grey"
msgstr "Grigia"
#: sheep.lua
msgid "Magenta"
msgstr "Magenta"
#: sheep.lua
msgid "Orange"
msgstr "Arancione"
#: sheep.lua
msgid "Pink"
msgstr "Rosa"
#: sheep.lua
msgid "Red"
msgstr "Rossa"
#: sheep.lua
msgid "Violet"
msgstr "Viola"
#: sheep.lua
msgid "White"
msgstr "Bianca"
#: sheep.lua
msgid "Yellow"
msgstr "Gialla"
#: sheep.lua
msgid "@1 Sheep"
msgstr "Pecora @1"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Montone Crudo"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Montone Cotto"
#: warthog.lua
msgid "Warthog"
msgstr "Facocero"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Bistecca di maiale cruda"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Bistecca di maiale cotta"

View File

@ -1,50 +0,0 @@
# 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

View File

@ -1,46 +0,0 @@
# 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

View File

@ -1,4 +1,4 @@
# textdomain:mobs_animal
# textdomain: Lunovox Heavenfinder (https://libreplanet.org/wiki/User:Lunovox) <lunovox@disroot.org>
Bee=Abelha
Honey=Mel
Beehive=Colméia

View File

@ -1,4 +1,4 @@
# textdomain:mobs_animal
# textdomain: Lunovox Heavenfinder (https://libreplanet.org/wiki/User:Lunovox) <lunovox@disroot.org>
Bee=Abelha
Honey=Mel
Beehive=Colméia

View File

@ -1,49 +1,50 @@
# textdomain:mobs_animal
@1 Sheep=@1 Овца
@1 Sheep=@1 овца
Bee=Пчела
Beehive=Пчелиный Улей
Beehive=Улей
Black=Черная
Blue=Синяя
Brown=Коричневая
Bucket of Milk=Ведро Молока
Bucket of Milk=Ведро молока
Bunny=Кролик
Butter=Масло
Cheese=Сыр
Cheese Block=Блок Сыра
Cheese Block=Блок сыра
Chicken=Курица
Chicken Egg=Куриное Яйцо
Cooked Chicken=Приготовленная Курятина
Cooked Mutton=Приготовленная Баранина
Cooked Porkchop=Приготовленные Отбивные
Cooked Rabbit=Приготовленная Крольчатина
Cooked Rat=Приготовленная Крыса
Chicken Egg=Куриное яйцо
Cooked Chicken=Приготовленная курятина
Cooked Mutton=Приготовленная баранина
Cooked Porkchop=Приготовленные свиные отбивные
Cooked Rabbit=Приготовленная крольчатина
Cooked Rat=Приготовленная крыса
Cow=Корова
Cow already milked!=Корова уже подоена!
Cow already milked!=Корову уже подоили!
Cyan=Голубая
Dark Green=Темно-зеленая
Dark Grey=Темно-серая
Feather=Перо
Fried Egg=Яичница
Glass of Milk=Стакан Молока
Glass of Milk=Стакан молока
Green=Зеленая
Grey=Серая
Hairball=Комочек шерсти
Honey=Мёд
Honey Block=Блок Мёда
Honey Block=Блок мёда
Kitten=Котенок
Magenta=Пурпурная
Orange=Оранжевая
Panda=Панда
Penguin=Пингвин
Pink=Розовая
Rabbit Hide=Кроличья Шкурка
Rabbit Hide=Кроличья шкурка
Rat=Крыса
Raw Chicken=Сырая Курятина
Raw Mutton=Сырая Баранина
Raw Porkchop=Свиные Отбивные
Raw Rabbit=Сырая Крольчатина
Raw Chicken=Сырая курятина
Raw Mutton=Сырая баранина
Raw Porkchop=Свиные отбивные
Raw Rabbit=Сырая крольчатина
Red=Красная
Violet=Фиолетовая
Warthog=Бородавочник
White=Белая
Yellow=Желтая
Yellow=Желтая
#[MOD] Mobs Redo Animals loaded=

View File

@ -1,52 +0,0 @@
# 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=Жовта

199
locale/ms.po Normal file
View File

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

116
locale/po2tr.lua Normal file
View File

@ -0,0 +1,116 @@
#!/usr/bin/env luajit
-- Convert regular Gettext PO files to Minetest-specific TR files. If there is
-- already a TR file with the same name of the PO file except the file suffix
-- bneing .tr (or .TR) instead of .po (or .PO) then THIS FILE WILL BE
-- OVERWRITTEN WITHOUT INFORMATION OR A WAY TO RECOVER THE PREVIOUS FILE!
--
--
-- ▄██▄
-- ▀███
-- █
-- ▄▄▄▄▄ █
-- ▀▄ ▀▄ █ BACKUP
-- ▄▀▀▀▄ █▄▄▄▄█▄▄ ▄▀▀▀▄ █
-- █ ▄ █ █ ▄ █ █
-- ▀▄ ▄▀ ▀▄ ▄▀ █
-- █▀▀▀ ▀▀▀ █ █
-- █ █ █ ALL
-- ▄▀▄▄▀▄ █ ▄█▀█▀█▀█▀█▀█▄ █ █
-- █▒▒▒▒█ █ █████████████▄ █ █
-- █▒▒▒▒█ █ ██████████████▄ █ █
-- █▒▒▒▒█ █ ██████████████▄ █ █
-- █▒▒▒▒█ █ ██████████████ █ █
-- █▒▒▒▒█ █ ██████████████▀ █ █ THE
-- █▒▒▒▒█ ██ ██████████████ █ █
-- ▀████▀ ██▀█ █████████████▀ █▄█
-- ██ ██ ▀█ █▄█▄█▄█▄█▄█▀ ▄█▀
-- ██ ██ ▀█ ▄▀▓█
-- ██ ██ ▀█▀▄▄▄▄▄▄▄▄▄▀▀▓▓▓█
-- ████ █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
-- ███ █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█ THINGS
-- ██ █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
-- ██ █▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
-- ██ ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
-- ██ ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█
-- ██ ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▌ !!!
-- ██ ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▌
-- ██ ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▌
-- ██ ▐█▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓█▌
--
--
-- The syntax of TR files according to the introducing forum post is:
--
-- # textdomain: namespace
-- original 1 = translation 1
-- original 2 = translation 2
-- original 3 = tralslation 3
-- original N = translation N
--
-- Where namespace should be the name of the mod. Following strings have to be
-- escaped using @.
--
-- String | Escape
-- -------+--------
-- `@` |`@@`
-- `=` |`@=`
-- `\n` |`@\n`
--
-- See https://forum.minetest.net/viewtopic.php?t=18349 for details.
-- Preparation
if arg[1] == nil or arg[2] == nil then
print('Provide the namesspace as first parameter')
print('Provide the path to the source PO file as second parameter')
print('Example: '..arg[0]..' mymod path/to/my/source.po')
return
end
local SEP = package.path:match('(%p)%?%.') or '/' -- wonky but hey ... :)
-- Assign parameters to local variables
local namespace = arg[1]
local po_file = arg[2]
local tr_file = arg[2]:gsub('po$', 'tr'):gsub('PO$', 'TR')
-- Get the translations through crude plaintext file parsing
local file_contents = {}
local translations = {}
local po_file_handle = io.open(po_file, 'rb')
if po_file_handle == nil then print('No base file found') return end
for line in po_file_handle:lines() do
if line:match('^msgid') or line:match('^msgstr') then
table.insert(file_contents, line)
end
end
local escape_string = function (s)
s = s:gsub('@([^%d])', '@@%1') -- All @ not followed by a number become @@
s = s:gsub('([^@]@)$', '%1@') -- An @ at the end of the string become @@
s = s:gsub('=', '@=') -- All = become @=
return s
end
for number,line_content in pairs(file_contents) do
if line_content:match('^msgid') then
local o = line_content:gsub('^msgid "(.+)"$', '%1')
local t = file_contents[number + 1]:gsub('^msgstr "(.+)"$', '%1')
if o ~= 'msgid = ""' and t ~= 'msgstr ""' then
table.insert(translations, escape_string(o)..'='..escape_string(t))
end
end
end
print(number)
po_file_handle:close()
-- Write translation to file
local tr_file_handle = io.open(tr_file, 'w+')
if tr_file_handle == nil then print('Could not open target file') return end
tr_file_handle:write('# textdomain: '..namespace, "\n")
for _,line in pairs(translations) do tr_file_handle:write(line, "\n") end
tr_file_handle:close()

199
locale/pt.po Normal file
View File

@ -0,0 +1,199 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: 2021-06-20 18:51-0300\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"Last-Translator: Lunovox Heavenfinder <lunovox@disroot.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
#: bee.lua
msgid "Bee"
msgstr "Abelha"
#: bee.lua
msgid "Honey"
msgstr "Mel"
#: bee.lua
msgid "Beehive"
msgstr "Colméia"
#: bee.lua
msgid "Honey Block"
msgstr "Bloco de Mel"
#: bunny.lua
msgid "Bunny"
msgstr "Coelho"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Carne de Coelho (Cru)"
#: bunny.lua
msgid "Cooked Rabbit"
msgstr "Coelho (Assado)"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Pele de Coelho"
#: chicken.lua
msgid "Chicken"
msgstr "Galinha"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Ovo de Galinha"
#: chicken.lua
msgid "Fried Egg"
msgstr "Ovo Frito"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Carne de Galinha (Crua)"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Galinha Assada"
#: chicken.lua
msgid "Feather"
msgstr "Pluma"
#: cow.lua
msgid "Cow already milked!"
msgstr "Vaca já ordenhada!"
#: cow.lua
msgid "Cow"
msgstr "Vaca"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Balde de leite"
#: cow.lua
msgid "Cheese"
msgstr "Queijo"
#: cow.lua
msgid "Cheese Block"
msgstr "Bloco de Queijo"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MOBS_ANIMAL] Mod carregado completamente"
#: kitten.lua
msgid "Kitten"
msgstr "Gato"
#: penguin.lua
msgid "Penguin"
msgstr "Pinguim"
#: rat.lua
msgid "Rat"
msgstr "Rato"
#: rat.lua
msgid "Cooked Rat"
msgstr "Rato (Assado)"
#: sheep.lua
msgid "Black"
msgstr "Preto"
#: sheep.lua
msgid "Blue"
msgstr "Azul"
#: sheep.lua
msgid "Brown"
msgstr "Marrom"
#: sheep.lua
msgid "Cyan"
msgstr "Ciano"
#: sheep.lua
msgid "Dark Green"
msgstr "Verde Escuro"
#: sheep.lua
msgid "Dark Grey"
msgstr "Cinza Escuro"
#: sheep.lua
msgid "Green"
msgstr "Verde"
#: sheep.lua
msgid "Grey"
msgstr "Cinza"
#: sheep.lua
msgid "Magenta"
msgstr "Rosa Magenta"
#: sheep.lua
msgid "Orange"
msgstr "Laranja"
#: sheep.lua
msgid "Pink"
msgstr "Rosa"
#: sheep.lua
msgid "Red"
msgstr "Vermelho"
#: sheep.lua
msgid "Violet"
msgstr "Violeta"
#: sheep.lua
msgid "White"
msgstr "Branco"
#: sheep.lua
msgid "Yellow"
msgstr "Amarelo"
#: sheep.lua
msgid "@1 Sheep"
msgstr "Ovelha @1 "
#: sheep.lua
msgid "Raw Mutton"
msgstr "Carneiro (Cru)"
#: sheep.lua
msgid "Cooked Mutton"
msgstr "Carneiro (Assado)"
#: warthog.lua
msgid "Warthog"
msgstr "Javali"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Costeleta de Javali (Crua)"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Costeleta de Javali Assada"

46
locale/pt.txt Normal file
View File

@ -0,0 +1,46 @@
# textdomain: Lunovox Heavenfinder (https://libreplanet.org/wiki/User:Lunovox) <lunovox@disroot.org>
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

199
locale/pt_BR.po Normal file
View File

@ -0,0 +1,199 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: 2021-06-20 18:51-0300\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"Last-Translator: Lunovox Heavenfinder <lunovox@disroot.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
#: bee.lua
msgid "Bee"
msgstr "Abelha"
#: bee.lua
msgid "Honey"
msgstr "Mel"
#: bee.lua
msgid "Beehive"
msgstr "Colméia"
#: bee.lua
msgid "Honey Block"
msgstr "Bloco de Mel"
#: bunny.lua
msgid "Bunny"
msgstr "Coelho"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Carne de Coelho (Cru)"
#: bunny.lua
msgid "Cooked Rabbit"
msgstr "Coelho (Assado)"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Pele de Coelho"
#: chicken.lua
msgid "Chicken"
msgstr "Galinha"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Ovo de Galinha"
#: chicken.lua
msgid "Fried Egg"
msgstr "Ovo Frito"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Carne de Galinha (Crua)"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Galinha Assada"
#: chicken.lua
msgid "Feather"
msgstr "Pluma"
#: cow.lua
msgid "Cow already milked!"
msgstr "Vaca já ordenhada!"
#: cow.lua
msgid "Cow"
msgstr "Vaca"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Balde de leite"
#: cow.lua
msgid "Cheese"
msgstr "Queijo"
#: cow.lua
msgid "Cheese Block"
msgstr "Bloco de Queijo"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MOBS_ANIMAL] Mod carregado completamente"
#: kitten.lua
msgid "Kitten"
msgstr "Gato"
#: penguin.lua
msgid "Penguin"
msgstr "Pinguim"
#: rat.lua
msgid "Rat"
msgstr "Rato"
#: rat.lua
msgid "Cooked Rat"
msgstr "Rato (Assado)"
#: sheep.lua
msgid "Black"
msgstr "Preto"
#: sheep.lua
msgid "Blue"
msgstr "Azul"
#: sheep.lua
msgid "Brown"
msgstr "Marrom"
#: sheep.lua
msgid "Cyan"
msgstr "Ciano"
#: sheep.lua
msgid "Dark Green"
msgstr "Verde Escuro"
#: sheep.lua
msgid "Dark Grey"
msgstr "Cinza Escuro"
#: sheep.lua
msgid "Green"
msgstr "Verde"
#: sheep.lua
msgid "Grey"
msgstr "Cinza"
#: sheep.lua
msgid "Magenta"
msgstr "Rosa Magenta"
#: sheep.lua
msgid "Orange"
msgstr "Laranja"
#: sheep.lua
msgid "Pink"
msgstr "Rosa"
#: sheep.lua
msgid "Red"
msgstr "Vermelho"
#: sheep.lua
msgid "Violet"
msgstr "Violeta"
#: sheep.lua
msgid "White"
msgstr "Branco"
#: sheep.lua
msgid "Yellow"
msgstr "Amarelo"
#: sheep.lua
msgid "@1 Sheep"
msgstr "Ovelha @1 "
#: sheep.lua
msgid "Raw Mutton"
msgstr "Carneiro (Cru)"
#: sheep.lua
msgid "Cooked Mutton"
msgstr "Carneiro (Assado)"
#: warthog.lua
msgid "Warthog"
msgstr "Javali"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Costeleta de Javali (Crua)"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Costeleta de Javali Assada"

46
locale/pt_BR.txt Normal file
View File

@ -0,0 +1,46 @@
# textdomain: Lunovox Heavenfinder (https://libreplanet.org/wiki/User:Lunovox) <lunovox@disroot.org>
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

216
locale/ru.po Normal file
View File

@ -0,0 +1,216 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-13 16:00 (UTC+5)\n"
"PO-Revision-Date: 2020-06-19 19:00 (UTC+3)\n"
"Last-Translator: YELLOW <pikayellow35@gmail.com>\n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: bee.lua
msgid "Bee"
msgstr "Пчела"
#: bee.lua
msgid "Honey"
msgstr "Мёд"
#: bee.lua
msgid "Beehive"
msgstr "Улей"
#: bee.lua
msgid "Honey Block"
msgstr "Блок мёда"
#: bunny.lua
msgid "Bunny"
msgstr "Кролик"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "Сырая крольчатина"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "Приготовленная крольчатина"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "Кроличья шкурка"
#: chicken.lua
msgid "Chicken"
msgstr "Курица"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Куриное яйцо"
#: chicken.lua
msgid "Fried Egg"
msgstr "Яичница"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Сырая курятина"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Приготовленная курятина"
#: chicken.lua
msgid "Feather"
msgstr "Перо"
#: cow.lua
msgid "Cow already milked!"
msgstr "Корову уже подоили!"
#: cow.lua
msgid "Cow"
msgstr "Корова"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Ведро молока"
#: cow.lua
msgid "Glass of Milk"
msgstr "Стакан молока"
#: cow.lua
msgid "Butter"
msgstr "Масло"
#: cow.lua
msgid "Cheese"
msgstr "Сыр"
#: cow.lua
msgid "Cheese Block"
msgstr "Блок сыра"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[МОД] Mobs Redo 'Animals' загружен"
#: kitten.lua
msgid "Kitten"
msgstr "Котенок"
#: kitten.lua
msgid "Hairball"
msgstr "Комочек шерсти"
#: panda.lua
msgid "Panda"
msgstr "Панда"
#: penguin.lua
msgid "Penguin"
msgstr "Пингвин"
#: rat.lua
msgid "Rat"
msgstr "Крыса"
#: rat.lua
msgid "Cooked Rat"
msgstr "Приготовленная крыса"
#: sheep.lua
msgid "Black"
msgstr "Черная"
#: sheep.lua
msgid "Blue"
msgstr "Синяя"
#: sheep.lua
msgid "Brown"
msgstr "Коричневая"
#: sheep.lua
msgid "Cyan"
msgstr "Голубая"
#: sheep.lua
msgid "Dark Green"
msgstr "Темно-зеленая"
#: sheep.lua
msgid "Dark Grey"
msgstr "Темно-серая"
#: sheep.lua
msgid "Green"
msgstr "Зеленая"
#: sheep.lua
msgid "Grey"
msgstr "Серая"
#: sheep.lua
msgid "Magenta"
msgstr "Пурпурная"
#: sheep.lua
msgid "Orange"
msgstr "Оранжевая"
#: sheep.lua
msgid "Pink"
msgstr "Розовая"
#: sheep.lua
msgid "Red"
msgstr "Красная"
#: sheep.lua
msgid "Violet"
msgstr "Фиолетовая"
#: sheep.lua
msgid "White"
msgstr "Белая"
#: sheep.lua
msgid "Yellow"
msgstr "Желтая"
#: sheep.lua
msgid "@1 Sheep"
msgstr "@1 овца"
#: sheep.lua
msgid "Raw Mutton"
msgstr "Сырая баранина"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "Приготовленная баранина"
#: warthog.lua
msgid "Warthog"
msgstr "Бородавочник"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Свиные отбивные"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Приготовленные свиные отбивные"

198
locale/template.pot Normal file
View File

@ -0,0 +1,198 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: bee.lua
msgid "Bee"
msgstr ""
#: bee.lua
msgid "Honey"
msgstr ""
#: bee.lua
msgid "Beehive"
msgstr ""
#: bee.lua
msgid "Honey Block"
msgstr ""
#: bunny.lua
msgid "Bunny"
msgstr ""
#: bunny.lua
msgid "Raw Rabbit"
msgstr ""
#: bunny.lua
msgid "Cooked Rabbit"
msgstr ""
#: bunny.lua
msgid "Rabbit Hide"
msgstr ""
#: chicken.lua
msgid "Chicken"
msgstr ""
#: chicken.lua
msgid "Chicken Egg"
msgstr ""
#: chicken.lua
msgid "Fried Egg"
msgstr ""
#: chicken.lua
msgid "Raw Chicken"
msgstr ""
#: chicken.lua
msgid "Cooked Chicken"
msgstr ""
#: chicken.lua
msgid "Feather"
msgstr ""
#: cow.lua
msgid "Cow already milked!"
msgstr ""
#: cow.lua
msgid "Cow"
msgstr ""
#: cow.lua
msgid "Bucket of Milk"
msgstr ""
#: cow.lua
msgid "Cheese"
msgstr ""
#: cow.lua
msgid "Cheese Block"
msgstr ""
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr ""
#: kitten.lua
msgid "Kitten"
msgstr ""
#: penguin.lua
msgid "Penguin"
msgstr ""
#: rat.lua
msgid "Rat"
msgstr ""
#: rat.lua
msgid "Cooked Rat"
msgstr ""
#: sheep.lua
msgid "Black"
msgstr ""
#: sheep.lua
msgid "Blue"
msgstr ""
#: sheep.lua
msgid "Brown"
msgstr ""
#: sheep.lua
msgid "Cyan"
msgstr ""
#: sheep.lua
msgid "Dark Green"
msgstr ""
#: sheep.lua
msgid "Dark Grey"
msgstr ""
#: sheep.lua
msgid "Green"
msgstr ""
#: sheep.lua
msgid "Grey"
msgstr ""
#: sheep.lua
msgid "Magenta"
msgstr ""
#: sheep.lua
msgid "Orange"
msgstr ""
#: sheep.lua
msgid "Pink"
msgstr ""
#: sheep.lua
msgid "Red"
msgstr ""
#: sheep.lua
msgid "Violet"
msgstr ""
#: sheep.lua
msgid "White"
msgstr ""
#: sheep.lua
msgid "Yellow"
msgstr ""
#: sheep.lua
msgid "@1 Sheep"
msgstr ""
#: sheep.lua
msgid "Raw Mutton"
msgstr ""
#: sheep.lua
msgid "Cooked Mutton"
msgstr ""
#: warthog.lua
msgid "Warthog"
msgstr ""
#: warthog.lua
msgid "Raw Porkchop"
msgstr ""
#: warthog.lua
msgid "Cooked Porkchop"
msgstr ""

202
locale/tr.po Normal file
View File

@ -0,0 +1,202 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: 2017-04-26 09:02+0200\n"
"Last-Translator: Admicos\n"
"Language-Team: \n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.12\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: bee.lua
msgid "Bee"
msgstr "Arı"
#: bee.lua
msgid "Honey"
msgstr "Bal"
#: bee.lua
msgid "Beehive"
msgstr "Arı kovanı"
#: bee.lua
msgid "Honey Block"
msgstr "Bal bloğu"
#: bunny.lua
msgid "Bunny"
msgstr "Tavşan"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "çiğ tavşan"
#: bunny.lua
#, fuzzy
msgid "Cooked Rabbit"
msgstr "pişmiş tavşan"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "tavşan kürkü"
#: chicken.lua
msgid "Chicken"
msgstr "Tavuk"
#: chicken.lua
msgid "Chicken Egg"
msgstr "Tavuk yumurtası "
#: chicken.lua
msgid "Fried Egg"
msgstr "Kızarmış yumurta"
#: chicken.lua
msgid "Raw Chicken"
msgstr "Çiğ tavuk"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "Pişmiş tavuk"
#: chicken.lua
msgid "Feather"
msgstr ""
#: cow.lua
msgid "Cow already milked!"
msgstr "İnekte süt yok!"
#: cow.lua
msgid "Cow"
msgstr "İnek"
#: cow.lua
msgid "Bucket of Milk"
msgstr "Süt kovası"
#: cow.lua
msgid "Cheese"
msgstr "Peynir"
#: cow.lua
msgid "Cheese Block"
msgstr "Peynir bloğu"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[MOD] Mobs Redo 'Hayvanlar' yüklendi"
#: kitten.lua
msgid "Kitten"
msgstr "Yavru kedi"
#: penguin.lua
msgid "Penguin"
msgstr ""
#: rat.lua
msgid "Rat"
msgstr "Sıçan"
#: rat.lua
msgid "Cooked Rat"
msgstr "Pişmiş sıçan"
#: sheep.lua
msgid "Black"
msgstr "Siyah"
#: sheep.lua
msgid "Blue"
msgstr "Mavi"
#: sheep.lua
msgid "Brown"
msgstr "Kahverengi"
#: sheep.lua
msgid "Cyan"
msgstr "Camgöbeği"
#: sheep.lua
msgid "Dark Green"
msgstr "Koyu yeşil"
#: sheep.lua
msgid "Dark Grey"
msgstr "Koyu gri"
#: sheep.lua
msgid "Green"
msgstr "Yeşil"
#: sheep.lua
msgid "Grey"
msgstr "Gri"
#: sheep.lua
msgid "Magenta"
msgstr "Macenta"
#: sheep.lua
msgid "Orange"
msgstr "Turuncu"
#: sheep.lua
msgid "Pink"
msgstr "Pembe"
#: sheep.lua
msgid "Red"
msgstr "Kırmızı"
#: sheep.lua
msgid "Violet"
msgstr "Mor"
#: sheep.lua
msgid "White"
msgstr "Beyaz"
#: sheep.lua
msgid "Yellow"
msgstr "Sarı"
#: sheep.lua
#, fuzzy
msgid "@1 Sheep"
msgstr "@1 Koyun"
#: sheep.lua
msgid "Raw Mutton"
msgstr "çiğ kuzu"
#: sheep.lua
#, fuzzy
msgid "Cooked Mutton"
msgstr "pişmiş kuzu"
#: warthog.lua
msgid "Warthog"
msgstr "Domuz"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "Çiğ pirzola"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "Pişmiş pirzola"

206
locale/zh_CN.pot Normal file
View File

@ -0,0 +1,206 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# IFRFSX <1079092922@qq.com>, 2020.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-31 11:28+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: bee.lua
msgid "Bee"
msgstr "蜜蜂"
#: bee.lua
msgid "Honey"
msgstr "蜂蜜"
#: bee.lua
msgid "Beehive"
msgstr "蜂巢"
#: bee.lua
msgid "Honey Block"
msgstr "蜂蜜方块"
#: bunny.lua
msgid "Bunny"
msgstr "兔子"
#: bunny.lua
msgid "Raw Rabbit"
msgstr "生兔肉"
#: bunny.lua
msgid "Cooked Rabbit"
msgstr "熟兔肉"
#: bunny.lua
msgid "Rabbit Hide"
msgstr "兔子皮"
#: chicken.lua
msgid "Chicken"
msgstr "鸡"
#: chicken.lua
msgid "Chicken Egg"
msgstr "鸡蛋"
#: chicken.lua
msgid "Fried Egg"
msgstr "煎蛋"
#: chicken.lua
msgid "Raw Chicken"
msgstr "生鸡肉"
#: chicken.lua
msgid "Cooked Chicken"
msgstr "熟鸡肉"
#: chicken.lua
msgid "Feather"
msgstr "羽毛"
#: cow.lua
msgid "Cow already milked!"
msgstr "奶牛已经被挤奶了!"
#: cow.lua
msgid "Cow"
msgstr "奶牛"
#: cow.lua
msgid "Bucket of Milk"
msgstr "一桶牛奶"
#: cow.lua
msgid "Glass of Milk"
msgstr "一杯牛奶"
#: cow.lua
msgid "Cheese"
msgstr "奶酪"
#: cow.lua
msgid "Cheese Block"
msgstr "奶酪方块"
#: init.lua
msgid "[MOD] Mobs Redo 'Animals' loaded"
msgstr "[模组] Mobs Redo 'Animals' 已加载!"
#: kitten.lua
msgid "Kitten"
msgstr "小猫"
#: kitten.lua
msgid "Hairball"
msgstr "毛球"
#: penguin.lua
msgid "Penguin"
msgstr "企鹅"
#: rat.lua
msgid "Rat"
msgstr "老鼠"
#: rat.lua
msgid "Cooked Rat"
msgstr "熟老鼠"
#: sheep.lua
msgid "Black"
msgstr "黑"
#: sheep.lua
msgid "Blue"
msgstr "蓝"
#: sheep.lua
msgid "Brown"
msgstr "棕"
#: sheep.lua
msgid "Cyan"
msgstr "青"
#: sheep.lua
msgid "Dark Green"
msgstr "蓝绿"
#: sheep.lua
msgid "Dark Grey"
msgstr "蓝灰"
#: sheep.lua
msgid "Green"
msgstr "绿"
#: sheep.lua
msgid "Grey"
msgstr "灰"
#: sheep.lua
msgid "Magenta"
msgstr "品红"
#: sheep.lua
msgid "Orange"
msgstr "橙"
#: sheep.lua
msgid "Pink"
msgstr "粉红"
#: sheep.lua
msgid "Red"
msgstr "红"
#: sheep.lua
msgid "Violet"
msgstr "紫"
#: sheep.lua
msgid "White"
msgstr "白"
#: sheep.lua
msgid "Yellow"
msgstr "黄"
#: sheep.lua
msgid "@1 Sheep"
msgstr "@1羊"
#: sheep.lua
msgid "Raw Mutton"
msgstr "生羊肉"
#: sheep.lua
msgid "Cooked Mutton"
msgstr "熟羊肉"
#: warthog.lua
msgid "Warthog"
msgstr "野猪"
#: warthog.lua
msgid "Raw Porkchop"
msgstr "生猪排"
#: warthog.lua
msgid "Cooked Porkchop"
msgstr "熟猪排"

53
locale/zh_CN.txt Normal file
View File

@ -0,0 +1,53 @@
# Template for translations of mobs_animal mod
# last update: 2020/02/13
Bee = 蜜蜂
Honey = 蜂蜜
Beehive = 蜂巢
Honey Block = 蜂蜜方块
Butter = 黄油
Bunny = 兔子
Raw Rabbit = 生兔肉
Cooked Rabbit = 熟兔肉
Rabbit Hide = 兔子皮
Chicken = 鸡
Chicken Egg = 鸡蛋
Fried Egg = 煎蛋
Raw Chicken = 生鸡肉
Cooked Chicken = 熟鸡肉
Feather = 羽毛
Cow already milked! = 奶牛已被挤奶!
Cow = 奶牛
Bucket of Milk = 一桶牛奶
Cheese = 奶酪
Cheese Block = 奶酪方块
[MOD] Mobs Redo 'Animals' loaded = [模组] Mobs Redo 'Animals' 已加载!
Kitten = 小猫
Penguin = 企鹅
Rat = 老鼠
Cooked Rat = 熟老鼠
Black = 黑
Blue = 蓝
Brown = 棕
Cyan = 青
Dark Green = 暗绿
Dark Grey = 暗灰
Green = 绿
Grey = 灰
Magenta = 品红
Orange = 橙
Pink = 粉红
Red = 红
Violet = 紫
White = 白
Yellow = 黄
@1 Sheep = @1羊
Raw Mutton = 生羊肉
Cooked Mutton = 熟羊肉
Warthog = 野猪
Raw Porkchop = 生猪排
Cooked Porkchop = 熟猪排
Panda = 熊猫
Glass of Milk = 一杯牛奶
Hairball = 毛球

53
locale/zh_TW.txt Normal file
View File

@ -0,0 +1,53 @@
# Template for translations of mobs_animal mod
# last update: 2020/02/13
Bee = 蜜蜂
Honey = 蜂蜜
Beehive = 蜂巢
Honey Block = 蜂蜜方塊
Butter = 黃油
Bunny = 兔子
Raw Rabbit = 生兔肉
Cooked Rabbit = 熟兔肉
Rabbit Hide = 兔子皮
Chicken = 雞
Chicken Egg = 雞蛋
Fried Egg = 煎蛋
Raw Chicken = 生雞肉
Cooked Chicken = 熟雞肉
Feather = 羽毛
Cow already milked! = 奶牛已被擠奶!
Cow = 奶牛
Bucket of Milk = 一桶牛奶
Cheese = 奶酪
Cheese Block = 奶酪方塊
[MOD] Mobs Redo 'Animals' loaded = [模組] Mobs Redo 'Animals' 已加載!
Kitten = 小貓
Penguin = 企鵝
Rat = 老鼠
Cooked Rat = 熟老鼠
Black = 黑
Blue = 藍
Brown = 棕
Cyan = 青
Dark Green = 暗綠
Dark Grey = 暗灰
Green = 綠
Grey = 灰
Magenta = 品紅
Orange = 橙
Pink = 粉紅
Red = 紅
Violet = 紫
White = 白
Yellow = 黃
@1 Sheep = @1羊
Raw Mutton = 生羊肉
Cooked Mutton = 熟羊肉
Warthog = 野豬
Raw Porkchop = 生豬排
Cooked Porkchop = 熟豬排
Panda = 熊貓
Glass of Milk = 一杯牛奶
Hairball = 毛球

View File

@ -1,33 +1,31 @@
-- add lucky blocks
lucky_block:add_blocks({
{"spw", "mobs:sheep", 5},
{"spw", "mobs:rat", 5},
{"dro", {"mobs:rat_cooked"}, 5},
{"spw", "mobs:bunny", 3},
{"nod", "mobs:honey_block", 0},
{"spw", "mobs:pumba", 5},
{"nod", "mobs:cheeseblock", 0},
{"spw", "mobs:chicken", 5},
{"dro", {"mobs:egg"}, 5},
{"spw", "mobs:cow", 5},
{"dro", {"mobs:bucket_milk", "bucket:bucket_water"}, 8},
{"spw", "mobs:kitten", 2},
{"exp"},
{"dro", {"mobs:hairball"}, 3},
{"dro", {"mobs:chicken_raw", "mobs:chicken_cooked"}, 10},
{"dro", {"mobs:pork_raw", "mobs:pork_cooked"}, 10},
{"dro", {"mobs:mutton_raw", "mobs:mutton_cooked"}, 10},
{"dro", {"mobs:meat_raw", "mobs:meat"}, 10},
{"dro", {"mobs:glass_milk"}, 5}
})
-- if nyancat found add special block
if core.registered_nodes["default:nyancat"] then
if minetest.get_modpath("lucky_block") then
lucky_block:add_blocks({
{"tro", "default:nyancat", "mobs_kitten", true}
{"spw", "mobs:sheep", 5},
{"spw", "mobs:rat", 5},
{"dro", {"mobs:rat_cooked"}, 5},
{"spw", "mobs:bunny", 3},
{"nod", "mobs:honey_block", 0},
{"spw", "mobs:pumba", 5},
{"nod", "mobs:cheeseblock", 0},
{"spw", "mobs:chicken", 5},
{"dro", {"mobs:egg"}, 5},
{"spw", "mobs:cow", 5},
{"dro", {"mobs:bucket_milk", "bucket:bucket_water"}, 8},
{"spw", "mobs:kitten", 2},
{"exp"},
{"dro", {"mobs:hairball"}, 3},
{"dro", {"mobs:chicken_raw", "mobs:chicken_cooked"}, 10},
{"dro", {"mobs:pork_raw", "mobs:pork_cooked"}, 10},
{"dro", {"mobs:mutton_raw", "mobs:mutton_cooked"}, 10},
{"dro", {"mobs:meat_raw", "mobs:meat"}, 10},
{"dro", {"mobs:glass_milk"}, 5},
})
if minetest.registered_nodes["default:nyancat"] then
lucky_block:add_blocks({
{"tro", "default:nyancat", "mobs_kitten", true},
})
end
end

View File

@ -1,5 +1,4 @@
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
optional_depends = default, lucky_block, intllib
description = Adds farm animals.

Binary file not shown.

BIN
models/mobs_goat.b3d Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,10 +1,11 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Panda by AspireMint (CC BY-SA 3.0)
mobs:register_mob("mobs_animal:panda", {
stepheight = 0.6,
stepheight = 0.6,
type = "animal",
passive = false,
attack_type = "dogfight",
@ -15,15 +16,17 @@ mobs:register_mob("mobs_animal:panda", {
damage = 3,
hp_min = 10,
hp_max = 24,
armor = 100,
armor = 200,
collisionbox = {-0.4, -0.45, -0.4, 0.4, 0.45, 0.4},
visual = "mesh",
mesh = "mobs_panda.b3d",
textures = {{"mobs_panda.png"}},
textures = {
{"mobs_panda.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_panda",
attack = "mobs_panda"
attack = "mobs_panda",
},
walk_chance = 5,
walk_velocity = 0.5,
@ -33,34 +36,39 @@ mobs:register_mob("mobs_animal:panda", {
follow = {"ethereal:bamboo", "bamboo:trunk"},
view_range = 8,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2}
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2},
},
water_damage = 0.01,
water_damage = 0,
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,
punch_start = 80, punch_end = 120
stand_start = 130,
stand_end = 270,
stand1_start = 0,
stand1_end = 0,
stand2_start = 1,
stand2_end = 1,
stand3_start = 2,
stand3_end = 2,
walk_start = 10,
walk_end = 70,
run_start = 10,
run_end = 70,
punch_start = 80,
punch_end = 120,
-- 0 = rest, 1 = hiding (covers eyes), 2 = surprised
},
on_rightclick = function(self, clicker)
if mobs:feed_tame(self, clicker, 20, true, true) then return end
if mobs:protect(self, clicker) then return end
if mobs:capture_mob(self, clicker, 0, 5, 50, false, nil) then return end
end
end,
})
-- where to spawn (ethereal bamboo biome only)
if core.get_modpath("ethereal") and not mobs.custom_spawn_animal then
if minetest.get_modpath("ethereal") and not mobs.custom_spawn_animal then
mobs:spawn({
name = "mobs_animal:panda",
@ -68,13 +76,11 @@ if core.get_modpath("ethereal") and not mobs.custom_spawn_animal then
neighbors = {"group:grass"},
min_light = 14,
interval = 60,
chance = 8000,
chance = 8000, -- 15000
min_height = 10,
max_height = 80,
day_toggle = true
day_toggle = true,
})
end
-- spawn egg
mobs:register_egg("mobs_animal:panda", S("Panda"), "mobs_panda_inv.png")

View File

@ -1,5 +1,6 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Penguin by D00Med
@ -10,12 +11,14 @@ stepheight = 0.6,
reach = 1,
hp_min = 5,
hp_max = 10,
armor = 100,
armor = 200,
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"}},
textures = {
{"mobs_penguin.png"},
},
sounds = {},
makes_footstep_sound = true,
walk_velocity = 1,
@ -24,7 +27,7 @@ stepheight = 0.6,
jump = false,
stepheight = 1.1,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1}
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
},
water_damage = 0,
lava_damage = 4,
@ -32,16 +35,20 @@ stepheight = 0.6,
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
stand_start = 1,
stand_end = 20,
walk_start = 25,
walk_end = 45,
fly_start = 75, -- swim animation
fly_end = 95,
-- 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"
"mobs_fish:clownfish_set", "mobs_fish:tropical_set", "xocean:fish_edible",
"group:fishraw" -- Edit from NALC: Group from fishing mod
},
view_range = 5,
@ -51,25 +58,20 @@ stepheight = 0.6,
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
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
})
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")

55
rat.lua
View File

@ -1,25 +1,27 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Rat by KPavel and PilzAdam (B3D model by sirrobzeroone)
-- Rat by PilzAdam (B3D model by sirrobzeroone)
mobs:register_mob("mobs_animal:rat", {
stepheight = 0.6,
stepheight = 0.6,
type = "animal",
passive = true,
hp_min = 1,
hp_max = 4,
armor = 100,
armor = 200,
collisionbox = {-0.2, -1, -0.2, 0.2, -0.8, 0.2},
visual = "mesh",
mesh = "mobs_rat.b3d",
textures = {
{"mobs_rat.png"},
{"mobs_rat2.png"},
{"mobs_rat3.png"}
},
makes_footstep_sound = false,
sounds = {random = "mobs_rat"},
sounds = {
random = "mobs_rat",
},
walk_velocity = 1,
run_velocity = 2,
runaway = true,
@ -28,7 +30,6 @@ mobs:register_mob("mobs_animal:rat", {
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,
@ -58,7 +59,6 @@ mobs:register_mob("mobs_animal:rat", {
]]
})
-- example on_spawn function
local function rat_spawn(self, pos)
self = self:get_luaentity()
@ -67,42 +67,35 @@ local function rat_spawn(self, pos)
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,
})
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")
mobs:alias_mob("mobs:rat", "mobs_animal:rat") -- compatibility
-- cooked rat, yummy!
core.register_craftitem(":mobs:rat_cooked", {
minetest.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}
on_use = minetest.item_eat(3),
groups = {food_rat = 1, flammable = 2}
})
mobs.add_eatable("mobs:rat_cooked", 3)
core.register_craft({
minetest.register_craft({
type = "cooking",
output = "mobs:rat_cooked",
recipe = "mobs_animal:rat",

View File

@ -17,7 +17,7 @@ Wanders around eating grass/wheat and can be right-clicked with empty bucket to
---
### 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.
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.
---
### Rat
@ -25,7 +25,7 @@ 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.
Green grass and wheat munchers that can be clipped using shears to give 1-3 wool. Feed sheep 8x wheat to regrow wool, tame and breed. Right-click a tamed sheep with dye to change it's colour. Will drop 1-3 raw mutton when killed.
---
### Warthog

Binary file not shown.

Before

Width:  |  Height:  |  Size: 229 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -1,13 +0,0 @@
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

489
sheep.lua
View File

@ -1,103 +1,48 @@
-- 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 S = mobs.intllib
local all_colours = {
{"black", S("Black"), "#212121b0"}, -- referenced down in mobs:spawn
{"black", S("Black"), "#000000b0"},
{"blue", S("Blue"), "#015dbb70"},
{"brown", S("Brown"), "#663300a0"}, -- referenced down in mobs:spawn
{"cyan", S("Cyan"), "#00b4bf70"},
{"brown", S("Brown"), "#663300a0"},
{"cyan", S("Cyan"), "#01ffd870"},
{"dark_green", S("Dark Green"), "#005b0770"},
{"dark_grey", S("Dark Grey"), "#444444b0"}, -- referenced down in mobs:spawn
{"dark_grey", S("Dark Grey"), "#303030b0"},
{"green", S("Green"), "#61ff0170"},
{"grey", S("Grey"), "#919191b0"}, -- referenced down in mobs:spawn
{"magenta", S("Magenta"), "#ed03ad70"},
{"grey", S("Grey"), "#5b5b5bb0"},
{"magenta", S("Magenta"), "#ff05bb70"},
{"orange", S("Orange"), "#ff840170"},
{"pink", S("Pink"), "#ff85c470"},
{"pink", S("Pink"), "#ff65b570"},
{"red", S("Red"), "#ff0000a0"},
{"violet", S("Violet"), "#5c00c970"},
{"white", S("White"), "#ffffffc0"}, -- referenced down in mobs:spawn
{"yellow", S("Yellow"), "#fff80070"}
{"violet", S("Violet"), "#2000c970"},
{"white", S("White"), "#abababc0"},
{"yellow", S("Yellow"), "#e3ff0070"},
}
-- Sheep by PilzAdam/K Pavel, texture converted to minetest by AMMOnym from Summerfield pack
-- Sheep by PilzAdam, 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], {
mobs:register_mob("mobs_animal:sheep_"..col[1], {
stay_near = {"farming:straw", 10},
stepheight = 0.6,
type = "animal",
passive = true,
hp_min = 8,
hp_max = 12,
armor = 100,
hp_max = 10,
armor = 200,
collisionbox = {-0.5, -1, -0.5, 0.5, 0.3, 0.5},
visual = "mesh",
mesh = "mobs_sheep.b3d",
textures = {
{"mobs_sheep_base.png^(mobs_sheep_wool.png^[multiply:" .. col[3] .. ")"}
{"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
},
gotten_texture = {"mobs_sheep_base.png^mobs_sheep_shaved.png"},
gotten_texture = {"mobs_sheep_shaved.png"},
gotten_mesh = "mobs_sheep_shaved.b3d",
makes_footstep_sound = true,
sounds = {
random = "mobs_sheep",
replace = "default_dig_crumbly"
},
walk_velocity = 1,
run_velocity = 2,
@ -105,18 +50,26 @@ for _, col in ipairs(all_colours) do
jump = true,
jump_height = 6,
pushable = true,
drops = drops_normal,
water_damage = 0.01,
drops = {
{name = "mobs:mutton_raw", chance = 1, min = 1, max = 2},
{name = "wool:"..col[1], chance = 1, min = 1, max = 1},
},
water_damage = 0,
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,
-- 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
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 80,
walk_start = 81,
walk_end = 100,
die_start = 1, -- we dont have a specific death animation so we will
die_end = 2, -- re-use 2 standing frames at a speed of 1 fps and
die_speed = 1, -- have mob rotate when dying.
die_loop = false,
die_rotate = true,
},
follow = {
"farming:wheat", "default:grass_1", "farming:barley",
@ -124,9 +77,11 @@ for _, col in ipairs(all_colours) do
},
view_range = 8,
replace_rate = 10,
replace_what = replace_what,
replace_what = {
{"group:grass", "air", -1},
{"default:dirt_with_grass", "default:dirt", -2}
},
fear_height = 3,
on_replace = function(self, pos, oldnode, newnode)
self.food = (self.food or 0) + 1
@ -136,132 +91,27 @@ for _, col in ipairs(all_colours) do
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}
self.object:set_properties({
textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
mesh = "mobs_sheep.b3d",
})
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
-- and resize to half height
mob:set_properties({
textures = {textures},
visual_size = {
x = parent1.base_size.x * .5, y = parent1.base_size.y * .5
},
collisionbox = {
parent1.base_colbox[1] * .5, parent1.base_colbox[2] * .5,
parent1.base_colbox[3] * .5, parent1.base_colbox[4] * .5,
parent1.base_colbox[5] * .5, parent1.base_colbox[6] * .5
},
selectionbox = {
parent1.base_selbox[1] * .5, parent1.base_selbox[2] * .5,
parent1.base_selbox[3] * .5, parent1.base_selbox[4] * .5,
parent1.base_selbox[5] * .5, parent1.base_selbox[6] * .5
}
})
-- 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?
--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}
self.object:set_properties({
textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
mesh = "mobs_sheep.b3d",
})
end
return
@ -271,91 +121,75 @@ for _, col in ipairs(all_colours) do
local itemname = item:get_name()
local name = clicker:get_player_name()
-- are we giving a haircut>
--are we giving a haircut>
if itemname == "mobs:shears" then
if self.gotten ~= false or self.child ~= false
or name ~= self.owner or not core.get_modpath("wool") then
if self.gotten ~= false
or self.child ~= false
or name ~= self.owner
or not minetest.get_modpath("wool") then
return
end
self.gotten = true -- shaved
self.drops = drops_gotten
self.food = 0 -- reset food
local obj = core.add_item(
local obj = minetest.add_item(
self.object:get_pos(),
ItemStack("wool:" .. col[1] .. " " .. random(3))
ItemStack( "wool:" .. col[1] .. " " .. math.random(1, 3) )
)
if obj then
obj:set_velocity({x = random(-1, 1), y = 5, z = random(-1, 1)})
obj:setvelocity({
x = math.random(-1, 1),
y = 5,
z = math.random(-1, 1)
})
end
item:add_wear(650) -- 100 uses
clicker:set_wielded_item(item)
local textures = horn_texture_sel(self.attribute_horns, self.gotten)
self.object:set_properties({textures = {textures}})
self.base_texture = {textures}
self.object:set_properties({
textures = {"mobs_sheep_shaved.png"},
mesh = "mobs_sheep_shaved.b3d",
})
return
end
-- are we coloring?
--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
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
if c[1] == colr then
local pos = self.object:get_pos()
-- add new coloured sheep
local mob = core.add_entity(pos, "mobs_animal:sheep_" .. colr)
self.object:remove()
local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr)
local ent = mob:get_luaentity()
if ent then
ent.owner = name
ent.tamed = true
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
-- 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
@ -371,161 +205,50 @@ for _, col in ipairs(all_colours) do
end
})
-- spawn egg
mobs:register_egg("mobs_animal:sheep_"..col[1], S("@1 Sheep", col[2]),
"wool_" .. col[1] .. ".png^mobs_sheep_inv.png")
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
})
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, -- 15000
min_height = 0,
max_height = 200,
day_toggle = true,
})
end
-- compatibility with older mobs mod
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white")
mobs:alias_mob("mobs:sheep", "mobs_animal:sheep_white") -- compatibility
-- raw mutton
core.register_craftitem(":mobs:mutton_raw", {
minetest.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}
on_use = minetest.item_eat(2),
groups = {food_meat_raw = 1, food_mutton_raw = 1, flammable = 2},
})
mobs.add_eatable("mobs:mutton_raw", 2)
-- cooked mutton and recipe
core.register_craftitem(":mobs:mutton_cooked", {
-- cooked mutton
minetest.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}
on_use = minetest.item_eat(6),
groups = {food_meat = 1, food_mutton = 1, flammable = 2},
})
mobs.add_eatable("mobs:mutton_cooked", 6)
core.register_craft({
minetest.register_craft({
type = "cooking",
output = "mobs:mutton_cooked",
recipe = "mobs:mutton_raw",
cooktime = 5
cooktime = 5,
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 609 B

BIN
textures/mobs_dung.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

BIN
textures/mobs_goat_brown.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
textures/mobs_goat_grey.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
textures/mobs_goat_inv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
textures/mobs_goat_white.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 675 B

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 788 B

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 983 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 B

View File

@ -1,5 +1,6 @@
local S = core.get_translator("mobs_animal")
local S = mobs.intllib
-- Warthog originally by KrupnoPavel, B3D model by sirrobzeroone
@ -12,18 +13,20 @@ mobs:register_mob("mobs_animal:pumba", {
owner_loyal = true,
attack_npcs = false,
reach = 2,
damage = 2, attack_chance = 95,
hp_min = 10,
damage = 2,
hp_min = 5,
hp_max = 15,
armor = 100,
armor = 200,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 0.95, 0.4},
visual = "mesh",
mesh = "mobs_pumba.b3d",
textures = {{"mobs_pumba.png"}},
textures = {
{"mobs_pumba.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_pig",
attack = "mobs_pig_angry"
attack = "mobs_pig_angry",
},
walk_velocity = 2,
run_velocity = 3,
@ -33,88 +36,88 @@ mobs:register_mob("mobs_animal:pumba", {
follow = {"default:apple", "farming:potato"},
view_range = 10,
drops = {
{name = "mobs:pork_raw", chance = 1, min = 1, max = 3}
{name = "mobs:pork_raw", chance = 1, min = 1, max = 3},
{name = "maptools:silver_coin", chance = 10, min = 0, max = 1,},
},
water_damage = 0.01,
water_damage = 0,
lava_damage = 5,
light_damage = 0,
fear_height = 2,
animation = {
speed_normal = 15,
stand_start = 25, stand_end = 55,
walk_start = 70, walk_end = 100,
punch_start = 70, punch_end = 100,
-- no specific dying animation, so use 2 frames at 1fps and rotate
die_start = 1, die_end = 2, die_speed = 1,
die_loop = false, die_rotate = true
},
stand_start = 25,
stand_end = 55,
walk_start = 70,
walk_end = 100,
punch_start = 70,
punch_end = 100,
die_start = 1, -- we dont have a specific death animation so we will
die_end = 2, -- re-use 2 standing frames at a speed of 1 fps and
die_speed = 1, -- have mob rotate when dying.
die_loop = false,
die_rotate = true,
},
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, 0, 5, 50, false, nil) then return end
end
end,
})
-- where to spawn
local spawn_on = {"default:dirt_with_grass"}
local spawn_by = {"group:grass"}
if not mobs.custom_spawn_animal then
local spawn_on = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass"}
local spawn_by = {"group:grass"}
if core.get_modpath("ethereal") then
spawn_on = {"ethereal:mushroom_dirt"}
spawn_by = {"flowers:mushroom_brown", "flowers:mushroom_red"}
end
mobs:spawn({
name = "mobs_animal:pumba",
nodes = spawn_on,
neighbors = spawn_by,
min_light = 14,
interval = 60,
chance = 8000,
min_height = 0,
max_height = 200,
day_toggle = true
})
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
spawn_on = {"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass"}
spawn_by = {"group:dry_grass"}
end
-- spawn egg
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:mushroom_dirt"}
spawn_by = {"flowers:mushroom_brown", "flowers:mushroom_red"}
end
if not mobs.custom_spawn_animal then
mobs:spawn({
name = "mobs_animal:pumba",
nodes = spawn_on,
neighbors = spawn_by,
min_light = 14,
interval = 60,
chance = 8000, -- 15000
min_height = 0,
max_height = 200,
day_toggle = true,
})
end
mobs:register_egg("mobs_animal:pumba", S("Warthog"), "mobs_pumba_inv.png")
-- old mobs mod compatibility
mobs:alias_mob("mobs:pumba", "mobs_animal:pumba")
mobs:alias_mob("mobs:pumba", "mobs_animal:pumba") -- compatibility
-- raw porkchop
core.register_craftitem(":mobs:pork_raw", {
minetest.register_craftitem(":mobs:pork_raw", {
description = S("Raw Porkchop"),
inventory_image = "mobs_pork_raw.png",
on_use = core.item_eat(4),
groups = {food_meat_raw = 1, food_pork_raw = 1}
on_use = minetest.item_eat(4),
groups = {food_meat_raw = 1, food_pork_raw = 1, flammable = 2},
})
mobs.add_eatable("mobs:pork_raw", 4)
-- cooked porkchop and recipe
core.register_craftitem(":mobs:pork_cooked", {
-- cooked porkchop
minetest.register_craftitem(":mobs:pork_cooked", {
description = S("Cooked Porkchop"),
inventory_image = "mobs_pork_cooked.png",
on_use = core.item_eat(8),
groups = {food_meat = 1, food_pork = 1}
on_use = minetest.item_eat(8),
groups = {food_meat = 1, food_pork = 1, flammable = 2},
})
mobs.add_eatable("mobs:pork_cooked", 8)
core.register_craft({
minetest.register_craft({
type = "cooking",
output = "mobs:pork_cooked",
recipe = "mobs:pork_raw",
cooktime = 5
cooktime = 5,
})