diff --git a/cart_entity.lua b/cart_entity.lua index 01c6315..abcccbd 100644 --- a/cart_entity.lua +++ b/cart_entity.lua @@ -54,6 +54,12 @@ function cart_entity:on_rightclick(clicker) elseif not self.driver then self.driver = player_name boost_cart:manage_attachment(clicker, self.object) + + if default.player_set_animation then + -- player_api(/default) does not update the animation + -- when the player is attached, reset to default animation + default.player_set_animation(clicker, "stand") + end end end @@ -81,6 +87,13 @@ function cart_entity:get_staticdata() }) end +-- 0.5.x and later: When the driver leaves +function cart_entity:on_detach_child(child) + if child and child:get_player_name() == self.driver then + self.driver = nil + end +end + function cart_entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction) local pos = self.object:get_pos() local vel = self.object:get_velocity() diff --git a/functions.lua b/functions.lua index 8645021..dca494e 100644 --- a/functions.lua +++ b/functions.lua @@ -19,6 +19,9 @@ function boost_cart:manage_attachment(player, obj) if status then local y_pos = self.old_player_model and 6 or -4 + if player:get_properties().visual == "upright_sprite" then + y_pos = -4 + end player:set_attach(obj, "", {x=0, y=y_pos, z=0}, {x=0, y=0, z=0}) player:set_eye_offset({x=0, y=-4, z=0},{x=0, y=-4, z=0}) else @@ -208,6 +211,9 @@ function boost_cart:boost_rail(pos, amount) end function boost_cart:register_rail(name, def_overwrite) + local sound_func = default.node_sound_metal_defaults + or default.node_sound_defaults + local def = { drawtype = "raillike", paramtype = "light", @@ -218,7 +224,7 @@ function boost_cart:register_rail(name, def_overwrite) type = "fixed", fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, }, - sounds = default.node_sound_metal_defaults() + sounds = sound_func() } for k, v in pairs(def_overwrite) do def[k] = v diff --git a/init.lua b/init.lua index 7230ca0..4261b9a 100644 --- a/init.lua +++ b/init.lua @@ -25,7 +25,7 @@ if not default.player_attached then default.player_attached = {} end -minetest.after(0.5, function() +minetest.after(0, function() boost_cart.old_player_model = not minetest.global_exists("player_api") end)