fix overwriting a non-compass item because of switching during lag

This commit is contained in:
whosit 2023-05-12 20:54:52 +03:00
parent 4da4a63c6c
commit 05f47c2445

View File

@ -361,17 +361,22 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
local label = fields.label
set_compass_meta_label(meta, label)
local success = player:set_wielded_item(compass_item)
if not success then
-- no idea why this can happen
minetest.log("error","[MOD] waypoint_compass: " ..
player:get_player_name() ..
" Failed to swap compass after editing it")
-- Prevent overwriting random item if user switched before
-- formspec appeared. FIXME can still change another compass.
local current_item = player:get_wielded_item()
if current_item:get_name() == "waypoint_compass:compass" then
local success = player:set_wielded_item(compass_item)
if not success then
-- no idea why this can happen
minetest.log("error","[MOD] waypoint_compass: " ..
player:get_player_name() ..
" Failed to swap compass after editing it")
end
end
-- assume dialog is closed and reset context
compass_dialog_context[player:get_player_name()] = nil
update_hud_waypoint(player, compass_item, 'force')
update_hud_waypoint(player, current_item, 'force')
end
end)