@@ -53,31 +53,24 @@ function boat.on_rightclick(self, clicker)
53
53
end
54
54
local name = clicker :get_player_name ()
55
55
if self .driver and name == self .driver then
56
- self .driver = nil
57
- self .auto = false
56
+ -- Cleanup happens in boat.on_detach_child
58
57
clicker :set_detach ()
59
- player_api . player_attached [ name ] = false
60
- player_api .set_animation (clicker , " stand" , 30 )
58
+
59
+ player_api .set_animation (clicker , " stand" , 30 )
61
60
local pos = clicker :get_pos ()
62
61
pos = {x = pos .x , y = pos .y + 0.2 , z = pos .z }
63
62
minetest .after (0.1 , function ()
64
63
clicker :set_pos (pos )
65
64
end )
66
65
elseif not self .driver then
67
- local attach = clicker :get_attach ()
68
- if attach and attach :get_luaentity () then
69
- local luaentity = attach :get_luaentity ()
70
- if luaentity .driver then
71
- luaentity .driver = nil
72
- end
73
- clicker :set_detach ()
74
- end
75
- self .driver = name
76
66
clicker :set_attach (self .object , " " ,
77
67
{x = 0.5 , y = 1 , z = - 3 }, {x = 0 , y = 0 , z = 0 })
68
+
69
+ self .driver = name
78
70
player_api .player_attached [name ] = true
71
+
79
72
minetest .after (0.2 , function ()
80
- player_api .set_animation (clicker , " sit" , 30 )
73
+ player_api .set_animation (clicker , " sit" , 30 )
81
74
end )
82
75
clicker :set_look_horizontal (self .object :get_yaw ())
83
76
end
86
79
87
80
-- If driver leaves server while driving boat
88
81
function boat .on_detach_child (self , child )
89
- self .driver = nil
90
- self .auto = false
82
+ if child and child :get_player_name () == self .driver then
83
+ player_api .player_attached [child :get_player_name ()] = false
84
+
85
+ self .driver = nil
86
+ self .auto = false
87
+ end
91
88
end
92
89
93
90
0 commit comments