diff --git a/src/com/projectkorra/ProjectKorra/Commands.java b/src/com/projectkorra/ProjectKorra/Commands.java index 8d09b4be..b33cce50 100644 --- a/src/com/projectkorra/ProjectKorra/Commands.java +++ b/src/com/projectkorra/ProjectKorra/Commands.java @@ -102,6 +102,9 @@ public class Commands { BendingPlayer bPlayer = Methods.getBendingPlayer(s.getName()); if (args.length == 1) { bPlayer.abilities.clear(); + for (int i = 1; i <= 9; i++) { + Methods.saveAbility(bPlayer, i, null); + } s.sendMessage("Your bound abilities have been cleared."); return true; } @@ -114,6 +117,7 @@ public class Commands { } if (bPlayer.abilities.get(slot) != null) { bPlayer.abilities.remove(slot); + Methods.saveAbility(bPlayer, slot, null); } s.sendMessage("You have cleared slot #" + slot); return true; @@ -650,6 +654,7 @@ public class Commands { BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName()); Methods.removeUnusableAbilities(player.getName()); bPlayer.elements.clear(); + Methods.saveElements(bPlayer); s.sendMessage(ChatColor.GREEN + "You have removed the bending of " + ChatColor.DARK_AQUA + player.getName()); player.sendMessage(ChatColor.GREEN + "Your bending has been removed by " + ChatColor.DARK_AQUA + s.getName()); return true; @@ -677,7 +682,9 @@ public class Commands { BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName()); bPlayer.elements.clear(); Methods.removeUnusableAbilities(player.getName()); + Methods.saveElements(bPlayer); bPlayer.permaRemoved = true; + Methods.savePermaRemoved(bPlayer); player.sendMessage(ChatColor.RED + "Your bending has been permanently removed."); s.sendMessage(ChatColor.RED + "You have permanently removed the bending of: " + ChatColor.DARK_AQUA + player.getName()); return true; @@ -704,6 +711,7 @@ public class Commands { BendingPlayer bPlayer = Methods.getBendingPlayer(player.getName()); if (Arrays.asList(airaliases).contains(args[2].toLowerCase())) { bPlayer.addElement(Element.Air); + Methods.saveElements(bPlayer); player.sendMessage(Methods.getAirColor() + "You are also an Airbender."); s.sendMessage(ChatColor.DARK_AQUA + player.getName() + Methods.getAirColor() + " is also an Airbender."); return true; @@ -711,6 +719,7 @@ public class Commands { if (Arrays.asList(wateraliases).contains(args[2].toLowerCase())) { bPlayer.addElement(Element.Water); + Methods.saveElements(bPlayer); player.sendMessage(Methods.getWaterColor() + "You are also a waterbender."); s.sendMessage(ChatColor.DARK_AQUA + player.getName() + Methods.getWaterColor() + " is also a Waterbender."); return true; @@ -718,6 +727,7 @@ public class Commands { if (Arrays.asList(earthaliases).contains(args[2].toLowerCase())) { bPlayer.addElement(Element.Earth); + Methods.saveElements(bPlayer); player.sendMessage(Methods.getEarthColor() + "You are also an Earthbender."); s.sendMessage(ChatColor.DARK_AQUA + player.getName() + Methods.getEarthColor() + " is also an Earthbender."); return true; @@ -725,12 +735,14 @@ public class Commands { if (Arrays.asList(firealiases).contains(args[2].toLowerCase())) { bPlayer.addElement(Element.Fire); + Methods.saveElements(bPlayer); player.sendMessage(Methods.getFireColor() + "You are also a Firebender."); s.sendMessage(ChatColor.DARK_AQUA + player.getName() + Methods.getFireColor() + " is also a Firebender"); return true; } if (Arrays.asList(chialiases).contains(args[2].toLowerCase())) { bPlayer.addElement(Element.Chi); + Methods.saveElements(bPlayer); player.sendMessage(Methods.getChiColor() + "You are also a ChiBlocker."); s.sendMessage(ChatColor.DARK_AQUA + player.getName() + Methods.getChiColor() + " is also a ChiBlocker"); return true; @@ -755,29 +767,34 @@ public class Commands { if (Arrays.asList(airaliases).contains(args[1].toLowerCase())) { bPlayer.addElement(Element.Air); + Methods.saveElements(bPlayer); s.sendMessage(Methods.getAirColor() + "You are also an airbender."); return true; } if (Arrays.asList(wateraliases).contains(args[1].toLowerCase())) { bPlayer.addElement(Element.Water); + Methods.saveElements(bPlayer); s.sendMessage(Methods.getWaterColor() + "You are also a waterbender."); return true; } if (Arrays.asList(earthaliases).contains(args[1].toLowerCase())) { bPlayer.addElement(Element.Earth); + Methods.saveElements(bPlayer); s.sendMessage(Methods.getEarthColor() + "You are also an Earthbender."); return true; } if (Arrays.asList(firealiases).contains(args[1].toLowerCase())) { bPlayer.addElement(Element.Fire); + Methods.saveElements(bPlayer); s.sendMessage(Methods.getFireColor() + "You are also a Firebender."); return true; } if (Arrays.asList(chialiases).contains(args[1].toLowerCase())) { bPlayer.addElement(Element.Chi); + Methods.saveElements(bPlayer); s.sendMessage(Methods.getChiColor() + "You are also a ChiBlocker."); return true; } @@ -820,30 +837,35 @@ public class Commands { bPlayer.setElement(Element.Air); s.sendMessage(Methods.getAirColor() + "You are now an Airbender."); Methods.removeUnusableAbilities(s.getName()); + Methods.saveElements(bPlayer); return true; } if (Arrays.asList(wateraliases).contains(args[1].toLowerCase())) { bPlayer.setElement(Element.Water); s.sendMessage(Methods.getWaterColor() + "You are now a Waterbender."); Methods.removeUnusableAbilities(s.getName()); + Methods.saveElements(bPlayer); return true; } if (Arrays.asList(earthaliases).contains(args[1].toLowerCase())) { bPlayer.setElement(Element.Earth); s.sendMessage(Methods.getEarthColor() + "You are now an Earthbender."); Methods.removeUnusableAbilities(s.getName()); + Methods.saveElements(bPlayer); return true; } if (Arrays.asList(firealiases).contains(args[1].toLowerCase())) { bPlayer.setElement(Element.Fire); s.sendMessage(Methods.getFireColor() + "You are now a Firebender."); Methods.removeUnusableAbilities(s.getName()); + Methods.saveElements(bPlayer); return true; } if (Arrays.asList(chialiases).contains(args[1].toLowerCase())) { bPlayer.setElement(Element.Chi); s.sendMessage(Methods.getChiColor() + "You are now a ChiBlocker."); Methods.removeUnusableAbilities(s.getName()); + Methods.saveElements(bPlayer); return true; } s.sendMessage(ChatColor.GOLD + "Proper Usage: " + ChatColor.DARK_AQUA + "/bending choose [Element]"); @@ -879,6 +901,7 @@ public class Commands { } else { bTarget.setElement(e); Methods.removeUnusableAbilities(target.getName()); + Methods.saveElements(bTarget); target.sendMessage(ChatColor.RED + "Your bending has been changed to " + ChatColor.DARK_AQUA + e.toString() + ChatColor.RED + " by " + ChatColor.DARK_AQUA + s.getName()); return true; } diff --git a/src/com/projectkorra/ProjectKorra/Methods.java b/src/com/projectkorra/ProjectKorra/Methods.java index 81f2cfe4..1691a1f2 100644 --- a/src/com/projectkorra/ProjectKorra/Methods.java +++ b/src/com/projectkorra/ProjectKorra/Methods.java @@ -187,6 +187,8 @@ public class Methods { } else { player.sendMessage(getAvatarColor() + "Successfully bound " + ability + " to slot " + slot); } + + saveAbility(bPlayer, slot, ability); } /** @@ -216,6 +218,8 @@ public class Methods { } else { player.sendMessage(getAvatarColor() + "Successfully bound " + ability + " to slot " + slot); } + + saveAbility(bPlayer, slot, ability); } /** @@ -1577,9 +1581,9 @@ public class Methods { } public static void reloadPlugin() { - for (Player player: Bukkit.getOnlinePlayers()) { - Methods.saveBendingPlayer(player.getName()); - } +// for (Player player: Bukkit.getOnlinePlayers()) { +// Methods.saveBendingPlayer(player.getName()); +// } DBConnection.sql.close(); plugin.reloadConfig(); Methods.stopBending(); @@ -1748,29 +1752,36 @@ public class Methods { return rotate.multiply(Math.cos(angle)).add( thirdaxis.multiply(Math.sin(angle))); } - - public static void saveBendingPlayer(String player) { - BendingPlayer bPlayer = BendingPlayer.players.get(player); + + public static void saveElements(BendingPlayer bPlayer) { if (bPlayer == null) return; String uuid = bPlayer.uuid.toString(); - + StringBuilder elements = new StringBuilder(); if (bPlayer.hasElement(Element.Air)) elements.append("a"); if (bPlayer.hasElement(Element.Water)) elements.append("w"); if (bPlayer.hasElement(Element.Earth)) elements.append("e"); if (bPlayer.hasElement(Element.Fire)) elements.append("f"); if (bPlayer.hasElement(Element.Chi)) elements.append("c"); - - HashMap abilities = bPlayer.abilities; - - for (int i = 1; i <= 9; i++) { - DBConnection.sql.modifyQuery("UPDATE pk_players SET slot" + i +" = '" + (abilities.get(i) == null ? null : abilities.get(i)) + "' WHERE uuid = '" + uuid + "'"); - } - + DBConnection.sql.modifyQuery("UPDATE pk_players SET element = '" + elements + "' WHERE uuid = '" + uuid + "'"); + } + + public static void saveAbility(BendingPlayer bPlayer, int slot, String ability) { + if (bPlayer == null) return; + String uuid = bPlayer.uuid.toString(); + + HashMap abilities = bPlayer.abilities; + + DBConnection.sql.modifyQuery("UPDATE pk_players SET slot" + slot + " = '" + (abilities.get(slot) == null ? null : abilities.get(slot)) + "' WHERE uuid = '" + uuid + "'"); + } + + public static void savePermaRemoved(BendingPlayer bPlayer) { + if (bPlayer == null) return; + String uuid = bPlayer.uuid.toString(); + boolean permaRemoved = bPlayer.permaRemoved; - - DBConnection.sql.modifyQuery("UPDATE pk_players SET permaremoved = '" + (permaRemoved ? "true" : "false") +"' WHERE uuid = '" + uuid + "'"); + DBConnection.sql.modifyQuery("UPDATE pk_players SET permaremoved = '" + (permaRemoved ? "true" : "false") + "' WHERE uuid = '" + uuid + "'"); } public static void stopBending() { diff --git a/src/com/projectkorra/ProjectKorra/PKListener.java b/src/com/projectkorra/ProjectKorra/PKListener.java index 7fc84b75..267e3a33 100644 --- a/src/com/projectkorra/ProjectKorra/PKListener.java +++ b/src/com/projectkorra/ProjectKorra/PKListener.java @@ -304,7 +304,7 @@ public class PKListener implements Listener { @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { - Methods.saveBendingPlayer(event.getPlayer().getName()); +// Methods.saveBendingPlayer(event.getPlayer().getName()); BendingPlayer.players.remove(event.getPlayer().getName()); if (EarthArmor.instances.containsKey(event.getPlayer())) { EarthArmor.removeEffect(event.getPlayer()); diff --git a/src/com/projectkorra/ProjectKorra/ProjectKorra.java b/src/com/projectkorra/ProjectKorra/ProjectKorra.java index c4a59900..bfb73c4f 100644 --- a/src/com/projectkorra/ProjectKorra/ProjectKorra.java +++ b/src/com/projectkorra/ProjectKorra/ProjectKorra.java @@ -66,9 +66,9 @@ public class ProjectKorra extends JavaPlugin { @Override public void onDisable() { - for (Player player: Bukkit.getOnlinePlayers()) { - Methods.saveBendingPlayer(player.getName()); - } +// for (Player player: Bukkit.getOnlinePlayers()) { +// Methods.saveBendingPlayer(player.getName()); +// } Methods.stopBending(); DBConnection.sql.close(); }