From a6e6ad7ea3164544aa86c5b2e610353eed9a20db Mon Sep 17 00:00:00 2001 From: Ben Woo <30431861+benwoo1110@users.noreply.github.com> Date: Sun, 14 Dec 2025 23:11:39 +0800 Subject: [PATCH] Delay handling state to end of profile writes --- .../inventories/handleshare/PlayerShareHandlingState.java | 4 ++-- .../multiverse/inventories/handleshare/ShareHandler.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/mvplugins/multiverse/inventories/handleshare/PlayerShareHandlingState.java b/src/main/java/org/mvplugins/multiverse/inventories/handleshare/PlayerShareHandlingState.java index f0ed4f90..dbb6776d 100644 --- a/src/main/java/org/mvplugins/multiverse/inventories/handleshare/PlayerShareHandlingState.java +++ b/src/main/java/org/mvplugins/multiverse/inventories/handleshare/PlayerShareHandlingState.java @@ -6,9 +6,9 @@ import org.mvplugins.multiverse.external.jakarta.inject.Inject; import org.mvplugins.multiverse.inventories.share.Sharable; -import java.util.HashMap; import java.util.Map; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; /** * Keeps track of players who are currently having their sharable handling processed. @@ -26,7 +26,7 @@ public final class PlayerShareHandlingState { @Inject PlayerShareHandlingState() { - this.playerAffectedProfiles = new HashMap<>(); + this.playerAffectedProfiles = new ConcurrentHashMap<>(); } void setPlayerAffectedProfiles(Player player, AffectedProfiles status) { diff --git a/src/main/java/org/mvplugins/multiverse/inventories/handleshare/ShareHandler.java b/src/main/java/org/mvplugins/multiverse/inventories/handleshare/ShareHandler.java index 3d83b7e2..46dc3cbf 100644 --- a/src/main/java/org/mvplugins/multiverse/inventories/handleshare/ShareHandler.java +++ b/src/main/java/org/mvplugins/multiverse/inventories/handleshare/ShareHandler.java @@ -93,7 +93,6 @@ private void updatePlayer() { for (PersistingProfile readProfile : affectedProfiles.getReadProfiles()) { ShareHandlingUpdater.updatePlayer(inventories, player, readProfile); } - playerShareHandlingState.removePlayerAffectedProfiles(player); } private CompletableFuture updateProfiles(ProfileDataSnapshot snapshot) { @@ -104,7 +103,8 @@ private CompletableFuture updateProfiles(ProfileDataSnapshot snapshot) { return CompletableFuture.allOf(affectedProfiles.getWriteProfiles() .stream() .map(writeProfile -> updatePersistingProfile(writeProfile, snapshot)) - .toArray(CompletableFuture[]::new)); + .toArray(CompletableFuture[]::new)) + .thenRun(() -> playerShareHandlingState.removePlayerAffectedProfiles(player)); } private CompletableFuture updatePersistingProfile(PersistingProfile persistingProfile, ProfileDataSnapshot snapshot) {