From 102ea0c3c0f3b3ad493d7d72dde5639012ac8ccc Mon Sep 17 00:00:00 2001 From: Christopher Martin Date: Thu, 19 Jan 2017 23:44:13 -0800 Subject: [PATCH] Various Fixes (#704) * Various Fixes * Merge cooldown change --- .../projectkorra/projectkorra/GeneralMethods.java | 3 ++- src/com/projectkorra/projectkorra/PKListener.java | 2 +- .../projectkorra/ability/WaterAbility.java | 15 ++++----------- .../earthbending/passive/EarthPassive.java | 4 ---- .../projectkorra/firebending/HeatControl.java | 9 +++++++-- .../projectkorra/util/BlockSource.java | 10 +++++++--- .../waterbending/WaterManipulation.java | 6 +----- 7 files changed, 22 insertions(+), 27 deletions(-) diff --git a/src/com/projectkorra/projectkorra/GeneralMethods.java b/src/com/projectkorra/projectkorra/GeneralMethods.java index 81e7c032..71db82b8 100644 --- a/src/com/projectkorra/projectkorra/GeneralMethods.java +++ b/src/com/projectkorra/projectkorra/GeneralMethods.java @@ -123,6 +123,7 @@ import com.projectkorra.projectkorra.util.TempBlock; import com.projectkorra.projectkorra.util.ReflectionHandler.PackageType; import com.projectkorra.projectkorra.waterbending.WaterManipulation; import com.projectkorra.projectkorra.waterbending.WaterSpout; +import com.projectkorra.projectkorra.waterbending.ice.PhaseChange; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import com.sk89q.worldguard.protection.flags.DefaultFlag; @@ -1159,7 +1160,7 @@ public class GeneralMethods { } public static boolean isAdjacentToThreeOrMoreSources(Block block) { - if (TempBlock.isTempBlock(block) || block.equals(null)) { + if ((TempBlock.isTempBlock(block) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(block))) || block.equals(null)) { return false; } int sources = 0; diff --git a/src/com/projectkorra/projectkorra/PKListener.java b/src/com/projectkorra/projectkorra/PKListener.java index be10fcee..57cc9f9a 100644 --- a/src/com/projectkorra/projectkorra/PKListener.java +++ b/src/com/projectkorra/projectkorra/PKListener.java @@ -318,7 +318,7 @@ public class PKListener implements Listener { } // If there is a TempBlock of Air bellow FallingSand blocks, prevent it from updating. - if (!event.isCancelled() && (block.getType() == Material.SAND || block.getType() == Material.GRAVEL || block.getType() == Material.ANVIL) && TempBlock.isTempBlock(block.getRelative(BlockFace.DOWN)) && block.getRelative(BlockFace.DOWN).getType() == Material.AIR) { + if (!event.isCancelled() && (block.getType() == Material.SAND || block.getType() == Material.GRAVEL || block.getType() == Material.ANVIL || block.getType() == Material.DRAGON_EGG) && TempBlock.isTempBlock(block.getRelative(BlockFace.DOWN)) && block.getRelative(BlockFace.DOWN).getType() == Material.AIR) { event.setCancelled(true); } } diff --git a/src/com/projectkorra/projectkorra/ability/WaterAbility.java b/src/com/projectkorra/projectkorra/ability/WaterAbility.java index 707f4887..d7fe237e 100644 --- a/src/com/projectkorra/projectkorra/ability/WaterAbility.java +++ b/src/com/projectkorra/projectkorra/ability/WaterAbility.java @@ -131,7 +131,7 @@ public abstract class WaterAbility extends ElementalAbility { continue; } if (isIcebendable(player, block.getType(), false)) { - if (TempBlock.isTempBlock(block)) { + if (TempBlock.isTempBlock(block) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(block))) { continue; } return block; @@ -175,7 +175,7 @@ public abstract class WaterAbility extends ElementalAbility { if (GeneralMethods.isRegionProtectedFromBuild(player, "PlantDisc", location)) { continue; } else if (isPlantbendable(player, block.getType(), onlyLeaves)) { - if (TempBlock.isTempBlock(block)) { + if (TempBlock.isTempBlock(block) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(block))) { continue; } return block; @@ -213,15 +213,8 @@ public abstract class WaterAbility extends ElementalAbility { if ((!isTransparent(player, block) && !isIce(block) && !isPlant(block)) || GeneralMethods.isRegionProtectedFromBuild(player, "WaterManipulation", location)) { continue; } else if (isWaterbendable(player, null, block) && (!isPlant(block) || plantbending)) { - if (TempBlock.isTempBlock(block)) { + if (TempBlock.isTempBlock(block) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(block))) { continue; - /* - * TempBlock tb = TempBlock.get(block); byte full = 0x0; if - * (tb.getState().getRawData() != full && - * (tb.getState().getType() != Material.WATER || - * tb.getState().getType() != Material.STATIONARY_WATER)) { - * continue; } - */ } return block; } @@ -278,7 +271,7 @@ public abstract class WaterAbility extends ElementalAbility { return false; } - if (TempBlock.isTempBlock(block)) { + if (TempBlock.isTempBlock(block) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(block))) { return false; } else if (isWater(block) && block.getData() == full) { return true; diff --git a/src/com/projectkorra/projectkorra/earthbending/passive/EarthPassive.java b/src/com/projectkorra/projectkorra/earthbending/passive/EarthPassive.java index 721f3bc1..5688408d 100644 --- a/src/com/projectkorra/projectkorra/earthbending/passive/EarthPassive.java +++ b/src/com/projectkorra/projectkorra/earthbending/passive/EarthPassive.java @@ -159,8 +159,6 @@ public class EarthPassive { return false; } else if (TempBlock.isTempBlock(block)) { return false; - } else if (TempBlock.isTouchingTempBlock(block)) { - return false; } return true; } @@ -172,8 +170,6 @@ public class EarthPassive { return false; } else if (LavaSurgeWave.isBlockWave(to) || LavaSurgeWave.isBlockWave(from)) { return false; - } else if (TempBlock.isTempBlock(to) || TempBlock.isTempBlock(from)) { - return false; } return true; } diff --git a/src/com/projectkorra/projectkorra/firebending/HeatControl.java b/src/com/projectkorra/projectkorra/firebending/HeatControl.java index c977515e..3c320e76 100644 --- a/src/com/projectkorra/projectkorra/firebending/HeatControl.java +++ b/src/com/projectkorra/projectkorra/firebending/HeatControl.java @@ -28,6 +28,7 @@ import com.projectkorra.projectkorra.util.ParticleEffect; import com.projectkorra.projectkorra.util.TempBlock; import com.projectkorra.projectkorra.waterbending.SurgeWave; import com.projectkorra.projectkorra.waterbending.Torrent; +import com.projectkorra.projectkorra.waterbending.WaterManipulation; import com.projectkorra.projectkorra.waterbending.WaterSpoutWave; import com.projectkorra.projectkorra.waterbending.combo.WaterCombo; import com.projectkorra.projectkorra.waterbending.ice.PhaseChange; @@ -318,7 +319,7 @@ public class HeatControl extends FireAbility { WaterSpoutWave.thaw(block); WaterCombo.thaw(block); - if (isMeltable(block) && !TempBlock.isTempBlock(block)) { + if (isMeltable(block) && !TempBlock.isTempBlock(block) && WaterManipulation.canPhysicsChange(block)) { if (block.getType() == Material.SNOW) { block.setType(Material.AIR); return; @@ -414,7 +415,11 @@ public class HeatControl extends FireAbility { @Override public boolean isHarmlessAbility() { - return this.heatControlType.equals(HeatControlType.COOK); + if (this.heatControlType != null) { + return this.heatControlType.equals(HeatControlType.COOK); + } else { + return false; + } } @Override diff --git a/src/com/projectkorra/projectkorra/util/BlockSource.java b/src/com/projectkorra/projectkorra/util/BlockSource.java index 94ebe95f..1a7b6c7b 100644 --- a/src/com/projectkorra/projectkorra/util/BlockSource.java +++ b/src/com/projectkorra/projectkorra/util/BlockSource.java @@ -5,6 +5,7 @@ import com.projectkorra.projectkorra.ability.CoreAbility; import com.projectkorra.projectkorra.ability.EarthAbility; import com.projectkorra.projectkorra.ability.WaterAbility; import com.projectkorra.projectkorra.configuration.ConfigManager; +import com.projectkorra.projectkorra.waterbending.ice.PhaseChange; import org.bukkit.Location; import org.bukkit.Material; @@ -60,7 +61,7 @@ public class BlockSource { if (coreAbil instanceof WaterAbility) { Block waterBlock = WaterAbility.getWaterSourceBlock(player, MAX_RANGE, true); - if (waterBlock != null && !TempBlock.isTempBlock(waterBlock)) { + if (waterBlock != null) { putSource(player, waterBlock, BlockSourceType.WATER, clickType); if (WaterAbility.isPlant(waterBlock)) { putSource(player, waterBlock, BlockSourceType.PLANT, clickType); @@ -163,7 +164,7 @@ public class BlockSource { public static Block getSourceBlock(Player player, double range, BlockSourceType sourceType, ClickType clickType) { BlockSourceInformation info = getValidBlockSourceInformation(player, range, sourceType, clickType); if (info != null) { - if (TempBlock.isTempBlock(info.getBlock())) { + if (TempBlock.isTempBlock(info.getBlock()) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(info.getBlock()))) { return null; } return info.getBlock(); @@ -266,7 +267,10 @@ public class BlockSource { if (allowSnow && sourceBlock == null) { sourceBlock = getSourceBlock(player, range, BlockSourceType.SNOW, clickType); } - if (sourceBlock != null && !sourceBlock.getType().equals(Material.AIR) && (WaterAbility.isWater(sourceBlock) || WaterAbility.isPlant(sourceBlock) || WaterAbility.isSnow(sourceBlock) || WaterAbility.isIce(sourceBlock)) && !TempBlock.isTempBlock(sourceBlock)) { + if (sourceBlock != null && !sourceBlock.getType().equals(Material.AIR) && (WaterAbility.isWater(sourceBlock) || WaterAbility.isPlant(sourceBlock) || WaterAbility.isSnow(sourceBlock) || WaterAbility.isIce(sourceBlock))) { + if (TempBlock.isTempBlock(sourceBlock) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(sourceBlock))) { + return null; + } return sourceBlock; } return null; diff --git a/src/com/projectkorra/projectkorra/waterbending/WaterManipulation.java b/src/com/projectkorra/projectkorra/waterbending/WaterManipulation.java index 6461d761..309bcc64 100644 --- a/src/com/projectkorra/projectkorra/waterbending/WaterManipulation.java +++ b/src/com/projectkorra/projectkorra/waterbending/WaterManipulation.java @@ -416,8 +416,6 @@ public class WaterManipulation extends WaterAbility { return false; } else if (SurgeWave.isBlockWave(to) || SurgeWave.isBlockWave(from)) { return false; - } else if (TempBlock.isTempBlock(to) || TempBlock.isTempBlock(from)) { - return false; } else if (isAdjacentToFrozenBlock(to) || isAdjacentToFrozenBlock(from)) { return false; } @@ -435,9 +433,7 @@ public class WaterManipulation extends WaterAbility { return false; } else if (SurgeWave.isBlockWave(block)) { return false; - } else if (TempBlock.isTempBlock(block)) { - return false; - } else if (TempBlock.isTouchingTempBlock(block)) { + } else if (TempBlock.isTempBlock(block) && !PhaseChange.getFrozenBlocksAsTempBlock().contains(TempBlock.get(block))) { return false; } return true;