From 4553310bb93091642c426448305388a873ea0921 Mon Sep 17 00:00:00 2001 From: Smudge <68658429+smuddgge@users.noreply.github.com> Date: Tue, 4 Apr 2023 01:52:00 +0100 Subject: [PATCH] Fixed fishing exploiting compatibility (#4859) * Fixed fishing exploiting compatibility * Moved same target to class variable --- .../nossr50/listeners/PlayerListener.java | 3 ++ .../skills/fishing/FishingManager.java | 40 ++++++++++--------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index fb906ad1d..3a3900dd4 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -450,6 +450,9 @@ public class PlayerListener implements Listener { case CAUGHT_FISH: if(caught instanceof Item) { if(ExperienceConfig.getInstance().isFishingExploitingPrevented()) { + + fishingManager.processExploiting(event.getHook().getLocation().toVector()); + if (fishingManager.isExploitingFishing(event.getHook().getLocation().toVector())) { player.sendMessage(LocaleLoader.getString("Fishing.ScarcityTip", ExperienceConfig.getInstance().getFishingExploitingOptionMoveRange())); event.setExpToDrop(0); diff --git a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java index a0f4f014a..d4d147325 100644 --- a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java @@ -51,6 +51,7 @@ public class FishingManager extends SkillManager { private long lastWarnedExhaust = 0L; private FishHook fishHookReference; private BoundingBox lastFishingBoundingBox; + private boolean sameTarget; private Item fishingCatch; private Location hookLocation; private int fishCaughtCounter = 1; @@ -125,6 +126,25 @@ public class FishingManager extends SkillManager { return hasFished; } + public void processExploiting(Vector centerOfCastVector) { + BoundingBox newCastBoundingBox = makeBoundingBox(centerOfCastVector); + this.sameTarget = lastFishingBoundingBox != null && lastFishingBoundingBox.overlaps(newCastBoundingBox); + + if (this.sameTarget) { + fishCaughtCounter++; + } + else { + fishCaughtCounter = 1; + } + + //If the new bounding box does not intersect with the old one, then update our bounding box reference + if (!this.sameTarget) lastFishingBoundingBox = newCastBoundingBox; + + if (fishCaughtCounter + 1 == ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit()) { + getPlayer().sendMessage(LocaleLoader.getString("Fishing.LowResourcesTip", ExperienceConfig.getInstance().getFishingExploitingOptionMoveRange())); + } + } + public boolean isExploitingFishing(Vector centerOfCastVector) { /*Block targetBlock = getPlayer().getTargetBlock(BlockUtils.getTransparentBlocks(), 100); @@ -133,25 +153,7 @@ public class FishingManager extends SkillManager { return false; }*/ - BoundingBox newCastBoundingBox = makeBoundingBox(centerOfCastVector); - - boolean sameTarget = lastFishingBoundingBox != null && lastFishingBoundingBox.overlaps(newCastBoundingBox); - - if(sameTarget) - fishCaughtCounter++; - else - fishCaughtCounter = 1; - - if(fishCaughtCounter + 1 == ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit()) - { - getPlayer().sendMessage(LocaleLoader.getString("Fishing.LowResourcesTip", ExperienceConfig.getInstance().getFishingExploitingOptionMoveRange())); - } - - //If the new bounding box does not intersect with the old one, then update our bounding box reference - if(!sameTarget) - lastFishingBoundingBox = newCastBoundingBox; - - return sameTarget && fishCaughtCounter >= ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit(); + return this.sameTarget && fishCaughtCounter >= ExperienceConfig.getInstance().getFishingExploitingOptionOverFishLimit(); } public static BoundingBox makeBoundingBox(Vector centerOfCastVector) {