From e3c13456727efc463a71ec19efa2a73af3a78ea3 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sat, 21 Nov 2020 12:12:30 +0000 Subject: [PATCH] Added check limits for Aiming --- .../enchantments/ecoenchants/special/Aiming.java | 9 ++++++++- Plugin/src/main/resources/enchants/special/aiming.yml | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Aiming.java b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Aiming.java index 36fc068e..c5f327b2 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Aiming.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/special/Aiming.java @@ -18,6 +18,7 @@ import org.bukkit.util.Vector; import java.util.Arrays; import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; @SuppressWarnings("unchecked") public final class Aiming extends EcoEnchant { @@ -91,12 +92,18 @@ public final class Aiming extends EcoEnchant { } }; + final int period = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "check-ticks"); + final int checks = this.getConfig().getInt(EcoEnchants.CONFIG_LOCATION + "checks-per-level") * level; + AtomicInteger checksPerformed = new AtomicInteger(0); + new BukkitRunnable() { @Override public void run() { + checksPerformed.addAndGet(1); + if(checksPerformed.get() > checks) this.cancel(); if(arrow.isDead() || arrow.isInBlock() || arrow.isOnGround()) this.cancel(); Bukkit.getScheduler().runTask(EcoEnchantsPlugin.getInstance(), runnable); } - }.runTaskTimer(EcoEnchantsPlugin.getInstance(), 3, 5); + }.runTaskTimer(EcoEnchantsPlugin.getInstance(), 3, period); } } diff --git a/Plugin/src/main/resources/enchants/special/aiming.yml b/Plugin/src/main/resources/enchants/special/aiming.yml index a2d93843..0b7a8bb9 100644 --- a/Plugin/src/main/resources/enchants/special/aiming.yml +++ b/Plugin/src/main/resources/enchants/special/aiming.yml @@ -22,4 +22,6 @@ general-config: config: distance-per-level: 4 # Distance to scan per aiming level scale-on-force: true # Scale distance based on bow pull - require-full-force: true # Require full bow pull (works with rapid) If true, then scale-on-force is irrelevant. \ No newline at end of file + require-full-force: true # Require full bow pull (works with rapid) If true, then scale-on-force is irrelevant. + check-ticks: 10 # Ticks between rotations + checks-per-level: 2 # Amount of times to rotate arrow per level (prevents "floating") \ No newline at end of file