123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- local S = mobs.intllib
- -- Cow by sirrobzeroone
- mobs:register_mob("mobs_animal:cow", {
- type = "animal",
- passive = false,
- attack_type = "dogfight",
- attack_npcs = false,
- reach = 2,
- damage = 4,
- hp_min = 5,
- hp_max = 20,
- armor = 200,
- collisionbox = {-0.4, -0.01, -0.4, 0.4, 1.2, 0.4},
- visual = "mesh",
- mesh = "mobs_cow.b3d",
- textures = {
- {"mobs_cow.png"},
- {"mobs_cow2.png"},
- },
- makes_footstep_sound = true,
- sounds = {
- random = "mobs_cow",
- },
- walk_velocity = 1,
- run_velocity = 2,
- jump = true,
- jump_height = 6,
- pushable = true,
- drops = {
- {name = "mobs:meat_raw", chance = 1, min = 1, max = 3},
- {name = "mobs:leather", chance = 1, min = 0, max = 2},
- },
- water_damage = 0,
- 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 = 10,
- die_loop = false,
- },
- follow = {"farming:wheat", "default:grass_1"},
- view_range = 8,
- replace_rate = 10,
- replace_what = {
- {"group:grass", "air", 0},
- {"default:dirt_with_grass", "default:dirt", -1}
- },
- -- stay_near = {{"farming:straw", "group:grass"}, 10},
- fear_height = 2,
- on_rightclick = function(self, clicker)
- -- feed or tame
- if mobs:feed_tame(self, clicker, 8, true, true) then
- -- if fed 7x wheat or grass then cow can be milked again
- if self.food and self.food > 6 then
- self.gotten = false
- end
- return
- end
- if mobs:protect(self, clicker) then return end
- if mobs:capture_mob(self, clicker, 0, 5, 60, false, nil) then return end
- local tool = clicker:get_wielded_item()
- local name = clicker:get_player_name()
- -- 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(name,
- S("Cow already milked!"))
- return
- end
- local inv = clicker:get_inventory()
- tool:take_item()
- clicker:set_wielded_item(tool)
- if inv:room_for_item("main", {name = "mobs:bucket_milk"}) then
- clicker:get_inventory():add_item("main", "mobs:bucket_milk")
- else
- local pos = self.object:get_pos()
- pos.y = pos.y + 0.5
- minetest.add_item(pos, {name = "mobs:bucket_milk"})
- end
- self.gotten = true -- milked
- return
- end
- end,
- on_replace = function(self, pos, oldnode, newnode)
- self.food = (self.food or 0) + 1
- -- if cow replaces 8x grass then it can be milked again
- if self.food >= 8 then
- self.food = 0
- self.gotten = false
- end
- end,
- })
- mobs:spawn({
- name = "mobs_animal:cow",
- nodes = {"default:dirt_with_grass", "ethereal:green_dirt"},
- neighbors = {"group:grass"},
- min_light = 14,
- interval = 60,
- chance = 8000, -- 15000
- min_height = 5,
- max_height = 200,
- day_toggle = true,
- })
- mobs:register_egg("mobs_animal:cow", S("Cow"), "mobs_cow_inv.png")
- mobs:alias_mob("mobs:cow", "mobs_animal:cow") -- compatibility
- -- bucket of milk
- minetest.register_craftitem(":mobs:bucket_milk", {
- description = S("Bucket of Milk"),
- inventory_image = "mobs_bucket_milk.png",
- stack_max = 1,
- groups = {food_milk = 1, flammable = 3, drink = 1},
- })
- -- glass of milk
- minetest.register_craftitem(":mobs:glass_milk", {
- description = S("Glass of Milk"),
- inventory_image = "mobs_glass_milk.png",
- on_use = minetest.item_eat(2, "vessels:drinking_glass"),
- groups = {food_milk_glass = 1, flammable = 3, vessel = 1, drink = 1},
- })
- minetest.register_craft({
- type = "shapeless",
- output = "mobs:glass_milk 4",
- recipe = {
- "vessels:drinking_glass", "vessels:drinking_glass",
- "vessels:drinking_glass", "vessels:drinking_glass",
- "mobs:bucket_milk"
- },
- replacements = { {"mobs:bucket_milk", "bucket:bucket_empty"} }
- })
- minetest.register_craft({
- type = "shapeless",
- output = "mobs:bucket_milk",
- recipe = {
- "mobs:glass_milk", "mobs:glass_milk",
- "mobs:glass_milk", "mobs:glass_milk",
- "bucket:bucket_empty"
- },
- replacements = { {"mobs:glass_milk", "vessels:drinking_glass 4"} }
- })
- -- butter
- minetest.register_craftitem(":mobs:butter", {
- description = S("Butter"),
- inventory_image = "mobs_butter.png",
- on_use = minetest.item_eat(1),
- groups = {food_butter = 1, flammable = 2},
- })
- if minetest.get_modpath("farming") and farming and farming.mod then
- minetest.register_craft({
- type = "shapeless",
- output = "mobs:butter",
- recipe = {"mobs:bucket_milk", "farming:salt"},
- replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
- })
- else -- some saplings are high in sodium so makes a good replacement item
- minetest.register_craft({
- type = "shapeless",
- output = "mobs:butter",
- recipe = {"mobs:bucket_milk", "default:sapling"},
- replacements = {{ "mobs:bucket_milk", "bucket:bucket_empty"}}
- })
- end
- -- cheese wedge
- minetest.register_craftitem(":mobs:cheese", {
- description = S("Cheese"),
- inventory_image = "mobs_cheese.png",
- on_use = minetest.item_eat(4),
- groups = {food_cheese = 1, flammable = 2},
- })
- 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 = S("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"},
- }
- })
|