Fix buggy sheep grass eating microtask
This commit is contained in:
parent
bef513bedd
commit
19e7d45c8a
@ -15,40 +15,40 @@ local dirt_cover = {
|
|||||||
["rp_default:dirt_with_grass"] = "rp_default:dirt",
|
["rp_default:dirt_with_grass"] = "rp_default:dirt",
|
||||||
}
|
}
|
||||||
|
|
||||||
microtask_eat_grass = function(replace_rate, replace_what, replace_with)
|
microtask_eat_grass = function()
|
||||||
return rp_mobs.create_microtask({
|
return rp_mobs.create_microtask({
|
||||||
label = "Eat blocks",
|
label = "Eat blocks",
|
||||||
singlestep = true,
|
singlestep = true,
|
||||||
on_step = function(self, mob, dtime)
|
on_step = function(self, mob, dtime)
|
||||||
local mobpos = mob.object:get_pos()
|
local mobpos = mob.object:get_pos()
|
||||||
|
|
||||||
local nr = minetest.get_node(pos)
|
local plantpos = {x=mobpos.x, y=mobpos.y-1, z=mobpos.z}
|
||||||
-- Check node above
|
local groundpos = {x=mobpos.x, y=mobpos.y-2, z=mobpos.z}
|
||||||
local above = {x=pos.x,y=pos.y+1,z=pos.z}
|
local np = minetest.get_node(plantpos)
|
||||||
local na = minetest.get_node(above)
|
local ng = minetest.get_node(groundpos)
|
||||||
|
|
||||||
-- Eat grass
|
-- Eat grass
|
||||||
if na.name == "air" then
|
if np.name == "air" then
|
||||||
-- Eat grass from dirt node
|
-- Eat grass from dirt node
|
||||||
if dirt_cover[nr.name] then
|
if dirt_cover[ng.name] then
|
||||||
minetest.set_node(pos, {name = dirt_cover[nr.name]})
|
minetest.set_node(groundpos, {name = dirt_cover[ng.name]})
|
||||||
|
else
|
||||||
|
return
|
||||||
end
|
end
|
||||||
elseif top_grass[na.name] then
|
elseif top_grass[np.name] then
|
||||||
-- If grass plant on top, eat it first
|
-- If grass plant on top, eat it first
|
||||||
minetest.set_node(above, {name = top_grass[na.name]})
|
minetest.set_node(plantpos, {name = top_grass[np.name]})
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Regrow wool
|
-- Regrow wool
|
||||||
if rp_mobs.feed_tame_breed(mob, "rp_farming:wheat", 8, false, false) then
|
if mob._custom_state.shorn then
|
||||||
if self._custom_state.shorn then
|
mob.object:set_properties(
|
||||||
self.object:set_properties(
|
|
||||||
{
|
{
|
||||||
textures = {"mobs_sheep.png"},
|
textures = {"mobs_sheep.png"},
|
||||||
})
|
})
|
||||||
self._custom_state.shorn = false
|
mob._custom_state.shorn = false
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
@ -60,8 +60,10 @@ rp_mobs.register_mob("rp_mobs_mobs:sheep", {
|
|||||||
drops = {"rp_mobs_mobs:meat_raw", "rp_mobs_mobs:wool"},
|
drops = {"rp_mobs_mobs:meat_raw", "rp_mobs_mobs:wool"},
|
||||||
decider = function(self)
|
decider = function(self)
|
||||||
local task = rp_mobs.create_task({label="eat grass"})
|
local task = rp_mobs.create_task({label="eat grass"})
|
||||||
local mtask = microtask_eat_grass
|
rp_mobs.add_microtask_to_task(self, rp_mobs.microtasks.sleep(3.0), task)
|
||||||
|
local mtask = microtask_eat_grass()
|
||||||
rp_mobs.add_microtask_to_task(self, mtask, task)
|
rp_mobs.add_microtask_to_task(self, mtask, task)
|
||||||
|
rp_mobs.add_task(self, task)
|
||||||
end,
|
end,
|
||||||
default_sounds = {
|
default_sounds = {
|
||||||
death = "mobs_sheep",
|
death = "mobs_sheep",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user