From 5df24c13021c7214e909f0e1f077d39dc6d9f3bf Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Sun, 16 Nov 2014 15:13:25 -0800 Subject: [PATCH] Perf: Player Quit --- .../GriefPrevention/DataStore.java | 7 +-- .../GriefPrevention/PlayerEventHandler.java | 48 +++++++------------ 2 files changed, 21 insertions(+), 34 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/DataStore.java b/src/me/ryanhamshire/GriefPrevention/DataStore.java index 9aed141..7b6cce5 100644 --- a/src/me/ryanhamshire/GriefPrevention/DataStore.java +++ b/src/me/ryanhamshire/GriefPrevention/DataStore.java @@ -676,15 +676,13 @@ public abstract class DataStore //ensure player data is already read from file before trying to save playerData.getAccruedClaimBlocks(); playerData.getClaims(); + this.asyncSavePlayerData(playerID, playerData); } //saves changes to player data to secondary storage. MUST be called after you're done making changes, otherwise a reload will lose them public void savePlayerData(UUID playerID, PlayerData playerData) { - //ensure player data is already read from file before trying to save - playerData.getAccruedClaimBlocks(); - playerData.getClaims(); new SavePlayerDataThread(playerID, playerData).start(); } @@ -1290,6 +1288,9 @@ public abstract class DataStore public void run() { + //ensure player data is already read from file before trying to save + playerData.getAccruedClaimBlocks(); + playerData.getClaims(); asyncSavePlayerData(this.playerID, this.playerData); } } diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index d7135fa..910904b 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -627,7 +627,8 @@ class PlayerEventHandler implements Listener void onPlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - PlayerData playerData = this.dataStore.getPlayerData(player.getUniqueId()); + UUID playerID = player.getUniqueId(); + PlayerData playerData = this.dataStore.getPlayerData(playerID); boolean isBanned; if(playerData.wasKicked) { @@ -663,37 +664,22 @@ class PlayerEventHandler implements Listener this.dataStore.savePlayerData(player.getUniqueId(), playerData); } - this.onPlayerDisconnect(event.getPlayer(), event.getQuitMessage()); - } - - //helper for above - private void onPlayerDisconnect(Player player, String notificationMessage) - { - UUID playerID = player.getUniqueId(); - PlayerData playerData = this.dataStore.getPlayerData(playerID); - - //FEATURE: claims where players have allowed explosions will revert back to not allowing them when the owner logs out - for(Claim claim : playerData.getClaims()) - { - claim.areExplosivesAllowed = false; - } - //FEATURE: players in pvp combat when they log out will die - if(GriefPrevention.instance.config_pvp_punishLogout && playerData.inPvpCombat()) - { - player.setHealth(0); - } - - //FEATURE: during a siege, any player who logs out dies and forfeits the siege - - //if player was involved in a siege, he forfeits - if(playerData.siegeData != null) - { - if(player.getHealth() > 0) player.setHealth(0); //might already be zero from above, this avoids a double death message - } - - //drop data about this player - this.dataStore.clearCachedPlayerData(playerID); + if(GriefPrevention.instance.config_pvp_punishLogout && playerData.inPvpCombat()) + { + player.setHealth(0); + } + + //FEATURE: during a siege, any player who logs out dies and forfeits the siege + + //if player was involved in a siege, he forfeits + if(playerData.siegeData != null) + { + if(player.getHealth() > 0) player.setHealth(0); //might already be zero from above, this avoids a double death message + } + + //drop data about this player + this.dataStore.clearCachedPlayerData(playerID); } //determines whether or not a login or logout notification should be silenced, depending on how many there have been in the last minute