Browse Source

Initial Animals upload

pull/3/head
TenPlus1 4 years ago
commit
654c54075a
67 changed files with 24546 additions and 0 deletions
  1. +185
    -0
      bee.lua
  2. +86
    -0
      bunny.lua
  3. +254
    -0
      chicken.lua
  4. +149
    -0
      cow.lua
  5. +2
    -0
      depends.txt
  6. +1
    -0
      description.txt
  7. +15
    -0
      init.lua
  8. +58
    -0
      kitten.lua
  9. +1
    -0
      mod.conf
  10. +7645
    -0
      models/mobs_bee.x
  11. BIN
      models/mobs_bunny.b3d
  12. +3080
    -0
      models/mobs_chicken.x
  13. +7420
    -0
      models/mobs_cow.x
  14. BIN
      models/mobs_kitten.b3d
  15. +5316
    -0
      models/mobs_pumba.x
  16. BIN
      models/mobs_rat.b3d
  17. BIN
      models/mobs_sheep.b3d
  18. BIN
      models/mobs_sheep_shaved.b3d
  19. +58
    -0
      rat.lua
  20. BIN
      screenshot.png
  21. +194
    -0
      sheep.lua
  22. BIN
      sounds/mobs_bee.ogg
  23. BIN
      sounds/mobs_chicken.ogg
  24. BIN
      sounds/mobs_cow.ogg
  25. BIN
      sounds/mobs_kitten.ogg
  26. BIN
      sounds/mobs_pig.ogg
  27. BIN
      sounds/mobs_pig_angry.ogg
  28. BIN
      sounds/mobs_rat.ogg
  29. BIN
      sounds/mobs_sheep.ogg
  30. BIN
      textures/mobs_bee.png
  31. BIN
      textures/mobs_bee_inv.png
  32. BIN
      textures/mobs_beehive.png
  33. BIN
      textures/mobs_bucket_milk.png
  34. BIN
      textures/mobs_bunny_brown.png
  35. BIN
      textures/mobs_bunny_evil.png
  36. BIN
      textures/mobs_bunny_grey.png
  37. BIN
      textures/mobs_bunny_inv.png
  38. BIN
      textures/mobs_bunny_white.png
  39. BIN
      textures/mobs_cheese.png
  40. BIN
      textures/mobs_cheeseblock.png
  41. BIN
      textures/mobs_chick.png
  42. BIN
      textures/mobs_chicken.png
  43. BIN
      textures/mobs_chicken_black.png
  44. BIN
      textures/mobs_chicken_cooked.png
  45. BIN
      textures/mobs_chicken_egg_fried.png
  46. BIN
      textures/mobs_chicken_inv.png
  47. BIN
      textures/mobs_chicken_raw.png
  48. BIN
      textures/mobs_cooked_rat.png
  49. BIN
      textures/mobs_cow.png
  50. BIN
      textures/mobs_cow2.png
  51. BIN
      textures/mobs_honey_block.png
  52. BIN
      textures/mobs_honey_inv.png
  53. BIN
      textures/mobs_kitten_ginger.png
  54. BIN
      textures/mobs_kitten_inv.png
  55. BIN
      textures/mobs_kitten_sandy.png
  56. BIN
      textures/mobs_kitten_splotchy.png
  57. BIN
      textures/mobs_kitten_striped.png
  58. BIN
      textures/mobs_pork_cooked.png
  59. BIN
      textures/mobs_pork_raw.png
  60. BIN
      textures/mobs_pumba.png
  61. BIN
      textures/mobs_rat.png
  62. BIN
      textures/mobs_rat2.png
  63. BIN
      textures/mobs_rat_inventory.png
  64. BIN
      textures/mobs_sheep_base.png
  65. BIN
      textures/mobs_sheep_shaved.png
  66. BIN
      textures/mobs_sheep_wool.png
  67. +82
    -0
      warthog.lua

+ 185
- 0
bee.lua View File

@@ -0,0 +1,185 @@

-- Bee by KrupnoPavel

mobs:register_mob("mobs_animal:bee", {
type = "animal",
passive = true,
hp_min = 1,
hp_max = 2,
armor = 200,
collisionbox = {-0.2, -0.01, -0.2, 0.2, 0.2, 0.2},
visual = "mesh",
mesh = "mobs_bee.x",
textures = {
{"mobs_bee.png"},
},
makes_footstep_sound = false,
sounds = {
random = "mobs_bee",
},
walk_velocity = 1,
jump = true,
drops = {
{name = "mobs:honey", chance = 2, min = 1, max = 2},
},
water_damage = 2,
lava_damage = 2,
light_damage = 0,
fall_damage = 0,
fall_speed = -3,
animation = {
speed_normal = 15,
stand_start = 0,
stand_end = 30,
walk_start = 35,
walk_end = 65,
},
on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, 25, 80, 0, true, nil)
end,
})

