diff --git a/src/com/projectkorra/ProjectKorra/BendingManager.java b/src/com/projectkorra/ProjectKorra/BendingManager.java index 1c1c1a4d..dfbc2a8d 100644 --- a/src/com/projectkorra/ProjectKorra/BendingManager.java +++ b/src/com/projectkorra/ProjectKorra/BendingManager.java @@ -88,7 +88,6 @@ public class BendingManager implements Runnable { ProjectKorra.time_step = interval; AvatarState.manageAvatarStates(); - ChiPassive.handlePassive(); TempPotionEffect.progressAll(); handleDayNight(); Flight.handle(); diff --git a/src/com/projectkorra/ProjectKorra/ProjectKorra.java b/src/com/projectkorra/ProjectKorra/ProjectKorra.java index bfb73c4f..29b14677 100644 --- a/src/com/projectkorra/ProjectKorra/ProjectKorra.java +++ b/src/com/projectkorra/ProjectKorra/ProjectKorra.java @@ -10,6 +10,7 @@ import org.bukkit.plugin.java.JavaPlugin; import com.projectkorra.ProjectKorra.Ability.AbilityModuleManager; import com.projectkorra.ProjectKorra.Utilities.CraftingRecipes; import com.projectkorra.ProjectKorra.airbending.AirbendingManager; +import com.projectkorra.ProjectKorra.chiblocking.ChiblockingManager; import com.projectkorra.ProjectKorra.earthbending.EarthbendingManager; import com.projectkorra.ProjectKorra.firebending.FirebendingManager; import com.projectkorra.ProjectKorra.waterbending.WaterbendingManager; @@ -43,6 +44,7 @@ public class ProjectKorra extends JavaPlugin { getServer().getScheduler().scheduleSyncRepeatingTask(this, new WaterbendingManager(this), 0, 1); getServer().getScheduler().scheduleSyncRepeatingTask(this, new EarthbendingManager(this), 0, 1); getServer().getScheduler().scheduleSyncRepeatingTask(this, new FirebendingManager(this), 0, 1); + getServer().getScheduler().scheduleSyncRepeatingTask(this, new ChiblockingManager(this), 0, 1); DBConnection.init(); for (Player player: Bukkit.getOnlinePlayers()) { diff --git a/src/com/projectkorra/ProjectKorra/chiblocking/ChiblockingManager.java b/src/com/projectkorra/ProjectKorra/chiblocking/ChiblockingManager.java new file mode 100644 index 00000000..ee9b5977 --- /dev/null +++ b/src/com/projectkorra/ProjectKorra/chiblocking/ChiblockingManager.java @@ -0,0 +1,24 @@ +package com.projectkorra.ProjectKorra.chiblocking; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import com.projectkorra.ProjectKorra.ProjectKorra; + +public class ChiblockingManager implements Runnable { + + public ProjectKorra plugin; + + public ChiblockingManager(ProjectKorra plugin) { + this.plugin = plugin; + } + + @Override + public void run() { + for(Player player : Bukkit.getOnlinePlayers()) { + ChiPassive.handlePassive(); + Smokescreen.removeFromHashMap(player); + } + } + +} \ No newline at end of file diff --git a/src/com/projectkorra/ProjectKorra/chiblocking/Smokescreen.java b/src/com/projectkorra/ProjectKorra/chiblocking/Smokescreen.java index 61100f58..bee26426 100644 --- a/src/com/projectkorra/ProjectKorra/chiblocking/Smokescreen.java +++ b/src/com/projectkorra/ProjectKorra/chiblocking/Smokescreen.java @@ -18,6 +18,7 @@ public class Smokescreen { public static HashMap cooldowns = new HashMap(); public static List snowballs = new ArrayList(); + public static HashMap blinded = new HashMap(); /* * TODO: Make stuff configurable */ @@ -69,6 +70,18 @@ public class Smokescreen { if (entity instanceof Player) { Player p = (Player) entity; p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, duration * 20, 2)); + blinded.put(p.getName(), System.currentTimeMillis()); + } + } + + public static void removeFromHashMap(Entity entity) { + if (entity instanceof Player) { + Player p = (Player) entity; + if(blinded.containsKey(p.getName())) { + if(blinded.get(p.getName()) + duration >= System.currentTimeMillis()) { + blinded.remove(p.getName()); + } + } } } } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java b/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java index cafcd363..0373f71b 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/HealingWaters.java @@ -13,6 +13,7 @@ import org.bukkit.potion.PotionEffectType; import com.projectkorra.ProjectKorra.Methods; import com.projectkorra.ProjectKorra.ProjectKorra; import com.projectkorra.ProjectKorra.TempBlock; +import com.projectkorra.ProjectKorra.chiblocking.Smokescreen; public class HealingWaters { @@ -64,6 +65,9 @@ public class HealingWaters { } for(PotionEffect effect : player.getActivePotionEffects()) { if(Methods.isNegativeEffect(effect.getType())) { + if((effect.getType() == PotionEffectType.BLINDNESS) && Smokescreen.blinded.containsKey(player.getName())) { + return; + } player.removePotionEffect(effect.getType()); } } diff --git a/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java b/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java index 51ad1c18..456a4303 100644 --- a/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java +++ b/src/com/projectkorra/ProjectKorra/waterbending/WaterManipulation.java @@ -302,16 +302,17 @@ public class WaterManipulation { double radius = FireBlast.affectingradius; Player source = player; - if (EarthBlast.annihilateBlasts(location, radius, source) - || WaterManipulation.annihilateBlasts(location, radius, source) - || FireBlast.annihilateBlasts(location, radius, source)) { - breakBlock(); - new WaterReturn(player, sourceblock); - return false; + if(!(location == null)) { + if (EarthBlast.annihilateBlasts(location, radius, source) + || WaterManipulation.annihilateBlasts(location, radius, source) + || FireBlast.annihilateBlasts(location, radius, source)) { + breakBlock(); + new WaterReturn(player, sourceblock); + return false; + } + Combustion.removeAroundPoint(location, radius); } - Combustion.removeAroundPoint(location, radius); - location = location.clone().add(direction); block = location.getBlock();