Perf: Player Quit
This commit is contained in:
parent
9cf7117ea0
commit
5df24c1302
|
|
@ -676,15 +676,13 @@ public abstract class DataStore
|
||||||
//ensure player data is already read from file before trying to save
|
//ensure player data is already read from file before trying to save
|
||||||
playerData.getAccruedClaimBlocks();
|
playerData.getAccruedClaimBlocks();
|
||||||
playerData.getClaims();
|
playerData.getClaims();
|
||||||
|
|
||||||
this.asyncSavePlayerData(playerID, playerData);
|
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
|
//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)
|
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();
|
new SavePlayerDataThread(playerID, playerData).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1290,6 +1288,9 @@ public abstract class DataStore
|
||||||
|
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
//ensure player data is already read from file before trying to save
|
||||||
|
playerData.getAccruedClaimBlocks();
|
||||||
|
playerData.getClaims();
|
||||||
asyncSavePlayerData(this.playerID, this.playerData);
|
asyncSavePlayerData(this.playerID, this.playerData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -627,7 +627,8 @@ class PlayerEventHandler implements Listener
|
||||||
void onPlayerQuit(PlayerQuitEvent event)
|
void onPlayerQuit(PlayerQuitEvent event)
|
||||||
{
|
{
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
PlayerData playerData = this.dataStore.getPlayerData(player.getUniqueId());
|
UUID playerID = player.getUniqueId();
|
||||||
|
PlayerData playerData = this.dataStore.getPlayerData(playerID);
|
||||||
boolean isBanned;
|
boolean isBanned;
|
||||||
if(playerData.wasKicked)
|
if(playerData.wasKicked)
|
||||||
{
|
{
|
||||||
|
|
@ -663,37 +664,22 @@ class PlayerEventHandler implements Listener
|
||||||
this.dataStore.savePlayerData(player.getUniqueId(), playerData);
|
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
|
//FEATURE: players in pvp combat when they log out will die
|
||||||
if(GriefPrevention.instance.config_pvp_punishLogout && playerData.inPvpCombat())
|
if(GriefPrevention.instance.config_pvp_punishLogout && playerData.inPvpCombat())
|
||||||
{
|
{
|
||||||
player.setHealth(0);
|
player.setHealth(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//FEATURE: during a siege, any player who logs out dies and forfeits the siege
|
//FEATURE: during a siege, any player who logs out dies and forfeits the siege
|
||||||
|
|
||||||
//if player was involved in a siege, he forfeits
|
//if player was involved in a siege, he forfeits
|
||||||
if(playerData.siegeData != null)
|
if(playerData.siegeData != null)
|
||||||
{
|
{
|
||||||
if(player.getHealth() > 0) player.setHealth(0); //might already be zero from above, this avoids a double death message
|
if(player.getHealth() > 0) player.setHealth(0); //might already be zero from above, this avoids a double death message
|
||||||
}
|
}
|
||||||
|
|
||||||
//drop data about this player
|
//drop data about this player
|
||||||
this.dataStore.clearCachedPlayerData(playerID);
|
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
|
//determines whether or not a login or logout notification should be silenced, depending on how many there have been in the last minute
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user