mobs:register_spawn("mobs_animal:bee", {"group:flower"}, 20, 10, 9000, 1, 31000, true)

mobs:register_egg("mobs_animal:bee", "Bee", "mobs_bee_inv.png", 0)

minetest.register_alias("mobs:bee", "mobs_animal:bee")

-- honey
minetest.register_craftitem(":mobs:honey", {
description = "Honey",
inventory_image = "mobs_honey_inv.png",
on_use = minetest.item_eat(6),
})

-- beehive (when placed spawns bee)
minetest.register_node(":mobs:beehive", {
description = "Beehive",
drawtype = "plantlike",
visual_scale = 1.0,
tiles = {"mobs_beehive.png"},
inventory_image = "mobs_beehive.png",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
groups = {oddly_breakable_by_hand = 3, flammable = 1},
sounds = default.node_sound_defaults(),

on_construct = function(pos)

local meta = minetest.get_meta(pos)

meta:set_string("formspec", "size[8,6]"
..default.gui_bg..default.gui_bg_img..default.gui_slots
.. "image[3,0.8;0.8,0.8;mobs_bee_inv.png]"
.. "list[current_name;beehive;4,0.5;1,1;]"
.. "list[current_player;main;0,2.35;8,4;]"
.. "listring[]")

meta:get_inventory():set_size("beehive", 1)
end,
--[[
after_place_node = function(pos, placer, itemstack)

if placer:is_player() then

minetest.set_node(pos, {name = "mobs:beehive", param2 = 1})

if math.random(1, 4) == 1 then
minetest.add_entity(pos, "mobs:bee")
end
end
end,
]]
on_punch = function(pos, node, puncher)

-- yep, bee's don't like having their home punched by players
puncher:set_hp(puncher:get_hp() - 4)
end,

allow_metadata_inventory_put = function(pos, listname, index, stack, player)

if listname == "beehive" then
return 0
end

return stack:get_count()
end,

can_dig = function(pos,player)

local meta = minetest.get_meta(pos)

-- only dig beehive if no honey inside
return meta:get_inventory():is_empty("beehive")
end,

})

minetest.register_craft({
output = "mobs:beehive",
recipe = {
{"mobs:bee","mobs:bee","mobs:bee"},
}
})

-- honey block
minetest.register_node(":mobs:honey_block", {
description = "Honey Block",
tiles = {"mobs_honey_block.png"},
groups = {snappy = 3, flammable = 2},
sounds = default.node_sound_dirt_defaults(),
})

minetest.register_craft({
output = "mobs:honey_block",
recipe = {
{"mobs:honey", "mobs:honey", "mobs:honey"},
{"mobs:honey", "mobs:honey", "mobs:honey"},
{"mobs:honey", "mobs:honey", "mobs:honey"},
}
})

minetest.register_craft({
output = "mobs:honey 9",
recipe = {
{"mobs:honey_block"},
}
})

-- beehive workings
minetest.register_abm({
nodenames = {"mobs:beehive"},
interval = 6,
chance = 6,
catch_up = false,
action = function(pos, node)

-- bee's only make honey during the day
local tod = (minetest.get_timeofday() or 0) * 24000

if tod < 5500 or tod > 18500 then
return
end

-- is hive full?
local meta = minetest.get_meta(pos)
if not meta then return end -- for older beehives
local inv = minetest.get_meta(pos):get_inventory()
local honey = inv:get_stack("beehive", 1):get_count()

-- is hive full?
if honey > 19 then
return
end

-- no flowers no honey, nuff said!
if #minetest.find_nodes_in_area_under_air(
{x = pos.x - 4, y = pos.y - 3, z = pos.z - 4},
{x = pos.x + 4, y = pos.y + 3, z = pos.z + 4},
"group:flower") > 3 then

inv:add_item("beehive", "mobs:honey")
end
end
})

+ 86
- 0
bunny.lua View File

@@ -0,0 +1,86 @@

-- Bunny by ExeterDad

mobs:register_mob("mobs_animal:bunny", {
type = "animal",
passive = true,
reach = 1,
hp_min = 1,
hp_max = 4,
armor = 200,
collisionbox = {-0.268, -0.5, -0.268, 0.268, 0.167, 0.268},
visual = "mesh",
mesh = "mobs_bunny.b3d",
drawtype = "front",
textures = {
{"mobs_bunny_grey.png"},
{"mobs_bunny_brown.png"},
{"mobs_bunny_white.png"},
},
sounds = {},
makes_footstep_sound = false,
walk_velocity = 1,
run_velocity = 2,
runaway = true,
jump = true,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 1},
},
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fear_height = 2,
animation = {
speed_normal = 15,
stand_start = 1,
stand_end = 15,
walk_start = 16,
walk_end = 24,
punch_start = 16,
punch_end = 24,
},
follow = {"farming:carrot", "farming_plus:carrot_item"},
view_range = 8,
replace_rate = 10,
replace_what = {"farming:carrot_7", "farming:carrot_8", "farming_plus:carrot"},
replace_with = "air",
on_rightclick = function(self, clicker)

