Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // event listener
- @EventHandler
- public void onPlayerJoin(final PlayerJoinEvent event) {
- Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
- @Override
- public void run() {
- datasource.loadPlayerDataToCache(event.getPlayer());
- // return to main thread
- Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
- @Override
- public void run() {
- onDataLoadComplete(event.getPlayer());
- }
- });
- }
- });
- }
- public void onDataLoadComplete(Player player) {
- // check sessions, send messages etc.
- }
- @EventHandler
- public void onPlayerQuit(final PlayerQuitEvent event) {
- Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() {
- @Override
- public void run() {
- datasource.savePlayerData(event.getPlayer());
- }
- });
- }
- // exaple datasource class
- public class MysqlDatasource implements Datasource {
- private Map<String, PlayerAuth> cache = new ConcurrentHashMap<>();
- public synchronized void loadPlayerDataToCache(Player player) {
- cache.put(player.getName().toLowerCase(), getAuth(player.getName().toLowerCase());
- }
- public synchronized void savePlayerData(Player player) {
- PlayerAuth auth = cache.remove(player.getName().toLowerCase());
- if ( auth == null ) {
- return;
- }
- // save auth to datasource
- }
- // other methods declared in Datasource
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement