diff options
Diffstat (limited to 'cow.lua')
-rw-r--r-- | cow.lua | 149 |
1 files changed, 149 insertions, 0 deletions
@@ -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'}, + } +}) |