From 8ad706e9bdd4825055e3cea47727d4c7bf038666 Mon Sep 17 00:00:00 2001 From: WillConker Date: Thu, 6 Jun 2024 14:55:15 +0000 Subject: [PATCH] Updated attach checks, used `mcl_player.detach_player`, registered `quick_detach_player` --- mods/ENTITIES/mcl_boats/init.lua | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/mods/ENTITIES/mcl_boats/init.lua b/mods/ENTITIES/mcl_boats/init.lua index fe7b4f7df..d164149e4 100644 --- a/mods/ENTITIES/mcl_boats/init.lua +++ b/mods/ENTITIES/mcl_boats/init.lua @@ -1,3 +1,5 @@ +mcl_boats = {} + local S = minetest.get_translator(minetest.get_current_modname()) local boat_visual_size = {x = 1, y = 1, z = 1} @@ -128,6 +130,21 @@ local function detach_object(obj, change_pos) end end +function mcl_boats.quick_detach_player(player, boat) + -- called in mcl_player + -- boat should be luaentity + if player == boat._driver then + detach_object(player, true) + boat._driver = nil + elseif player == boat._passenger then + detach_object(player, true) + boat._passenger = nil + else + -- minetest.debug('Player attached to boat but not driver or passenger???') + return + end +end + -- -- Boat entity -- @@ -160,9 +177,10 @@ local boat = { minetest.register_on_respawnplayer(detach_object) function boat.on_rightclick(self, clicker) - if self._passenger or not clicker or clicker:get_attach() or (self.name == "mcl_boats:chest_boat" and self._driver) then + if self._passenger or not clicker or (self.name == "mcl_boats:chest_boat" and self._driver) then return end + mcl_player.detach_player(clicker) attach_object(self, clicker) end @@ -474,7 +492,7 @@ for b=1, #boat_ids do inventory_image = "mcl_boats_" .. id .. "_boat.png" texture = "mcl_boats_texture_" .. id .. "_boat.png" end - + minetest.register_craftitem(itemstring, { description = names[b], _tt_help = tt_help,