diff --git a/src/main/java/dev/esophose/playerparticles/manager/ParticleManager.java b/src/main/java/dev/esophose/playerparticles/manager/ParticleManager.java index d732658..8f6fe38 100644 --- a/src/main/java/dev/esophose/playerparticles/manager/ParticleManager.java +++ b/src/main/java/dev/esophose/playerparticles/manager/ParticleManager.java @@ -97,8 +97,11 @@ public class ParticleManager extends Manager implements Listener, Runnable { @EventHandler(priority = EventPriority.MONITOR) public void onPlayerQuit(PlayerQuitEvent e) { PPlayer pplayer = this.playerParticles.getManager(DataManager.class).getPPlayer(e.getPlayer().getUniqueId()); - if (pplayer != null && pplayer.getFixedEffectIds().isEmpty()) - this.particlePlayers.remove(pplayer.getUniqueId()); // Unload the PPlayer if they don't have any fixed effects + if (pplayer != null) { + pplayer.clearCachedPlayer(); + if (pplayer.getFixedEffectIds().isEmpty()) + this.particlePlayers.remove(pplayer.getUniqueId()); // Unload the PPlayer if they don't have any fixed effects + } } /** diff --git a/src/main/java/dev/esophose/playerparticles/particles/PPlayer.java b/src/main/java/dev/esophose/playerparticles/particles/PPlayer.java index 03c213e..ed79473 100644 --- a/src/main/java/dev/esophose/playerparticles/particles/PPlayer.java +++ b/src/main/java/dev/esophose/playerparticles/particles/PPlayer.java @@ -18,6 +18,11 @@ public class PPlayer { */ private final UUID playerUUID; + /** + * Cached instance of the player + */ + private Player cachedPlayer; + /** * A map of ParticleGroups this player has, the active particle group has an id of null */ @@ -74,7 +79,16 @@ public class PPlayer { * @return the underlying CommandSender who executed the command */ public Player getPlayer() { - return Bukkit.getPlayer(this.playerUUID); + if (this.cachedPlayer == null) + this.cachedPlayer = Bukkit.getPlayer(this.playerUUID); + return this.cachedPlayer; + } + + /** + * Clears the cached player to prevent the reference from lingering + */ + public void clearCachedPlayer() { + this.cachedPlayer = null; } /**