Converted to BreathSphere

BreathBending move was converted to BreathSphere, move ready for basic
use and complete enough for a release.
This commit is contained in:
AlexTheCoder 2014-08-24 07:13:09 -04:00
parent 13ee8969f3
commit e803445011
30 changed files with 103 additions and 41 deletions

View file

@ -18,10 +18,10 @@ public enum StockAbilities {
AvatarState, AvatarState,
// Project Korra // Project Korra
Extraction, Smokescreen, Combustion, Breathbending; Extraction, Smokescreen, Combustion, BreathSphere;
private enum AirbendingAbilities { 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 { private enum WaterbendingAbilities {

View file

@ -189,10 +189,10 @@ public class ConfigManager {
config.addDefault("Abilities.Air.AirSwipe.Cooldown", 1500); config.addDefault("Abilities.Air.AirSwipe.Cooldown", 1500);
config.addDefault("Abilities.Air.AirSwipe.ChargeFactor", 3); config.addDefault("Abilities.Air.AirSwipe.ChargeFactor", 3);
config.addDefault("Abilities.Air.Breathbending.Enabled", true); config.addDefault("Abilities.Air.BreathSphere.Enabled", true);
config.addDefault("Abilities.Air.Breathbending.CanBeUsedOnUndeadMobs", true); config.addDefault("Abilities.Air.BreathSphere.CanBeUsedOnUndeadMobs", true);
config.addDefault("Abilities.Air.Breathbending.Range", 5); config.addDefault("Abilities.Air.BreathSphere.Range", 5);
config.addDefault("Abilities.Air.Breathbending.Damage", 0.5); config.addDefault("Abilities.Air.BreathSphere.Damage", 0.5);
config.addDefault("Abilities.Air.Tornado.Radius", 10); config.addDefault("Abilities.Air.Tornado.Radius", 10);
config.addDefault("Abilities.Air.Tornado.Height", 25); config.addDefault("Abilities.Air.Tornado.Height", 25);

View file

@ -78,7 +78,7 @@ import com.projectkorra.ProjectKorra.airbending.AirShield;
import com.projectkorra.ProjectKorra.airbending.AirSpout; import com.projectkorra.ProjectKorra.airbending.AirSpout;
import com.projectkorra.ProjectKorra.airbending.AirSuction; import com.projectkorra.ProjectKorra.airbending.AirSuction;
import com.projectkorra.ProjectKorra.airbending.AirSwipe; 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.airbending.Tornado;
import com.projectkorra.ProjectKorra.chiblocking.Paralyze; import com.projectkorra.ProjectKorra.chiblocking.Paralyze;
import com.projectkorra.ProjectKorra.chiblocking.RapidPunch; import com.projectkorra.ProjectKorra.chiblocking.RapidPunch;
@ -1840,8 +1840,16 @@ public class Methods {
} }
public static void breakBreathbendingHold(Entity entity) { public static void breakBreathbendingHold(Entity entity) {
if(Breathbending.isBreathbent(entity)) { if(BreathSphere.isBreathbent(entity)) {
Breathbending.breakBreathbend(entity); BreathSphere.breakBreathSphere(entity);
return;
}
if(entity instanceof Player) {
Player player = (Player) entity;
if(BreathSphere.isChannelingSphere(player)) {
BreathSphere.remove(player);
}
} }
} }

View file

@ -68,7 +68,7 @@ import com.projectkorra.ProjectKorra.airbending.AirShield;
import com.projectkorra.ProjectKorra.airbending.AirSpout; import com.projectkorra.ProjectKorra.airbending.AirSpout;
import com.projectkorra.ProjectKorra.airbending.AirSuction; import com.projectkorra.ProjectKorra.airbending.AirSuction;
import com.projectkorra.ProjectKorra.airbending.AirSwipe; 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.airbending.Tornado;
import com.projectkorra.ProjectKorra.chiblocking.ChiPassive; import com.projectkorra.ProjectKorra.chiblocking.ChiPassive;
import com.projectkorra.ProjectKorra.chiblocking.HighJump; import com.projectkorra.ProjectKorra.chiblocking.HighJump;
@ -154,7 +154,7 @@ public class PKListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || Breathbending.isBreathbent(player)) { if (Paralyze.isParalyzed(player) || Bloodbending.isBloodbended(player) || BreathSphere.isBreathbent(player)) {
event.setCancelled(true); event.setCancelled(true);
} }
@ -230,7 +230,7 @@ public class PKListener implements Listener {
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
Methods.cooldowns.put(player.getName(), System.currentTimeMillis()); 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); event.setCancelled(true);
} }
} }
@ -240,7 +240,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Player player = event.getPlayer(); Player player = event.getPlayer();
Methods.cooldowns.put(player.getName(), System.currentTimeMillis()); 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); event.setCancelled(true);
} }
} }
@ -306,7 +306,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; 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")) { if(!Methods.getBoundAbility(player).equalsIgnoreCase("AirSwipe") || !Methods.getBoundAbility(player).equalsIgnoreCase("FireBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("EarthBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("WaterManipulation")) {
event.setCancelled(true); event.setCancelled(true);
} }
@ -353,8 +353,8 @@ public class PKListener implements Listener {
if (abil.equalsIgnoreCase("AirShield")) { if (abil.equalsIgnoreCase("AirShield")) {
new AirShield(player); new AirShield(player);
} }
if(abil.equalsIgnoreCase("Breathbending")) { if(abil.equalsIgnoreCase("BreathSphere")) {
new Breathbending(player); 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)); player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1, 100));
} }
} }
@ -529,7 +529,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Entity entity = event.getEntity(); 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); event.setCancelled(true);
} }
@ -573,7 +573,7 @@ public class PKListener implements Listener {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (entity != null) if (entity != null)
if (Paralyze.isParalyzed(entity) if (Paralyze.isParalyzed(entity)
|| Bloodbending.isBloodbended(entity) || Breathbending.isBreathbent(entity)) || Bloodbending.isBloodbended(entity) || BreathSphere.isBreathbent(entity))
event.setCancelled(true); event.setCancelled(true);
} }
@ -582,7 +582,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Entity entity = event.getEntity(); 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); event.setCancelled(true);
} }
@ -591,7 +591,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Entity entity = event.getEntity(); 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); event.setCancelled(true);
} }
@ -600,7 +600,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Entity entity = event.getEntity(); 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); event.setCancelled(true);
} }
@ -609,7 +609,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Entity entity = event.getEntity(); 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); event.setCancelled(true);
} }
@ -618,7 +618,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Entity entity = event.getEntity(); 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); event.setCancelled(true);
} }
@ -629,7 +629,7 @@ public class PKListener implements Listener {
Player player = event.getPlayer(); 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")) { if(!Methods.getBoundAbility(player).equalsIgnoreCase("AirSwipe") || !Methods.getBoundAbility(player).equalsIgnoreCase("FireBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("EarthBlast") || !Methods.getBoundAbility(player).equalsIgnoreCase("WaterManipulation")) {
event.setCancelled(true); event.setCancelled(true);
} }
@ -836,7 +836,7 @@ public class PKListener implements Listener {
if (event.isCancelled()) return; if (event.isCancelled()) return;
Player p = event.getPlayer(); 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) || FireJet.getPlayers().contains(p)
|| AvatarState.getPlayers().contains(p)) { || AvatarState.getPlayers().contains(p)) {
event.setCancelled(p.getGameMode() != GameMode.CREATIVE); event.setCancelled(p.getGameMode() != GameMode.CREATIVE);

View file

@ -294,6 +294,7 @@ public class AirBlast {
if (entity.getFireTicks() > 0) if (entity.getFireTicks() > 0)
entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0); entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0);
entity.setFireTicks(0); entity.setFireTicks(0);
Methods.breakBreathbendingHold(entity);
} }
} }

