package me.beastman3226.bc.util; import java.util.HashMap; import java.util.logging.Level; import me.beastman3226.bc.BusinessCore; import me.beastman3226.bc.BusinessCore.Information; import me.beastman3226.bc.business.Business; import me.beastman3226.bc.errors.InsufficientFundsException; import me.beastman3226.bc.event.business.BusinessBalanceChangeEvent; import me.beastman3226.bc.player.Employee; import me.beastman3226.bc.player.EmployeeManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; /** * * @author beastman3226 */ public class Scheduler { public static HashMap<String, Long> playerMilli = new HashMap<String, Long>(); public static void runAcceptance() { for (String name : EmployeeManager.pending.keySet()) { Player player = Bukkit.getPlayer(name); if (player != null && player.isOnline()) { player.sendMessage(Prefixes.NOMINAL + "Say 'yes' in chat within 10 seconds to accept your current job offer."); playerMilli.put(name, System.currentTimeMillis()); } } } public static void runPayPeriod() { Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Information.BusinessCore, new Runnable() { public void run() { BusinessCore.log(Level.INFO, "Started paying operation."); for (Business b : Business.businessList) { int[] employees = b.getEmployeeIDs(); if(b.isSalary()) { for(Object id : employees) { Employee e = EmployeeManager.getEmployee((Integer) id); if(e != null) { BusinessBalanceChangeEvent event = new BusinessBalanceChangeEvent(b, -b.getSalary()); Bukkit.getPluginManager().callEvent(event); if(!event.isCancelled()) { Bukkit.getPlayer(e.getName()).sendMessage("You have been payed!"); Information.eco.depositPlayer(e.getName(), b.getSalary()); try { b.withdraw(b.getSalary()); } catch (InsufficientFundsException ex) { Information.BusinessCore.getLogger().warning(ex.getLocalizedMessage()); } } } } } else { for (Object id : employees) { Employee e = EmployeeManager.getEmployee((Integer) id); if (e != null) { BusinessBalanceChangeEvent event = new BusinessBalanceChangeEvent(b, -((b.getBalance() / employees.length) + e.getCompletedJobs() > 15 ? e.getCompletedJobs() : e.getCompletedJobs() ^ -1)); Bukkit.getPluginManager().callEvent(event); if (!event.isCancelled()) { Bukkit.getPlayerExact(e.getName()).sendMessage("You have been payed!"); Information.eco.depositPlayer(e.getName(), ((b.getBalance() / employees.length) + e.getCompletedJobs() > 15 ? e.getCompletedJobs() : e.getCompletedJobs() ^ -1)); try { b.withdraw(event.getAbsoluteAmount()); } catch (InsufficientFundsException ex) { Information.BusinessCore.getLogger().warning(ex.getLocalizedMessage()); } } } } } } } }, Information.getTime().getTicks(Information.getValue()), Information.getTime().getTicks(Information.getValue())); } }