Advertisement
Guest User

Untitled

a guest
Mar 4th, 2015
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.38 KB | None | 0 0
  1. // event listener
  2. @EventHandler
  3. public void onPlayerJoin(final PlayerJoinEvent event) {
  4.  
  5.     Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
  6.  
  7.         @Override
  8.         public void run() {
  9.             datasource.loadPlayerDataToCache(event.getPlayer());
  10.            
  11.             // return to main thread
  12.             Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
  13.                
  14.                 @Override
  15.                 public void run() {
  16.                     onDataLoadComplete(event.getPlayer());
  17.                 }
  18.             });
  19.         }
  20.     });
  21. }
  22.  
  23. public void onDataLoadComplete(Player player) {
  24.     // check sessions, send messages etc.
  25. }
  26.  
  27. @EventHandler
  28. public void onPlayerQuit(final PlayerQuitEvent event) {
  29.    
  30.     Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
  31.  
  32.         @Override
  33.         public void run() {
  34.            
  35.             datasource.savePlayerData(event.getPlayer());
  36.         }
  37.     });
  38. }
  39.  
  40. // exaple datasource class
  41. public class MysqlDatasource implements Datasource {
  42.  
  43.     private Map<String, PlayerAuth> cache = new ConcurrentHashMap<>();
  44.  
  45.     public synchronized void loadPlayerDataToCache(Player player) {
  46.        
  47.         cache.put(player.getName().toLowerCase(), getAuth(player.getName().toLowerCase());
  48.     }
  49.  
  50.     public synchronized void savePlayerData(Player player) {
  51.        
  52.         PlayerAuth auth = cache.remove(player.getName().toLowerCase());
  53.         if ( auth == null ) {
  54.             return;
  55.         }
  56.  
  57.         // save auth to datasource
  58.     }
  59.    
  60.     // other methods declared in Datasource
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement