From 9a50caf0b42828b5d296d9f18a1911a16a404fd5 Mon Sep 17 00:00:00 2001 From: plushmonkey Date: Tue, 28 Apr 2020 13:05:41 -0400 Subject: [PATCH] Improve WaterGimbal sourcing - Add option for snow sourcing. - Use PlantRegrowth to regenerate plants. - Thaw any sourced PhaseChange blocks so it doesn't leave behind a hole. - Increase version to 2.9.4. --- pom.xml | 2 +- .../waterbending/combo/WaterGimbal.java | 33 ++++++++++++++----- .../jedcore/configuration/JedCoreConfig.java | 1 + 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index ff10078..2820f99 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.jedk1 jedcore - 2.9.3-Spigot1.15-PK1.8.9 + 2.9.4-Spigot1.15-PK1.8.9 jar JedCore diff --git a/src/com/jedk1/jedcore/ability/waterbending/combo/WaterGimbal.java b/src/com/jedk1/jedcore/ability/waterbending/combo/WaterGimbal.java index 2e794fd..6eb5c12 100644 --- a/src/com/jedk1/jedcore/ability/waterbending/combo/WaterGimbal.java +++ b/src/com/jedk1/jedcore/ability/waterbending/combo/WaterGimbal.java @@ -9,6 +9,7 @@ import com.projectkorra.projectkorra.GeneralMethods; import com.projectkorra.projectkorra.ability.AddonAbility; import com.projectkorra.projectkorra.ability.ComboAbility; +import com.projectkorra.projectkorra.ability.ElementalAbility; import com.projectkorra.projectkorra.ability.WaterAbility; import com.projectkorra.projectkorra.ability.util.ComboManager.AbilityInformation; import com.projectkorra.projectkorra.util.BlockSource; @@ -17,6 +18,8 @@ import com.projectkorra.projectkorra.waterbending.OctopusForm; import com.projectkorra.projectkorra.waterbending.Torrent; +import com.projectkorra.projectkorra.waterbending.ice.PhaseChange; +import com.projectkorra.projectkorra.waterbending.plant.PlantRegrowth; import com.projectkorra.projectkorra.waterbending.util.WaterReturn; import org.bukkit.Location; import org.bukkit.Material; @@ -45,7 +48,8 @@ public class WaterGimbal extends WaterAbility implements AddonAbility, ComboAbil private double damage; private double speed; private int animspeed; - private boolean plant; + private boolean plantSourcing; + private boolean snowSourcing; private boolean requireAdjacentPlants; private boolean canUseBottle; private double abilityCollisionRadius; @@ -106,7 +110,8 @@ public void setFields() { damage = config.getDouble("Abilities.Water.WaterCombo.WaterGimbal.Damage"); speed = config.getDouble("Abilities.Water.WaterCombo.WaterGimbal.Speed"); animspeed = config.getInt("Abilities.Water.WaterCombo.WaterGimbal.AnimationSpeed"); - plant = config.getBoolean("Abilities.Water.WaterCombo.WaterGimbal.PlantSource"); + plantSourcing = config.getBoolean("Abilities.Water.WaterCombo.WaterGimbal.PlantSource"); + snowSourcing = config.getBoolean("Abilities.Water.WaterCombo.WaterGimbal.SnowSource"); requireAdjacentPlants = config.getBoolean("Abilities.Water.WaterCombo.WaterGimbal.RequireAdjacentPlants"); canUseBottle = config.getBoolean("Abilities.Water.WaterCombo.WaterGimbal.BottleSource"); abilityCollisionRadius = config.getDouble("Abilities.Water.WaterCombo.WaterGimbal.AbilityCollisionRadius"); @@ -167,20 +172,32 @@ public void progress() { } private boolean grabSource() { - sourceblock = BlockSource.getWaterSourceBlock(player, sourcerange, ClickType.SHIFT_DOWN, true, true, plant); + sourceblock = BlockSource.getWaterSourceBlock(player, sourcerange, ClickType.SHIFT_DOWN, true, true, plantSourcing, snowSourcing, false); if (sourceblock != null) { - if (isPlant(sourceblock)) { - if (!requireAdjacentPlants || JCMethods.isAdjacentToThreeOrMoreSources(sourceblock, sourceblock.getType())) { + // All of these extra checks need to be done because PK sourcing system is buggy. + boolean usingSnow = snowSourcing && (sourceblock.getType() == Material.SNOW_BLOCK || sourceblock.getType() == Material.SNOW); + + if (isPlant(sourceblock) || usingSnow) { + if (usingSnow || !requireAdjacentPlants || JCMethods.isAdjacentToThreeOrMoreSources(sourceblock, sourceblock.getType())) { playFocusWaterEffect(sourceblock); sourceloc = sourceblock.getLocation(); + + new PlantRegrowth(this.player, sourceblock); sourceblock.setType(Material.AIR); + return true; } - } else { - if (GeneralMethods.isAdjacentToThreeOrMoreSources(sourceblock, false) || (TempBlock.isTempBlock(sourceblock) && WaterAbility.isBendableWaterTempBlock(sourceblock))) { + } else if (!ElementalAbility.isSnow(sourceblock)) { + boolean isTempBlock = TempBlock.isTempBlock(sourceblock); + + if (GeneralMethods.isAdjacentToThreeOrMoreSources(sourceblock, false) || (isTempBlock && WaterAbility.isBendableWaterTempBlock(sourceblock))) { playFocusWaterEffect(sourceblock); sourceloc = sourceblock.getLocation(); - sourceblock.setType(Material.AIR); + + if (isTempBlock) { + PhaseChange.thaw(sourceblock); + } + return true; } } diff --git a/src/com/jedk1/jedcore/configuration/JedCoreConfig.java b/src/com/jedk1/jedcore/configuration/JedCoreConfig.java index fbef5dc..f25dec8 100644 --- a/src/com/jedk1/jedcore/configuration/JedCoreConfig.java +++ b/src/com/jedk1/jedcore/configuration/JedCoreConfig.java @@ -836,6 +836,7 @@ private void loadConfigCore() { config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.Speed", 2); config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.AnimationSpeed", 3); config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.PlantSource", true); + config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.SnowSource", true); config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.RequireAdjacentPlants", true); config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.BottleSource", false); config.addDefault("Abilities.Water.WaterCombo.WaterGimbal.AbilityCollisionRadius", 1.6);