diff --git a/src/main/java/com/gmail/nossr50/api/PartyAPI.java b/src/main/java/com/gmail/nossr50/api/PartyAPI.java index 81217d23e..d731e6af1 100644 --- a/src/main/java/com/gmail/nossr50/api/PartyAPI.java +++ b/src/main/java/com/gmail/nossr50/api/PartyAPI.java @@ -100,5 +100,26 @@ public class PartyAPI { return Party.getInstance().getPartyMembers(player); } - + /** + * Add a player to a party. + *
+ * This function is designed for API usage. + * + * @param player The player to add to the party + * @param partyName The party to add the player to + */ + public void addToParty(Player player, String partyName) { + Party.getInstance().addToParty(player, Users.getProfile(player), partyName, false, null); + } + + /** + * Remove a player from a party. + *
+ * This function is designed for API usage. + * + * @param player The player to remove + */ + public void removeFromParty(Player player) { + Party.getInstance().removeFromParty(player, Users.getProfile(player)); + } } diff --git a/src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java b/src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java index d868de26e..cc1520461 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/AcceptCommand.java @@ -54,7 +54,7 @@ public class AcceptCommand implements CommandExecutor { } } PP.acceptInvite(); - Pinstance.addToParty(player, PP, PP.getParty(), true); + Pinstance.addToParty(player, PP, PP.getParty(), true, null); } else { player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites")); diff --git a/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java index 70dd038ed..c63aaaaaf 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/PartyCommand.java @@ -35,7 +35,7 @@ public class PartyCommand implements CommandExecutor { Party Pinstance = Party.getInstance(); if (PP.inParty() && (!Pinstance.isParty(PP.getParty()) || !Pinstance.isInParty(player, PP))) { - Pinstance.addToParty(player, PP, PP.getParty(), false); + Pinstance.addToParty(player, PP, PP.getParty(), false, null); } if (args.length == 0 && !PP.inParty()) { @@ -48,7 +48,7 @@ public class PartyCommand implements CommandExecutor { int x = 0; for (Player p : Bukkit.getServer().getOnlinePlayers()) { if (PP.getParty().equals(Users.getProfile(p).getParty())) { - if (p != null && x + 1 >= Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) { + if (p != null && x + 1 >= Pinstance.partyCount(player)) { if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) { tempList += ChatColor.GOLD + p.getName(); x++; @@ -57,7 +57,7 @@ public class PartyCommand implements CommandExecutor { x++; } } - if (p != null && x < Pinstance.partyCount(player, Bukkit.getServer().getOnlinePlayers())) { + if (p != null && x < Pinstance.partyCount(player)) { if (Pinstance.isPartyLeader(p.getName(), PP.getParty())) { tempList += ChatColor.GOLD + p.getName() + ", "; x++; @@ -175,7 +175,7 @@ public class PartyCommand implements CommandExecutor { return true; } } - Pinstance.addToParty(player, PP, args[0], false); + Pinstance.addToParty(player, PP, args[0], false, null); return true; } } else if (args.length == 2 && PP.inParty()) { diff --git a/src/main/java/com/gmail/nossr50/party/Party.java b/src/main/java/com/gmail/nossr50/party/Party.java index d34b51d14..9d09e5fe9 100644 --- a/src/main/java/com/gmail/nossr50/party/Party.java +++ b/src/main/java/com/gmail/nossr50/party/Party.java @@ -20,240 +20,252 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.locale.mcLocale; - public class Party { - /* - * This file is part of mmoMinecraft (http://code.google.com/p/mmo-minecraft/). - * - * mmoMinecraft is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + /* + * This file is part of mmoMinecraft (http://code.google.com/p/mmo-minecraft/). + * + * mmoMinecraft is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - - public static String partyPlayersFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPlayers"; - public static String partyLocksFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyLocks"; - public static String partyPasswordsFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPasswords"; + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ - HashMap> partyPlayers = new HashMap>(); - HashMap partyLocks = new HashMap(); - HashMap partyPasswords = new HashMap(); - - private static mcMMO plugin; - public Party(mcMMO instance) { - new File(mcMMO.maindirectory + File.separator + "FlatFileStuff").mkdir(); - plugin = instance; + public static String partyPlayersFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPlayers"; + public static String partyLocksFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyLocks"; + public static String partyPasswordsFile = mcMMO.maindirectory + File.separator + "FlatFileStuff" + File.separator + "partyPasswords"; + + HashMap> partyPlayers = new HashMap>(); + HashMap partyLocks = new HashMap(); + HashMap partyPasswords = new HashMap(); + + private static mcMMO plugin; + private static volatile Party instance; + + public Party(mcMMO instance) { + new File(mcMMO.maindirectory + File.separator + "FlatFileStuff").mkdir(); + plugin = instance; } - private static volatile Party instance; - - public static Party getInstance() - { - if (instance == null) { - instance = new Party(plugin); - } - return instance; + + public static Party getInstance() { + if (instance == null) { + instance = new Party(plugin); + } + return instance; } - + + /** + * Check if two players are in the same party. + * + * @param playera The first player + * @param playerb The second player + * @return true if they are in the same party, false otherwise + */ public boolean inSameParty(Player playera, Player playerb){ - if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()) - { - if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())) - { - return true; - } else - { - return false; - } - } else - { - return false; - } - } - - public int partyCount(Player player, Player[] players) - { - int x = 0; - for(Player hurrdurr : players) - { - if(player != null && hurrdurr != null) - { - if(Users.getProfile(player).getParty().equals(Users.getProfile(hurrdurr).getParty())) - x++; - } + PlayerProfile PPa = Users.getProfile(playera); + PlayerProfile PPb = Users.getProfile(playerb); + + if ((PPa.inParty() && PPb.inParty()) && (PPa.getParty().equals(PPb.getParty()))) { + return true; + } + else { + return false; } - return x; } - - public void informPartyMembers(Player player) - { - informPartyMembers(player, Bukkit.getServer().getOnlinePlayers()); + + /** + * Get the number of players in this player's party. + * + * @param player The player to check + * @param players A list of players to + * @return the number of players in this player's party + */ + public int partyCount(Player player) { + PlayerProfile PP = Users.getProfile(player); + int partyMembers = 0; + + for (Player p : Bukkit.getServer().getOnlinePlayers()) { + if (player != null && p != null) { //Is this even possible? + if (PP.getParty().equals(Users.getProfile(p).getParty())) { + partyMembers++; + } + } + } + + return partyMembers; } - - - public void informPartyMembers(Player player, Player[] players) - { - for(Player p : players) - { - if(player != null && p != null) - { - if(inSameParty(player, p) && !p.getName().equals(player.getName())) - { - p.sendMessage(mcLocale.getString("Party.InformedOnJoin", new Object[] {player.getName()})); + + private void informPartyMembers(Player player) { + String playerName = player.getName(); + + for (Player p : Bukkit.getServer().getOnlinePlayers()) { + if (player != null && p != null) { + if (inSameParty(player, p) && !p.getName().equals(playerName)) { + p.sendMessage(mcLocale.getString("Party.InformedOnJoin", new Object[] {playerName})); } } } } - - public ArrayList getPartyMembers(Player player) - { - ArrayList players = new ArrayList(); - - for(Player p : Bukkit.getServer().getOnlinePlayers()) - { - if(p.isOnline() && player != null && p != null) - { - if(inSameParty(player, p) && !p.getName().equals(player.getName())) - { - players.add(p); + + /** + * Get a list of all players in this player's party. + * + * @param player The player to check + * @return all the players in the player's party + */ + public ArrayList getPartyMembers(Player player) { + ArrayList players = new ArrayList(); + + for (Player p : Bukkit.getServer().getOnlinePlayers()) { + if (p.isOnline() && player != null && p != null) { + if (inSameParty(player, p) && !p.getName().equals(player.getName())) { + players.add(p); } } } - return players; - } - - public void informPartyMembersOwnerChange(String newOwner) { - Player newOwnerPlayer = plugin.getServer().getPlayer(newOwner); - informPartyMembersOwnerChange(newOwnerPlayer, Bukkit.getServer().getOnlinePlayers()); - } - - public void informPartyMembersOwnerChange(Player newOwner, Player[] players) { - for(Player p : players){ - if(newOwner != null && p != null){ - if(inSameParty(newOwner, p)) - { - p.sendMessage(newOwner.getName()+" is the new party owner."); //TODO: Needs more locale - } - } - } - } - - public void informPartyMembersQuit(Player player) - { - informPartyMembersQuit(player, Bukkit.getServer().getOnlinePlayers()); - } - - public void informPartyMembersQuit(Player player, Player[] players) - { - for(Player p : players){ - if(player != null && p != null){ - if(inSameParty(player, p) && !p.getName().equals(player.getName())) - { - p.sendMessage(mcLocale.getString("Party.InformedOnQuit", new Object[] {player.getName()})); - } - } - } - } - - public void removeFromParty(Player player, PlayerProfile PP) - { - //Stop NPE... hopefully - if(!isParty(PP.getParty()) || !isInParty(player, PP)) - addToParty(player, PP, PP.getParty(), false); - - informPartyMembersQuit(player); - String party = PP.getParty(); - if(isPartyLeader(player.getName(), party)) - { - if(isPartyLocked(party)) { - unlockParty(party); - } - } - - this.partyPlayers.get(party).remove(player.getName()); - if(isPartyEmpty(party)) deleteParty(party); - PP.removeParty(); - savePartyPlayers(); - } - - public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite) { - newParty = newParty.replace(":", "."); - addToParty(player, PP, newParty, invite, null); + return players; } - - public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite, String password) - { - //Fix for FFS - newParty = newParty.replace(":", "."); - - //Don't care about passwords on invites - if(!invite) - { - //Don't care about passwords if it isn't locked - if(isPartyLocked(newParty)) - { - if(isPartyPasswordProtected(newParty)) - { - if(password == null) - { - player.sendMessage("This party requires a password. Use /party to join it."); //TODO: Needs more locale. - return; - } else if(!password.equalsIgnoreCase(getPartyPassword(newParty))) - { - player.sendMessage("Party password incorrect."); //TODO: Needs more locale. - return; - } - } else - { - player.sendMessage("Party is locked."); //TODO: Needs more locale. - return; - } - } - } else - { - PP.acceptInvite(); - } - //New party? - if(!isParty(newParty)) - { - putNestedEntry(this.partyPlayers, newParty, player.getName(), true); - - //Get default locking behavior from config? - this.partyLocks.put(newParty, false); - this.partyPasswords.put(newParty, null); - saveParties(); - } else - { - putNestedEntry(this.partyPlayers, newParty, player.getName(), false); + /** + * Notify party members when the party owner changes. + * + * @param newOwnerName The name of the new party owner + */ + private void informPartyMembersOwnerChange(String newOwnerName) { + Player newOwner = plugin.getServer().getPlayer(newOwnerName); - savePartyPlayers(); - } - PP.setParty(newParty); - informPartyMembers(player); - - if(!invite) - { - player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[] { newParty })); - } else - { - player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{ PP.getParty() })); - } + for (Player p : Bukkit.getServer().getOnlinePlayers()){ + if (newOwner != null && p != null) { + if (inSameParty(newOwner, p)) { + p.sendMessage(newOwnerName + " is the new party owner."); //TODO: Needs more locale + } + } + } } - - private static W putNestedEntry( - HashMap> nest, - U nestKey, - V nestedKey, - W nestedValue) - { + + /** + * Notify party members when the a party member quits. + * + * @param player The player that quit + */ + private void informPartyMembersQuit(Player player) { + String playerName = player.getName(); + + for (Player p : Bukkit.getServer().getOnlinePlayers()){ + if (player != null && p != null){ + if (inSameParty(player, p) && !p.getName().equals(playerName)) { + p.sendMessage(mcLocale.getString("Party.InformedOnQuit", new Object[] {playerName})); + } + } + } + } + + /** + * Remove a player from a party. + * + * @param player The player to remove + * @param PP The profile of the player to remove + */ + public void removeFromParty(Player player, PlayerProfile PP) { + String party = PP.getParty(); + String playerName = player.getName(); + + //Stop NPE... hopefully + if (!isParty(party) || !isInParty(player, PP)) { + addToParty(player, PP, party, false, null); + } + + informPartyMembersQuit(player); + + if (isPartyLeader(playerName, party)) { + if (isPartyLocked(party)) { + unlockParty(party); + } + } + + partyPlayers.get(party).remove(playerName); + + if (isPartyEmpty(party)) { + deleteParty(party); + } + + PP.removeParty(); + savePartyFile(partyPlayersFile, partyPlayers); + } + + /** + * Add a player to a party. + * + * @param player The player to add to the party + * @param PP The profile of the player to add to the party + * @param newParty The party to add the player to + * @param invite true if the player was invited to this party, false otherwise + * @param password the password for this party, null if there was no password + */ + public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite, String password) { + String playerName = player.getName(); + + //Fix for FFS + newParty = newParty.replace(":", "."); + + //Don't care about passwords on invites + if (!invite) { + + //Don't care about passwords if it isn't locked + if (isPartyLocked(newParty)) { + if (isPartyPasswordProtected(newParty)) { + if (password == null) { + player.sendMessage("This party requires a password. Use /party to join it."); //TODO: Needs more locale. + return; + } + else if(!password.equalsIgnoreCase(getPartyPassword(newParty))) { + player.sendMessage("Party password incorrect."); //TODO: Needs more locale. + return; + } + } + else { + player.sendMessage("Party is locked."); //TODO: Needs more locale. + return; + } + } + } + else { + PP.acceptInvite(); + } + + //New party? + if (!isParty(newParty)) { + putNestedEntry(partyPlayers, newParty, playerName, true); + + //Get default locking behavior from config? + partyLocks.put(newParty, false); + partyPasswords.put(newParty, null); + saveParties(); + } + else { + putNestedEntry(partyPlayers, newParty, playerName, false); + savePartyFile(partyPlayersFile, partyPlayers); + } + + PP.setParty(newParty); + informPartyMembers(player); + + if (!invite) { + player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[]{ newParty })); + } + else { + player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{ PP.getParty() })); + } + } + + private static W putNestedEntry(HashMap> nest, U nestKey, V nestedKey, W nestedValue) { HashMap nested = nest.get(nestKey); if (nested == null) { @@ -261,175 +273,310 @@ public class Party { nest.put(nestKey, nested); } - return nested.put(nestedKey, nestedValue); + return nested.put(nestedKey, nestedValue); } - - public void dump(Player player) { - player.sendMessage(partyPlayers.toString()); - player.sendMessage(partyLocks.toString()); - player.sendMessage(partyPasswords.toString()); - Iterator i = partyPlayers.keySet().iterator(); - while(i.hasNext()) { - String nestkey = i.next(); - player.sendMessage(nestkey); - Iterator j = partyPlayers.get(nestkey).keySet().iterator(); - while(j.hasNext()) { - String nestedkey = j.next(); - player.sendMessage("."+nestedkey); - if(partyPlayers.get(nestkey).get(nestedkey)) { - player.sendMessage("..True"); - } else { - player.sendMessage("..False"); - } - } - } + + /* + * Any reason why we need to keep this function around? + */ + private void dump(Player player) { + player.sendMessage(partyPlayers.toString()); + player.sendMessage(partyLocks.toString()); + player.sendMessage(partyPasswords.toString()); + Iterator i = partyPlayers.keySet().iterator(); + while(i.hasNext()) { + String nestkey = i.next(); + player.sendMessage(nestkey); + Iterator j = partyPlayers.get(nestkey).keySet().iterator(); + while(j.hasNext()) { + String nestedkey = j.next(); + player.sendMessage("."+nestedkey); + if(partyPlayers.get(nestkey).get(nestedkey)) { + player.sendMessage("..True"); + } else { + player.sendMessage("..False"); + } + } + } } - + + /** + * Lock a party. + * + * @param partyName The party to lock + */ public void lockParty(String partyName) { - this.partyLocks.put(partyName, true); - savePartyLocks(); + partyLocks.put(partyName, true); + savePartyFile(partyLocksFile, partyLocks); } - + + /** + * Unlock a party. + * + * @param partyName The party to unlock + */ public void unlockParty(String partyName) { - this.partyLocks.put(partyName, false); - savePartyLocks(); + partyLocks.put(partyName, false); + savePartyFile(partyLocksFile, partyLocks); } - + + /** + * Delete a party. + * + * @param partyName The party to delete + */ private void deleteParty(String partyName) { - this.partyPlayers.remove(partyName); - this.partyLocks.remove(partyName); - this.partyPasswords.remove(partyName); - saveParties(); + partyPlayers.remove(partyName); + partyLocks.remove(partyName); + partyPasswords.remove(partyName); + saveParties(); } - + + /** + * Set the password for a party. + * + * @param partyName The party name + * @param password The new party password + */ public void setPartyPassword(String partyName, String password) { - if(password.equalsIgnoreCase("\"\"")) password = null; - this.partyPasswords.put(partyName, password); - savePartyPasswords(); + if (password.equalsIgnoreCase("\"\"")) { //What's with that password string? + password = null; + } + + partyPasswords.put(partyName, password); + savePartyFile(partyPasswordsFile, partyPasswords); } - + + /** + * Set the leader of a party. + * + * @param partyName The party name + * @param playerName The name of the player to set as leader + */ public void setPartyLeader(String partyName, String playerName) { - Iterator i = partyPlayers.get(partyName).keySet().iterator(); - while(i.hasNext()) { - String playerKey = i.next(); - if(playerKey.equalsIgnoreCase(playerName)) { - partyPlayers.get(partyName).put(playerName, true); - informPartyMembersOwnerChange(playerName); - plugin.getServer().getPlayer(playerName).sendMessage("You are now the party owner."); //TODO: Needs more locale. - continue; - } - if(partyPlayers.get(partyName).get(playerKey)) { - plugin.getServer().getPlayer(playerKey).sendMessage("You are no longer party owner."); //TODO: Needs more locale. - partyPlayers.get(partyName).put(playerKey, false); - } - } + for (String name : partyPlayers.get(partyName).keySet()) { + if (name.equalsIgnoreCase(playerName)) { + partyPlayers.get(partyName).put(playerName, true); + informPartyMembersOwnerChange(playerName); + plugin.getServer().getPlayer(playerName).sendMessage("You are now the party owner."); //TODO: Needs more locale. + continue; + } + + if (partyPlayers.get(partyName).get(name)) { + plugin.getServer().getPlayer(name).sendMessage("You are no longer party owner."); //TODO: Needs more locale. + partyPlayers.get(partyName).put(name, false); + } + } } - + + /** + * Get the password of a party. + * + * @param partyName The party name + * @return The password of this party + */ public String getPartyPassword(String partyName) { - return this.partyPasswords.get(partyName); + return partyPasswords.get(partyName); } - + + /** + * Check if a player can invite others to their party. + * + * @param player The player to check + * @param PP The profile of the given player + * @return true if the player can invite, false otherwise + */ public boolean canInvite(Player player, PlayerProfile PP) { - return (isPartyLocked(PP.getParty()) && !isPartyLeader(player.getName(), PP.getParty())) ? false : true; + String party = PP.getParty(); + + if (isPartyLocked(party) && !isPartyLeader(player.getName(), party)) { + return false; + } + else { + return true; + } } - + + /** + * Check if a string is a valid party name. + * + * @param partyName The party name to check + * @return true if this is a valid party, false otherwise + */ public boolean isParty(String partyName) { - return this.partyPlayers.containsKey(partyName); + return partyPlayers.containsKey(partyName); } + /** + * Check if a party is empty. + * + * @param partyName The party to check + * @return true if this party is empty, false otherwise + */ public boolean isPartyEmpty(String partyName) { - return this.partyPlayers.get(partyName).isEmpty(); + return partyPlayers.get(partyName).isEmpty(); } - + + /** + * Check if a player is the party leader. + * + * @param playerName The player name to check + * @param partyName The party name to check + * @return true if the player is the party leader, false otherwise + */ public boolean isPartyLeader(String playerName, String partyName) { - if(this.partyPlayers.get(partyName) != null) - { - if(this.partyPlayers.get(partyName).get(playerName) == null) return false; - return this.partyPlayers.get(partyName).get(playerName); - } - else - return false; + HashMap partyMembers = partyPlayers.get(partyName); + + if (partyMembers != null) { + Boolean isLeader = partyMembers.get(playerName); + + if (isLeader == null) { + return false; + } + else { + return isLeader; + } + } + else { + return false; + } } - + + /** + * Check if this party is locked. + * + * @param partyName The party to check + * @return true if this party is locked, false otherwise + */ public boolean isPartyLocked(String partyName) { - if(this.partyLocks.get(partyName) == null) return false; - return this.partyLocks.get(partyName); + Boolean isLocked = partyLocks.get(partyName); + + if (isLocked == null) { + return false; + } + else { + return isLocked; + } } - + + /** + * Check if this party is password protected. + * + * @param partyName The party to check + * @return true if this party is password protected, false otherwise + */ public boolean isPartyPasswordProtected(String partyName) { - return !(this.partyPasswords.get(partyName) == null); + String password = partyPasswords.get(partyName); + + if (password == null) { + return false; + } + else { + return true; + } } - + + /** + * Check if a player is in the party reflected by their profile. + * + * @param player The player to check + * @param PP The profile of the player + * @return true if this player is in the right party, false otherwise + */ public boolean isInParty(Player player, PlayerProfile PP) { - return partyPlayers.get(PP.getParty()).containsKey(player.getName()); + return partyPlayers.get(PP.getParty()).containsKey(player.getName()); } - + + /** + * Load all party related files. + */ @SuppressWarnings("unchecked") - public void loadParties() { - if(new File(partyPlayersFile).exists()) { - try { - ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPlayersFile)); - this.partyPlayers = (HashMap>)obj.readObject(); - } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (EOFException e) { Bukkit.getLogger().info("partyPlayersFile empty."); - } catch (IOException e) { e.printStackTrace(); - } catch (ClassNotFoundException e) { e.printStackTrace(); } - } + public void loadParties() { + if (new File(partyPlayersFile).exists()) { + try { + ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPlayersFile)); + partyPlayers = (HashMap>) obj.readObject(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + } + catch (EOFException e) { + Bukkit.getLogger().info("partyPlayersFile empty."); + } + catch (IOException e) { + e.printStackTrace(); + } + catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } - if(new File(partyLocksFile).exists()) { - try { - ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyLocksFile)); - this.partyLocks = (HashMap)obj.readObject(); - } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (EOFException e) { Bukkit.getLogger().info("partyLocksFile empty."); - } catch (IOException e) { e.printStackTrace(); - } catch (ClassNotFoundException e) { e.printStackTrace(); } - } + if (new File(partyLocksFile).exists()) { + try { + ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyLocksFile)); + partyLocks = (HashMap) obj.readObject(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + } + catch (EOFException e) { + Bukkit.getLogger().info("partyLocksFile empty."); + } + catch (IOException e) { + e.printStackTrace(); + } + catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } - if(new File(partyPasswordsFile).exists()) { - try { - ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPasswordsFile)); - this.partyPasswords = (HashMap)obj.readObject(); - } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (EOFException e) { Bukkit.getLogger().info("partyPasswordsFile empty."); - } catch (IOException e) { e.printStackTrace(); - } catch (ClassNotFoundException e) { e.printStackTrace(); } - } + if (new File(partyPasswordsFile).exists()) { + try { + ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPasswordsFile)); + this.partyPasswords = (HashMap) obj.readObject(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + } + catch (EOFException e) { + Bukkit.getLogger().info("partyPasswordsFile empty."); + } + catch (IOException e) { + e.printStackTrace(); + } + catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } } - - public void saveParties() { - savePartyPlayers(); - savePartyLocks(); - savePartyPasswords(); + + /** + * Save all party-related files. + */ + private void saveParties() { + savePartyFile(partyPlayersFile, partyPlayers); + savePartyFile(partyLocksFile, partyLocks); + savePartyFile(partyPasswordsFile, partyPasswords); } - - public void savePartyPlayers() { - try { - new File(partyPlayersFile).createNewFile(); - ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(partyPlayersFile)); - obj.writeObject(this.partyPlayers); - obj.close(); - } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (IOException e) { e.printStackTrace(); } - } - - public void savePartyLocks() { - try { - new File(partyLocksFile).createNewFile(); - ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(partyLocksFile)); - obj.writeObject(this.partyLocks); - obj.close(); - } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (IOException e) { e.printStackTrace(); } - } - - public void savePartyPasswords() { - try { - new File(partyPasswordsFile).createNewFile(); - ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(partyPasswordsFile)); - obj.writeObject(this.partyPasswords); - obj.close(); - } catch (FileNotFoundException e) { e.printStackTrace(); - } catch (IOException e) { e.printStackTrace(); } + + /** + * Save a party-related file. + * + * @param fileName The filename to save as + * @param partyData The Hashmap with the party data + */ + private void savePartyFile(String fileName, Object partyData) { + try { + new File(fileName).createNewFile(); + ObjectOutputStream obj = new ObjectOutputStream(new FileOutputStream(fileName)); + obj.writeObject(partyData); + obj.close(); + } + catch (FileNotFoundException e) { + e.printStackTrace(); + } + catch (IOException e) { + e.printStackTrace(); + } } }