11package me .armar .plugins .autorank .listeners ;
22
33import me .armar .plugins .autorank .Autorank ;
4- import org .bukkit .entity .Player ;
54import org .bukkit .event .EventHandler ;
65import org .bukkit .event .EventPriority ;
76import org .bukkit .event .Listener ;
87import org .bukkit .event .player .PlayerQuitEvent ;
98
9+ import java .util .UUID ;
10+
1011/**
1112 * This listener will listen to players leaving the server
1213 *
@@ -22,9 +23,30 @@ public PlayerQuitListener(final Autorank instance) {
2223
2324 @ EventHandler (priority = EventPriority .HIGH )
2425 public void onPlayerQuit (final PlayerQuitEvent event ) {
25- final Player player = event .getPlayer ();
26+ UUID uuid = event .getPlayer (). getUniqueId ();
2627
2728 // Stop task that updates the play time of a player
28- plugin .getTaskManager ().stopUpdatePlayTimeTask (player .getUniqueId ());
29+ plugin .getTaskManager ().stopUpdatePlayTimeTask (uuid );
30+
31+ // Check to see when the last time was that we updated the time.
32+ long lastPlayTimeUpdate = plugin .getTaskManager ().getLastPlayTimeUpdate (uuid );
33+
34+ // Let's check how long it's been since we updated the time of the player.
35+ if (lastPlayTimeUpdate > 0 ) {
36+
37+ double difference = (System .currentTimeMillis () - lastPlayTimeUpdate ) / 1000.0 / 60 ;
38+
39+ if (difference > 1.0 ) {
40+
41+ // Round to the nearest integer as we store time as an integer.
42+ int roundedDiff = (int ) Math .round (difference );
43+
44+ // Add the 'lost' time to the player's current time.
45+ plugin .getStorageManager ().addPlayerTime (uuid , roundedDiff );
46+
47+ // Remove the old time.
48+ plugin .getTaskManager ().setLastPlayTimeUpdate (uuid , -1 );
49+ }
50+ }
2951 }
3052}
0 commit comments