Skip to content
Permalink
Browse files
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.
  • Loading branch information
paramat committed Feb 17, 2018
1 parent 1e9c61f commit 7754555707a6a1bf1e8f4b57788e27e57fde1cd8
Showing 1 changed file with 12 additions and 4 deletions.
@@ -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

0 comments on commit 7754555

Please sign in to comment.