mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2025-02-11 03:30:10 +00:00
Cache bending players for 30 seconds after disconnect
This commit is contained in:
parent
29f6056b1c
commit
00093af01b
1 changed files with 17 additions and 2 deletions
|
@ -11,13 +11,18 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository>
|
public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository>
|
||||||
{
|
{
|
||||||
private final Map<UUID, BendingPlayer> _players = new HashMap<>();
|
private final Map<UUID, BendingPlayer> _players = new HashMap<>();
|
||||||
|
|
||||||
|
private final Set<UUID> _disconnected = new HashSet<>();
|
||||||
|
private final long _databaseSyncInterval = 20 * 30;
|
||||||
|
|
||||||
private BendingPlayerManager()
|
private BendingPlayerManager()
|
||||||
{
|
{
|
||||||
super("Bending Player", new BendingPlayerRepository());
|
super("Bending Player", new BendingPlayerRepository());
|
||||||
|
@ -38,11 +43,22 @@ public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
runTimer(() ->
|
||||||
|
{
|
||||||
|
_disconnected.forEach(_players::remove);
|
||||||
|
_disconnected.clear();
|
||||||
|
}, _databaseSyncInterval, _databaseSyncInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onLogin(PlayerLoginEvent event)
|
public void onLogin(PlayerLoginEvent event)
|
||||||
{
|
{
|
||||||
|
if (_disconnected.remove(event.getPlayer().getUniqueId()))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
runAsync(() ->
|
runAsync(() ->
|
||||||
{
|
{
|
||||||
loadBendingPlayer(event.getPlayer());
|
loadBendingPlayer(event.getPlayer());
|
||||||
|
@ -52,8 +68,7 @@ public class BendingPlayerManager extends DatabaseModule<BendingPlayerRepository
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onQuit(PlayerQuitEvent event)
|
public void onQuit(PlayerQuitEvent event)
|
||||||
{
|
{
|
||||||
// TODO Queue disconnected players and execute in a batch
|
_disconnected.add(event.getPlayer().getUniqueId());
|
||||||
_players.remove(event.getPlayer().getUniqueId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
Loading…
Reference in a new issue