-- feed or tame
if mobs:feed_tame(self, clicker, 4, true, true) then
return
end

-- Monty Python tribute
local item = clicker:get_wielded_item()

if item:get_name() == "mobs:lava_orb" then

if not minetest.setting_getbool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end

self.object:set_properties({
textures = {"mobs_bunny_evil.png"},
})

self.type = "monster"
self.object:set_hp(20)

return
end

mobs:capture_mob(self, clicker, 30, 50, 80, false, nil)
end,

attack_type = "dogfight",
damage = 5,
})

mobs:register_spawn("mobs_animal:bunny",
{"default:dirt_with_grass", "ethereal:prairie_dirt"}, 20, 10, 15000, 2, 31000, true)

mobs:register_egg("mobs_animal:bunny", "Bunny", "mobs_bunny_inv.png", 0)

minetest.register_alias("mobs:bunny", "mobs_animal:bunny")

+ 254
- 0
chicken.lua View File

@@ -0,0 +1,254 @@

-- Chicken by JK Murray

mobs:register_mob("mobs_animal:chicken", {
type = "animal",
passive = true,
hp_min = 5,
hp_max = 10,
armor = 200,
collisionbox = {-0.3, -0.75, -0.3, 0.3, 0.1, 0.3},
visual = "mesh",
mesh = "mobs_chicken.x",
-- seems a lot of textures but this fixes the problem with the model
textures = {
{"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png",
"mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png", "mobs_chicken.png"},
{"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png",
"mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png", "mobs_chicken_black.png"},
},
child_texture = {
{"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png",
"mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png", "mobs_chick.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_chicken",
},
walk_velocity = 1,
run_velocity = 3,
runaway = true,
jump = true,
drops = {
{name = "mobs:chicken_raw", chance = 1, min = 2, max = 2},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
fall_damage = 0,
fall_speed = -8,
fear_height = 5,
animation = {
speed_normal = 15,
stand_start = 0,
stand_end = 1, -- 20
walk_start = 20,
walk_end = 40,
},
follow = {"farming:seed_wheat", "farming:seed_cotton"},
view_range = 5,

on_rightclick = function(self, clicker)

if mobs:feed_tame(self, clicker, 8, true, true) then
return
end

mobs:capture_mob(self, clicker, 30, 50, 80, false, nil)
end,

do_custom = function(self)

if not self.child
and math.random(1, 500) == 1 then

local pos = self.object:getpos()

minetest.add_item(pos, "mobs:egg")

minetest.sound_play("default_place_node_hard", {
pos = pos,
gain = 1.0,
max_hear_distance = 5,
})
end
end,
})

mobs:register_spawn("mobs_animal:chicken",
{"default:dirt_with_grass", "ethereal:bamboo_dirt"}, 20, 10, 15000, 1, 31000, true)

mobs:register_egg("mobs_animal:chicken", "Chicken", "mobs_chicken_inv.png", 0)

minetest.register_alias("mobs:chicken", "mobs_animal:chicken")

-- egg entity

mobs:register_arrow("mobs_animal:egg_entity", {
visual = "sprite",
visual_size = {x=.5, y=.5},
textures = {"mobs_chicken_egg.png"},
velocity = 6,

hit_player = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,

hit_mob = function(self, player)
player:punch(self.object, 1.0, {
full_punch_interval = 1.0,
damage_groups = {fleshy = 1},
}, nil)
end,

hit_node = function(self, pos, node)

local num = math.random(1, 10)

if num == 1 then

pos.y = pos.y + 1

local nod = minetest.get_node_or_nil(pos)

if not nod
or not minetest.registered_nodes[nod.name]
or minetest.registered_nodes[nod.name].walkable == true then
return
end

local mob = minetest.add_entity(pos, "mobs_animal:chicken")
local ent2 = mob:get_luaentity()

mob:set_properties({
textures = ent2.child_texture[1],
visual_size = {
x = ent2.base_size.x / 2,
y = ent2.base_size.y / 2
},
collisionbox = {
ent2.base_colbox[1] / 2,
ent2.base_colbox[2] / 2,
ent2.base_colbox[3] / 2,
ent2.base_colbox[4] / 2,
ent2.base_colbox[5] / 2,
ent2.base_colbox[6] / 2
},
})

ent2.child = true
ent2.tamed = true
ent2.owner = self.playername
end
end
})

-- egg throwing item

local egg_GRAVITY = 9
local egg_VELOCITY = 19

-- shoot egg
local mobs_shoot_egg = function (item, player, pointed_thing)

local playerpos = player:getpos()

minetest.sound_play("default_place_node_hard", {
pos = playerpos,
gain = 1.0,
max_hear_distance = 5,
})

local obj = minetest.add_entity({
x = playerpos.x,
y = playerpos.y +1.5,
z = playerpos.z
}, "mobs_animal:egg_entity")

local ent = obj:get_luaentity()
local dir = player:get_look_dir()

ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away

obj:setvelocity({
x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY
})

obj:setacceleration({
x = dir.x * -3,
y = -egg_GRAVITY,
z = dir.z * -3
})

-- pass player name to egg for chick ownership
local ent2 = obj:get_luaentity()
ent2.playername = player:get_player_name()

item:take_item()

return item
end

-- egg
minetest.register_node(":mobs:egg", {
description = "Chicken Egg",
tiles = {"mobs_chicken_egg.png"},
inventory_image = "mobs_chicken_egg.png",
visual_scale = 0.7,
drawtype = "plantlike",
wield_image = "mobs_chicken_egg.png",
paramtype = "light",
walkable = false,
is_ground_content = true,
sunlight_propagates = true,
selection_box = {
type = "fixed",
fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}
},
groups = {snappy = 2, dig_immediate = 3},
after_place_node = function(pos, placer, itemstack)
if placer:is_player() then
minetest.set_node(pos, {name = "mobs:egg", param2 = 1})
end
end,
on_use = mobs_shoot_egg
})

-- fried egg
minetest.register_craftitem(":mobs:chicken_egg_fried", {
description = "Fried Egg",
inventory_image = "mobs_chicken_egg_fried.png",
on_use = minetest.item_eat(2),
})

minetest.register_craft({
type = "cooking",
recipe = "mobs:egg",
output = "mobs:chicken_egg_fried",
})

-- raw chicken
minetest.register_craftitem(":mobs:chicken_raw", {
description = "Raw Chicken",
inventory_image = "mobs_chicken_raw.png",
on_use = minetest.item_eat(2),
})

-- cooked chicken
minetest.register_craftitem(":mobs:chicken_cooked", {
description = "Cooked Chicken",
inventory_image = "mobs_chicken_cooked.png",
on_use = minetest.item_eat(6),
})

minetest.register_craft({
type = "cooking",
recipe = "mobs:chicken_raw",
output = "mobs:chicken_cooked",
})

+ 149
- 0
cow.lua View File

@@ -0,0 +1,149 @@

-- Cow by Krupnovpavel (additional texture by JurajVajda)

mobs:register_mob("mobs_animal:cow", {
type = "animal",
passive = false,
attack_type = "dogfight",
reach = 2,
damage = 4,
hp_min = 5,
hp_max = 20,
armor = 200,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
visual = "mesh",
mesh = "mobs_cow.x",
textures = {
{"mobs_cow.png"},
{"mobs_cow2.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_cow",
},
walk_velocity = 1,
run_velocity = 2,
jump = true,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
{name = "mobs:leather", chance = 1, min = 1, max = 2},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 30,
walk_start = 35,
walk_end = 65,
run_start = 105,
run_end = 135,
punch_start = 70,
punch_end = 100,
},
follow = "farming:wheat",
view_range = 7,
replace_rate = 10,
replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"},
replace_with = "air",
fear_height = 2,
on_rightclick = function(self, clicker)

-- feed or tame
if mobs:feed_tame(self, clicker, 8, true, true) then
return
end

local tool = clicker:get_wielded_item()

-- milk cow with empty bucket
if tool:get_name() == "bucket:bucket_empty" then

--if self.gotten == true
if self.child == true then
return
end

if self.gotten == true then
minetest.chat_send_player(clicker:get_player_name(),
"Cow already milked!")
return
end

local inv = clicker:get_inventory()

inv:remove_item("main", "bucket:bucket_empty")

if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
clicker:get_inventory():add_item("main", "mobs:bucket_milk")
else
local pos = self.object:getpos()
pos.y = pos.y + 0.5
minetest.add_item(pos, {name = "mobs:bucket_milk"})
end

self.gotten = true -- milked

return
end

mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
end,
})

mobs:register_spawn("mobs_animal:cow",
{"default:dirt_with_grass", "ethereal:green_dirt"}, 20, 10, 15000, 1, 31000, true)

mobs:register_egg("mobs_animal:cow", "Cow", "default_grass.png", 1)

minetest.register_alias("mobs:cow", "mobs_animal:cow")

-- bucket of milk
minetest.register_craftitem(":mobs:bucket_milk", {
description = "Bucket of Milk",
inventory_image = "mobs_bucket_milk.png",
stack_max = 1,
on_use = minetest.item_eat(8, 'bucket:bucket_empty'),
})

-- cheese wedge
minetest.register_craftitem(":mobs:cheese", {
description = "Cheese",
inventory_image = "mobs_cheese.png",
on_use = minetest.item_eat(4),
})

minetest.register_craft({
type = "cooking",
output = "mobs:cheese",
recipe = "mobs:bucket_milk",
cooktime = 5,
replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
})

-- cheese block
minetest.register_node(":mobs:cheeseblock", {
description = "Cheese Block",
tiles = {"mobs_cheeseblock.png"},
is_ground_content = false,
groups = {crumbly = 3},
sounds = default.node_sound_dirt_defaults()
})

minetest.register_craft({
output = "mobs:cheeseblock",
recipe = {
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
{'mobs:cheese', 'mobs:cheese', 'mobs:cheese'},
}
})

minetest.register_craft({
output = "mobs:cheese 9",
recipe = {
{'mobs:cheeseblock'},
}
})

+ 2
- 0
depends.txt View File

@@ -0,0 +1,2 @@
default
mobs

+ 1
- 0
description.txt View File

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

+ 15
- 0
init.lua View File

@@ -0,0 +1,15 @@

local path = minetest.get_modpath("mobs_animal")

-- Animals

dofile(path .. "/chicken.lua") -- JKmurray
dofile(path .. "/cow.lua") -- KrupnoPavel
dofile(path .. "/rat.lua") -- PilzAdam
dofile(path .. "/sheep.lua") -- PilzAdam
dofile(path .. "/warthog.lua") -- KrupnoPavel
dofile(path .. "/bee.lua") -- KrupnoPavel
dofile(path .. "/bunny.lua") -- ExeterDad
dofile(path .. "/kitten.lua") -- Jordach/BFD

print ("[MOD] Mobs Redo 'Animals' loaded")

+ 58
- 0
kitten.lua View File

@@ -0,0 +1,58 @@

-- Kitten by Jordach / BFD

mobs:register_mob("mobs_animal:kitten", {
type = "animal",
passive = true,
hp_min = 5,
hp_max = 10,
armor = 200,
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.1, 0.3},
visual = "mesh",
visual_size = {x = 0.5, y = 0.5},
mesh = "mobs_kitten.b3d",
textures = {
{"mobs_kitten_striped.png"},
{"mobs_kitten_splotchy.png"},
{"mobs_kitten_ginger.png"},
{"mobs_kitten_sandy.png"},
},
makes_footstep_sound = false,
sounds = {
random = "mobs_kitten",
},
walk_velocity = 0.6,
run_velocity = 2,
runaway = true,
jump = false,
drops = {
{name = "farming:string", chance = 1, min = 1, max = 1},
},
water_damage = 1,
lava_damage = 5,
fear_height = 3,
animation = {
speed_normal = 42,
stand_start = 97,
stand_end = 192,
walk_start = 0,
walk_end = 96,
},
follow = {"mobs:rat", "ethereal:fish_raw", "mobs_fish:clownfish", "mobs_fish:tropical"},
view_range = 8,
on_rightclick = function(self, clicker)

if mobs:feed_tame(self, clicker, 4, true, true) then
return
end

mobs:capture_mob(self, clicker, 50, 50, 90, false, nil)
end
})

