mirror of
				https://github.com/luanti-org/minetest_game.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Boats: Prevent entering 'ignore' nodes
At world edge make boat bounce back into world by inverting speed. At world base avoid falling into ignore by setting y velocity to 0.
This commit is contained in:
		@@ -172,15 +172,23 @@ function boat.on_step(self, dtime)
 | 
			
		||||
	local new_velo
 | 
			
		||||
	local new_acce = {x = 0, y = 0, z = 0}
 | 
			
		||||
	if not is_water(p) then
 | 
			
		||||
		local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
 | 
			
		||||
		if (not nodedef) or nodedef.walkable then
 | 
			
		||||
		local nodename = minetest.get_node(p).name
 | 
			
		||||
		local nodedef = minetest.registered_nodes[nodename]
 | 
			
		||||
		if nodename == "ignore" then
 | 
			
		||||
			-- at world edge bounce boat back into world
 | 
			
		||||
			self.v = -self.v
 | 
			
		||||
			-- at world base avoid falling into ignore
 | 
			
		||||
			new_velo = get_velocity(self.v, self.object:getyaw(), 0)
 | 
			
		||||
		elseif (not nodedef) or nodedef.walkable then
 | 
			
		||||
			self.v = 0
 | 
			
		||||
			new_acce = {x = 0, y = 1, z = 0}
 | 
			
		||||
			new_velo = get_velocity(self.v, self.object:getyaw(),
 | 
			
		||||
				self.object:getvelocity().y)
 | 
			
		||||
		else
 | 
			
		||||
			new_acce = {x = 0, y = -9.8, z = 0}
 | 
			
		||||
			new_velo = get_velocity(self.v, self.object:getyaw(),
 | 
			
		||||
				self.object:getvelocity().y)
 | 
			
		||||
		end
 | 
			
		||||
		new_velo = get_velocity(self.v, self.object:getyaw(),
 | 
			
		||||
			self.object:getvelocity().y)
 | 
			
		||||
		self.object:setpos(self.object:getpos())
 | 
			
		||||
	else
 | 
			
		||||
		p.y = p.y + 1
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user