View file

@ -256,6 +256,7 @@ public class AirSuction {
entity.getWorld().playEffect(entity.getLocation(), entity.getWorld().playEffect(entity.getLocation(),
Effect.EXTINGUISH, 0); Effect.EXTINGUISH, 0);
entity.setFireTicks(0); entity.setFireTicks(0);
Methods.breakBreathbendingHold(entity);
} }
} }

View file

@ -263,6 +263,8 @@ public class AirSwipe {
if (entity instanceof Player) { if (entity instanceof Player) {
new Flight((Player) entity, player); new Flight((Player) entity, player);
} }
Methods.breakBreathbendingHold(entity);
if (elements.containsKey(direction)) { if (elements.containsKey(direction)) {
elements.remove(direction); elements.remove(direction);

View file

@ -18,7 +18,7 @@ public class AirbendingManager implements Runnable {
AirPassive.handlePassive(Bukkit.getServer()); AirPassive.handlePassive(Bukkit.getServer());
AirBurst.progressAll(); AirBurst.progressAll();
AirScooter.progressAll(); AirScooter.progressAll();
Breathbending.progressAll(); BreathSphere.progressAll();
AirSpout.spoutAll(); AirSpout.spoutAll();
AirBubble.handleBubbles(Bukkit.getServer()); AirBubble.handleBubbles(Bukkit.getServer());
AirSuction.progressAll(); AirSuction.progressAll();

View file

@ -17,19 +17,19 @@ import com.projectkorra.ProjectKorra.ProjectKorra;
import com.projectkorra.ProjectKorra.TempPotionEffect; import com.projectkorra.ProjectKorra.TempPotionEffect;
import com.projectkorra.ProjectKorra.Ability.AvatarState; import com.projectkorra.ProjectKorra.Ability.AvatarState;
public class Breathbending { public class BreathSphere {
public static ConcurrentHashMap<Player, Breathbending> instances = new ConcurrentHashMap<Player, Breathbending>(); public static ConcurrentHashMap<Player, BreathSphere> instances = new ConcurrentHashMap<Player, BreathSphere>();
ConcurrentHashMap<Entity, Location> targetentities = new ConcurrentHashMap<Entity, Location>(); ConcurrentHashMap<Entity, Location> targetentities = new ConcurrentHashMap<Entity, Location>();
private static boolean canBeUsedOnUndead = ProjectKorra.plugin.getConfig().getBoolean("Abilities.Air.Breathbending.CanBeUsedOnUndeadMobs"); private static boolean canBeUsedOnUndead = ProjectKorra.plugin.getConfig().getBoolean("Abilities.Air.BreathSphere.CanBeUsedOnUndeadMobs");
private int range = ProjectKorra.plugin.getConfig().getInt("Abilities.Air.Breathbending.Range"); private int range = ProjectKorra.plugin.getConfig().getInt("Abilities.Air.BreathSphere.Range");
private double damage = ProjectKorra.plugin.getConfig().getDouble("Abilities.Air.Breathbending.Damage"); private double damage = ProjectKorra.plugin.getConfig().getDouble("Abilities.Air.BreathSphere.Damage");
private Player player; private Player player;
public Breathbending(Player player) { public BreathSphere(Player player) {
if (instances.containsKey(player)) { if (instances.containsKey(player)) {
remove(player); remove(player);
return; return;
@ -80,7 +80,7 @@ public class Breathbending {
} }
} }
if (!Methods.canBend(player.getName(), "Breathbending")) { if (!Methods.canBend(player.getName(), "BreathSphere")) {
remove(player); remove(player);
return; return;
} }
@ -88,7 +88,7 @@ public class Breathbending {
remove(player); remove(player);
return; return;
} }
if (!Methods.getBoundAbility(player).equalsIgnoreCase("Breathbending")) { if (!Methods.getBoundAbility(player).equalsIgnoreCase("BreathSphere")) {
remove(player); remove(player);
return; return;
} }
@ -96,7 +96,7 @@ public class Breathbending {
if (AvatarState.isAvatarState(player)) { if (AvatarState.isAvatarState(player)) {
ArrayList<Entity> entities = new ArrayList<Entity>(); ArrayList<Entity> entities = new ArrayList<Entity>();
for (Entity entity : Methods.getEntitiesAroundPoint(player.getLocation(), range)) { for (Entity entity : Methods.getEntitiesAroundPoint(player.getLocation(), range)) {
if (Methods.isRegionProtectedFromBuild(player, "Breathbending", entity.getLocation())) if (Methods.isRegionProtectedFromBuild(player, "BreathSphere", entity.getLocation()))
continue; continue;
entities.add(entity); entities.add(entity);
if (!targetentities.containsKey(entity) && entity instanceof LivingEntity) { 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()) { for (Player player : instances.keySet()) {
if (instances.get(player).targetentities.containsKey(entity)) { if (instances.get(player).targetentities.containsKey(entity)) {
instances.remove(player); instances.remove(player);
@ -192,7 +192,7 @@ public class Breathbending {
return false; return false;
} }
public static Location getBreathbendingLocation(Entity entity) { public static Location getBreathSphereLocation(Entity entity) {
for (Player player : instances.keySet()) { for (Player player : instances.keySet()) {
if (instances.get(player).targetentities.containsKey(entity)) { if (instances.get(player).targetentities.containsKey(entity)) {
return instances.get(player).targetentities.get(entity); return instances.get(player).targetentities.get(entity);
@ -200,5 +200,14 @@ public class Breathbending {
} }
return null; return null;
} }
public static boolean isChannelingSphere(Player player){
if(instances.containsKey(player)) return true;
return false;
}
public static void removeAll() {
instances.clear();
}
} }

View file

@ -150,6 +150,8 @@ public class Tornado {
velocity.multiply(timefactor); velocity.multiply(timefactor);
entity.setVelocity(velocity); entity.setVelocity(velocity);
entity.setFallDistance(0); entity.setFallDistance(0);
Methods.breakBreathbendingHold(entity);
if (entity instanceof Player) { if (entity instanceof Player) {
new Flight((Player) entity); new Flight((Player) entity);

View file

@ -12,6 +12,7 @@ import com.projectkorra.ProjectKorra.BendingPlayer;
import com.projectkorra.ProjectKorra.Element; import com.projectkorra.ProjectKorra.Element;
import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.Methods;
import com.projectkorra.ProjectKorra.ProjectKorra; import com.projectkorra.ProjectKorra.ProjectKorra;
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
public class ChiPassive { public class ChiPassive {
@ -37,9 +38,13 @@ public class ChiPassive {
} }
public static void blockChi(final Player player) { public static void blockChi(final Player player) {
if(BreathSphere.isChannelingSphere(player)) {
BreathSphere.remove(player);
}
final BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName()); final BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName());
if (bPlayer == null) return; if (bPlayer == null) return;
bPlayer.blockChi(); bPlayer.blockChi();
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(ProjectKorra.plugin, new Runnable() { Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(ProjectKorra.plugin, new Runnable() {
public void run() { public void run() {
bPlayer.unblockChi(); bPlayer.unblockChi();

View file

@ -10,6 +10,7 @@ import com.projectkorra.ProjectKorra.Element;
import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.Methods;
import com.projectkorra.ProjectKorra.ProjectKorra; import com.projectkorra.ProjectKorra.ProjectKorra;
import com.projectkorra.ProjectKorra.Ability.AvatarState; import com.projectkorra.ProjectKorra.Ability.AvatarState;
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
public class Paralyze { public class Paralyze {
@ -42,6 +43,12 @@ public class Paralyze {
if (entity instanceof Creature) { if (entity instanceof Creature) {
((Creature) entity).setTarget(null); ((Creature) entity).setTarget(null);
} }
if (entity instanceof Player) {
if(BreathSphere.isChannelingSphere((Player) entity)) {
BreathSphere.remove((Player) entity);
}
}
} }
public static boolean isParalyzed(Entity entity) { public static boolean isParalyzed(Entity entity) {

View file

@ -12,6 +12,7 @@ import org.bukkit.entity.Player;
import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.Methods;
import com.projectkorra.ProjectKorra.ProjectKorra; import com.projectkorra.ProjectKorra.ProjectKorra;
import com.projectkorra.ProjectKorra.airbending.BreathSphere;
public class RapidPunch { public class RapidPunch {
@ -59,6 +60,9 @@ public class RapidPunch {
if (ChiPassive.willChiBlock((Player) target)) { if (ChiPassive.willChiBlock((Player) target)) {
ChiPassive.blockChi((Player) target); ChiPassive.blockChi((Player) target);
} }
if(BreathSphere.isChannelingSphere((Player) target)) {
BreathSphere.remove((Player) target);
}
lt.setNoDamageTicks(0); lt.setNoDamageTicks(0);
} }
cooldowns.put(p.getName(), System.currentTimeMillis()); cooldowns.put(p.getName(), System.currentTimeMillis());

View file

@ -389,6 +389,9 @@ public class EarthBlast {
// || testblock.equals(block2)) { // || testblock.equals(block2)) {
// entity.setVelocity(entity.getVelocity().clone() // entity.setVelocity(entity.getVelocity().clone()
// .add(direction)); // .add(direction));
Methods.breakBreathbendingHold(entity);
Location location = player.getEyeLocation(); Location location = player.getEyeLocation();
Vector vector = location.getDirection(); Vector vector = location.getDirection();
entity.setVelocity(vector.normalize().multiply(pushfactor)); entity.setVelocity(vector.normalize().multiply(pushfactor));

View file

@ -259,6 +259,8 @@ public class Ripple {
Vector vector = direction.clone(); Vector vector = direction.clone();
vector.setY(.5); vector.setY(.5);
entity.setVelocity(vector); entity.setVelocity(vector);
Methods.breakBreathbendingHold(entity);
} }

View file

@ -177,6 +177,7 @@ public class Combustion {
if (entity instanceof LivingEntity) { if (entity instanceof LivingEntity) {
if (entity.getLocation().distance(block) < radius) { // They are close enough to the explosion. if (entity.getLocation().distance(block) < radius) { // They are close enough to the explosion.
Methods.damageEntity(player, entity, damage); Methods.damageEntity(player, entity, damage);
Methods.breakBreathbendingHold(entity);
} }
} }
} }

View file

@ -220,6 +220,7 @@ public class FireBlast {
if (entity instanceof LivingEntity) { if (entity instanceof LivingEntity) {
entity.setFireTicks(50); entity.setFireTicks(50);
Methods.damageEntity(player, entity, (int) Methods.getFirebendingDayAugment((double) damage, entity.getWorld())); Methods.damageEntity(player, entity, (int) Methods.getFirebendingDayAugment((double) damage, entity.getWorld()));
Methods.breakBreathbendingHold(entity);
new Enflamed(entity, player); new Enflamed(entity, player);
instances.remove(id); instances.remove(id);
} }

View file

@ -158,6 +158,7 @@ public class Fireball {
double damage = slope * (distance - innerradius) + maxdamage; double damage = slope * (distance - innerradius) + maxdamage;
// Methods.verbose(damage); // Methods.verbose(damage);
Methods.damageEntity(player, entity, damage); Methods.damageEntity(player, entity, damage);
Methods.breakBreathbendingHold(entity);
} }
private void fireball() { private void fireball() {

View file

@ -154,6 +154,7 @@ public class Lightning {
double damage = maxdamage - (distance / strikeradius) * .5; double damage = maxdamage - (distance / strikeradius) * .5;
hitentities.add(entity); hitentities.add(entity);
Methods.damageEntity(player, entity, (int) damage); Methods.damageEntity(player, entity, (int) damage);
Methods.breakBreathbendingHold(entity);
} }
public static boolean isNearbyChannel(Location location) { public static boolean isNearbyChannel(Location location) {

View file

@ -187,6 +187,7 @@ public class WallOfFire {
if (entity instanceof LivingEntity) { if (entity instanceof LivingEntity) {
Methods.damageEntity(player, entity, damage); Methods.damageEntity(player, entity, damage);
new Enflamed(entity, player); new Enflamed(entity, player);
Methods.breakBreathbendingHold(entity);
} }
} }

View file

@ -54,6 +54,7 @@ public class Bloodbending {
continue; continue;
} }
Methods.damageEntity(player, entity, 0); Methods.damageEntity(player, entity, 0);
Methods.breakBreathbendingHold(entity);
targetentities.put(entity, entity.getLocation().clone()); targetentities.put(entity, entity.getLocation().clone());
} }
} }
@ -73,6 +74,7 @@ public class Bloodbending {
return; return;
} }
Methods.damageEntity(player, target, 0); Methods.damageEntity(player, target, 0);
Methods.breakBreathbendingHold(target);
targetentities.put(target, target.getLocation().clone()); targetentities.put(target, target.getLocation().clone());
} }
this.player = player; this.player = player;
@ -166,6 +168,7 @@ public class Bloodbending {
if (entity instanceof Creature) { if (entity instanceof Creature) {
((Creature) entity).setTarget(null); ((Creature) entity).setTarget(null);
} }
Methods.breakBreathbendingHold(entity);
} }
} }
for (Entity entity : targetentities.keySet()) { for (Entity entity : targetentities.keySet()) {
@ -199,6 +202,7 @@ public class Bloodbending {
if (entity instanceof Creature) { if (entity instanceof Creature) {
((Creature) entity).setTarget(null); ((Creature) entity).setTarget(null);
} }
Methods.breakBreathbendingHold(entity);
} }
} }
} }

View file

@ -82,6 +82,7 @@ public class HealingWaters {
if (!Methods.isRegionProtectedFromBuild(player, "HealingWaters", player.getLocation())) if (!Methods.isRegionProtectedFromBuild(player, "HealingWaters", player.getLocation()))
if(player.getHealth() < player.getMaxHealth()) { if(player.getHealth() < player.getMaxHealth()) {
player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 70, 1)); player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 70, 1));
Methods.breakBreathbendingHold(player);
} }
// for(PotionEffect effect : player.getActivePotionEffects()) { // for(PotionEffect effect : player.getActivePotionEffects()) {
// if(Methods.isNegativeEffect(effect.getType())) { // if(Methods.isNegativeEffect(effect.getType())) {
@ -93,6 +94,7 @@ public class HealingWaters {
private static void applyHealingToEntity(LivingEntity le) { private static void applyHealingToEntity(LivingEntity le) {
if(le.getHealth() < le.getMaxHealth()) { if(le.getHealth() < le.getMaxHealth()) {
le.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 70, 1)); le.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 70, 1));
Methods.breakBreathbendingHold(le);
} }
// for(PotionEffect effect : le.getActivePotionEffects()) { // for(PotionEffect effect : le.getActivePotionEffects()) {
// if(Methods.isNegativeEffect(effect.getType())) { // if(Methods.isNegativeEffect(effect.getType())) {

View file

@ -243,6 +243,7 @@ public class IceSpike {
PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, mod); PotionEffect effect = new PotionEffect(PotionEffectType.SLOW, 70, mod);
new TempPotionEffect(entity, effect); new TempPotionEffect(entity, effect);
} }
Methods.breakBreathbendingHold(entity);
} }

View file

@ -306,6 +306,7 @@ public class IceSpike2 {
new TempPotionEffect(entity, effect); new TempPotionEffect(entity, effect);
entity.damage(damage, player); entity.damage(damage, player);
} }
Methods.breakBreathbendingHold(entity);
} }

View file

@ -134,6 +134,7 @@ public class OctopusForm {
entity.setVelocity(Methods.getDirection(player.getLocation(), location).normalize().multiply(1.75)); entity.setVelocity(Methods.getDirection(player.getLocation(), location).normalize().multiply(1.75));
if (entity instanceof LivingEntity) if (entity instanceof LivingEntity)
Methods.damageEntity(player, entity, damage); Methods.damageEntity(player, entity, damage);
Methods.breakBreathbendingHold(entity);
} }
} }

View file

@ -507,6 +507,7 @@ public class Torrent {
damagedealt = (int) (Methods.getWaterbendingNightAugment(world) * (double) deflectdamage); damagedealt = (int) (Methods.getWaterbendingNightAugment(world) * (double) deflectdamage);
} }
Methods.damageEntity(player, entity, damagedealt); Methods.damageEntity(player, entity, damagedealt);
Methods.breakBreathbendingHold(entity);
} }
} }
@ -526,6 +527,7 @@ public class Torrent {
} }
// if (((LivingEntity) entity).getNoDamageTicks() == 0) { // if (((LivingEntity) entity).getNoDamageTicks() == 0) {
Methods.damageEntity(player, entity, damagedealt); Methods.damageEntity(player, entity, damagedealt);
Methods.breakBreathbendingHold(entity);
// Methods.verbose("Hit! Health at " // Methods.verbose("Hit! Health at "
// + ((LivingEntity) entity).getHealth()); // + ((LivingEntity) entity).getHealth());
hurtentities.add(entity); hurtentities.add(entity);