mobs:register_spawn("mobs_animal:kitten",
{"default:dirt_with_grass", "ethereal:grove_dirt"}, 20, 12, 22000, 1, 31000, true)

mobs:register_egg("mobs_animal:kitten", "Kitten", "mobs_kitten_inv.png", 0)

minetest.register_alias("mobs:kitten", "mobs_animal:kitten")

+ 1
- 0
mod.conf View File

@@ -0,0 +1 @@
name = mobs_animal

+ 7645
- 0
models/mobs_bee.x
File diff suppressed because it is too large
View File


BIN
models/mobs_bunny.b3d View File


+ 3080
- 0
models/mobs_chicken.x
File diff suppressed because it is too large
View File


+ 7420
- 0
models/mobs_cow.x
File diff suppressed because it is too large
View File


BIN
models/mobs_kitten.b3d View File


+ 5316
- 0
models/mobs_pumba.x
File diff suppressed because it is too large
View File


BIN
models/mobs_rat.b3d View File


BIN
models/mobs_sheep.b3d View File


BIN
models/mobs_sheep_shaved.b3d View File


+ 58
- 0
rat.lua View File

@@ -0,0 +1,58 @@

-- Rat by PilzAdam

mobs:register_mob("mobs_animal:rat", {
type = "animal",
passive = true,
hp_min = 1,
hp_max = 4,
armor = 200,
collisionbox = {-0.2, -1, -0.2, 0.2, -0.8, 0.2},
visual = "mesh",
mesh = "mobs_rat.b3d",
textures = {
{"mobs_rat.png"},
{"mobs_rat2.png"},
},
makes_footstep_sound = false,
sounds = {
random = "mobs_rat",
},
walk_velocity = 1,
run_velocity = 2,
runaway = true,
jump = true,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 2,
on_rightclick = function(self, clicker)
mobs:capture_mob(self, clicker, 25, 80, 0, true, nil)
end,
--[[
do_custom = function(self)
local pos = self.object:getpos()
print("rat pos", pos.x, pos.y, pos.z)
end,
--]]
})

