forked from Mineclonia/Mineclonia
Fix crash when trying to spawn mob from dispenser
This commit is contained in:
parent
db562c91db
commit
f27902df03
|
@ -3049,6 +3049,7 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
|
||||||
inventory_image = invimg,
|
inventory_image = invimg,
|
||||||
groups = grp,
|
groups = grp,
|
||||||
|
|
||||||
|
-- FIXME: Provide a function to place a mob without the on_place thingie
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
|
|
||||||
local pos = pointed_thing.above
|
local pos = pointed_thing.above
|
||||||
|
@ -3056,13 +3057,13 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
|
||||||
-- am I clicking on something with existing on_rightclick function?
|
-- am I clicking on something with existing on_rightclick function?
|
||||||
local under = minetest.get_node(pointed_thing.under)
|
local under = minetest.get_node(pointed_thing.under)
|
||||||
local def = minetest.registered_nodes[under.name]
|
local def = minetest.registered_nodes[under.name]
|
||||||
if def and def.on_rightclick then
|
if def and def.on_rightclick and placer then
|
||||||
return def.on_rightclick(pointed_thing.under, under, placer, itemstack)
|
return def.on_rightclick(pointed_thing.under, under, placer, itemstack)
|
||||||
end
|
end
|
||||||
|
|
||||||
if pos
|
if pos
|
||||||
and within_limits(pos, 0)
|
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
|
pos.y = pos.y + 1
|
||||||
|
|
||||||
|
@ -3075,7 +3076,7 @@ function mobs:register_egg(mob, desc, background, addegg, no_creative)
|
||||||
end
|
end
|
||||||
|
|
||||||
if ent.type ~= "monster"
|
if ent.type ~= "monster"
|
||||||
and not placer:get_player_control().sneak then
|
and (placer and not placer:get_player_control().sneak) then
|
||||||
-- set owner and tame if not monster
|
-- set owner and tame if not monster
|
||||||
ent.owner = placer:get_player_name()
|
ent.owner = placer:get_player_name()
|
||||||
ent.tamed = true
|
ent.tamed = true
|
||||||
|
|
Loading…
Reference in New Issue