Skip to content

Commit

Permalink
fix(controller): queue the invalidate backpack cache task in the end …
Browse files Browse the repository at this point in the history
…of write executor
  • Loading branch information
Xzavier0722 committed Jan 17, 2024
1 parent 26d13ad commit 0ed2fb0
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,13 @@ public void invalidateCache(String pUuid) {
if (removed != null) {
removed.markInvalid();
}
backpackCache.invalidate(pUuid);
scheduleWriteTask(() -> {
if (Bukkit.getOfflinePlayer(UUID.fromString(pUuid)).isOnline()) {
return;
}

backpackCache.invalidate(pUuid);
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,16 @@

import io.github.thebusybiscuit.slimefun4.api.player.PlayerProfile;
import io.github.thebusybiscuit.slimefun4.implementation.Slimefun;
import java.util.Optional;
import javax.annotation.Nonnull;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;

import javax.annotation.Nonnull;
import java.util.Optional;

/**
* This {@link Listener} removes a {@link PlayerProfile} from memory if the corresponding {@link Player}
* has left the {@link Server} or was kicked.
Expand All @@ -27,7 +26,7 @@ public PlayerProfileListener(@Nonnull Slimefun plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}

@EventHandler
@EventHandler(priority = EventPriority.LOWEST)
public void onDisconnect(PlayerQuitEvent e) {
Optional<PlayerProfile> profile = PlayerProfile.find(e.getPlayer());

Expand All @@ -37,22 +36,4 @@ public void onDisconnect(PlayerQuitEvent e) {
.getProfileDataController()
.invalidateCache(e.getPlayer().getUniqueId().toString());
}

@EventHandler(ignoreCancelled = true)
public void onKick(PlayerKickEvent e) {
Optional<PlayerProfile> profile = PlayerProfile.find(e.getPlayer());

// if we still have a profile of this Player in memory, delete it
profile.ifPresent(PlayerProfile::markForDeletion);
Slimefun.getDatabaseManager()
.getProfileDataController()
.invalidateCache(e.getPlayer().getUniqueId().toString());
}

@EventHandler(priority = EventPriority.LOWEST)
public void onJoin(PlayerJoinEvent e) {
Slimefun.getDatabaseManager()
.getProfileDataController()
.invalidateCache(e.getPlayer().getUniqueId().toString());
}
}

0 comments on commit 0ed2fb0

Please sign in to comment.