diff --git a/src/main/java/com/gamingmesh/jobs/PlayerManager.java b/src/main/java/com/gamingmesh/jobs/PlayerManager.java index 4c647733..9f285a1a 100644 --- a/src/main/java/com/gamingmesh/jobs/PlayerManager.java +++ b/src/main/java/com/gamingmesh/jobs/PlayerManager.java @@ -488,8 +488,9 @@ public class PlayerManager { Jobs.takeSlot(job); Jobs.getSignUtil().updateAllSign(job); - - job.updateTotalPlayers(); + + job.modifyTotalPlayerWorking(1); + jPlayer.maxJobsEquation = CMINumber.clamp(getMaxJobs(jPlayer), 0, 9999); // Removing from cached item boost for recalculation @@ -534,7 +535,8 @@ public class PlayerManager { jPlayer.getLeftTimes().remove(jPlayer.getUniqueId()); Jobs.getSignUtil().updateAllSign(job); - job.updateTotalPlayers(); + + job.modifyTotalPlayerWorking(-1); // Removing from cached item boost for recalculation cache.remove(jPlayer.getUniqueId()); @@ -565,9 +567,9 @@ public class PlayerManager { if (!jPlayer.transferJob(oldjob, newjob) || !Jobs.getJobsDAO().quitJob(jPlayer, oldjob)) return false; - oldjob.updateTotalPlayers(); + oldjob.modifyTotalPlayerWorking(-1); Jobs.getJobsDAO().joinJob(jPlayer, jPlayer.getJobProgression(newjob)); - newjob.updateTotalPlayers(); + newjob.modifyTotalPlayerWorking(1); jPlayer.save(); return true; } diff --git a/src/main/java/com/gamingmesh/jobs/container/Job.java b/src/main/java/com/gamingmesh/jobs/container/Job.java index 5331c26b..8b2c6c4b 100644 --- a/src/main/java/com/gamingmesh/jobs/container/Job.java +++ b/src/main/java/com/gamingmesh/jobs/container/Job.java @@ -211,6 +211,16 @@ public class Job { return totalPlayers; } + /** + * + * @param change the amount to change + * @return the new total + */ + public int modifyTotalPlayerWorking(int change) { + totalPlayers = CMINumber.clamp(totalPlayers + change, 0, Integer.MAX_VALUE); + updateBonus(); + return totalPlayers; + } /** * Updates the total players property from database synchronously.