From afa2217ce31ed0dd349a4668c97f2bd5c289bf96 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Fri, 27 Nov 2020 21:07:51 +0100 Subject: [PATCH] Adding Better Tracking --- .../de/steamwar/fightsystem/utils/ArrowStopper.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/FightSystem_Main/src/de/steamwar/fightsystem/utils/ArrowStopper.java b/FightSystem_Main/src/de/steamwar/fightsystem/utils/ArrowStopper.java index f838eaf..ac26912 100644 --- a/FightSystem_Main/src/de/steamwar/fightsystem/utils/ArrowStopper.java +++ b/FightSystem_Main/src/de/steamwar/fightsystem/utils/ArrowStopper.java @@ -57,9 +57,11 @@ public class ArrowStopper implements StateDependent { for (Entity entity : arrows) { if(entity.getTicksLived() > Config.ArrowTechhiderCollision) continue; + if(((AbstractArrow) entity).isInBlock()) + continue; if(!LAST_LOCATION.containsKey(entity)) LAST_LOCATION.put(entity, ((Player) ((AbstractArrow) entity).getShooter()).getEyeLocation()); - int distance = (int) Math.ceil(entity.getLocation().toVector().distance(LAST_LOCATION.get(entity).toVector())); + int distance = (int) Math.ceil(entity.getLocation().toVector().distance(LAST_LOCATION.get(entity).toVector()) * 1.414213562); try { checkBlock(entity.getFacing().getOppositeFace(), entity.getLocation().getBlock(), distance, entity.getLocation().getBlockY() - LAST_LOCATION.get(entity).getBlockY()); } catch (TechHiddenBlock techHiddenBlock) { @@ -103,13 +105,13 @@ public class ArrowStopper implements StateDependent { Bukkit.getOnlinePlayers().forEach(player -> player.sendBlockChange(block.getLocation(), Material.RED_STAINED_GLASS.createBlockData())); if(Config.HiddenBlocks.contains(blockToId(block))) throw new TechHiddenBlock(); + if(i != Math.abs(lastdown)) + checkBlock(face, block.getRelative(face), i - 1, lastdown); if(lastdown != 0) { boolean negativ = lastdown < 0; BlockFace toFace = negativ?BlockFace.UP:BlockFace.DOWN; - checkBlock(face, block.getRelative(toFace), i, lastdown + (negativ?1:-1)); + checkBlock(face, block.getRelative(toFace), i - 1, lastdown + (negativ?1:-1)); } - if(i != 0 && Math.abs(lastdown) < i) - checkBlock(face, block.getRelative(face), i - 1, lastdown); } private class TechHiddenBlock extends Throwable {}