Add colored Sheep

Sheep spawn randomly with white, grey, brown or black wool
This commit is contained in:
BlockMen 2016-02-16 23:21:35 +01:00
parent ac569c49a9
commit 4096344c6f
6 changed files with 164 additions and 144 deletions

View File

@ -1,12 +1,13 @@
Sheep for Creatures MOB-Engine Sheep for Creatures MOB-Engine
============================== ==============================
Copyright (c) 2015 BlockMen <blockmen2015@gmail.com> Copyright (c) 2015-2016 BlockMen <blockmen2015@gmail.com>
Version: 2.0 Beta Version: 2.1
Adds sheep to Minetest (requires Creatures MOB-Engine). Adds sheep to Minetest (requires Creatures MOB-Engine).
Sheep spawn only at day-time and are friendly and remain around 5 minutes in the world. Sheep spawn only at day-time and are friendly and remain around 5 minutes in the world.
There are four different wool colors: white, grey, brown and black.
You can tame them by feading them with wheat. If there is grass they eat the grass You can tame them by feading them with wheat. If there is grass they eat the grass
and regrow wool that way. They will follow you if you have Wheat in your hand. and regrow wool that way. They will follow you if you have Wheat in your hand.
Sheep have 8 HP and drop 1-2 wool when punched or 1-3 wool when using shears. Sheep have 8 HP and drop 1-2 wool when punched or 1-3 wool when using shears.
@ -20,11 +21,11 @@ ingot stick
License: License:
~~~~~~~~ ~~~~~~~~
Code: Code:
(c) Copyright 2015 BlockMen; modified zlib-License (c) Copyright 2015-2016 BlockMen; modified zlib-License
see "LICENSE.txt" for details. see "LICENSE.txt" for details.
Media(textures and meshes/models): Media(textures and meshes/models):
(c) Copyright (2014-2015) BlockMen; CC-BY-SA 3.0 (c) Copyright (2014-2016) BlockMen; CC-BY-SA 3.0
Sounds: Sounds:
- creatures_sheep.1.ogg, confusion_music(https://freesound.org/people/confusion_music) CC-BY 3.0 - creatures_sheep.1.ogg, confusion_music(https://freesound.org/people/confusion_music) CC-BY 3.0

View File

@ -1,5 +1,5 @@
--= Sheep for Creatures MOB-Engine (cme) =-- --= Sheep for Creatures MOB-Engine (cme) =--
-- Copyright (c) 2015 BlockMen <blockmen2015@gmail.com> -- Copyright (c) 2015-2016 BlockMen <blockmen2015@gmail.com>
-- --
-- init.lua -- init.lua
-- --
@ -34,19 +34,34 @@ core.register_craft({
} }
}) })
local function setColor(self)
if self and self.object then
local ext = ".png"
if self.has_wool ~= true then
ext = ".png^(creatures_sheep_shaved.png^[colorize:" .. self.wool_color:gsub("grey", "gray") .. ":50)"
end
self.object:set_properties({textures = {"creatures_sheep.png^creatures_sheep_" .. self.wool_color .. ext}})
end
end
local function shear(self, drop_count, sound) local function shear(self, drop_count, sound)
if self.has_wool == true then if self.has_wool == true then
self.has_wool = false self.has_wool = false
local pos = self.object:getpos() local pos = self.object:getpos()
if sound then if sound then
core.sound_play("creatures_shears", {pos = pos, gain = 1, max_hear_distance = 10}) core.sound_play("creatures_shears", {pos = pos, gain = 1, max_hear_distance = 10})
end end
self.object:set_properties({textures = {"creatures_sheep.png"}})
creatures.dropItems(pos, {{"wool:white", drop_count}}) setColor(self)
creatures.dropItems(pos, {{"wool:" .. self.wool_color, drop_count}})
end end
end end
-- white, grey, brown, black (see wool colors as reference)
local colors = {"white", "grey", "brown", "black"}
local def = { local def = {
name = "creatures:sheep", name = "creatures:sheep",
stats = { stats = {
@ -90,7 +105,7 @@ local def = {
walk_long = {chance = 0.11, duration = 8, moving_speed = 1.3, update_yaw = 5}, walk_long = {chance = 0.11, duration = 8, moving_speed = 1.3, update_yaw = 5},
-- special modes -- special modes
follow = {chance = 0, duration = 20, radius = 4, timer = 5, moving_speed = 1, items = {"farming:wheat"}}, follow = {chance = 0, duration = 20, radius = 4, timer = 5, moving_speed = 1, items = {"farming:wheat"}},
eat = {chance = 0.25, eat = { chance = 0.25,
duration = 4, duration = 4,
nodes = { nodes = {
"default:grass_1", "default:grass_2", "default:grass_3", "default:grass_1", "default:grass_2", "default:grass_3",
@ -102,7 +117,7 @@ local def = {
drops = function(self) drops = function(self)
local items = {{"creatures:flesh"}} local items = {{"creatures:flesh"}}
if self.has_wool then if self.has_wool then
table.insert(items, {"wool:white", {min = 1, max = 2}}) table.insert(items, {"wool:" .. self.wool_color, {min = 1, max = 2}})
end end
creatures.dropItems(self.object:getpos(), items) creatures.dropItems(self.object:getpos(), items)
end, end,
@ -138,14 +153,21 @@ local def = {
get_staticdata = function(self) get_staticdata = function(self)
return { return {
has_wool = self.has_wool has_wool = self.has_wool,
wool_color = self.wool_color,
} }
end, end,
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
if self.has_wool == false then if self.has_wool == nil then
self.object:set_properties({textures = {"creatures_sheep.png"}}) self.has_wool = true
end end
if not self.wool_color then
self.wool_color = colors[math.random(1, #colors)]
end
-- update fur
setColor(self)
end, end,
on_rightclick = function(self, clicker) on_rightclick = function(self, clicker)
@ -160,6 +182,7 @@ local def = {
if not self.tamed then if not self.tamed then
self.fed_cnt = (self.fed_cnt or 0) + 1 self.fed_cnt = (self.fed_cnt or 0) + 1
end end
-- play eat sound? -- play eat sound?
item:take_item() item:take_item()
elseif name == "creatures:shears" and self.has_wool then elseif name == "creatures:shears" and self.has_wool then
@ -170,21 +193,17 @@ local def = {
clicker:set_wielded_item(item) clicker:set_wielded_item(item)
end end
end end
return true return true
end, end,
on_step = function(self, dtime) on_step = function(self, dtime)
if self.has_wool == nil then
self.has_wool = true
end
if self.mode == "eat" and self.eat_node then if self.mode == "eat" and self.eat_node then
self.regrow_wool = true self.regrow_wool = true
end end
if self.last_mode == "eat" and (self.modetimer and self.modetimer == 0) and self.regrow_wool then if self.last_mode == "eat" and (self.modetimer and self.modetimer == 0) and self.regrow_wool then
self.has_wool = true self.has_wool = true
self.regrow_wool = nil self.regrow_wool = nil
self.object:set_properties({textures = {"creatures_sheep.png^creatures_sheep_white.png"}}) setColor(self)
end end
if self.fed_cnt and self.fed_cnt > 4 then if self.fed_cnt and self.fed_cnt > 4 then
self.tamed = true self.tamed = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB