Skip to content

Commit 7754555

Browse files
committedFeb 17, 2018
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.
1 parent 1e9c61f commit 7754555

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed
 

‎mods/boats/init.lua

+12-4
Original file line numberDiff line numberDiff line change
@@ -172,15 +172,23 @@ function boat.on_step(self, dtime)
172172
local new_velo
173173
local new_acce = {x = 0, y = 0, z = 0}
174174
if not is_water(p) then
175-
local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
176-
if (not nodedef) or nodedef.walkable then
175+
local nodename = minetest.get_node(p).name
176+
local nodedef = minetest.registered_nodes[nodename]
177+
if nodename == "ignore" then
178+
-- at world edge bounce boat back into world
179+
self.v = -self.v
180+
-- at world base avoid falling into ignore
181+
new_velo = get_velocity(self.v, self.object:getyaw(), 0)
182+
elseif (not nodedef) or nodedef.walkable then
177183
self.v = 0
178184
new_acce = {x = 0, y = 1, z = 0}
185+
new_velo = get_velocity(self.v, self.object:getyaw(),
186+
self.object:getvelocity().y)
179187
else
180188
new_acce = {x = 0, y = -9.8, z = 0}
189+
new_velo = get_velocity(self.v, self.object:getyaw(),
190+
self.object:getvelocity().y)
181191
end
182-
new_velo = get_velocity(self.v, self.object:getyaw(),
183-
self.object:getvelocity().y)
184192
self.object:setpos(self.object:getpos())
185193
else
186194
p.y = p.y + 1

0 commit comments

Comments
 (0)
Please sign in to comment.