mobs:register_spawn("mobs_animal:rat", {"default:stone"}, 20, 5, 15000, 2, 0)

mobs:register_egg("mobs_animal:rat", "Rat", "mobs_rat_inventory.png", 0)

minetest.register_alias("mobs:rat", "mobs_animal:rat")

-- cooked rat, yummy!
minetest.register_craftitem(":mobs:rat_cooked", {
description = "Cooked Rat",
inventory_image = "mobs_cooked_rat.png",
on_use = minetest.item_eat(3),
})

minetest.register_craft({
type = "cooking",
output = "mobs:rat_cooked",
recipe = "mobs:rat",
cooktime = 5,
})

BIN
screenshot.png View File

Before After
Width: 450  |  Height: 300  |  Size: 33KB

+ 194
- 0
sheep.lua View File

@@ -0,0 +1,194 @@

local all_colours = {
{"black", "Black", "#000000b0"},
{"blue", "Blue", "#015dbb70"},
{"brown", "Brown", "#663300a0"},
{"cyan", "Cyan", "#01ffd870"},
{"dark_green", "Dark Green", "#005b0770"},
{"dark_grey", "Dark Grey", "#303030b0"},
{"green", "Green", "#61ff0170"},
{"grey", "Grey", "#5b5b5bb0"},
{"magenta", "Magenta", "#ff05bb70"},
{"orange", "Orange", "#ff840170"},
{"pink", "Pink", "#ff65b570"},
{"red", "Red", "#ff0000a0"},
{"violet", "Violet", "#2000c970"},
{"white", "White", "#abababc0"},
{"yellow", "Yellow", "#e3ff0070"},
}

