forked from VoxeLibre/VoxeLibre
Fix wool farm crash
This commit is contained in:
parent
088f8dec2f
commit
7d51519f4d
|
@ -6,6 +6,8 @@ local S = minetest.get_translator("mobs_mc")
|
|||
--################### SHEEP
|
||||
--###################
|
||||
|
||||
local WOOL_REPLACE_RATE = 80
|
||||
|
||||
local colors = {
|
||||
-- group = { wool, textures }
|
||||
unicolor_white = { "mcl_wool:white", "#FFFFFF00" },
|
||||
|
@ -113,7 +115,7 @@ mcl_mobs.register_mob("mobs_mc:sheep", {
|
|||
view_range = 12,
|
||||
|
||||
-- Eat grass
|
||||
replace_rate = 80,
|
||||
replace_rate = WOOL_REPLACE_RATE,
|
||||
replace_delay = 1.3,
|
||||
replace_what = {
|
||||
{ "mcl_core:dirt_with_grass", "mcl_core:dirt", -1 },
|
||||
|
@ -121,25 +123,42 @@ mcl_mobs.register_mob("mobs_mc:sheep", {
|
|||
},
|
||||
-- Properly regrow wool after eating grass
|
||||
on_replace = function(self, pos, oldnode, newnode)
|
||||
self.state = "eat"
|
||||
self:set_animation("eat")
|
||||
self:set_velocity(0)
|
||||
minetest.after(self.replace_delay, function()
|
||||
if self and self.object and self.object:get_velocity() and self.health > 0 then
|
||||
self.object:set_velocity(vector.zero())
|
||||
if not self.color or not colors[self.color] then
|
||||
self.color = "unicolor_white"
|
||||
end
|
||||
self.gotten = false
|
||||
self.base_texture = sheep_texture(self.color)
|
||||
|
||||
self.drops = {
|
||||
{name = "mcl_mobitems:mutton",
|
||||
chance = 1,
|
||||
min = 1,
|
||||
max = 2,},
|
||||
{name = colors[self.color][1],
|
||||
chance = 1,
|
||||
min = 1,
|
||||
max = 1,},
|
||||
}
|
||||
|
||||
self.state = "eat"
|
||||
self:set_animation("eat")
|
||||
self:set_velocity(0)
|
||||
|
||||
|
||||
|
||||
minetest.after(self.replace_delay, function()
|
||||
if self and self.object and self.object:get_velocity() and self.health > 0 then
|
||||
self.object:set_velocity(vector.zero())
|
||||
self.gotten = false
|
||||
self.object:set_properties({ textures = self.base_texture })
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.after(2.5, function()
|
||||
if self and self.object and self.state == 'eat' and self.health > 0 and self.object:get_velocity() then
|
||||
if self and self.object and self.state == 'eat' and self.health > 0 then
|
||||
self.state = "walk"
|
||||
end
|
||||
end)
|
||||
|
||||
end,
|
||||
|
||||
-- Set random color on spawn
|
||||
|
|
|
@ -178,7 +178,9 @@ local dispenserdef = {
|
|||
local pos = obj:get_pos()
|
||||
local used, texture = false
|
||||
if entname == "mobs_mc:sheep" then
|
||||
if entity.drops[2] then
|
||||
minetest.add_item(pos, entity.drops[2].name .. " " .. math.random(1, 3))
|
||||
end
|
||||
if not entity.color then
|
||||
entity.color = "unicolor_white"
|
||||
end
|
||||
|
|
|
@ -177,7 +177,7 @@ end
|
|||
|
||||
function mesecon.effector_get_rules(node)
|
||||
local effector = mesecon.get_effector(node.name)
|
||||
if effector then
|
||||
if effector and effector.rules then
|
||||
local rules = effector.rules
|
||||
if type(rules) == "function" then
|
||||
return rules(node)
|
||||
|
|
Loading…
Reference in New Issue