Dispensers now support spawn eggs

This commit is contained in:
Wuzzy 2017-02-15 00:31:00 +01:00
parent 7c3bf9715a
commit 5df8579e88
2 changed files with 16 additions and 3 deletions

View File

@ -2826,7 +2826,7 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
if pos
and within_limits(pos, 0)
and not minetest.is_protected(pos, placer:get_player_name()) then
and (not placer or not minetest.is_protected(pos, placer:get_player_name())) then
pos.y = pos.y + 1
@ -2840,8 +2840,10 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
if ent.type ~= "monster" then
-- set owner and tame if not monster
ent.owner = placer:get_player_name()
ent.tamed = true
if placer then
ent.owner = placer:get_player_name()
ent.tamed = true
end
end
-- if not in creative then take item

View File

@ -298,6 +298,17 @@ local dispenserdef = {
end
end
elseif igroups.spawn_egg then
-- Place spawn egg
if not dropnodedef.walkable then
pointed_thing = { above = droppos, under = { x=droppos.x, y=droppos.y-1, z=droppos.z } }
minetest.registered_items[iname].on_place(ItemStack(iname), nil, pointed_thing)
stack:take_item()
inv:set_stack("main", stack_id, stack)
end
-- TODO: Many other dispenser actions
else
-- Drop item