package me.staartvin.statz.listeners; import me.staartvin.statz.Statz; import me.staartvin.statz.database.datatype.Query; import me.staartvin.statz.datamanager.player.PlayerInfo; import me.staartvin.statz.datamanager.player.PlayerStat; import me.staartvin.statz.util.StatzUtil; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; import java.util.HashMap; import java.util.UUID; public class JoinsListener implements Listener { private final Statz plugin; public static HashMap<UUID, Integer> updateID = new HashMap<>(); public JoinsListener(final Statz plugin) { this.plugin = plugin; } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onJoin(final PlayerJoinEvent event) { final PlayerStat stat = PlayerStat.JOINS; // Get player final Player player = event.getPlayer(); // Do general check if (!plugin.doGeneralCheck(player, stat)) return; // Update name in database. plugin.getDataManager().setPlayerInfo(player.getUniqueId(), PlayerStat.PLAYERS, StatzUtil.makeQuery("uuid", player.getUniqueId().toString(), "playerName", player.getName())); // Update value to new stat. plugin.getDataManager().setPlayerInfo(player.getUniqueId(), stat, StatzUtil.makeQuery("uuid", player.getUniqueId().toString(), "value", 1)); // Check if player already has a checker running. if (!updateID.containsKey(player.getUniqueId())) { // Player has joined, so create a timer that runs every minute to add time. BukkitRunnable run = new BukkitRunnable() { public void run() { if (!player.isOnline()) { updateID.remove(player.getUniqueId()); this.cancel(); return; } // Update value to new stat. plugin.getDataManager().setPlayerInfo(player.getUniqueId(), PlayerStat.TIME_PLAYED, StatzUtil.makeQuery("uuid", player.getUniqueId().toString(), "value", 1, "world", player.getWorld().getName())); PlayerInfo playerinfo = plugin.getDataManager().getPlayerInfo(player.getUniqueId(), PlayerStat.ITEMS_PICKED_UP); for (Query query : playerinfo.getRows()) { } } }; BukkitTask task = run.runTaskTimerAsynchronously(plugin, 20 * 60 /*If currentValue is 0, schedule a check immediately, otherwise after a minute*/, 20 * 60 /*Every minute*/); updateID.put(player.getUniqueId(), task.getTaskId()); } } }