package cc.nsg.bukkit.syncnbt; import org.bukkit.Bukkit; import org.bukkit.entity.Player; /** * Handlers players for ProtocolLib (mode 2) */ public class PlayerTicker { private String name = null; private int ticker_thread_id = -1; private SyncNBT plugin = null; public PlayerTicker(SyncNBT plugin, String name) { setName(name); setPlugin(plugin); } // We found a new player to track public void startPlayerTicker() { getPlugin().getLogger().info("A new player called "+ name +" found, register player tracking."); String json = plugin.db.getJSONData(name); if (json != null) { getPlugin().getLogger().info("Found data in database for player " + name + ", restoring data."); new JSONSerializer().restorePlayer(json); } ticker_thread_id = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { @Override public void run() { Player p = Bukkit.getServer().getPlayer(name); if (p == null) { stopPlayerTicker(); } else { String json = new JSONSerializer().toJSON(name); plugin.db.saveJSONData(name, json); } } }, 1200L, 1200L); } // The player is gone public void stopPlayerTicker(Boolean save) { if (save) { String json = new JSONSerializer().toJSON(name); plugin.db.saveJSONData(name, json); } getPlugin().getLogger().info("Player "+ name +" not found, unregister player tracking."); Bukkit.getScheduler().cancelTask(ticker_thread_id); } public void stopPlayerTicker() { stopPlayerTicker(false); } public String getName() { return name; } private void setName(String name) { this.name = name; } private void setPlugin(SyncNBT plugin) { this.plugin = plugin; } private SyncNBT getPlugin() { return plugin; } }