mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-22 21:26:46 +01:00
Party changes
First player to join a party is the owner. /party lock (useable by party owner) /party unlock (useable by party owner) /party password <password> (useable by party owner, party must be locked) /party password "" (useable by party owner, party must be locked, disables password) /party kick <player> (useable by party owner, party must be locked, cannot kick a user with mcmmo.admin without having mcmmo.admin) /party owner <player> (useable by party owner, transfers ownership) /party <party> <password> (useable by any, to join a password protected and locked party) /party ? (extended help) /invite and /accept work with new system Parties delete themselves if no members (online and offline) are in the party. From old versions: Old parties will give owner to first person to use /party command in it. Users will be "added" into parties as they use /party Note, all new messages will need a locale/color treatment. I was not sure how to properly do this, so I instead marked all messages with a //TODO Also included, commented out in code, but can be uncommented to compile+use: /party dump (dumps everything from the hashtables to chat)
This commit is contained in:
parent
a0be77fe4f
commit
399a5accfc
@ -103,6 +103,8 @@ public class mcMMO extends JavaPlugin
|
||||
|
||||
mcPermissions.initialize(getServer());
|
||||
config.configCheck();
|
||||
Party.getInstance().loadParties();
|
||||
new Party(this);
|
||||
|
||||
if(!LoadProperties.useMySQL)
|
||||
Users.getInstance().loadUsers(); //Load Users file
|
||||
@ -1199,6 +1201,8 @@ public class mcMMO extends JavaPlugin
|
||||
//Invite Command
|
||||
else if(LoadProperties.inviteEnable && label.equalsIgnoreCase(LoadProperties.invite) && mcPermissions.getInstance().party(player)){
|
||||
|
||||
Party Pinstance = Party.getInstance();
|
||||
|
||||
if(!PP.inParty())
|
||||
{
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.NotInParty"));
|
||||
@ -1211,27 +1215,34 @@ public class mcMMO extends JavaPlugin
|
||||
}
|
||||
if(PP.inParty() && split.length >= 2 && isPlayer(split[1]))
|
||||
{
|
||||
Player target = getPlayer(split[1]);
|
||||
PlayerProfile PPt = Users.getProfile(target);
|
||||
PPt.modifyInvite(PP.getParty());
|
||||
if(Pinstance.canInvite(player, PP)) {
|
||||
Player target = getPlayer(split[1]);
|
||||
PlayerProfile PPt = Users.getProfile(target);
|
||||
PPt.modifyInvite(PP.getParty());
|
||||
|
||||
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
|
||||
//target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
|
||||
target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] {PPt.getInvite(), player.getName()}));
|
||||
//target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");
|
||||
target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] {LoadProperties.accept}));
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.InviteSuccess"));
|
||||
//target.sendMessage(ChatColor.RED+"ALERT: "+ChatColor.GREEN+"You have received a party invite for "+PPt.getInvite()+" from "+player.getName());
|
||||
target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite1", new Object[] {PPt.getInvite(), player.getName()}));
|
||||
//target.sendMessage(ChatColor.YELLOW+"Type "+ChatColor.GREEN+LoadProperties.accept+ChatColor.YELLOW+" to accept the invite");
|
||||
target.sendMessage(mcLocale.getString("mcPlayerListener.ReceivedInvite2", new Object[] {LoadProperties.accept}));
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party is locked, only party leader may invite.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Accept invite
|
||||
else if(LoadProperties.acceptEnable && label.equalsIgnoreCase(LoadProperties.accept) && mcPermissions.getInstance().party(player)){
|
||||
if(PP.hasPartyInvite()){
|
||||
if(PP.inParty()){
|
||||
Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
|
||||
Party Pinstance = Party.getInstance();
|
||||
|
||||
if(PP.inParty()) {
|
||||
Pinstance.removeFromParty(player, PP);
|
||||
}
|
||||
PP.acceptInvite();
|
||||
Party.getInstance().informPartyMembers(player, getPlayersOnline());
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.InviteAccepted", new Object[]{PP.getParty()}));
|
||||
Pinstance.addToParty(player, PP, PP.getParty(), true);
|
||||
} else {
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.NoInvites"));
|
||||
}
|
||||
@ -1242,20 +1253,29 @@ public class mcMMO extends JavaPlugin
|
||||
player.sendMessage(ChatColor.YELLOW+"[mcMMO]"+ChatColor.DARK_RED +mcLocale.getString("mcPlayerListener.NoPermission"));
|
||||
return true;
|
||||
}
|
||||
if(split.length == 1 && !PP.inParty()){
|
||||
player.sendMessage("Proper usage is "+LoadProperties.party+" <name> or 'q' to quit");
|
||||
return true;
|
||||
|
||||
Party Pinstance = Party.getInstance();
|
||||
|
||||
if(PP.inParty() && (!Pinstance.isParty(PP.getParty()) || !Pinstance.isInParty(player, PP))) {
|
||||
Pinstance.addToParty(player, PP, PP.getParty(), false);
|
||||
}
|
||||
if(split.length == 1 && PP.inParty()){
|
||||
|
||||
if(args.length == 0 && !PP.inParty()){
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Proper usage is "+LoadProperties.party+" <name> or 'q' to quit");
|
||||
player.sendMessage("To join a password protected party use "+LoadProperties.party+" <name> <password>");
|
||||
player.sendMessage("Or "+LoadProperties.party+" ? for more information.");
|
||||
return true;
|
||||
} else if(args.length == 0 && PP.inParty()){
|
||||
String tempList = "";
|
||||
int x = 0;
|
||||
for(Player p : this.getServer().getOnlinePlayers()){
|
||||
if(PP.getParty().equals(Users.getProfile(p).getParty())){
|
||||
if(p != null && x+1 >= Party.getInstance().partyCount(player, getPlayersOnline())){
|
||||
if(p != null && x+1 >= Pinstance.partyCount(player, getPlayersOnline())){
|
||||
tempList+= p.getName();
|
||||
x++;
|
||||
}
|
||||
if(p != null && x < Party.getInstance().partyCount(player, getPlayersOnline())){
|
||||
if(p != null && x < Pinstance.partyCount(player, getPlayersOnline())){
|
||||
tempList+= p.getName() +", ";
|
||||
x++;
|
||||
}
|
||||
@ -1263,19 +1283,129 @@ public class mcMMO extends JavaPlugin
|
||||
}
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.YouAreInParty", new Object[] {PP.getParty()}));
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.PartyMembers")+" ("+ChatColor.WHITE+tempList+ChatColor.GREEN+")");
|
||||
}
|
||||
if(split.length > 1 && split[1].equals("q") && PP.inParty()){
|
||||
Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
|
||||
PP.removeParty();
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
|
||||
return true;
|
||||
}
|
||||
if(split.length >= 2){
|
||||
if(PP.inParty())
|
||||
Party.getInstance().informPartyMembersQuit(player, getPlayersOnline());
|
||||
PP.setParty(split[1]);
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.JoinedParty", new Object[] {split[1]}));
|
||||
Party.getInstance().informPartyMembers(player, getPlayersOnline());
|
||||
} else if(args.length == 1){
|
||||
if(args[0].equals("q") && PP.inParty()) {
|
||||
Pinstance.removeFromParty(player, PP);
|
||||
player.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
|
||||
return true;
|
||||
} else if (args[0].equalsIgnoreCase("?")) {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Use "+LoadProperties.party+" <name> to join a party or 'q' to quit");
|
||||
player.sendMessage("To join a password protected party use "+LoadProperties.party+" <name> <password>");
|
||||
player.sendMessage("To lock your party use "+LoadProperties.party+" lock");
|
||||
player.sendMessage("To unlock your party use "+LoadProperties.party+" unlock");
|
||||
player.sendMessage("To password protect your party use "+LoadProperties.party+" password <password>");
|
||||
player.sendMessage("To kick from your party use "+LoadProperties.party+" kick <player>");
|
||||
player.sendMessage("To transfer ownership of your party use "+LoadProperties.party+" owner <player>");
|
||||
} else if (args[0].equalsIgnoreCase("lock")) {
|
||||
if(PP.inParty()) {
|
||||
if(Pinstance.isPartyLeader(player, PP.getParty())) {
|
||||
Pinstance.lockParty(PP.getParty());
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party locked.");
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("You are not the party owner.");
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("This is not a valid party name");
|
||||
}
|
||||
} else if (args[0].equalsIgnoreCase("unlock")) {
|
||||
if(PP.inParty()) {
|
||||
if(Pinstance.isPartyLeader(player, PP.getParty())) {
|
||||
Pinstance.unlockParty(PP.getParty());
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party unlocked");
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("You are not the party owner.");
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("This is not a valid party name");
|
||||
}
|
||||
//Party debugging command.
|
||||
//} else if (args[0].equalsIgnoreCase("dump")) {
|
||||
// Pinstance.dump(player);
|
||||
} else {
|
||||
if(PP.inParty()) {
|
||||
Pinstance.removeFromParty(player, PP);
|
||||
}
|
||||
Pinstance.addToParty(player, PP, args[0], false);
|
||||
return true;
|
||||
}
|
||||
} else if(args.length == 2 && PP.inParty()) {
|
||||
if(args[0].equalsIgnoreCase("password")) {
|
||||
if(Pinstance.isPartyLeader(player, PP.getParty())) {
|
||||
if(Pinstance.isPartyLocked(PP.getParty())) {
|
||||
Pinstance.setPartyPassword(PP.getParty(), args[1]);
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party password set to "+args[1]);
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party not locked.");
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("You are not the party owner.");
|
||||
}
|
||||
} else if(args[0].equalsIgnoreCase("kick")) {
|
||||
if(Pinstance.isPartyLeader(player, PP.getParty())) {
|
||||
if(Pinstance.isPartyLocked(PP.getParty())) {
|
||||
Player tPlayer = null;
|
||||
if(this.getServer().getPlayer(args[1]) != null) tPlayer = this.getServer().getPlayer(args[1]);
|
||||
if(tPlayer == null) {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Could not kick player "+args[1]);
|
||||
}
|
||||
if(!Pinstance.inSameParty(player, tPlayer)) {
|
||||
player.sendMessage(tPlayer.getName()+" not in your party.");
|
||||
} else {
|
||||
//Not an admin
|
||||
if(!mcPermissions.getInstance().admin(player)) {
|
||||
//Can't kick an admin
|
||||
if(mcPermissions.getInstance().admin(tPlayer)) {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Could not kick player "+tPlayer.getName());
|
||||
}
|
||||
}
|
||||
PlayerProfile tPP = Users.getProfile(tPlayer);
|
||||
Pinstance.removeFromParty(tPlayer, tPP);
|
||||
tPlayer.sendMessage(mcLocale.getString("mcPlayerListener.LeftParty"));
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party not locked.");
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("You are not the party owner.");
|
||||
}
|
||||
} else if(args[0].equalsIgnoreCase("owner")) {
|
||||
if(Pinstance.isPartyLeader(player, PP.getParty())) {
|
||||
Player tPlayer = null;
|
||||
if(this.getServer().getPlayer(args[1]) != null) tPlayer = this.getServer().getPlayer(args[1]);
|
||||
if(tPlayer == null) {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Could not set owner to "+args[1]);
|
||||
}
|
||||
if(!Pinstance.inSameParty(player, tPlayer)) {
|
||||
player.sendMessage("Could not set owner to "+tPlayer.getName());
|
||||
} else {
|
||||
Pinstance.setPartyLeader(PP.getParty(), tPlayer.getName());
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("You are not the party owner.");
|
||||
}
|
||||
} else {
|
||||
Pinstance.removeFromParty(player, PP);
|
||||
Pinstance.addToParty(player, PP, args[0], false, args[1]);
|
||||
}
|
||||
} else if(args.length == 2 && !PP.inParty()) {
|
||||
Pinstance.addToParty(player, PP, args[0], false, args[1]);
|
||||
}
|
||||
}
|
||||
else if(LoadProperties.partyEnable && label.equalsIgnoreCase("p")){
|
||||
|
@ -194,6 +194,13 @@ public class mcPermissions
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public boolean partyLock(Player player) {
|
||||
if (permissionsEnabled) {
|
||||
return permission(player, "mcmmo.chat.partylock");
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public boolean partyTeleport(Player player) {
|
||||
if (permissionsEnabled) {
|
||||
return permission(player, "mcmmo.commands.ptp");
|
||||
|
@ -1,28 +1,47 @@
|
||||
package com.gmail.nossr50.party;
|
||||
|
||||
import java.io.EOFException;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.gmail.nossr50.Users;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.config.LoadProperties;
|
||||
import com.gmail.nossr50.datatypes.PlayerProfile;
|
||||
import com.gmail.nossr50.locale.mcLocale;
|
||||
|
||||
|
||||
public class Party
|
||||
{
|
||||
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<String, HashMap<String, Boolean>> partyPlayers = new HashMap<String, HashMap<String, Boolean>>();
|
||||
HashMap<String, Boolean> partyLocks = new HashMap<String, Boolean>();
|
||||
HashMap<String, String> partyPasswords = new HashMap<String, String>();
|
||||
|
||||
private static mcMMO plugin;
|
||||
public Party(mcMMO instance)
|
||||
{
|
||||
public Party(mcMMO instance) {
|
||||
plugin = instance;
|
||||
}
|
||||
private static volatile Party instance;
|
||||
public static Party getInstance()
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new Party(plugin);
|
||||
if (instance == null) {
|
||||
instance = new Party(plugin);
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
public boolean inSameParty(Player playera, Player playerb){
|
||||
if(Users.getProfile(playera) == null || Users.getProfile(playerb) == null)
|
||||
{
|
||||
@ -57,6 +76,13 @@ public class Party
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
||||
public void informPartyMembers(Player player) {
|
||||
Player[] players = plugin.getPlayersOnline();
|
||||
informPartyMembers(player, players);
|
||||
}
|
||||
|
||||
|
||||
public void informPartyMembers(Player player, Player[] players)
|
||||
{
|
||||
int x = 0;
|
||||
@ -72,6 +98,32 @@ public class Party
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void informPartyMembersOwnerChange(String newOwner) {
|
||||
Player newOwnerPlayer = plugin.getServer().getPlayer(newOwner);
|
||||
Player[] players = plugin.getPlayersOnline();
|
||||
informPartyMembersOwnerChange(newOwnerPlayer, players);
|
||||
}
|
||||
|
||||
public void informPartyMembersOwnerChange(Player newOwner, Player[] players) {
|
||||
int x = 0;
|
||||
for(Player p : players){
|
||||
if(newOwner != null && p != null){
|
||||
if(inSameParty(newOwner, p) && !p.getName().equals(newOwner.getName()))
|
||||
{
|
||||
//TODO: Needs more locale.
|
||||
p.sendMessage(newOwner.getName()+" is the new party owner.");
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void informPartyMembersQuit(Player player) {
|
||||
Player[] players = plugin.getPlayersOnline();
|
||||
informPartyMembersQuit(player, players);
|
||||
}
|
||||
|
||||
public void informPartyMembersQuit(Player player, Player[] players)
|
||||
{
|
||||
int x = 0;
|
||||
@ -86,4 +138,251 @@ public class Party
|
||||
}
|
||||
}
|
||||
|
||||
public void removeFromParty(Player player, PlayerProfile PP) {
|
||||
informPartyMembersQuit(player);
|
||||
String party = PP.getParty();
|
||||
if(isPartyLeader(player, 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) {
|
||||
addToParty(player, PP, newParty, invite, null);
|
||||
}
|
||||
|
||||
|
||||
public void addToParty(Player player, PlayerProfile PP, String newParty, Boolean invite, String password) {
|
||||
//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) {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("This party requires a password. Use "+LoadProperties.party+" <party> <password> to join it.");
|
||||
return;
|
||||
} else if(!password.equalsIgnoreCase(getPartyPassword(newParty))) {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party password incorrect.");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
//TODO: Needs more locale.
|
||||
player.sendMessage("Party is locked.");
|
||||
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);
|
||||
|
||||
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() }));
|
||||
}
|
||||
}
|
||||
|
||||
private static <U,V,W> W putNestedEntry(
|
||||
HashMap<U,HashMap<V,W>> nest,
|
||||
U nestKey,
|
||||
V nestedKey,
|
||||
W nestedValue)
|
||||
{
|
||||
HashMap<V,W> nested = nest.get(nestKey);
|
||||
|
||||
if (nested == null) {
|
||||
nested = new HashMap<V,W>();
|
||||
nest.put(nestKey, nested);
|
||||
}
|
||||
|
||||
return nested.put(nestedKey, nestedValue);
|
||||
}
|
||||
|
||||
public void dump(Player player) {
|
||||
player.sendMessage(partyPlayers.toString());
|
||||
player.sendMessage(partyLocks.toString());
|
||||
player.sendMessage(partyPasswords.toString());
|
||||
Iterator<String> i = partyPlayers.keySet().iterator();
|
||||
while(i.hasNext()) {
|
||||
String nestkey = i.next();
|
||||
player.sendMessage(nestkey);
|
||||
Iterator<String> 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");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void lockParty(String partyName) {
|
||||
this.partyLocks.put(partyName, true);
|
||||
savePartyLocks();
|
||||
}
|
||||
|
||||
public void unlockParty(String partyName) {
|
||||
this.partyLocks.put(partyName, false);
|
||||
savePartyLocks();
|
||||
}
|
||||
|
||||
public void deleteParty(String partyName) {
|
||||
this.partyPlayers.remove(partyName);
|
||||
this.partyLocks.remove(partyName);
|
||||
this.partyPasswords.remove(partyName);
|
||||
saveParties();
|
||||
}
|
||||
|
||||
public void setPartyPassword(String partyName, String password) {
|
||||
if(password.equalsIgnoreCase("\"\"")) password = null;
|
||||
this.partyPasswords.put(partyName, password);
|
||||
savePartyPasswords();
|
||||
}
|
||||
|
||||
public void setPartyLeader(String partyName, String playerName) {
|
||||
Iterator<String> 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);
|
||||
//TODO: Needs more locale.
|
||||
plugin.getServer().getPlayer(playerName).sendMessage("You are now the party owner.");
|
||||
continue;
|
||||
}
|
||||
if(partyPlayers.get(partyName).get(playerKey)) {
|
||||
//TODO: Needs more locale.
|
||||
plugin.getServer().getPlayer(playerKey).sendMessage("You are no longer party owner.");
|
||||
partyPlayers.get(partyName).put(playerKey, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getPartyPassword(String partyName) {
|
||||
return this.partyPasswords.get(partyName);
|
||||
}
|
||||
|
||||
public boolean canInvite(Player player, PlayerProfile PP) {
|
||||
return (isPartyLocked(PP.getParty()) && !isPartyLeader(player, PP.getParty())) ? false : true;
|
||||
}
|
||||
|
||||
public boolean isParty(String partyName) {
|
||||
return this.partyPlayers.containsKey(partyName);
|
||||
}
|
||||
|
||||
public boolean isPartyEmpty(String partyName) {
|
||||
return this.partyPlayers.get(partyName).isEmpty();
|
||||
}
|
||||
|
||||
public boolean isPartyLeader(Player player, String partyName) {
|
||||
if(this.partyPlayers.get(partyName).get(player.getName()) == null) return false;
|
||||
return this.partyPlayers.get(partyName).get(player.getName());
|
||||
}
|
||||
|
||||
public boolean isPartyLocked(String partyName) {
|
||||
if(this.partyLocks.get(partyName) == null) return false;
|
||||
return this.partyLocks.get(partyName);
|
||||
}
|
||||
|
||||
public boolean isPartyPasswordProtected(String partyName) {
|
||||
return !(this.partyPasswords.get(partyName) == null);
|
||||
}
|
||||
|
||||
public boolean isInParty(Player player, PlayerProfile PP) {
|
||||
return partyPlayers.get(PP.getParty()).containsKey(player.getName());
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void loadParties() {
|
||||
if(new File(partyPlayersFile).exists()) {
|
||||
try {
|
||||
ObjectInputStream obj = new ObjectInputStream(new FileInputStream(partyPlayersFile));
|
||||
this.partyPlayers = (HashMap<String, HashMap<String, Boolean>>)obj.readObject();
|
||||
} catch (FileNotFoundException e) { e.printStackTrace();
|
||||
} catch (EOFException e) { mcMMO.log.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<String, Boolean>)obj.readObject();
|
||||
} catch (FileNotFoundException e) { e.printStackTrace();
|
||||
} catch (EOFException e) { mcMMO.log.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<String, String>)obj.readObject();
|
||||
} catch (FileNotFoundException e) { e.printStackTrace();
|
||||
} catch (EOFException e) { mcMMO.log.info("partyPasswordsFile empty.");
|
||||
} catch (IOException e) { e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) { e.printStackTrace(); }
|
||||
}
|
||||
}
|
||||
|
||||
public void saveParties() {
|
||||
savePartyPlayers();
|
||||
savePartyLocks();
|
||||
savePartyPasswords();
|
||||
}
|
||||
|
||||
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(); }
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user