From e8034450119d793785869dc36e63269473b1a1cc Mon Sep 17 00:00:00 2001 From: AlexTheCoder Date: Sun, 24 Aug 2014 07:13:09 -0400 Subject: [PATCH] Converted to BreathSphere BreathBending move was converted to BreathSphere, move ready for basic use and complete enough for a release. --- .../ProjectKorra/Ability/StockAbilities.java | 4 +-- .../ProjectKorra/ConfigManager.java | 8 ++--- .../projectkorra/ProjectKorra/Methods.java | 14 ++++++-- .../projectkorra/ProjectKorra/PKListener.java | 34 +++++++++---------- .../ProjectKorra/airbending/AirBlast.java | 1 + .../ProjectKorra/airbending/AirSuction.java | 1 + .../ProjectKorra/airbending/AirSwipe.java | 2 ++ .../airbending/AirbendingManager.java | 2 +- .../{Breathbending.java => BreathSphere.java} | 31 +++++++++++------ .../ProjectKorra/airbending/Tornado.java | 2 ++ .../ProjectKorra/chiblocking/ChiPassive.java | 5 +++ .../ProjectKorra/chiblocking/Paralyze.java | 7 ++++ .../ProjectKorra/chiblocking/RapidPunch.java | 4 +++ .../ProjectKorra/earthbending/EarthBlast.java | 3 ++ .../ProjectKorra/earthbending/Ripple.java | 2 ++ .../ProjectKorra/firebending/Combustion.java | 1 + .../ProjectKorra/firebending/FireBlast.java | 1 + .../ProjectKorra/firebending/Fireball.java | 1 + .../ProjectKorra/firebending/Lightning.java | 1 + .../ProjectKorra/firebending/WallOfFire.java | 1 + .../waterbending/Bloodbending.java | 4 +++ .../waterbending/HealingWaters.java | 2 ++ .../ProjectKorra/waterbending/IceSpike.java | 1 + .../ProjectKorra/waterbending/IceSpike2.java | 1 + .../waterbending/OctopusForm.java | 1 + .../ProjectKorra/waterbending/Torrent.java | 2 ++ .../waterbending/WaterManipulation.java | 1 + .../ProjectKorra/waterbending/Wave.java | 1 + src/config.yml | 2 +- src/plugin.yml | 4 +-- 30 files changed, 103 insertions(+), 41 deletions(-) rename src/com/projectkorra/ProjectKorra/airbending/{Breathbending.java => BreathSphere.java} (87%) diff --git a/src/com/projectkorra/ProjectKorra/Ability/StockAbilities.java b/src/com/projectkorra/ProjectKorra/Ability/StockAbilities.java index c3b3d3fb..ea88ff79 100644 --- a/src/com/projectkorra/ProjectKorra/Ability/StockAbilities.java +++ b/src/com/projectkorra/ProjectKorra/Ability/StockAbilities.java @@ -18,10 +18,10 @@ public enum StockAbilities { AvatarState, // Project Korra - Extraction, Smokescreen, Combustion, Breathbending; + Extraction, Smokescreen, Combustion, BreathSphere; private enum AirbendingAbilities { - AirBlast, AirBubble, AirShield, AirSuction, AirSwipe, Tornado, AirScooter, AirSpout, AirBurst, Breathbending; + AirBlast, AirBubble, AirShield, AirSuction, AirSwipe, Tornado, AirScooter, AirSpout, AirBurst, BreathSphere; } private enum WaterbendingAbilities { diff --git a/src/com/projectkorra/ProjectKorra/ConfigManager.java b/src/com/projectkorra/ProjectKorra/ConfigManager.java index a6c4f4f6..1964d87e 100644 --- a/src/com/projectkorra/ProjectKorra/ConfigManager.java +++ b/src/com/projectkorra/ProjectKorra/ConfigManager.java @@ -189,10 +189,10 @@ public class ConfigManager { config.addDefault("Abilities.Air.AirSwipe.Cooldown", 1500); config.addDefault("Abilities.Air.AirSwipe.ChargeFactor", 3); - config.addDefault("Abilities.Air.Breathbending.Enabled", true); - config.addDefault("Abilities.Air.Breathbending.CanBeUsedOnUndeadMobs", true); - config.addDefault("Abilities.Air.Breathbending.Range", 5); - config.addDefault("Abilities.Air.Breathbending.Damage", 0.5); + config.addDefault("Abilities.Air.BreathSphere.Enabled", true); + config.addDefault("Abilities.Air.BreathSphere.CanBeUsedOnUndeadMobs", true); + config.addDefault("Abilities.Air.BreathSphere.Range", 5); + config.addDefault("Abilities.Air.BreathSphere.Damage", 0.5); config.addDefault("Abilities.Air.Tornado.Radius", 10); config.addDefault("Abilities.Air.Tornado.Height", 25); diff --git a/src/com/projectkorra/ProjectKorra/Methods.java b/src/com/projectkorra/ProjectKorra/Methods.java index 9e52b4e9..ab880255 100644 --- a/src/com/projectkorra/ProjectKorra/Methods.java +++ b/src/com/projectkorra/ProjectKorra/Methods.java @@ -78,7 +78,7 @@ import com.projectkorra.ProjectKorra.airbending.AirShield; import com.projectkorra.ProjectKorra.airbending.AirSpout; import com.projectkorra.ProjectKorra.airbending.AirSuction; import com.projectkorra.ProjectKorra.airbending.AirSwipe; -import com.projectkorra.ProjectKorra.airbending.Breathbending; +import com.projectkorra.ProjectKorra.airbending.BreathSphere; import com.projectkorra.ProjectKorra.airbending.Tornado; import com.projectkorra.ProjectKorra.chiblocking.Paralyze; import com.projectkorra.ProjectKorra.chiblocking.RapidPunch; @@ -1840,8 +1840,16 @@ public class Methods { } public static void breakBreathbendingHold(Entity entity) { - if(Breathbending.isBreathbent(entity)) { - Breathbending.breakBreathbend(entity); + if(BreathSphere.isBreathbent(entity)) { + BreathSphere.breakBreathSphere(entity); + return; + } + + if(entity instanceof Player) { + Player player = (Player) entity; + if(BreathSphere.isChannelingSphere(player)) { + BreathSphere.remove(player); + } } } diff --git a/src/com/projectkorra/ProjectKorra/PKListener.java b/src/com/projectkorra/ProjectKorra/PKListener.java index 4c88e866..45e7df83 100644 --- a/src/com/projectkorra/ProjectKorra/PKListener.java +++ b/src/com/projectkorra/ProjectKorra/PKListener.java @@ -68,7 +68,7 @@ import com.projectkorra.ProjectKorra.airbending.AirShield; import com.projectkorra.ProjectKorra.airbending.AirSpout; import com.projectkorra.ProjectKorra.airbending.AirSuction; import com.projectkorra.ProjectKorra.airbending.AirSwipe; -import com.projectkorra.ProjectKorra.airbending.Breathbending; +import com.projectkorra.ProjectKorra.airbending.BreathSphere; import com.projectkorra.ProjectKorra.airbending.Tornado; import com.projectkorra.ProjectKorra.chiblocking.ChiPassive; import com.projectkorra.ProjectKorra.chiblocking.HighJump; @@ -154,7 +154,7 @@ public class PKListener implements Listener { event.setCancelled(true); return; } - if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Breathbending.isBreathbent(player)) { + if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) { event.setCancelled(true); } @@ -230,7 +230,7 @@ public class PKListener implements Listener { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { Methods.cooldowns.put(player.getName(), System.currentTimeMillis()); } - if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Breathbending.isBreathbent(player)) { + if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) { event.setCancelled(true); } } @@ -240,7 +240,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Player player = event.getPlayer(); Methods.cooldowns.put(player.getName(), System.currentTimeMillis()); - if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Breathbending.isBreathbent(player)) { + if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) { event.setCancelled(true); } } @@ -306,7 +306,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; - if(Breathbending.isBreathbent(player)) { + if(BreathSphere.isBreathbent(player)) { if(!Methods.getBoundAbility(player).equalsIgnoreCase("AirSwipe") || !Methods.getBoundAbility(player).equalsIgnoreCase("FireBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("EarthBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("WaterManipulation")) { event.setCancelled(true); } @@ -353,8 +353,8 @@ public class PKListener implements Listener { if (abil.equalsIgnoreCase("AirShield")) { new AirShield(player); } - if(abil.equalsIgnoreCase("Breathbending")) { - new Breathbending(player); + if(abil.equalsIgnoreCase("BreathSphere")) { + new BreathSphere(player); } } @@ -499,7 +499,7 @@ public class PKListener implements Listener { } } - if(Breathbending.isBreathbent(player)) { + if(BreathSphere.isBreathbent(player)) { player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1, 100)); } } @@ -529,7 +529,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Entity entity = event.getEntity(); - if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -573,7 +573,7 @@ public class PKListener implements Listener { Entity entity = event.getEntity(); if (entity != null) if (Paralyze.isParalyzed(entity) - || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -582,7 +582,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Entity entity = event.getEntity(); - if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -591,7 +591,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Entity entity = event.getEntity(); - if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -600,7 +600,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Entity entity = event.getEntity(); - if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -609,7 +609,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Entity entity = event.getEntity(); - if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -618,7 +618,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Entity entity = event.getEntity(); - if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) + if (Paralyze.isParalyzed(entity) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity)) event.setCancelled(true); } @@ -629,7 +629,7 @@ public class PKListener implements Listener { Player player = event.getPlayer(); - if(Breathbending.isBreathbent(player)) { + if(BreathSphere.isBreathbent(player)) { if(!Methods.getBoundAbility(player).equalsIgnoreCase("AirSwipe") || !Methods.getBoundAbility(player).equalsIgnoreCase("FireBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("EarthBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("WaterManipulation")) { event.setCancelled(true); } @@ -836,7 +836,7 @@ public class PKListener implements Listener { if (event.isCancelled()) return; Player p = event.getPlayer(); - if (Tornado.getPlayers().contains(p) || Bloodbending.isBloodbended(p) || Breathbending.isBreathbent(p) + if (Tornado.getPlayers().contains(p) || Bloodbending.isBloodbended(p) || BreathSphere.isBreathbent(p) || FireJet.getPlayers().contains(p) || AvatarState.getPlayers().contains(p)) { event.setCancelled(p.getGameMode() != GameMode.CREATIVE); diff --git a/src/com/projectkorra/ProjectKorra/airbending/AirBlast.java b/src/com/projectkorra/ProjectKorra/airbending/AirBlast.java index 500efee7..a345df70 100644 --- a/src/com/projectkorra/ProjectKorra/airbending/AirBlast.java +++ b/src/com/projectkorra/ProjectKorra/airbending/AirBlast.java @@ -294,6 +294,7 @@ public class AirBlast { if (entity.getFireTicks() > 0) entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0); entity.setFireTicks(0); + Methods.breakBreathbendingHold(entity); } } diff --git a/src/com/projectkorra/ProjectKorra/airbending/AirSuction.java b/src/com/projectkorra/ProjectKorra/airbending/AirSuction.java index 440a28f5..9f390acd 100644 --- a/src/com/projectkorra/ProjectKorra/airbending/AirSuction.java +++ b/src/com/projectkorra/ProjectKorra/airbending/AirSuction.java @@ -256,6 +256,7 @@ public class AirSuction { entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0); entity.setFireTicks(0); + Methods.breakBreathbendingHold(entity); } } diff --git a/src/com/projectkorra/ProjectKorra/airbending/AirSwipe.java b/src/com/projectkorra/ProjectKorra/airbending/AirSwipe.java index d83516e8..90fc6ede 100644 --- a/src/com/projectkorra/ProjectKorra/airbending/AirSwipe.java +++ b/src/com/projectkorra/ProjectKorra/airbending/AirSwipe.java @@ -263,6 +263,8 @@ public class AirSwipe { if (entity instanceof Player) { new Flight((Player) entity, player); } + + Methods.breakBreathbendingHold(entity); if (elements.containsKey(direction)) { elements.remove(direction); diff --git a/src/com/projectkorra/ProjectKorra/airbending/AirbendingManager.java b/src/com/projectkorra/ProjectKorra/airbending/AirbendingManager.java index da59d7e5..0afc0ec4 100644 --- a/src/com/projectkorra/ProjectKorra/airbending/AirbendingManager.java +++ b/src/com/projectkorra/ProjectKorra/airbending/AirbendingManager.java @@ -18,7 +18,7 @@ public class AirbendingManager implements Runnable { AirPassive.handlePassive(Bukkit.getServer()); AirBurst.progressAll(); AirScooter.progressAll(); - Breathbending.progressAll(); + BreathSphere.progressAll(); AirSpout.spoutAll(); AirBubble.handleBubbles(Bukkit.getServer()); AirSuction.progressAll(); diff --git a/src/com/projectkorra/ProjectKorra/airbending/Breathbending.java b/src/com/projectkorra/ProjectKorra/airbending/BreathSphere.java similarity index 87% rename from src/com/projectkorra/ProjectKorra/airbending/Breathbending.java rename to src/com/projectkorra/ProjectKorra/airbending/BreathSphere.java index d77dd4c2..a3c4c64b 100644 --- a/src/com/projectkorra/ProjectKorra/airbending/Breathbending.java +++ b/src/com/projectkorra/ProjectKorra/airbending/BreathSphere.java @@ -17,19 +17,19 @@ import com.projectkorra.ProjectKorra.ProjectKorra; import com.projectkorra.ProjectKorra.TempPotionEffect; import com.projectkorra.ProjectKorra.Ability.AvatarState; -public class Breathbending { +public class BreathSphere { - public static ConcurrentHashMap instances = new ConcurrentHashMap(); + public static ConcurrentHashMap instances = new ConcurrentHashMap(); ConcurrentHashMap targetentities = new ConcurrentHashMap(); - private static boolean canBeUsedOnUndead = ProjectKorra.plugin.getConfig().getBoolean("Abilities.Air.Breathbending.CanBeUsedOnUndeadMobs"); - private int range = ProjectKorra.plugin.getConfig().getInt("Abilities.Air.Breathbending.Range"); - private double damage = ProjectKorra.plugin.getConfig().getDouble("Abilities.Air.Breathbending.Damage"); + private static boolean canBeUsedOnUndead = ProjectKorra.plugin.getConfig().getBoolean("Abilities.Air.BreathSphere.CanBeUsedOnUndeadMobs"); + private int range = ProjectKorra.plugin.getConfig().getInt("Abilities.Air.BreathSphere.Range"); + private double damage = ProjectKorra.plugin.getConfig().getDouble("Abilities.Air.BreathSphere.Damage"); private Player player; - public Breathbending(Player player) { + public BreathSphere(Player player) { if (instances.containsKey(player)) { remove(player); return; @@ -80,7 +80,7 @@ public class Breathbending { } } - if (!Methods.canBend(player.getName(), "Breathbending")) { + if (!Methods.canBend(player.getName(), "BreathSphere")) { remove(player); return; } @@ -88,7 +88,7 @@ public class Breathbending { remove(player); return; } - if (!Methods.getBoundAbility(player).equalsIgnoreCase("Breathbending")) { + if (!Methods.getBoundAbility(player).equalsIgnoreCase("BreathSphere")) { remove(player); return; } @@ -96,7 +96,7 @@ public class Breathbending { if (AvatarState.isAvatarState(player)) { ArrayList entities = new ArrayList(); for (Entity entity : Methods.getEntitiesAroundPoint(player.getLocation(), range)) { - if (Methods.isRegionProtectedFromBuild(player, "Breathbending", entity.getLocation())) + if (Methods.isRegionProtectedFromBuild(player, "BreathSphere", entity.getLocation())) continue; entities.add(entity); if (!targetentities.containsKey(entity) && entity instanceof LivingEntity) { @@ -158,7 +158,7 @@ public class Breathbending { } } - public static void breakBreathbend(Entity entity) { + public static void breakBreathSphere(Entity entity) { for (Player player : instances.keySet()) { if (instances.get(player).targetentities.containsKey(entity)) { instances.remove(player); @@ -192,7 +192,7 @@ public class Breathbending { return false; } - public static Location getBreathbendingLocation(Entity entity) { + public static Location getBreathSphereLocation(Entity entity) { for (Player player : instances.keySet()) { if (instances.get(player).targetentities.containsKey(entity)) { return instances.get(player).targetentities.get(entity); @@ -200,5 +200,14 @@ public class Breathbending { } return null; } + + public static boolean isChannelingSphere(Player player){ + if(instances.containsKey(player)) return true; + return false; + } + + public static void removeAll() { + instances.clear(); + } } \ No newline at end of file diff --git a/src/com/projectkorra/ProjectKorra/airbending/Tornado.java b/src/com/projectkorra/ProjectKorra/airbending/Tornado.java index 573d97b4..4c548678 100644 --- a/src/com/projectkorra/ProjectKorra/airbending/Tornado.java +++ b/src/com/projectkorra/ProjectKorra/airbending/Tornado.java @@ -150,6 +150,8 @@ public class Tornado { velocity.multiply(timefactor); entity.setVelocity(velocity); entity.setFallDistance(0); + + Methods.breakBreathbendingHold(entity); if (entity instanceof Player) { new Flight((Player) entity); diff --git a/src/com/projectkorra/ProjectKorra/chiblocking/ChiPassive.java b/src/com/projectkorra/ProjectKorra/chiblocking/ChiPassive.java index 638a9510..124de6f2 100644 --- a/src/com/projectkorra/ProjectKorra/chiblocking/ChiPassive.java +++ b/src/com/projectkorra/ProjectKorra/chiblocking/ChiPassive.java @@ -12,6 +12,7 @@ import com.projectkorra.ProjectKorra.BendingPlayer; import com.projectkorra.ProjectKorra.Element; import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.ProjectKorra; +import com.projectkorra.ProjectKorra.airbending.BreathSphere; public class ChiPassive { @@ -37,9 +38,13 @@ public class ChiPassive { } public static void blockChi(final Player player) { + if(BreathSphere.isChannelingSphere(player)) { + BreathSphere.remove(player); + } final BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName()); if (bPlayer == null) return; bPlayer.blockChi(); + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(ProjectKorra.plugin, new Runnable() { public void run() { bPlayer.unblockChi(); diff --git a/src/com/projectkorra/ProjectKorra/chiblocking/Paralyze.java b/src/com/projectkorra/ProjectKorra/chiblocking/Paralyze.java index 45fd70bc..13316b3b 100644 --- a/src/com/projectkorra/ProjectKorra/chiblocking/Paralyze.java +++ b/src/com/projectkorra/ProjectKorra/chiblocking/Paralyze.java @@ -10,6 +10,7 @@ import com.projectkorra.ProjectKorra.Element; import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.ProjectKorra; import com.projectkorra.ProjectKorra.Ability.AvatarState; +import com.projectkorra.ProjectKorra.airbending.BreathSphere; public class Paralyze { @@ -42,6 +43,12 @@ public class Paralyze { if (entity instanceof Creature) { ((Creature) entity).setTarget(null); } + + if (entity instanceof Player) { + if(BreathSphere.isChannelingSphere((Player) entity)) { + BreathSphere.remove((Player) entity); + } + } } public static boolean isParalyzed(Entity entity) { diff --git a/src/com/projectkorra/ProjectKorra/chiblocking/RapidPunch.java b/src/com/projectkorra/ProjectKorra/chiblocking/RapidPunch.java index 455d9e5c..20e68be6 100644 --- a/src/com/projectkorra/ProjectKorra/chiblocking/RapidPunch.java +++ b/src/com/projectkorra/ProjectKorra/chiblocking/RapidPunch.java @@ -12,6 +12,7 @@ import org.bukkit.entity.Player; import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.ProjectKorra; +import com.projectkorra.ProjectKorra.airbending.BreathSphere; public class RapidPunch { @@ -59,6 +60,9 @@ public class RapidPunch { if (ChiPassive.willChiBlock((Player) target)) { ChiPassive.blockChi((Player) target); } + if(BreathSphere.isChannelingSphere((Player) target)) { + BreathSphere.remove((Player) target); + } lt.setNoDamageTicks(0); } cooldowns.put(p.getName(), System.currentTimeMillis()); diff --git a/src/com/projectkorra/ProjectKorra/earthbending/EarthBlast.java b/src/com/projectkorra/ProjectKorra/earthbending/EarthBlast.java index 1b3883f5..23d33521 100644 --- a/src/com/projectkorra/ProjectKorra/earthbending/EarthBlast.java +++ b/src/com/projectkorra/ProjectKorra/earthbending/EarthBlast.java @@ -389,6 +389,9 @@ public class EarthBlast { // || testblock.equals(block2)) { // entity.setVelocity(entity.getVelocity().clone() // .add(direction)); + + Methods.breakBreathbendingHold(entity); + Location location = player.getEyeLocation(); Vector vector = location.getDirection(); entity.setVelocity(vector.normalize().multiply(pushfactor)); diff --git a/src/com/projectkorra/ProjectKorra/earthbending/Ripple.java b/src/com/projectkorra/ProjectKorra/earthbending/Ripple.java index 0a3df8de..194a35ae 100644 --- a/src/com/projectkorra/ProjectKorra/earthbending/Ripple.java +++ b/src/com/projectkorra/ProjectKorra/earthbending/Ripple.java @@ -259,6 +259,8 @@ public class Ripple { Vector vector = direction.clone(); vector.setY(.5); entity.setVelocity(vector); + + Methods.breakBreathbendingHold(entity); } diff --git a/src/com/projectkorra/ProjectKorra/firebending/Combustion.java b/src/com/projectkorra/ProjectKorra/firebending/Combustion.java index 8a02c414..3fad0e90 100644 --- a/src/com/projectkorra/ProjectKorra/firebending/Combustion.java +++ b/src/com/projectkorra/ProjectKorra/firebending/Combustion.java @@ -177,6 +177,7 @@ public class Combustion { if (entity instanceof LivingEntity) { if (entity.getLocation().distance(block) < radius) { // They are close enough to the explosion. Methods.damageEntity(player, entity, damage); + Methods.breakBreathbendingHold(entity); } } } diff --git a/src/com/projectkorra/ProjectKorra/firebending/FireBlast.java b/src/com/projectkorra/ProjectKorra/firebending/FireBlast.java index 60c22cd4..08104b68 100644 --- a/src/com/projectkorra/ProjectKorra/firebending/FireBlast.java +++ b/src/com/projectkorra/ProjectKorra/firebending/FireBlast.java @@ -220,6 +220,7 @@ public class FireBlast { if (entity instanceof LivingEntity) { entity.setFireTicks(50); Methods.damageEntity(player, entity, (int) Methods.getFirebendingDayAugment((double) damage, entity.getWorld())); + Methods.breakBreathbendingHold(entity); new Enflamed(entity, player); instances.remove(id); } diff --git a/src/com/projectkorra/ProjectKorra/firebending/Fireball.java b/src/com/projectkorra/ProjectKorra/firebending/Fireball.java index dc8681e7..dbc31dc0 100644 --- a/src/com/projectkorra/ProjectKorra/firebending/Fireball.java +++ b/src/com/projectkorra/ProjectKorra/firebending/Fireball.java @@ -158,6 +158,7 @@ public class Fireball { double damage = slope * (distance - innerradius) + maxdamage; // Methods.verbose(damage); Methods.damageEntity(player, entity, damage); + Methods.breakBreathbendingHold(entity); } private void fireball() { diff --git a/src/com/projectkorra/ProjectKorra/firebending/Lightning.java b/src/com/projectkorra/ProjectKorra/firebending/Lightning.java index 19860acb..91de9405 100644 --- a/src/com/projectkorra/ProjectKorra/firebending/Lightning.java +++ b/src/com/projectkorra/ProjectKorra/firebending/Lightning.java @@ -154,6 +154,7 @@ public class Lightning { double damage = maxdamage - (distance / strikeradius) * .5; hitentities.add(entity); Methods.damageEntity(player, entity, (int) damage); + Methods.breakBreathbendingHold(entity); } public static boolean isNearbyChannel(Location location) { diff --git a/src/com/projectkorra/ProjectKorra/firebending/WallOfFire.java b/src/com/projectkorra/ProjectKorra/firebending/WallOfFire.java index 680de218..7ca555a9 100644 --- a/src/com/projectkorra/ProjectKorra/firebending/WallOfFire.java +++ b/src/com/projectkorra/ProjectKorra/firebending/WallOfFire.java @@ -187,6 +187,7 @@ public class WallOfFire { if (entity instanceof LivingEntity) { Methods.damageEntity(player, entity, damage); new Enflamed(entity, player); + Methods.breakBreathbendingHold(entity); } } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/Bloodbending.java b/src/com/projectkorra/ProjectKorra/waterbending/Bloodbending.java index e1689164..d51cca66 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/Bloodbending.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/Bloodbending.java @@ -54,6 +54,7 @@ public class Bloodbending { continue; } Methods.damageEntity(player, entity, 0); + Methods.breakBreathbendingHold(entity); targetentities.put(entity, entity.getLocation().clone()); } } @@ -73,6 +74,7 @@ public class Bloodbending { return; } Methods.damageEntity(player, target, 0); + Methods.breakBreathbendingHold(target); targetentities.put(target, target.getLocation().clone()); } this.player = player; @@ -166,6 +168,7 @@ public class Bloodbending { if (entity instanceof Creature) { ((Creature) entity).setTarget(null); } + Methods.breakBreathbendingHold(entity); } } for (Entity entity : targetentities.keySet()) { @@ -199,6 +202,7 @@ public class Bloodbending { if (entity instanceof Creature) { ((Creature) entity).setTarget(null); } + Methods.breakBreathbendingHold(entity); } } } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java b/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java index 56ad7098..cafcd363 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java @@ -82,6 +82,7 @@ public class HealingWaters { if (!Methods.isRegionProtectedFromBuild(player, "HealingWaters", player.getLocation())) if(player.getHealth() < player.getMaxHealth()) { player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 70, 1)); + Methods.breakBreathbendingHold(player); } // for(PotionEffect effect : player.getActivePotionEffects()) { // if(Methods.isNegativeEffect(effect.getType())) { @@ -93,6 +94,7 @@ public class HealingWaters { private static void applyHealingToEntity(LivingEntity le) { if(le.getHealth() < le.getMaxHealth()) { le.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 70, 1)); + Methods.breakBreathbendingHold(le); } // for(PotionEffect effect : le.getActivePotionEffects()) { // if(Methods.isNegativeEffect(effect.getType())) { diff --git a/src/com/projectkorra/ProjectKorra/waterbending/IceSpike.java b/src/com/projectkorra/ProjectKorra/waterbending/IceSpike.java index 2fc6b53f..7fb26a9c 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/IceSpike.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/IceSpike.java @@ -243,6 +243,7 @@ public class IceSpike { PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, mod); new TempPotionEffect(entity, effect); } + Methods.breakBreathbendingHold(entity); } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/IceSpike2.java b/src/com/projectkorra/ProjectKorra/waterbending/IceSpike2.java index 06033778..9e764cb8 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/IceSpike2.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/IceSpike2.java @@ -306,6 +306,7 @@ public class IceSpike2 { new TempPotionEffect(entity, effect); entity.damage(damage, player); } + Methods.breakBreathbendingHold(entity); } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/OctopusForm.java b/src/com/projectkorra/ProjectKorra/waterbending/OctopusForm.java index 2129b1ec..7e76c98b 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/OctopusForm.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/OctopusForm.java @@ -134,6 +134,7 @@ public class OctopusForm { entity.setVelocity(Methods.getDirection(player.getLocation(), location).normalize().multiply(1.75)); if (entity instanceof LivingEntity) Methods.damageEntity(player, entity, damage); + Methods.breakBreathbendingHold(entity); } } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/Torrent.java b/src/com/projectkorra/ProjectKorra/waterbending/Torrent.java index 2c4ddec6..b1f2c79b 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/Torrent.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/Torrent.java @@ -507,6 +507,7 @@ public class Torrent { damagedealt = (int) (Methods.getWaterbendingNightAugment(world) * (double) deflectdamage); } Methods.damageEntity(player, entity, damagedealt); + Methods.breakBreathbendingHold(entity); } } @@ -526,6 +527,7 @@ public class Torrent { } // if (((LivingEntity) entity).getNoDamageTicks() == 0) { Methods.damageEntity(player, entity, damagedealt); + Methods.breakBreathbendingHold(entity); // Methods.verbose("Hit! Health at " // + ((LivingEntity) entity).getHealth()); hurtentities.add(entity); diff --git a/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java b/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java index 93660404..51ad1c18 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java @@ -367,6 +367,7 @@ public class WaterManipulation { if (AvatarState.isAvatarState(player)) damage = AvatarState.getValue(damage); Methods.damageEntity(player, entity, (int) Methods.waterbendingNightAugment(damage, player.getWorld())); + Methods.breakBreathbendingHold(entity); progressing = false; // } } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/Wave.java b/src/com/projectkorra/ProjectKorra/waterbending/Wave.java index c433cef0..ff980f69 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/Wave.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/Wave.java @@ -304,6 +304,7 @@ public class Wave { if (entity.getFireTicks() > 0) entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0); entity.setFireTicks(0); + Methods.breakBreathbendingHold(entity); } } diff --git a/src/config.yml b/src/config.yml index aa199b5a..9b3716b7 100644 --- a/src/config.yml +++ b/src/config.yml @@ -138,7 +138,7 @@ Abilities: Speed: 25 Cooldown: 1500 ChargeFactor: 3 - Breathbending: + BreathSphere: Enabled: true CanBeUsedOnUndeadMobs: true Range: 5 diff --git a/src/plugin.yml b/src/plugin.yml index b05eb840..401438c2 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -51,7 +51,7 @@ permissions: bending.ability.AirSpout: true bending.ability.AirSuction: true bending.ability.AirSwipe: true - bending.ability.Breathbending: true + bending.ability.BreathSphere: true bending.ability.Tornado: true bending.air.passive: true bending.water: @@ -116,4 +116,4 @@ permissions: bending.chi.grapplinghook: true bending.avatar: default: false - description: Grants the Avatar Color. + description: Grants the Avatar Color. \ No newline at end of file