@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onPlayerSwing(PlayerAnimationEvent event) { Player player = event.getPlayer(); if (this.interact.contains(player.getUniqueId())) { this.interact.remove(player.getUniqueId()); return; } if (Bloodbending.isBloodbended(player) || Concussion.getTarget(player) != null) { event.setCancelled(true); return; } String ability = EntityTools.getBendingAbility(player); RegisteredAbility registered = AbilityManager.getManager().getRegisteredAbility(ability); if (registered == null) { return; } if (EntityTools.canBend(player, registered) && (registered.canBeUsedWithTools() || !EntityTools.isTool(player.getInventory().getItemInMainHand().getType()))) { Map<Object, BendingAbility> abilities = AbilityManager.getManager().getInstances(ability); boolean shouldCreateNew = true; for (BendingAbility a : abilities.values()) { if (player.equals(a.getPlayer()) && !((BendingActiveAbility) a).swing()) { shouldCreateNew = false; } } if (shouldCreateNew) { BendingActiveAbility ab = AbilityManager.getManager().buildAbility(ability, player); if (ab == null) { Bending.getInstance() .getLogger() .log( Level.SEVERE, "Ability " + ability + " failed to construct with buildAbility for player " + player.getName()); return; } if (ab.canBeInitialized()) { ab.swing(); if (ab.getState() != BendingAbilityState.START && ab.getState() != BendingAbilityState.ENDED) { AbilityManager.getManager().addInstance(ab); } } } } }
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onPlayerSneak(PlayerToggleSneakEvent event) { Player player = event.getPlayer(); if (player == null) { Bending.getInstance().getLogger().warning("Null player in PlayerSneak"); return; } BendingPlayer bender = BendingPlayer.getBendingPlayer(player); if (Bloodbending.isBloodbended(player) || Concussion.getTarget(player) != null) { event.setCancelled(true); return; } String ability = EntityTools.getBendingAbility(player); RegisteredAbility register = AbilityManager.getManager().getRegisteredAbility(ability); if (!player.isSneaking() && ((ability == null) || (register == null) || !register.isShift()) && (player.getGameMode() == GameMode.SURVIVAL || player.getGameMode() == GameMode.ADVENTURE || !player.isFlying())) { if (bender.isBender(BendingElement.WATER) && EntityTools.canBendPassive(player, BendingElement.WATER) && !WaterSpout.isBending(player)) { FastSwimming ab = new FastSwimming( AbilityManager.getManager().getRegisteredAbility(FastSwimming.NAME), player); if (ab.canBeInitialized()) { ab.start(); if (ab.getState() != BendingAbilityState.START && ab.getState() != BendingAbilityState.ENDED) { AbilityManager.getManager().addInstance(ab); return; } } } } if (EntityTools.canBend(player, register) && !player.isSneaking()) { Map<Object, BendingAbility> abilities = AbilityManager.getManager().getInstances(ability); boolean shouldCreateNew = true; for (BendingAbility a : abilities.values()) { if (a.getPlayer().equals(player) && !((BendingActiveAbility) a).sneak()) { shouldCreateNew = false; } } if (shouldCreateNew) { BendingActiveAbility ab = AbilityManager.getManager().buildAbility(ability, player); if (ab == null) { Bending.getInstance() .getLogger() .log( Level.SEVERE, "Ability " + ability + " failed to construct with buildAbility for player " + player.getName()); return; } if (ab.canBeInitialized()) { ab.sneak(); if (ab.getState() != BendingAbilityState.START && ab.getState() != BendingAbilityState.ENDED) { AbilityManager.getManager().addInstance(ab); } } } } }