Skip to content

Commit d57cb0a

Browse files
committedOct 29, 2014
Boats mod improve y motion. Smaller collision box. Reverse turn with negative velocity only. Smooth turning. Enable underwater higher acceleration
1 parent ba8cbbc commit d57cb0a

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed
 

‎mods/boats/init.lua

+19-17
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ end
3232

3333
local boat = {
3434
physical = true,
35-
collisionbox = {-0.6, -0.4, -0.6, 0.6, 0.3, 0.6},
35+
collisionbox = {-0.5, -0.4, -0.5, 0.5, 0.3, 0.5},
3636
visual = "mesh",
3737
mesh = "boat.x",
3838
textures = {"default_wood.png"},
@@ -104,19 +104,17 @@ function boat.on_step(self, dtime)
104104
local yaw = self.object:getyaw()
105105
if ctrl.up then
106106
self.v = self.v + 0.1
107-
end
108-
if ctrl.down then
109-
self.v = self.v - 0.08
107+
elseif ctrl.down then
108+
self.v = self.v - 0.1
110109
end
111110
if ctrl.left then
112-
if ctrl.down then
111+
if self.v < 0 then
113112
self.object:setyaw(yaw - (1 + dtime) * 0.03)
114113
else
115114
self.object:setyaw(yaw + (1 + dtime) * 0.03)
116115
end
117-
end
118-
if ctrl.right then
119-
if ctrl.down then
116+
elseif ctrl.right then
117+
if self.v < 0 then
120118
self.object:setyaw(yaw + (1 + dtime) * 0.03)
121119
else
122120
self.object:setyaw(yaw - (1 + dtime) * 0.03)
@@ -125,6 +123,7 @@ function boat.on_step(self, dtime)
125123
end
126124
local velo = self.object:getvelocity()
127125
if self.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
126+
self.object:setpos(self.object:getpos())
128127
return
129128
end
130129
local s = get_sign(self.v)
@@ -148,30 +147,33 @@ function boat.on_step(self, dtime)
148147
self.v = 0
149148
new_acce = {x = 0, y = 1, z = 0}
150149
else
151-
new_acce = {x = 0, y = -9.8, z = 0} -- freefall in air -9.81
150+
new_acce = {x = 0, y = -9.8, z = 0}
152151
end
153152
new_velo = get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)
153+
self.object:setpos(self.object:getpos())
154154
else
155155
p.y = p.y + 1
156156
if is_water(p) then
157-
new_acce = {x = 0, y = 3, z = 0}
158157
local y = self.object:getvelocity().y
159-
if y > 2 then
160-
y = 2
161-
end
162-
if y < 0 then
163-
self.object:setacceleration({x = 0, y = 10, z = 0})
158+
if y >= 4.5 then
159+
y = 4.5
160+
elseif y < 0 then
161+
new_acce = {x = 0, y = 20, z = 0}
162+
else
163+
new_acce = {x = 0, y = 5, z = 0}
164164
end
165165
new_velo = get_velocity(self.v, self.object:getyaw(), y)
166+
self.object:setpos(self.object:getpos())
166167
else
167168
new_acce = {x = 0, y = 0, z = 0}
168-
if math.abs(self.object:getvelocity().y) <= 2 then
169+
if math.abs(self.object:getvelocity().y) < 1 then
169170
local pos = self.object:getpos()
170171
pos.y = math.floor(pos.y) + 0.5
171172
self.object:setpos(pos)
172173
new_velo = get_velocity(self.v, self.object:getyaw(), 0)
173174
else
174175
new_velo = get_velocity(self.v, self.object:getyaw(), self.object:getvelocity().y)
176+
self.object:setpos(self.object:getpos())
175177
end
176178
end
177179
end
@@ -181,7 +183,6 @@ end
181183

182184
minetest.register_entity("boats:boat", boat)
183185

184-
185186
minetest.register_craftitem("boats:boat", {
186187
description = "Boat",
187188
inventory_image = "boat_inventory.png",
@@ -213,3 +214,4 @@ minetest.register_craft({
213214
{"group:wood", "group:wood", "group:wood"},
214215
},
215216
})
217+

0 commit comments

Comments
 (0)
Please sign in to comment.