diff options
| author | stujones11 <stujones111@gmail.com> | 2016-01-29 21:24:12 +0000 | 
|---|---|---|
| committer | stujones11 <stujones111@gmail.com> | 2016-01-29 21:24:12 +0000 | 
| commit | 388f503e985b07022b72a98fb22f3ef19c2f7c6c (patch) | |
| tree | 330c94a3501a2aae84016cc5a3cb5962870d7c26 /railcart | |
| parent | 99f5ffddfb603068249d1ac0b9682d8531213842 (diff) | |
Only check line-of-sight if object and target node are loaded
Diffstat (limited to 'railcart')
| -rw-r--r-- | railcart/railcart.lua | 18 | 
1 files changed, 11 insertions, 7 deletions
| diff --git a/railcart/railcart.lua b/railcart/railcart.lua index 6a3a22b..fbbad4a 100644 --- a/railcart/railcart.lua +++ b/railcart/railcart.lua @@ -299,13 +299,17 @@ function railcart:update(cart, time, object)  				blocked = true  			end  		end -		local p1 = vector.add(cart.pos, {x=0, y=1, z=0}) -		local p2 = vector.add(cart.target, {x=0, y=1, z=0}) -		local los, bp = minetest.line_of_sight(p1, p2) -		if los == false then -			bp.y = bp.y - 1 -			cart.target = vector.subtract(bp, cart.dir) -			blocked = true +		if object then +			local p1 = vector.add(cart.pos, {x=0, y=1, z=0}) +			local p2 = vector.add(cart.target, {x=0, y=1, z=0}) +			if minetest.get_node_or_nil(p2) then +				local los, bp = minetest.line_of_sight(p1, p2) +				if los == false then +					bp.y = bp.y - 1 +					cart.target = vector.subtract(bp, cart.dir) +					blocked = true +				end +			end  		end  		local d1 = railtrack:get_distance(cart.prev, cart.target)  		local d2 = railtrack:get_distance(cart.prev, cart.pos) | 