View file

@ -367,6 +367,7 @@ public class WaterManipulation {
if (AvatarState.isAvatarState(player)) if (AvatarState.isAvatarState(player))
damage = AvatarState.getValue(damage); damage = AvatarState.getValue(damage);
Methods.damageEntity(player, entity, (int) Methods.waterbendingNightAugment(damage, player.getWorld())); Methods.damageEntity(player, entity, (int) Methods.waterbendingNightAugment(damage, player.getWorld()));
Methods.breakBreathbendingHold(entity);
progressing = false; progressing = false;
// } // }
} }

View file

@ -304,6 +304,7 @@ public class Wave {
if (entity.getFireTicks() > 0) if (entity.getFireTicks() > 0)
entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0); entity.getWorld().playEffect(entity.getLocation(), Effect.EXTINGUISH, 0);
entity.setFireTicks(0); entity.setFireTicks(0);
Methods.breakBreathbendingHold(entity);
} }
} }

View file

@ -138,7 +138,7 @@ Abilities:
Speed: 25 Speed: 25
Cooldown: 1500 Cooldown: 1500
ChargeFactor: 3 ChargeFactor: 3
Breathbending: BreathSphere:
Enabled: true Enabled: true
CanBeUsedOnUndeadMobs: true CanBeUsedOnUndeadMobs: true
Range: 5 Range: 5

View file

@ -51,7 +51,7 @@ permissions:
bending.ability.AirSpout: true bending.ability.AirSpout: true
bending.ability.AirSuction: true bending.ability.AirSuction: true
bending.ability.AirSwipe: true bending.ability.AirSwipe: true
bending.ability.Breathbending: true bending.ability.BreathSphere: true
bending.ability.Tornado: true bending.ability.Tornado: true
bending.air.passive: true bending.air.passive: true
bending.water: bending.water:
@ -116,4 +116,4 @@ permissions:
bending.chi.grapplinghook: true bending.chi.grapplinghook: true
bending.avatar: bending.avatar:
default: false default: false
description: Grants the Avatar Color. description: Grants the Avatar Color.