diff --git a/.classpath b/.classpath
index 94adf55b..4cb7da63 100644
--- a/.classpath
+++ b/.classpath
@@ -5,10 +5,6 @@
-
-
-
-
diff --git a/src/com/projectkorra/ProjectKorra/BendingManager.java b/src/com/projectkorra/ProjectKorra/BendingManager.java
index cd978b40..67bf9a9c 100644
--- a/src/com/projectkorra/ProjectKorra/BendingManager.java
+++ b/src/com/projectkorra/ProjectKorra/BendingManager.java
@@ -18,7 +18,6 @@ import com.projectkorra.ProjectKorra.firebending.FirePassive;
import com.projectkorra.ProjectKorra.firebending.FireStream;
import com.projectkorra.ProjectKorra.waterbending.Plantbending;
import com.projectkorra.ProjectKorra.waterbending.WaterPassive;
-import com.projectkorra.ProjectKorra.waterbending.WaterReturn;
public class BendingManager implements Runnable {
@@ -54,7 +53,6 @@ public class BendingManager implements Runnable {
EarthPassive.revertSands();
Plantbending.regrow();
handleDayNight();
- WaterReturn.progressAll();
for (int id: FireStream.instances.keySet()) {
FireStream.progress(id);
diff --git a/src/com/projectkorra/ProjectKorra/PKListener.java b/src/com/projectkorra/ProjectKorra/PKListener.java
index 58ee0597..d7802dfd 100644
--- a/src/com/projectkorra/ProjectKorra/PKListener.java
+++ b/src/com/projectkorra/ProjectKorra/PKListener.java
@@ -11,7 +11,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
-import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockFadeEvent;
import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockFromToEvent;
@@ -19,7 +18,6 @@ import org.bukkit.event.block.BlockPhysicsEvent;
import org.bukkit.event.entity.EntityCombustEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
@@ -31,8 +29,6 @@ import com.projectkorra.ProjectKorra.firebending.Enflamed;
import com.projectkorra.ProjectKorra.firebending.FireStream;
import com.projectkorra.ProjectKorra.waterbending.WaterCore;
import com.projectkorra.ProjectKorra.waterbending.WaterPassive;
-import com.projectkorra.abilities.Surge.WaterWall;
-import com.projectkorra.abilities.Surge.WaveAbility;
public class PKListener implements Listener {
@@ -48,7 +44,9 @@ public class PKListener implements Listener {
Block fromblock = event.getBlock();
if (Methods.isWater(fromblock)) {
if (!event.isCancelled()) {
- event.setCancelled(!WaterCore.canFlowFromTo(fromblock, toblock));
+ if (Methods.isAdjacentToFrozenBlock(toblock) || Methods.isAdjacentToFrozenBlock(fromblock)) {
+ event.setCancelled(true);
+ }
}
}
}
@@ -135,40 +133,6 @@ public class PKListener implements Listener {
}
}
- @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
- public void onBlockBreak(BlockBreakEvent event) {
- Block block = event.getBlock();
- Player player = event.getPlayer();
- if (Methods.isAbilityInstalled("Surge", "orion304")) {
- if (WaterWall.wasBrokenFor(player, block)) {
- event.setCancelled(true);
- return;
- }
- if (WaterCore.waterwallblocks.containsKey(block)) {
- WaterWall.thaw(block);
- event.setCancelled(true);
- }
- if (!WaveAbility.canThaw(block)) {
- WaveAbility.thaw(block);
- event.setCancelled(true);
- }
- }
- }
-
- @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
- public void onEntityExplode(EntityExplodeEvent event) {
- for (Block block: event.blockList()) {
- if (Methods.isAbilityInstalled("Surge", "orion304")) {
- if (WaterCore.waterwallblocks.containsKey(block)) {
- block.setType(Material.AIR);
- }
- if (!WaveAbility.canThaw(block)) {
- WaveAbility.thaw(block);
- }
- }
- }
- }
-
@EventHandler
public void onPlayerDamage(EntityDamageEvent e) {
Entity en = e.getEntity();
@@ -202,7 +166,9 @@ public class PKListener implements Listener {
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onBlockPhysics(BlockPhysicsEvent event) {
Block block = event.getBlock();
- event.setCancelled(!WaterCore.canPhysicsChange(block));
+ if (TempBlock.isTempBlock(block) || TempBlock.isTouchingTempBlock(block)) {
+ event.setCancelled(true);
+ }
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
diff --git a/src/com/projectkorra/ProjectKorra/waterbending/FreezeMelt.java b/src/com/projectkorra/ProjectKorra/waterbending/FreezeMelt.java
new file mode 100644
index 00000000..244ea7af
--- /dev/null
+++ b/src/com/projectkorra/ProjectKorra/waterbending/FreezeMelt.java
@@ -0,0 +1,77 @@
+package com.projectkorra.ProjectKorra.waterbending;
+
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.entity.Player;
+
+import com.projectkorra.ProjectKorra.TempBlock;
+
+
+public class FreezeMelt {
+
+ public static ConcurrentHashMap frozenblocks = new ConcurrentHashMap();
+
+ public static void freeze(Player player, Block block) {
+ if (TempBlock.isTempBlock(block))
+ return;
+ byte data = block.getData();
+ block.setType(Material.ICE);
+ frozenblocks.put(block, data);
+ }
+
+ public static void thaw(Block block) {
+ if (frozenblocks.containsKey(block)) {
+ byte data = frozenblocks.get(block);
+ frozenblocks.remove(block);
+ block.setType(Material.WATER);
+ block.setData(data);
+ }
+ }
+
+// public static void handleFrozenBlocks() {
+// for (Block block : frozenblocks.keySet()) {
+// if (canThaw(block))
+// thaw(block);
+// }
+// }
+
+// public static boolean canThaw(Block block) {
+// if (frozenblocks.containsKey(block)) {
+// for (Player player : block.getWorld().getPlayers()) {
+// // if (Tools.getBendingAbility(player) == Abilities.OctopusForm) {
+// // if (block.getLocation().distance(player.getLocation()) <= OctopusForm.radius + 2)
+// // return false;
+// // }
+// if (Tools.hasAbility(player, Abilities.PhaseChange) && Tools.canBend(player, Abilities.PhaseChange)) {
+// double range = Tools.waterbendingNightAugment(defaultrange,
+// player.getWorld());
+// if (AvatarState.isAvatarState(player)) {
+// range = AvatarState.getValue(range);
+// }
+// if (block.getLocation().distance(player.getLocation()) <= range)
+// return false;
+// }
+// }
+// }
+// if (!WaterManipulation.canPhysicsChange(block))
+// return false;
+// return true;
+// }
+
+ private static void thawAll() {
+ for (Block block : frozenblocks.keySet()) {
+ if (block.getType() == Material.ICE) {
+ byte data = frozenblocks.get(block);
+ block.setType(Material.WATER);
+ block.setData(data);
+ frozenblocks.remove(block);
+ }
+ }
+ }
+
+ public static void removeAll() {
+ thawAll();
+ }
+}
\ No newline at end of file
diff --git a/src/com/projectkorra/ProjectKorra/waterbending/WaterCore.java b/src/com/projectkorra/ProjectKorra/waterbending/WaterCore.java
index ff32eb69..d9637224 100644
--- a/src/com/projectkorra/ProjectKorra/waterbending/WaterCore.java
+++ b/src/com/projectkorra/ProjectKorra/waterbending/WaterCore.java
@@ -2,15 +2,10 @@ package com.projectkorra.ProjectKorra.waterbending;
import java.util.concurrent.ConcurrentHashMap;
-import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-
import com.projectkorra.ProjectKorra.Methods;
import com.projectkorra.ProjectKorra.TempBlock;
-import com.projectkorra.abilities.Surge.WaveAbility;
-import com.projectkorra.abilities.WaterSpout.WaterSpoutAbility;
public class WaterCore {
@@ -18,40 +13,24 @@ public class WaterCore {
public static ConcurrentHashMap waterSpoutAffectedBlocks = new ConcurrentHashMap();
public static ConcurrentHashMap waterManipulationAffectedBlocks = new ConcurrentHashMap();
- public static ConcurrentHashMap waterWallAffectedBlocks = new ConcurrentHashMap();
- public static ConcurrentHashMap waterwallblocks = new ConcurrentHashMap();
-
-
-
- public static void freeze(Player player, Block block) {
- // if (Methods.isRegionProtectedFromBuild(player, Abilities.PhaseChange,
- // block.getLocation()))
- // return;
- if (TempBlock.isTempBlock(block))
- return;
- byte data = block.getData();
- block.setType(Material.ICE);
- frozenblocks.put(block, data);
- }
-
- public static void removeSpouts(Location loc0, double radius,
- Player sourceplayer) {
- if (!Methods.isAbilityInstalled("WaterSpout", "orion304")) return;
- for (Player player : WaterSpoutAbility.instances.keySet()) {
- if (!player.equals(sourceplayer)) {
- Location loc1 = player.getLocation().getBlock().getLocation();
- loc0 = loc0.getBlock().getLocation();
- double dx = loc1.getX() - loc0.getX();
- double dy = loc1.getY() - loc0.getY();
- double dz = loc1.getZ() - loc0.getZ();
-
- double distance = Math.sqrt(dx * dx + dz * dz);
-
- if (distance <= radius && dy > 0 && dy < WaterSpoutAbility.defaultheight)
- WaterSpoutAbility.instances.get(player).remove();
- }
- }
- }
+// public static void removeSpouts(Location loc0, double radius,
+// Player sourceplayer) {
+// if (!Methods.isAbilityInstalled("WaterSpout", "orion304")) return;
+// for (Player player : WaterSpoutAbility.instances.keySet()) {
+// if (!player.equals(sourceplayer)) {
+// Location loc1 = player.getLocation().getBlock().getLocation();
+// loc0 = loc0.getBlock().getLocation();
+// double dx = loc1.getX() - loc0.getX();
+// double dy = loc1.getY() - loc0.getY();
+// double dz = loc1.getZ() - loc0.getZ();
+//
+// double distance = Math.sqrt(dx * dx + dz * dz);
+//
+// if (distance <= radius && dy > 0 && dy < WaterSpoutAbility.defaultheight)
+// WaterSpoutAbility.instances.get(player).remove();
+// }
+// }
+// }
public static void thaw(Block block) {
if (frozenblocks.containsKey(block)) {
@@ -70,19 +49,6 @@ public class WaterCore {
return false;
}
- if (waterWallAffectedBlocks.containsKey(to)
- || waterWallAffectedBlocks.containsKey(from)) {
- return false;
- }
-
- if (waterwallblocks.containsKey(to)
- || waterwallblocks.containsKey(from)) {
- return false;
- }
-// if (WaveAbility.isBlockWave(to) || WaveAbility.isBlockWave(from)) {
-// return false;
-// }
-
if (TempBlock.isTempBlock(to) || TempBlock.isTempBlock(from)) {
return false;
}
@@ -101,14 +67,14 @@ public class WaterCore {
if (waterSpoutAffectedBlocks.containsKey(block))
return false;
}
- if (Methods.isAbilityInstalled("Surge", "orion304")) {
- if (waterWallAffectedBlocks.containsKey(block))
- return false;
- if (waterwallblocks.containsKey(block))
- return false;
-// if (WaveAbility.isBlockWave(block))
+// if (Methods.isAbilityInstalled("Surge", "orion304")) {
+// if (waterWallAffectedBlocks.containsKey(block))
// return false;
- }
+// if (waterwallblocks.containsKey(block))
+// return false;
+//// if (WaveAbility.isBlockWave(block))
+//// return false;
+// }
if (TempBlock.isTempBlock(block))
return false;
if (TempBlock.isTouchingTempBlock(block))
diff --git a/src/com/projectkorra/ProjectKorra/waterbending/WaterReturn.java b/src/com/projectkorra/ProjectKorra/waterbending/WaterReturn.java
deleted file mode 100644
index a80344ab..00000000
--- a/src/com/projectkorra/ProjectKorra/waterbending/WaterReturn.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package com.projectkorra.ProjectKorra.waterbending;
-
-import java.util.HashMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.bukkit.Location;
-import org.bukkit.Material;
-import org.bukkit.block.Block;
-import org.bukkit.entity.Player;
-import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.PlayerInventory;
-import org.bukkit.util.Vector;
-
-import com.projectkorra.ProjectKorra.Methods;
-import com.projectkorra.ProjectKorra.TempBlock;
-import com.projectkorra.abilities.IceSpike.IceSpike2;
-import com.projectkorra.abilities.OctopusForm.OctopusFormAbility;
-import com.projectkorra.abilities.Surge.WaterWall;
-import com.projectkorra.abilities.Surge.WaveAbility;
-import com.projectkorra.abilities.WaterManipulation.WaterManipulationAbility;
-
-public class WaterReturn {
-
- private static ConcurrentHashMap instances = new ConcurrentHashMap();
- // private static int ID = Integer.MIN_VALUE;
- private static long interval = 50;
-
- private static final byte full = 0x0;
- private static double range = 30;
-
- private Player player;
- // private int id;
- private Location location;
- private TempBlock block;
- private long time;
-
- public WaterReturn(Player player, Block block) {
- if (instances.containsKey(player))
- return;
- this.player = player;
- location = block.getLocation();
- // if (!Tools.isRegionProtectedFromBuild(player,
- // Abilities.WaterManipulation, location)
- // && Tools.canBend(player, Abilities.WaterManipulation)) {
- if (Methods.isAbilityInstalled("WaterManipulation", "orion304") && Methods.canBend(player.getName(), "WaterManipulation")) {
- if (Methods.isTransparentToEarthbending(player, block)
- && !block.isLiquid())
- this.block = new TempBlock(block, Material.WATER, full);
- }
- // }
- // if (ID >= Integer.MAX_VALUE) {
- // ID = Integer.MIN_VALUE;
- // }
- // id = ID++;
- instances.put(player, this);
- }
-
- private void progress() {
- if (!hasEmptyWaterBottle()) {
- remove();
- return;
- }
-
- if (player.isDead() || !player.isOnline()) {
- remove();
- return;
- }
-
- if (player.getWorld() != location.getWorld()) {
- remove();
- return;
- }
-
- if (System.currentTimeMillis() < time + interval)
- return;
-
- time = System.currentTimeMillis();
-
- Vector direction = Methods
- .getDirection(location, player.getEyeLocation()).normalize();
- location = location.clone().add(direction);
-
- if (location == null || block == null) {
- remove();
- return;
- }
-
- if (location.getBlock().equals(block.getLocation().getBlock()))
- return;
-
- // if (Tools.isRegionProtectedFromBuild(player,
- // Abilities.WaterManipulation, location)) {
- // remove();
- // return;
- // }
-
- if (location.distance(player.getEyeLocation()) > Methods
- .waterbendingNightAugment(range, player.getWorld())) {
- remove();
- return;
- }
-
- if (location.distance(player.getEyeLocation()) <= 1.5) {
- fillBottle();
- return;
- }
-
- Block newblock = location.getBlock();
- if (Methods.isTransparentToEarthbending(player, newblock)
- && !newblock.isLiquid()) {
- block.revertBlock();
- block = new TempBlock(newblock, Material.WATER, full);
- } else {
- remove();
- return;
- }
-
- }
-
- private void remove() {
- if (block != null) {
- block.revertBlock();
- block = null;
- }
- instances.remove(player);
- }
-
- private boolean hasEmptyWaterBottle() {
- PlayerInventory inventory = player.getInventory();
- if (inventory.contains(Material.GLASS_BOTTLE)) {
- return true;
- }
- return false;
- }
-
- private void fillBottle() {
- PlayerInventory inventory = player.getInventory();
- if (inventory.contains(Material.GLASS_BOTTLE)) {
- int index = inventory.first(Material.GLASS_BOTTLE);
- ItemStack item = inventory.getItem(index);
- if (item.getAmount() == 1) {
- inventory.setItem(index, new ItemStack(Material.POTION));
- } else {
- item.setAmount(item.getAmount() - 1);
- inventory.setItem(index, item);
- HashMap leftover = inventory
- .addItem(new ItemStack(Material.POTION));
- for (int left : leftover.keySet()) {
- player.getWorld().dropItemNaturally(player.getLocation(),
- leftover.get(left));
- }
- }
- }
-
- remove();
- }
-
- private static boolean isBending(Player player) {
- if (Methods.isAbilityInstalled("WaterManipulation", "orion304")) {
- for (int id : WaterManipulationAbility.instances.keySet()) {
- WaterManipulationAbility.instances.get(id);
- if (WaterManipulationAbility.player.equals(player))
- return true;
- }
- }
- if (Methods.isAbilityInstalled("OctopusForm", "orion304")) {
- if (OctopusFormAbility.instances.containsKey(player))
- return true;
- }
- if (Methods.isAbilityInstalled("Surge", "orion304")) {
- for (int id : WaveAbility.instances.keySet()) {
- if (WaveAbility.instances.get(id).player.equals(player))
- return true;
- }
- for (int id : WaterWall.instances.keySet()) {
- if (WaterWall.instances.get(id).player.equals(player))
- return true;
- }
- }
-
- if (Methods.isAbilityInstalled("IceSpike", "orion304")) {
- if (IceSpike2.isBending(player))
- return true;
- }
- return false;
- }
-
- public static boolean hasWaterBottle(Player player) {
- if (instances.containsKey(player))
- return false;
- if (isBending(player))
- return false;
- PlayerInventory inventory = player.getInventory();
- return (inventory.contains(new ItemStack(Material.POTION), 1));
- }
-
- public static void emptyWaterBottle(Player player) {
- PlayerInventory inventory = player.getInventory();
- int index = inventory.first(new ItemStack(Material.POTION));
- if (index != -1) {
- ItemStack item = inventory.getItem(index);
- if (item.getAmount() == 1) {
- inventory.setItem(index, new ItemStack(Material.GLASS_BOTTLE));
- } else {
- item.setAmount(item.getAmount() - 1);
- inventory.setItem(index, item);
- HashMap leftover = inventory
- .addItem(new ItemStack(Material.GLASS_BOTTLE));
- for (int left : leftover.keySet()) {
- player.getWorld().dropItemNaturally(player.getLocation(),
- leftover.get(left));
- }
- }
- }
- }
-
- public static void progressAll() {
- for (Player player : instances.keySet()) {
- instances.get(player).progress();
- }
- }
-
- public static void removeAll() {
- for (Player player : instances.keySet()) {
- WaterReturn wr = instances.get(player);
- if (wr.block != null)
- wr.block.revertBlock();
- }
- instances.clear();
- }
-
-}
\ No newline at end of file