From af9c9b3b753d1bccd225e38b59cd211456e9ab45 Mon Sep 17 00:00:00 2001 From: Heliosares Date: Mon, 10 Apr 2023 13:15:21 -0400 Subject: [PATCH] Fix [#1587] --- src/main/java/com/gamingmesh/jobs/Jobs.java | 14 +++++++++++++- .../jobs/listeners/JobsPaymentListener.java | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gamingmesh/jobs/Jobs.java b/src/main/java/com/gamingmesh/jobs/Jobs.java index bfcc9c01..427c7b39 100644 --- a/src/main/java/com/gamingmesh/jobs/Jobs.java +++ b/src/main/java/com/gamingmesh/jobs/Jobs.java @@ -1416,15 +1416,27 @@ public final class Jobs extends JavaPlugin { return 9 * level - 158; } - public static void perform(JobsPlayer jPlayer, ActionInfo info, BufferedPayment payment, Job job) { + public static void perform(JobsPlayer jPlayer, ActionInfo info, BufferedPayment payment, Job job, Block block, Entity ent, LivingEntity victim) { double expPayment = payment.get(CurrencyType.EXP); + JobsPrePaymentEvent jobsPrePaymentEvent = new JobsPrePaymentEvent(jPlayer.getPlayer(), noneJob, payment.get(CurrencyType.MONEY), + payment.get(CurrencyType.POINTS), block, ent, victim, info); + Bukkit.getServer().getPluginManager().callEvent(jobsPrePaymentEvent); + // If event is canceled, don't do anything + if (jobsPrePaymentEvent.isCancelled()) + return; + + payment.set(CurrencyType.MONEY, jobsPrePaymentEvent.getAmount()); + payment.set(CurrencyType.POINTS, jobsPrePaymentEvent.getPoints()); + JobsExpGainEvent jobsExpGainEvent = new JobsExpGainEvent(payment.getOfflinePlayer(), job, expPayment); Bukkit.getServer().getPluginManager().callEvent(jobsExpGainEvent); // If event is canceled, don't do anything if (jobsExpGainEvent.isCancelled()) return; + payment.set(CurrencyType.EXP, jobsExpGainEvent.getExp()); + boolean limited = true; for (CurrencyType one : CurrencyType.values()) { if (jPlayer.isUnderLimit(one, payment.get(one))) { diff --git a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java index 8eb06e19..d3642523 100644 --- a/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java +++ b/src/main/java/com/gamingmesh/jobs/listeners/JobsPaymentListener.java @@ -447,7 +447,7 @@ public final class JobsPaymentListener implements Listener { if (fp != null) { if (fp.getTime() > System.currentTimeMillis() && (fp.getInfo().getName().equalsIgnoreCase(bInfo.getName()) || fp.getInfo().getNameWithSub().equalsIgnoreCase(bInfo.getNameWithSub()))) { - Jobs.perform(fp.getPlayer(), fp.getInfo(), fp.getPayment(), fp.getJob()); + Jobs.perform(fp.getPlayer(), fp.getInfo(), fp.getPayment(), fp.getJob(), block, null, null); return; } Jobs.FASTPAYMENT.remove(player.getUniqueId()); @@ -1974,7 +1974,7 @@ public final class JobsPaymentListener implements Listener { if (fp.getTime() > System.currentTimeMillis() - 50L && (fp.getInfo().getName().equalsIgnoreCase(bInfo.getName()) || fp.getInfo().getNameWithSub().equalsIgnoreCase(bInfo.getNameWithSub()))) { - Jobs.perform(fp.getPlayer(), fp.getInfo(), fp.getPayment(), fp.getJob()); + Jobs.perform(fp.getPlayer(), fp.getInfo(), fp.getPayment(), fp.getJob(), block, null, null); breakCache.put(CMILocation.toString(block.getLocation(), ":", true, true), uuid); fp.setTime(System.currentTimeMillis() + 45); }