diff options
author | TenPlus1 <kinsellaja@yahoo.com> | 2016-04-15 14:59:43 +0100 |
---|---|---|
committer | TenPlus1 <kinsellaja@yahoo.com> | 2016-04-15 14:59:43 +0100 |
commit | 654c54075a9304333f4636abaa58d0eb8c35b78a (patch) | |
tree | 15a6dca70ea57b69007bb3db5668c447acb2fc05 /sheep.lua |
Initial Animals upload
Diffstat (limited to 'sheep.lua')
-rw-r--r-- | sheep.lua | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/sheep.lua b/sheep.lua new file mode 100644 index 0000000..b0e740f --- /dev/null +++ b/sheep.lua @@ -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 +}) +]] |