summaryrefslogtreecommitdiff
path: root/chicken.lua
diff options
context:
space:
mode:
authorTenPlus1 <kinsellaja@yahoo.com>2016-04-15 14:59:43 +0100
committerTenPlus1 <kinsellaja@yahoo.com>2016-04-15 14:59:43 +0100
commit654c54075a9304333f4636abaa58d0eb8c35b78a (patch)
tree15a6dca70ea57b69007bb3db5668c447acb2fc05 /chicken.lua
Initial Animals upload
Diffstat (limited to 'chicken.lua')
-rw-r--r--chicken.lua254
1 files changed, 254 insertions, 0 deletions
diff --git a/chicken.lua b/chicken.lua
new file mode 100644
index 0000000..f5a58bd
--- /dev/null
+++ b/chicken.lua
@@ -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",
+})