From 4ccbd9b106e1f63242f1cbb917edf24a669223bd Mon Sep 17 00:00:00 2001 From: runefist Date: Sun, 21 Sep 2014 23:45:16 +0200 Subject: [PATCH] StockAbility Checker and small clean up Check if there is already a stockability enabled or if there is one when someone makes a new (fan made) ability. this allows you to create ability with same name as default ones as long as you turn off the default one. Also cleaned up some small parts, and will clean up the command class in feature --- .../Ability/AbilityModuleManager.java | 19 ++++++--- .../projectkorra/ProjectKorra/Commands.java | 5 ++- .../projectkorra/ProjectKorra/Methods.java | 41 ++++++++----------- .../projectkorra/ProjectKorra/PKListener.java | 6 ++- 4 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/com/projectkorra/ProjectKorra/Ability/AbilityModuleManager.java b/src/com/projectkorra/ProjectKorra/Ability/AbilityModuleManager.java index 8259290f..b36d753c 100644 --- a/src/com/projectkorra/ProjectKorra/Ability/AbilityModuleManager.java +++ b/src/com/projectkorra/ProjectKorra/Ability/AbilityModuleManager.java @@ -19,6 +19,7 @@ public class AbilityModuleManager { private final AbilityLoader loader; public static HashSet abilities; + public static HashSet disabledStockAbilities; public static List waterbendingabilities; public static List airbendingabilities; public static List earthbendingabilities; @@ -143,11 +144,19 @@ public class AbilityModuleManager { } } for (AbilityModule ab: ability) { - if (abilities.contains(ab.getName())) { - continue; - } - ab.onThisLoad(); - abilities.add(ab.getName()); + //To check if EarthBlast == Earthblast or for example, EarthBlast == EARTHBLAST + for(String enabledAbility : abilities){ + if(enabledAbility.equalsIgnoreCase(ab.getName())){ + continue; + } + } + ab.onThisLoad(); + abilities.add(ab.getName()); + for (StockAbilities a: StockAbilities.values()) { + if (a.name().equalsIgnoreCase(ab.getName())){ + disabledStockAbilities.add(a.name()); + } + } if (ab.getElement() == Element.Air.toString()) airbendingabilities.add(ab.getName()); if (ab.getElement() == Element.Water.toString()) waterbendingabilities.add(ab.getName()); if (ab.getElement() == Element.Earth.toString()) earthbendingabilities.add(ab.getName()); diff --git a/src/com/projectkorra/ProjectKorra/Commands.java b/src/com/projectkorra/ProjectKorra/Commands.java index 6b922522..230d6fcc 100644 --- a/src/com/projectkorra/ProjectKorra/Commands.java +++ b/src/com/projectkorra/ProjectKorra/Commands.java @@ -87,7 +87,10 @@ public class Commands { exe = new CommandExecutor() { @Override public boolean onCommand(CommandSender s, Command c, String label, String[] args) { - if (args.length == 0) { + for(int i = 0; i < args.length; i++){ + args[i] = args[i].toLowerCase(); + } + if (args.length == 0) { s.sendMessage(ChatColor.RED + "/bending help [Ability/Command] " + ChatColor.YELLOW + "Display help."); s.sendMessage(ChatColor.RED + "/bending choose [Element] " + ChatColor.YELLOW + "Choose an element."); s.sendMessage(ChatColor.RED + "/bending bind [Ability] # " + ChatColor.YELLOW + "Bind an ability."); diff --git a/src/com/projectkorra/ProjectKorra/Methods.java b/src/com/projectkorra/ProjectKorra/Methods.java index 1b866fec..cdb4e8d9 100644 --- a/src/com/projectkorra/ProjectKorra/Methods.java +++ b/src/com/projectkorra/ProjectKorra/Methods.java @@ -143,9 +143,20 @@ public class Methods { * @return true if ability exists */ public static boolean abilityExists(String string) { - if (getAbility(string) == null) return false; - return true; + for (String st: AbilityModuleManager.abilities) { + if (string.equalsIgnoreCase(st)) + return true; + } + return false; } + + public static boolean isDisabledStockAbility(String string){ + for (String st : AbilityModuleManager.disabledStockAbilities){ + if (string.equalsIgnoreCase(st)) + return true; + } + return false; + } public static void addTempAirBlock(Block block) { if (movedearth.containsKey(block)) { @@ -173,27 +184,7 @@ public class Methods { */ public static void bindAbility(Player player, String ability) { int slot = player.getInventory().getHeldItemSlot() + 1; - BendingPlayer bPlayer = getBendingPlayer(player.getName()); - bPlayer.getAbilities().put(slot, ability); - if (isAirAbility(ability)) { - player.sendMessage(getAirColor() + "Succesfully bound " + ability + " to slot " + slot); - } - else if (isWaterAbility(ability)) { - player.sendMessage(getWaterColor() + "Succesfully bound " + ability + " to slot " + slot); - } - else if (isEarthAbility(ability)) { - player.sendMessage(getEarthColor() + "Succesfully bound " + ability + " to slot " + slot); - } - else if (isFireAbility(ability)) { - player.sendMessage(getFireColor() + "Succesfully bound " + ability + " to slot " + slot); - } - else if (isChiAbility(ability)) { - player.sendMessage(getChiColor() + "Succesfully bound " + ability + " to slot " + slot); - } else { - player.sendMessage(getAvatarColor() + "Successfully bound " + ability + " to slot " + slot); - } - - saveAbility(bPlayer, slot, ability); + bindAbility(player,ability, slot); } /** @@ -951,7 +942,9 @@ public class Methods { if (isRegionProtectedFromBuild(player, "IceBlast", location)) continue; if (isIcebendable(block)) { - return block; + if (TempBlock.isTempBlock(block)) + continue; + return block; } } return null; diff --git a/src/com/projectkorra/ProjectKorra/PKListener.java b/src/com/projectkorra/ProjectKorra/PKListener.java index 5b94b349..ad2e4248 100644 --- a/src/com/projectkorra/ProjectKorra/PKListener.java +++ b/src/com/projectkorra/ProjectKorra/PKListener.java @@ -351,7 +351,8 @@ public class PKListener implements Listener { } if (!player.isSneaking() && Methods.canBend(player.getName(), abil)) { - + if (Methods.isDisabledStockAbility(abil)) + return; if (Methods.isAirAbility(abil)) { if (Methods.isWeapon(player.getItemInHand().getType()) && !plugin.getConfig().getBoolean("Properties.Air.CanBendWithWeapons")) { return; @@ -687,7 +688,8 @@ public class PKListener implements Listener { String abil = Methods.getBoundAbility(player); if (abil == null) return; if (Methods.canBend(player.getName(), abil)) { - + if (Methods.isDisabledStockAbility(abil)) + return; if (Methods.isAirAbility(abil)) { if (Methods.isWeapon(player.getItemInHand().getType()) && !plugin.getConfig().getBoolean("Properties.Air.CanBendWithWeapons")) {