-- Sheep by PilzAdam, texture converted to minetest by AMMOnym from Summerfield pack

for _, col in pairs(all_colours) do

mobs:register_mob("mobs_animal:sheep_"..col[1], {
type = "animal",
passive = true,
hp_min = 8,
hp_max = 10,
armor = 200,
collisionbox = {-0.5, -1, -0.5, 0.5, 0.3, 0.5},
visual = "mesh",
mesh = "mobs_sheep.b3d",
textures = {
{"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
},
gotten_texture = {"mobs_sheep_shaved.png"},
gotten_mesh = "mobs_sheep_shaved.b3d",
makes_footstep_sound = true,
sounds = {
random = "mobs_sheep",
},
walk_velocity = 1,
run_velocity = 2,
runaway = true,
jump = true,
drops = {
{name = "mobs:meat_raw", chance = 1, min = 1, max = 2},
--{name = "wool:"..col[1], chance = 1, min = 1, max = 1},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
animation = {
speed_normal = 15,
speed_run = 15,
stand_start = 0,
stand_end = 80,
walk_start = 81,
walk_end = 100,
},
follow = {"farming:wheat", "default:grass_5"},
view_range = 8,
replace_rate = 10,
replace_what = {"default:grass_3", "default:grass_4", "default:grass_5", "farming:wheat_8"},
replace_with = "air",
replace_offset = -1,
fear_height = 3,

on_rightclick = function(self, clicker)

--are we feeding?
if mobs:feed_tame(self, clicker, 8, true, true) then

--if full grow fuzz
if self.gotten == false then

self.object:set_properties({
textures = {"mobs_sheep_base.png^(mobs_sheep_wool.png^[colorize:" .. col[3] .. ")"},
mesh = "mobs_sheep.b3d",
})
end

return
end

local item = clicker:get_wielded_item()
local itemname = item:get_name()

--are we giving a haircut>
if itemname == "mobs:shears" then

if self.gotten ~= false
and self.child ~= false
and not minetest.get_modpath("wool") then
return
end

self.gotten = true -- shaved

local obj = minetest.add_item(
self.object:getpos(),
ItemStack( "wool:" .. col[1] .. " " .. math.random(1, 3) )
)

if obj then

obj:setvelocity({
x = math.random(-1, 1),
y = 5,
z = math.random(-1, 1)
})
end

item:add_wear(650) -- 100 uses

clicker:set_wielded_item(item)

self.object:set_properties({
textures = {"mobs_sheep_shaved.png"},
mesh = "mobs_sheep_shaved.b3d",
})

return
end

local name = clicker:get_player_name()

--are we coloring?
if itemname:find("dye:") then

if self.gotten == false
and self.child == false
and self.tamed == true
and name == self.owner then

local colr = string.split(itemname, ":")[2]

for _,c in pairs(all_colours) do

if c[1] == colr then

local pos = self.object:getpos()

self.object:remove()

local mob = minetest.add_entity(pos, "mobs_animal:sheep_" .. colr)
local ent = mob:get_luaentity()

ent.owner = name
ent.tamed = true

-- take item
if not minetest.setting_getbool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end

break
end
end
end

return
end

--are we capturing?
mobs:capture_mob(self, clicker, 0, 5, 60, false, nil)
end
})

mobs:register_egg("mobs_animal:sheep_"..col[1], col[2] .. " Sheep", "wool_"..col[1]..".png", 1)

minetest.register_alias("mobs:sheep_"..col[1], "mobs_animal:sheep_"..col[1])

end

mobs:register_spawn("mobs_animal:sheep_white",
{"default:dirt_with_grass", "ethereal:green_dirt"}, 20, 10, 15000, 1, 31000, true)

-- compatibility (item and entity)
minetest.register_alias("mobs:sheep", "mobs:sheep_white")

--[[
-- replace old sheep entity with new white sheep
minetest.register_entity("mobs:sheep", {

on_activate = function(self, staticdata, dtime_s)

self.object:remove()

minetest.add_entity(self.object:getpos(), "mobs_animal:sheep_white")
end
})
]]

BIN
sounds/mobs_bee.ogg View File


BIN
sounds/mobs_chicken.ogg View File


BIN
sounds/mobs_cow.ogg View File


BIN
sounds/mobs_kitten.ogg View File


BIN
sounds/mobs_pig.ogg View File


BIN
sounds/mobs_pig_angry.ogg View File


BIN
sounds/mobs_rat.ogg View File


BIN
sounds/mobs_sheep.ogg View File


BIN
textures/mobs_bee.png View File

Before After
Width: 128  |  Height: 128  |  Size: 1.8KB

BIN
textures/mobs_bee_inv.png View File

Before After
Width: 16  |  Height: 16  |  Size: 934B

BIN
textures/mobs_beehive.png View File

Before After
Width: 24  |  Height: 32  |  Size: 513B

BIN
textures/mobs_bucket_milk.png View File

Before After
Width: 16  |  Height: 16  |  Size: 241B

BIN
textures/mobs_bunny_brown.png View File

Before After
Width: 32  |  Height: 32  |  Size: 999B

BIN
textures/mobs_bunny_evil.png View File

Before After
Width: 32  |  Height: 32  |  Size: 809B

BIN
textures/mobs_bunny_grey.png View File

Before After
Width: 32  |  Height: 32  |  Size: 771B

BIN
textures/mobs_bunny_inv.png View File

Before After
Width: 32  |  Height: 32  |  Size: 466B

BIN
textures/mobs_bunny_white.png View File

Before After
Width: 32  |  Height: 32  |  Size: 809B

BIN
textures/mobs_cheese.png View File

Before After
Width: 16  |  Height: 16  |  Size: 247B

BIN
textures/mobs_cheeseblock.png View File

Before After
Width: 32  |  Height: 32  |  Size: 609B

BIN
textures/mobs_chick.png View File

Before After
Width: 128  |  Height: 64  |  Size: 1.0KB

BIN
textures/mobs_chicken.png View File

Before After
Width: 256  |  Height: 128  |  Size: 2.9KB

BIN
textures/mobs_chicken_black.png View File

Before After
Width: 128  |  Height: 64  |  Size: 1.7KB

BIN
textures/mobs_chicken_cooked.png View File

Before After
Width: 16  |  Height: 16  |  Size: 216B

BIN
textures/mobs_chicken_egg_fried.png View File

Before After
Width: 16  |  Height: 16  |  Size: 166B

BIN
textures/mobs_chicken_inv.png View File

Before After
Width: 32  |  Height: 32  |  Size: 369B

BIN
textures/mobs_chicken_raw.png View File

Before After
Width: 16  |  Height: 16  |  Size: 218B

BIN
textures/mobs_cooked_rat.png View File

Before After
Width: 16  |  Height: 16  |  Size: 239B

BIN
textures/mobs_cow.png View File

Before After
Width: 32  |  Height: 32  |  Size: 948B

BIN
textures/mobs_cow2.png View File

Before After
Width: 64  |  Height: 64  |  Size: 4.3KB

BIN
textures/mobs_honey_block.png View File

Before After
Width: 16  |  Height: 16  |  Size: 272B

BIN
textures/mobs_honey_inv.png View File

Before After
Width: 16  |  Height: 16  |  Size: 301B

BIN
textures/mobs_kitten_ginger.png View File

Before After
Width: 64  |  Height: 64  |  Size: 440B

BIN
textures/mobs_kitten_inv.png View File

Before After
Width: 32  |  Height: 32  |  Size: 377B

BIN
textures/mobs_kitten_sandy.png View File

Before After
Width: 64  |  Height: 64  |  Size: 404B

BIN
textures/mobs_kitten_splotchy.png View File

Before After
Width: 64  |  Height: 64  |  Size: 456B

BIN
textures/mobs_kitten_striped.png View File

Before After
Width: 64  |  Height: 64  |  Size: 416B

BIN
textures/mobs_pork_cooked.png View File

Before After
Width: 16  |  Height: 16  |  Size: 224B

BIN
textures/mobs_pork_raw.png View File

Before After
Width: 16  |  Height: 16  |  Size: 198B

BIN
textures/mobs_pumba.png View File

Before After
Width: 32  |  Height: 32  |  Size: 1.2KB

BIN
textures/mobs_rat.png View File

Before After
Width: 32  |  Height: 32  |  Size: 1.0KB

BIN
textures/mobs_rat2.png View File

Before After
Width: 32  |  Height: 32  |  Size: 834B

BIN
textures/mobs_rat_inventory.png View File

Before After
Width: 16  |  Height: 16  |  Size: 565B

BIN
textures/mobs_sheep_base.png View File

Before After
Width: 40  |  Height: 36  |  Size: 635B

BIN
textures/mobs_sheep_shaved.png View File

Before After
Width: 40  |  Height: 36  |  Size: 983B

BIN
textures/mobs_sheep_wool.png View File

Before After
Width: 40  |  Height: 36  |  Size: 1.0KB

+ 82
- 0
warthog.lua View File

@@ -0,0 +1,82 @@

-- Warthog by KrupnoPavel

mobs:register_mob("mobs_animal:pumba", {
type = "animal",
passive = false,
attack_type = "dogfight",
group_attack = true,
reach = 2,
damage = 2,
hp_min = 5,
hp_max = 15,
armor = 200,
collisionbox = {-0.4, -0.01, -0.4, 0.4, 1, 0.4},
visual = "mesh",
mesh = "mobs_pumba.x",
textures = {
{"mobs_pumba.png"},
},
makes_footstep_sound = true,
sounds = {
random = "mobs_pig",
attack = "mobs_pig_angry",
},
walk_velocity = 2,
run_velocity = 3,
jump = true,
follow = {"default:apple", "farming:potato"},
view_range = 10,
drops = {
{name = "mobs:pork_raw", chance = 1, min = 1, max = 3},
},
water_damage = 1,
lava_damage = 5,
light_damage = 0,
fear_height = 2,
animation = {
speed_normal = 15,
stand_start = 25,
stand_end = 55,
walk_start = 70,
walk_end = 100,
punch_start = 70,
punch_end = 100,
},
on_rightclick = function(self, clicker)

if mobs:feed_tame(self, clicker, 8, true, true) then
return
end

mobs:capture_mob(self, clicker, 0, 5, 50, false, nil)
end,
})

mobs:register_spawn("mobs_animal:pumba",
{"ethereal:mushroom_dirt", "default:dirt_with_dry_grass"}, 20, 10, 15000, 1, 31000, true)

mobs:register_egg("mobs_animal:pumba", "Warthog", "wool_pink.png", 1)

minetest.register_alias("mobs:pumba", "mobs_animal:pumba")

-- raw porkchop
minetest.register_craftitem(":mobs:pork_raw", {
description = "Raw Porkchop",
inventory_image = "mobs_pork_raw.png",
on_use = minetest.item_eat(4),
})

-- cooked porkchop
minetest.register_craftitem(":mobs:pork_cooked", {
description = "Cooked Porkchop",
inventory_image = "mobs_pork_cooked.png",
on_use = minetest.item_eat(8),
})

minetest.register_craft({
type = "cooking",
output = "mobs:pork_cooked",
recipe = "mobs:pork_raw",
cooktime = 5,
})

Loading…
Cancel
Save