1
0
mirror of https://codeberg.org/tenplus1/mobs_animal.git synced 2025-07-27 12:30:19 +02:00

Compare commits

34 Commits

Author SHA1 Message Date
1962f9f720 Merge remote-tracking branch 'upstream/master' 2023-11-22 23:53:18 +01:00
b9605e9fac Merge remote-tracking branch 'upstream/master' 2023-06-07 21:55:14 +02:00
5d5b984853 Merge remote-tracking branch 'upstream/master' 2022-08-26 15:17:32 +02:00
97b8bffd67 Merge remote-tracking branch 'upstream/master' 2022-06-25 16:50:54 +02:00
e7dc5350a6 Merge remote-tracking branch 'upstream/master' 2022-05-27 18:41:43 +02:00
e00766a6d7 Merge remote-tracking branch 'upstream/master' 2022-01-22 20:05:18 +01:00
d500e7f893 Merge remote-tracking branch 'upstream/master' 2021-11-26 21:43:46 +01:00
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
33 changed files with 659 additions and 623 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 B

111
bee.lua
View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Bee by KrupnoPavel (.b3d model by sirrobzeroone)
@ -8,15 +8,19 @@ 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 = {
@ -29,8 +33,10 @@ 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)
@ -42,8 +48,6 @@ mobs:register_mob("mobs_animal:bee", {
-- end,
})
-- where to spawn
if not mobs.custom_spawn_animal then
mobs:spawn({
@ -58,28 +62,26 @@ if not mobs.custom_spawn_animal then
})
end
-- spawn egg
-- 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 (only required if moving from old mobs to mobs_redo)
mobs:alias_mob("mobs:bee", "mobs_animal:bee")
-- honey
core.register_craftitem(":mobs:honey", {
-- 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,12 +90,11 @@ 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 and default.node_sound_defaults(),
on_construct = function(pos)
local meta = core.get_meta(pos)
local meta = minetest.get_meta(pos)
local gui_bg = default and default.gui_bg .. default.gui_bg_img .. default.gui_slots or ""
meta:set_string("formspec", "size[8,6]"
@ -110,10 +111,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")
minetest.add_entity(pos, "mobs_animal:bee")
end
end
end,
@ -121,47 +122,52 @@ 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()
minetest.after(0.2, function()
local hp = puncher and puncher:get_hp()
if hp then puncher:set_hp(hp - 4) end
if hp then
puncher:set_hp(hp - 4)
end
end)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if listname == "beehive" then return 0 end
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
})
-- 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 and default.node_sound_dirt_defaults()
})
core.register_craft({
-- recipe
minetest.register_craft({
output = "mobs:honey_block",
recipe = {
{"mobs:honey", "mobs:honey", "mobs:honey"},
@ -170,38 +176,45 @@ core.register_craft({
}
})
core.register_craft({
minetest.register_craft({
output = "mobs:honey 9",
recipe = {
{"mobs:honey_block"}
}
})
-- beehive workings
core.register_abm({
-- beehive workings
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

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Bunny by ExeterDad
@ -10,7 +10,7 @@ mobs:register_mob("mobs_animal:bunny", {
stepheight = 0.6,
hp_min = 1,
hp_max = 4,
armor = 100,
armor = 200,
collisionbox = {-0.268, -0.5, -0.268, 0.268, 0.167, 0.268},
visual = "mesh",
mesh = "mobs_bunny.b3d",
@ -38,9 +38,12 @@ mobs:register_mob("mobs_animal:bunny", {
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,
@ -69,7 +72,7 @@ mobs:register_mob("mobs_animal:bunny", {
end
-- set special bunny attributes
local staticdata = core.serialize({
local staticdata = minetest.serialize({
type = "monster",
attack_type = "dogfight",
health = 20,
@ -84,13 +87,15 @@ mobs:register_mob("mobs_animal:bunny", {
})
-- add evil bunny
local obj = core.add_entity(
local obj = minetest.add_entity(
self.object:get_pos(), "mobs_animal:bunny", staticdata)
obj:set_properties({textures = {"mobs_bunny_evil.png"}, hp_max = 20})
-- remove old bunny
if obj:get_luaentity() then mobs:remove(self, true) end
if obj:get_luaentity() then
mobs:remove(self, true)
end
end
end,
@ -99,19 +104,19 @@ mobs:register_mob("mobs_animal:bunny", {
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})
@ -121,16 +126,15 @@ mobs:register_mob("mobs_animal:bunny", {
end
})
-- where to spawn
local spawn_on = "default:dirt_with_grass"
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:prairie_dirt"
end
if not mobs.custom_spawn_animal then
local spawn_on = "default:dirt_with_grass"
if core.get_modpath("ethereal") then
spawn_on = "ethereal:prairie_dirt"
end
mobs:spawn({
name = "mobs_animal:bunny",
nodes = {spawn_on},
@ -144,54 +148,50 @@ if not mobs.custom_spawn_animal then
})
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
})
-- 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}
})
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",
recipe = {
{"mobs:rabbit_hide", "mobs:rabbit_hide"},

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Chicken by JK Murray and Sirrobzeroone
@ -9,7 +9,7 @@ mobs:register_mob("mobs_animal:chicken", {
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",
@ -18,11 +18,12 @@ mobs:register_mob("mobs_animal:chicken", {
{"mobs_chicken_brown.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"
random = "mobs_chicken"
},
walk_velocity = 1,
run_velocity = 3,
@ -40,10 +41,18 @@ 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",
@ -75,36 +84,38 @@ 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(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
minetest.sound_play("default_place_node_hard", {
pos = pos,
gain = 1.0,
max_hear_distance = 5
}, true)
end
})
-- where to spawn
local spawn_on = {"default:dirt_with_grass"}
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:bamboo_dirt", "ethereal:prairie_dirt"}
end
if not mobs.custom_spawn_animal then
local spawn_on = {"default:dirt_with_grass"}
if core.get_modpath("ethereal") then
spawn_on = {"ethereal:bamboo_dirt", "ethereal:prairie_dirt"}
end
mobs:spawn({
name = "mobs_animal:chicken",
nodes = spawn_on,
@ -118,32 +129,29 @@ if not mobs.custom_spawn_animal then
})
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}
}, nil)
end,
hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1}
@ -152,14 +160,17 @@ mobs:register_arrow("mobs_animal:egg_entity", {
hit_node = function(self, pos, node)
if math.random(10) > 1 then return end
if math.random(10) > 1 then
return
end
pos.y = pos.y + 1
local nod = core.get_node_or_nil(pos)
local nod = minetest.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 not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end
@ -173,19 +184,24 @@ mobs:register_arrow("mobs_animal:egg_entity", {
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 +215,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 +236,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 +247,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"
})
-- raw chicken
core.register_craftitem(":mobs:chicken_raw", {
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", {
-- 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"
})
-- 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}
})
core.register_craft({type = "fuel", recipe = "mobs:chicken_feather", burntime = 1})
minetest.register_craft({
type = "fuel",
recipe = "mobs:chicken_feather",
burntime = 1
})

193
cow.lua
View File

@ -1,14 +1,5 @@
local S = core.get_translator("mobs_animal")
-- should cows eat grass blocks and mess up the environment?
local eat_gb = core.settings:get_bool("mobs_animal.eat_grass_block")
local replace_what = { {"group:grass", "air", 0} }
if eat_gb then
table.insert(replace_what, {"default:dirt_with_grass", "default:dirt", -1})
end
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Cow by sirrobzeroone
@ -18,10 +9,10 @@ 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",
@ -32,7 +23,6 @@ mobs:register_mob("mobs_animal:cow", {
makes_footstep_sound = true,
sounds = {
random = "mobs_cow",
replace = "default_dig_crumbly"
},
walk_velocity = 1,
run_velocity = 2,
@ -41,18 +31,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,
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,20 +64,10 @@ 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,
@ -83,7 +77,9 @@ mobs:register_mob("mobs_animal:cow", {
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
@ -100,11 +96,14 @@ mobs:register_mob("mobs_animal:cow", {
or item == "wooden_bucket:bucket_wood_empty"
or item == "bucket_wooden:bucket_empty" then
if self.child == true then return end
--if self.gotten == true
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
@ -129,7 +128,7 @@ mobs:register_mob("mobs_animal:cow", {
pos.y = pos.y + 0.5
core.add_item(pos, {name = ret_item})
minetest.add_item(pos, {name = ret_item})
end
self.gotten = true -- milked
@ -142,14 +141,14 @@ 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
})
-- where to spawn
if not mobs.custom_spawn_animal then
@ -166,37 +165,31 @@ if not mobs.custom_spawn_animal then
})
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({
output = "mobs:glass_milk 4",
recipe = {
{"vessels:drinking_glass", "vessels:drinking_glass"},
@ -206,7 +199,7 @@ core.register_craft({
replacements = {{"mobs:bucket_milk", "bucket:bucket_empty"}}
})
core.register_craft({
minetest.register_craft({
output = "mobs:bucket_milk",
recipe = {
{"group:food_milk_glass", "group:food_milk_glass"},
@ -218,41 +211,36 @@ 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
if minetest.get_modpath("farming") and farming and farming.mod then
salt_item = "farming:salt"
end
core.register_craft({
minetest.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",
@ -260,17 +248,16 @@ core.register_craft({
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 and default.node_sound_dirt_defaults()
})
core.register_craft({
minetest.register_craft({
output = "mobs:cheeseblock",
recipe = {
{"group:food_cheese", "group:food_cheese", "group:food_cheese"},
@ -279,30 +266,58 @@ core.register_craft({
}
})
core.register_craft({
minetest.register_craft({
output = "mobs:cheese 9",
recipe = {{"mobs:cheeseblock"}}
})
-- check for either of the wood bucket mods and add compatibility
-- 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},
}
}
})
local wb = core.get_modpath("wooden_bucket")
local bw = core.get_modpath("bucket_wooden")
minetest.register_craft({
type = "fuel",
recipe = "mobs:dung",
burntime = "8",
})
-- check for either of the wood bucket mods and add compatibility
local wb = minetest.get_modpath("wooden_bucket")
local bw = minetest.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", {
minetest.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),
on_use = minetest.item_eat(8, return_item),
groups = {food_milk = 1, flammable = 3, drink = 1}
})
core.register_craft({
minetest.register_craft({
output = "mobs:glass_milk 4",
recipe = {
{"vessels:drinking_glass", "vessels:drinking_glass"},
@ -312,7 +327,7 @@ if wb or bw then
replacements = {{"mobs:wooden_bucket_milk", return_item}}
})
core.register_craft({
minetest.register_craft({
output = "mobs:wooden_bucket_milk",
recipe = {
{"group:food_milk_glass", "group:food_milk_glass"},
@ -324,7 +339,7 @@ if wb or bw then
}
})
core.register_craft({
minetest.register_craft({
output = "mobs:butter",
recipe = {{"mobs:wooden_bucket_milk", salt_item}},
replacements = {{"mobs:wooden_bucket_milk", return_item}}

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,9 @@
local path = minetest.get_modpath(minetest.get_current_modname()) .. "/"
-- translation and mod path
local S = core.get_translator("mobs_animal")
local path = core.get_modpath(core.get_current_modname()) .. "/"
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Check for custom mob spawn file
local input = io.open(path .. "spawn.lua", "r")
if input then
@ -14,11 +12,11 @@ if input then
input = nil
end
-- helper function
-- helper function
local function ddoo(mob)
if core.settings:get_bool("mobs_animal." .. mob) == false then
if minetest.settings:get_bool("mobs_animal." .. mob) == false then
print("[Mobs_Animal] " .. mob .. " disabled!")
return
end
@ -27,7 +25,6 @@ local function ddoo(mob)
end
-- Animals
ddoo("chicken") -- JKmurray
ddoo("cow") -- KrupnoPavel
ddoo("rat") -- PilzAdam
@ -38,17 +35,18 @@ ddoo("bunny") -- ExeterDad
ddoo("kitten") -- Jordach/BFD
ddoo("penguin") -- D00Med
ddoo("panda") -- AspireMint
dofile(path .. "goat.lua") -- NALC(sys4 fork MFF)
-- Load custom spawning if found
-- Load custom spawning
if mobs.custom_spawn_animal then
dofile(path .. "spawn.lua")
end
-- Lucky Blocks
if core.get_modpath("lucky_block") then
if minetest.get_modpath("lucky_block") then
dofile(path .. "lucky_block.lua")
end
print ("[MOD] Mobs Redo Animals loaded")
print ("[MOD] Mobs Animal loaded")

View File

@ -1,10 +1,7 @@
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- 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 hairball = minetest.settings:get("mobs_hairball")
local kitten_types = {
@ -28,7 +25,7 @@ mobs:register_mob("mobs_animal:kitten", {
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},
@ -40,7 +37,9 @@ mobs:register_mob("mobs_animal:kitten", {
{"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,
@ -54,13 +53,17 @@ mobs:register_mob("mobs_animal:kitten", {
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", "mobs_fish:clownfish", "xocean:fish_edible",
"group:fishraw" -- NALC: Group from fishing mod
},
view_range = 8,
@ -74,7 +77,7 @@ mobs:register_mob("mobs_animal:kitten", {
tmp = kitten_types[n]
if core.find_node_near(pos, 1, tmp.nodes) then
if minetest.find_node_near(pos, 1, tmp.nodes) then
self.base_texture = tmp.skins
self.object:set_properties({textures = tmp.skins})
@ -88,24 +91,7 @@ mobs:register_mob("mobs_animal:kitten", {
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,43 +102,48 @@ 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(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", {
minetest.sound_play("default_dig_snappy", {
pos = pos, gain = 1.0, max_hear_distance = 5}, true)
end
})
-- where to spawn
local spawn_on = "default:dirt_with_grass"
if minetest.get_modpath("ethereal") then
spawn_on = "ethereal:grove_dirt"
end
if not mobs.custom_spawn_animal then
local spawn_on = "default:dirt_with_grass"
if core.get_modpath("ethereal") then
spawn_on = "ethereal:grove_dirt"
end
mobs:spawn({
name = "mobs_animal:kitten",
nodes = {spawn_on},
@ -166,15 +157,12 @@ if not mobs.custom_spawn_animal then
})
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",
@ -187,10 +175,9 @@ local hairball_items = {
"ethereal:fish_tetra"
}
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,11 +185,12 @@ 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", {
minetest.sound_play("default_place_node_hard", {
pos = newpos, gain = 1.0, max_hear_distance = 5}, true)
itemstack:take_item()

View File

@ -24,7 +24,6 @@ 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
@ -50,6 +49,7 @@ Models/Textures/Media by Krupnov Pavel (WTFPL)
Models/Textures by Krupno Pavel (MIT)
mobs_bee.b3d (converted to .b3d by sirrobzerrone)
mobs_bee.png
mobs_pumba.b3d (converted to .b3d by sirrobzerrone)
mobs_pumba.png
@ -67,7 +67,6 @@ Models/Textures by JK Murray (CC0)
mobs_chick.png
Models/Textures by sirrobzerrone (CC0)
mobs_bee.png
mobs_cow.b3d
mobs_cow.png
mobs_cow2.png

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,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=Жовта

View File

@ -1,6 +1,3 @@
-- add lucky blocks
lucky_block:add_blocks({
{"spw", "mobs:sheep", 5},
{"spw", "mobs:rat", 5},
@ -23,9 +20,7 @@ lucky_block:add_blocks({
{"dro", {"mobs:glass_milk"}, 5}
})
-- if nyancat found add special block
if core.registered_nodes["default:nyancat"] then
if minetest.registered_nodes["default:nyancat"] then
lucky_block:add_blocks({
{"tro", "default:nyancat", "mobs_kitten", true}

BIN
models/mobs_goat.b3d Normal file

Binary file not shown.

View File

@ -1,10 +1,10 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- 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,11 +15,13 @@ 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",
@ -41,13 +43,21 @@ mobs:register_mob("mobs_animal:panda", {
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)
@ -58,9 +68,8 @@ mobs:register_mob("mobs_animal:panda", {
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",
@ -75,6 +84,5 @@ if core.get_modpath("ethereal") and not mobs.custom_spawn_animal then
})
end
-- spawn egg
mobs:register_egg("mobs_animal:panda", S("Panda"), "mobs_panda_inv.png")

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Penguin by D00Med
@ -10,12 +10,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,
@ -32,16 +34,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,
@ -54,7 +60,6 @@ stepheight = 0.6,
end
})
-- where to spawn
if not mobs.custom_spawn_animal then
@ -70,6 +75,5 @@ if not mobs.custom_spawn_animal then
})
end
-- spawn egg
mobs:register_egg("mobs_animal:penguin", S("Penguin"), "mobs_penguin_inv.png")

34
rat.lua
View File

@ -1,25 +1,26 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Rat by KPavel and 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"}
{"mobs_rat2.png"}
},
makes_footstep_sound = false,
sounds = {random = "mobs_rat"},
sounds = {
random = "mobs_rat"
},
walk_velocity = 1,
run_velocity = 2,
runaway = true,
@ -58,8 +59,8 @@ mobs:register_mob("mobs_animal:rat", {
]]
})
-- example on_spawn function
-- example on_spawn function
local function rat_spawn(self, pos)
self = self:get_luaentity()
print (self.name, pos.x, pos.y, pos.z)
@ -67,7 +68,6 @@ local function rat_spawn(self, pos)
self.health = 100
end
-- where to spawn
if not mobs.custom_spawn_animal then
@ -83,26 +83,22 @@ if not mobs.custom_spawn_animal then
})
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

View File

@ -8,6 +8,3 @@ 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

160
sheep.lua
View File

@ -1,20 +1,7 @@
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- translation and localize function
local S = core.get_translator("mobs_animal")
local random = math.random
-- should sheep eat grass blocks and mess up the environment?
local eat_gb = core.settings:get_bool("mobs_animal.eat_grass_block")
local replace_what = { {"group:grass", "air", -1} }
if eat_gb then
table.insert(replace_what, {"default:dirt_with_grass", "default:dirt", -2})
end
-- sheep colour table
local all_colours = {
{"black", S("Black"), "#212121b0"}, -- referenced down in mobs:spawn
{"blue", S("Blue"), "#015dbb70"},
@ -33,6 +20,7 @@ local all_colours = {
{"yellow", S("Yellow"), "#fff80070"}
}
-- Sheep by PilzAdam/K Pavel, texture converted to minetest by AMMOnym from Summerfield pack
for _, col in ipairs(all_colours) do
@ -53,7 +41,10 @@ for _, col in ipairs(all_colours) do
for _2, col2 in ipairs(all_colours) do
if col2[1] == colr then colr = col2[3] ; break end
if col2[1] == colr then
colr = col2[3]
break
end
end
end
@ -65,7 +56,8 @@ for _, col in ipairs(all_colours) do
local col_text = "^[multiply:" .. col_override
if gotten then
wool_shave_text = shav_text ; col_text = ""
wool_shave_text = shav_text
col_text = ""
end
-- results in unneccesary brackets for shaved but these are ignored by engine
@ -85,8 +77,8 @@ for _, col in ipairs(all_colours) do
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",
@ -96,8 +88,7 @@ for _, col in ipairs(all_colours) do
gotten_texture = {"mobs_sheep_base.png^mobs_sheep_shaved.png"},
makes_footstep_sound = true,
sounds = {
random = "mobs_sheep",
replace = "default_dig_crumbly"
random = "mobs_sheep"
},
walk_velocity = 1,
run_velocity = 2,
@ -110,13 +101,17 @@ for _, col in ipairs(all_colours) do
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,7 +119,10 @@ 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)
@ -169,7 +167,7 @@ for _, col in ipairs(all_colours) do
----------------------------------------------------
pos.y = pos.y + 0.5 -- spawn child a little higher
local mob = core.add_entity(pos, parent1.name)
local mob = minetest.add_entity(pos, parent1.name)
local ent2 = mob:get_luaentity()
-- remove horns from parents' texture string, lambs dont have horns
@ -185,17 +183,24 @@ for _, col in ipairs(all_colours) do
mob:set_properties({
textures = {textures},
visual_size = {
x = parent1.base_size.x * .5, y = parent1.base_size.y * .5
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
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
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
}
})
@ -209,17 +214,6 @@ for _, col in ipairs(all_colours) do
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
@ -274,22 +268,28 @@ for _, col in ipairs(all_colours) do
-- 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))
)
if obj then
obj:set_velocity({x = random(-1, 1), y = 5, z = random(-1, 1)})
obj:set_velocity({
x = random(-1, 1),
y = 5,
z = random(-1, 1)
})
end
item:add_wear(650) -- 100 uses
@ -307,29 +307,30 @@ for _, col in ipairs(all_colours) do
-- 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
and self.name ~= "mobs_animal:sheep_" .. colr then
local pos = self.object:get_pos()
-- add new coloured sheep
local mob = core.add_entity(pos, "mobs_animal:sheep_" .. colr)
local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr)
local ent = mob:get_luaentity()
if ent then
local prop = self.object:get_properties()
-- add old sheep attributes
ent.attribute_horns = self.attribute_horns
ent._nametag = prop.nametag
ent.nametag = self.nametag
ent.owner = name
ent.tamed = true
ent.protected = self.protected
@ -342,7 +343,8 @@ for _, col in ipairs(all_colours) do
ent.base_texture = {textures}
ent.object:set_properties({
textures = {textures}
textures = {textures},
nametag = self.nametag
})
-- remove old sheep
@ -379,13 +381,12 @@ for _, col in ipairs(all_colours) do
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 mod_ethereal = minetest.get_modpath("ethereal")
local spawn_chance = mod_ethereal and 12000 or 8000
mobs:spawn({
@ -444,8 +445,8 @@ if not mobs.custom_spawn_animal then
local entity = mobs:add_mob(pos,
{name = "mobs_animal:sheep_" .. types, child = lamb})
-- nil check
if not entity then return end
-- nil check
if not entity then return end
if not lamb then
-- Set horns attribute, lower height will be rarer.
@ -471,7 +472,7 @@ if not mobs.custom_spawn_animal then
random_sheep(pos, true)
-- Rest of herd
local nods = core.find_nodes_in_area_under_air(
local nods = 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}, spawn_on)
@ -486,7 +487,7 @@ if not mobs.custom_spawn_animal then
pos2.y = pos2.y + 2
if core.get_node(pos2).name == "air" then
if minetest.get_node(pos2).name == "air" then
-- Add a sheep or lamb
random_sheep(pos2, false)
@ -497,33 +498,26 @@ if not mobs.custom_spawn_animal then
})
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",

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: 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

View File

@ -1,5 +1,5 @@
local S = core.get_translator("mobs_animal")
-- Translation support
local S = minetest.get_translator("mobs_animal")
-- Warthog originally by KrupnoPavel, B3D model by sirrobzeroone
@ -12,14 +12,16 @@ 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",
@ -33,7 +35,8 @@ 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,
lava_damage = 5,
@ -41,12 +44,18 @@ mobs:register_mob("mobs_animal:pumba", {
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)
@ -57,18 +66,22 @@ mobs:register_mob("mobs_animal:pumba", {
end
})
-- where to spawn
local spawn_on = {"default:dirt_with_grass"}
local spawn_by = {"group:grass"}
if minetest.get_mapgen_setting("mg_name") ~= "v6" then
spawn_on = {"default:dirt_with_dry_grass", "default:dry_dirt_with_dry_grass"}
spawn_by = {"group:dry_grass"}
end
if minetest.get_modpath("ethereal") then
spawn_on = {"ethereal:mushroom_dirt"}
spawn_by = {"flowers:mushroom_brown", "flowers:mushroom_red"}
end
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,
@ -82,37 +95,31 @@ if not mobs.custom_spawn_animal then
})
end
-- spawn egg
-- spawn egg
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",