diff --git a/plugin.yml b/plugin.yml index b8849af5..9249d2d8 100644 --- a/plugin.yml +++ b/plugin.yml @@ -51,6 +51,7 @@ permissions: factions.disband: true factions.help: true factions.home: true + factions.invite: true factions.join: true factions.kick: true factions.leave: true @@ -107,6 +108,8 @@ permissions: description: display a help page factions.home: description: teleport to the faction home + factions.invite: + description: invite a player to your faction factions.join: description: join a faction factions.kick: @@ -154,7 +157,7 @@ permissions: factions.sethome: description: set the faction home factions.sethome.any: - description: set any faction home + description: set faction home for another faction factions.show: description: show faction information factions.tag: diff --git a/src/com/massivecraft/factions/FPlayer.java b/src/com/massivecraft/factions/FPlayer.java index 4996ee74..09cf7dfd 100644 --- a/src/com/massivecraft/factions/FPlayer.java +++ b/src/com/massivecraft/factions/FPlayer.java @@ -31,7 +31,7 @@ public class FPlayer extends PlayerEntity // FIELD: factionId private String factionId; - public Faction getFaction() { return Factions.i.get(this.factionId); } + public Faction getFaction() { if(this.factionId == null) {return null;} return Factions.i.get(this.factionId); } public String getFactionId() { return this.factionId; } public boolean hasFaction() { return ! factionId.equals("0"); } public void setFaction(Faction faction) @@ -123,7 +123,7 @@ public class FPlayer extends PlayerEntity // GSON need this noarg constructor. public FPlayer() { - this.resetFactionData(); + this.resetFactionData(false); this.power = this.getPowerMax(); this.lastPowerUpdateTime = System.currentTimeMillis(); this.lastLoginTime = System.currentTimeMillis(); @@ -140,14 +140,16 @@ public class FPlayer extends PlayerEntity } } - public void resetFactionData() + public void resetFactionData(boolean doSpotUpdate) { // clean up any territory ownership in old faction, if there is one - Faction currentFaction = this.getFaction(); - - if (currentFaction != null && currentFaction.isNormal()) + if (Factions.i.exists(this.getFactionId())) { - currentFaction.clearClaimOwnership(this.getId()); + Faction currentFaction = this.getFaction(); + if (currentFaction.isNormal()) + { + currentFaction.clearClaimOwnership(this.getId()); + } } this.factionId = "0"; // The default neutral faction @@ -156,7 +158,15 @@ public class FPlayer extends PlayerEntity this.title = ""; this.autoClaimEnabled = false; - SpoutFeatures.updateAppearances(this.getPlayer()); + if (doSpotUpdate) + { + SpoutFeatures.updateAppearances(this.getPlayer()); + } + } + + public void resetFactionData() + { + this.resetFactionData(true); } // -------------------------------------------- // @@ -548,13 +558,13 @@ public class FPlayer extends PlayerEntity if (!perm && this.getRole() == Role.ADMIN && myFaction.getFPlayers().size() > 1) { - sendMessage("You must give the admin role to someone else first."); + sendMessageParsed("You must give the admin role to someone else first."); return; } if (!Conf.CanLeaveWithNegativePower && this.getPower() < 0) { - sendMessage("You cannot leave until your power is positive."); + sendMessageParsed("You cannot leave until your power is positive."); return; } @@ -566,23 +576,23 @@ public class FPlayer extends PlayerEntity if (cost > 0.0) { String costString = Econ.moneyString(cost); if (!Econ.deductMoney(this.getName(), cost)) { - sendMessage("It costs "+costString+" to leave your faction, which you can't currently afford."); + sendMessageParsed("It costs %s to leave your faction, which you can't currently afford.", costString); return; } - sendMessage("You have paid "+costString+" to leave your faction."); + sendMessageParsed("You have paid %s to leave your faction.", costString); } // wait... we pay you to leave? else if (cost < 0.0) { String costString = Econ.moneyString(-cost); Econ.addMoney(this.getName(), -cost); - sendMessage("You have been paid "+costString+" for leaving your faction."); + sendMessageParsed("You have been paid %s for leaving your faction.", costString); } } if (myFaction.isNormal()) { - myFaction.sendMessage(P.p.txt.parse(this.getNameAndRelevant(myFaction) + " left your faction.")); + myFaction.sendMessageParsed("%s left your faction.", this.getNameAndRelevant(myFaction)); } this.resetFactionData(); @@ -592,10 +602,10 @@ public class FPlayer extends PlayerEntity // Remove this faction for (FPlayer fplayer : FPlayers.i.getOnline()) { - fplayer.sendMessage(P.p.txt.parse("The faction "+myFaction.getTag(fplayer)+" was disbanded.")); + fplayer.sendMessageParsed("The faction %s was disbanded.", myFaction.getTag(fplayer)); } //Faction.delete(myFaction.getId()); - this.detach(); + myFaction.detach(); } } @@ -612,59 +622,59 @@ public class FPlayer extends PlayerEntity if (Conf.worldGuardChecking && Worldguard.checkForRegionsInChunk(loc)) { // Checks for WorldGuard regions in the chunk attempting to be claimed - sendMessage("This land is protected"); + sendMessageParsed("This land is protected"); return false; } if (myFaction == otherFaction) { if (notifyFailure) - sendMessage("You already own this land."); + sendMessageParsed("You already own this land."); return false; } if (this.getRole().value < Role.MODERATOR.value) { - sendMessage("You must be "+Role.MODERATOR+" to claim land."); + sendMessageParsed("You must be "+Role.MODERATOR+" to claim land."); return false; } if (myFaction.getFPlayers().size() < Conf.claimsRequireMinFactionMembers && ! this.isAdminBypassing()) { - sendMessage("Your faction must have at least "+Conf.claimsRequireMinFactionMembers+" members to claim land."); + sendMessageParsed("Your faction must have at least %s members to claim land.", Conf.claimsRequireMinFactionMembers); return false; } if (Conf.worldsNoClaiming.contains(flocation.getWorldName())) { - sendMessage("Sorry, this world has land claiming disabled."); + sendMessageParsed("Sorry, this world has land claiming disabled."); return false; } if (otherFaction.isSafeZone()) { if (notifyFailure) - sendMessage("You can not claim a Safe Zone."); + sendMessageParsed("You can not claim a Safe Zone."); return false; } else if (otherFaction.isWarZone()) { if (notifyFailure) - sendMessage("You can not claim a War Zone."); + sendMessageParsed("You can not claim a War Zone."); return false; } int ownedLand = myFaction.getLandRounded(); if (ownedLand >= myFaction.getPowerRounded()) { - sendMessage("You can't claim more land! You need more power!"); + sendMessageParsed("You can't claim more land! You need more power!"); return false; } if (otherFaction.getRelation(this) == Relation.ALLY) { if (notifyFailure) - sendMessage("You can't claim the land of your allies."); + sendMessageParsed("You can't claim the land of your allies."); return false; } @@ -678,9 +688,9 @@ public class FPlayer extends PlayerEntity ) { if (Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction) - sendMessage("You can only claim additional land which is connected to your first claim or controlled by another faction!"); + sendMessageParsed("You can only claim additional land which is connected to your first claim or controlled by another faction!"); else - sendMessage("You can only claim additional land which is connected to your first claim!"); + sendMessageParsed("You can only claim additional land which is connected to your first claim!"); return false; } @@ -688,26 +698,26 @@ public class FPlayer extends PlayerEntity { if (myFaction.isPeaceful()) { - sendMessage(P.p.txt.parse(this.getRelationColor(otherFaction)+otherFaction.getTag()+" owns this land. Your faction is peaceful, so you cannot claim land from other factions.")); + sendMessageParsed("%s owns this land. Your faction is peaceful, so you cannot claim land from other factions.", otherFaction.getTag(this)); return false; } if (otherFaction.isPeaceful()) { - sendMessage(P.p.txt.parse(this.getRelationColor(otherFaction)+otherFaction.getTag()+" owns this land, and is a peaceful faction. You cannot claim land from them.")); + sendMessageParsed("%s owns this land, and is a peaceful faction. You cannot claim land from them.", otherFaction.getTag(this)); return false; } if ( ! otherFaction.hasLandInflation()) { // TODO more messages WARN current faction most importantly - sendMessage(P.p.txt.parse(this.getRelationColor(otherFaction)+otherFaction.getTag()+" owns this land and is strong enough to keep it.")); + sendMessageParsed("%s owns this land and is strong enough to keep it.", otherFaction.getTag(this)); return false; } if ( ! Board.isBorderLocation(flocation)) { - sendMessage("You must start claiming land at the border of the territory."); + sendMessageParsed("You must start claiming land at the border of the territory."); return false; } } @@ -722,21 +732,22 @@ public class FPlayer extends PlayerEntity { Faction faction = this.getFaction(); - if(!faction.removeMoney(cost)) + if( ! faction.removeMoney(cost)) { - sendMessage("It costs "+costString+" to claim this land, which your faction can't currently afford."); + sendMessageParsed("It costs %s to claim this land, which your faction can't currently afford.", costString); return false; } else { - sendMessage(faction.getTag()+" has paid "+costString+" to claim some land."); + // TODO: Only I can see this right? + sendMessageParsed("%s has paid %s to claim some land.", faction.getTag(this), costString); } } else { - if (!Econ.deductMoney(this.getId(), cost)) + if ( ! Econ.deductMoney(this.getId(), cost)) { - sendMessage("Claiming this land will cost "+costString+", which you can't currently afford."); + sendMessageParsed("Claiming this land will cost %s, which you can't currently afford.", costString); return false; } sendMessage("You have paid "+costString+" to claim this land."); diff --git a/src/com/massivecraft/factions/P.java b/src/com/massivecraft/factions/P.java index c0d32310..4a177491 100644 --- a/src/com/massivecraft/factions/P.java +++ b/src/com/massivecraft/factions/P.java @@ -41,7 +41,7 @@ public class P extends MPlugin public final FactionsBlockListener blockListener; // Persistance related - private boolean locked = true; + private boolean locked = false; public boolean getLocked() {return this.locked;} public void setLocked(boolean val) {this.locked = val; this.setAutoSave(val);} diff --git a/src/com/massivecraft/factions/cmd/CmdBalance.java b/src/com/massivecraft/factions/cmd/CmdBalance.java index b1208c68..f9cbbdaf 100644 --- a/src/com/massivecraft/factions/cmd/CmdBalance.java +++ b/src/com/massivecraft/factions/cmd/CmdBalance.java @@ -48,7 +48,7 @@ public class CmdBalance extends FCommand return; } - sendMessageParsed("%s balance: %s", faction.getTag(), Econ.moneyString(faction.getMoney())); + sendMessageParsed("%s balance: %s", faction.getTag(fme), Econ.moneyString(faction.getMoney())); } } diff --git a/src/com/massivecraft/factions/cmd/CmdChat.java b/src/com/massivecraft/factions/cmd/CmdChat.java index 51cf7c32..72f8e694 100644 --- a/src/com/massivecraft/factions/cmd/CmdChat.java +++ b/src/com/massivecraft/factions/cmd/CmdChat.java @@ -34,11 +34,12 @@ public class CmdChat extends FCommand return; } - String modeString = this.argAsString(0).toLowerCase(); + String modeString = this.argAsString(0); ChatMode modeTarget = fme.getChatMode().getNext(); if (modeString != null) { + modeString.toLowerCase(); if(modeString.startsWith("p")) { modeTarget = ChatMode.PUBLIC; @@ -51,8 +52,11 @@ public class CmdChat extends FCommand { modeTarget = ChatMode.FACTION; } - sendMessageParsed("Unrecognised chat mode. Please enter either 'a','f' or 'p'"); - return; + else + { + sendMessageParsed("Unrecognised chat mode. Please enter either 'a','f' or 'p'"); + return; + } } fme.setChatMode(modeTarget); diff --git a/src/com/massivecraft/factions/cmd/CmdCreate.java b/src/com/massivecraft/factions/cmd/CmdCreate.java index cb6aa04e..ee4c499f 100644 --- a/src/com/massivecraft/factions/cmd/CmdCreate.java +++ b/src/com/massivecraft/factions/cmd/CmdCreate.java @@ -37,13 +37,13 @@ public class CmdCreate extends FCommand if (fme.hasFaction()) { - sendMessage("You must leave your current faction first."); + sendMessageParsed("You must leave your current faction first."); return; } if (Factions.i.isTagTaken(tag)) { - sendMessage("That tag is already in use."); + sendMessageParsed("That tag is already in use."); return; } @@ -70,7 +70,7 @@ public class CmdCreate extends FCommand follower.sendMessageParsed("%s created a new faction %s", fme.getNameAndRelevant(follower), faction.getTag(follower)); } - sendMessage("You should now: " + new CmdDescription().getUseageTemplate()); + sendMessageParsed("You should now: %s", p.cmdBase.cmdDescription.getUseageTemplate()); } } diff --git a/src/com/massivecraft/factions/cmd/CmdDeposit.java b/src/com/massivecraft/factions/cmd/CmdDeposit.java index 3812c93e..f6489bbc 100644 --- a/src/com/massivecraft/factions/cmd/CmdDeposit.java +++ b/src/com/massivecraft/factions/cmd/CmdDeposit.java @@ -49,15 +49,15 @@ public class CmdDeposit extends FCommand else { faction.addMoney(amount); - sendMessage("You have deposited "+amountString+" into "+faction.getTag()+"'s bank."); - sendMessage(faction.getTag()+" now has "+Econ.moneyString(faction.getMoney())); + sendMessageParsed("You have deposited %s into %s's bank.", amountString, faction.getTag()); + sendMessageParsed("%s now has %s", faction.getTag(fme), Econ.moneyString(faction.getMoney())); P.p.log(fme.getName() + " deposited "+amountString+" into "+faction.getTag()+"'s bank."); for (FPlayer fplayer : FPlayers.i.getOnline()) { if (fplayer.getFaction() == faction) { - fplayer.sendMessageParsed("%s has deposited %s", fme.getNameAndRelevant(fplayer), amountString); + fplayer.sendMessageParsed("%s has deposited %s", fme.getNameAndRelevant(fplayer), amountString); } } } diff --git a/src/com/massivecraft/factions/cmd/CmdDescription.java b/src/com/massivecraft/factions/cmd/CmdDescription.java index aa339328..b4da39b7 100644 --- a/src/com/massivecraft/factions/cmd/CmdDescription.java +++ b/src/com/massivecraft/factions/cmd/CmdDescription.java @@ -39,8 +39,8 @@ public class CmdDescription extends FCommand // Broadcast the description to everyone for (FPlayer fplayer : FPlayers.i.getOnline()) { - fplayer.sendMessageParsed("The faction "+fplayer.getRelationColor(fme)+myFaction.getTag()+" changed their description to:"); - fplayer.sendMessageParsed(""+myFaction.getDescription()); + fplayer.sendMessageParsed("The faction "+fplayer.getRelationColor(fme)+myFaction.getTag()+" changed their description to:"); + fplayer.sendMessageParsed(""+myFaction.getDescription()); } } diff --git a/src/com/massivecraft/factions/cmd/CmdHelp.java b/src/com/massivecraft/factions/cmd/CmdHelp.java index 496545aa..987ed120 100644 --- a/src/com/massivecraft/factions/cmd/CmdHelp.java +++ b/src/com/massivecraft/factions/cmd/CmdHelp.java @@ -33,6 +33,8 @@ public class CmdHelp extends FCommand @Override public void perform() { + if (helpPages == null) updateHelp(); + int page = this.argAsInt(0, 1); sendMessage(p.txt.titleize("Factions Help ("+page+"/"+helpPages.size()+")")); @@ -51,140 +53,135 @@ public class CmdHelp extends FCommand // Build the help pages //----------------------------------------------// - public static ArrayList> helpPages; + public ArrayList> helpPages; - public static void updateHelp() + public void updateHelp() { helpPages = new ArrayList>(); ArrayList pageLines; pageLines = new ArrayList(); - pageLines.add( new CmdHelp().getUseageTemplate() ); - pageLines.add( new CmdList().getUseageTemplate() ); - pageLines.add( new CmdShow().getUseageTemplate() ); - pageLines.add( new CmdPower().getUseageTemplate() ); - pageLines.add( new CmdJoin().getUseageTemplate() ); - pageLines.add( new CmdLeave().getUseageTemplate() ); - pageLines.add( new CmdChat().getUseageTemplate() ); - pageLines.add( new CmdHome().getUseageTemplate() ); - pageLines.add( "Learn how to create a faction on the next page." ); + pageLines.add( p.cmdBase.cmdHelp.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdList.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdShow.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdPower.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdJoin.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdLeave.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdChat.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdHome.getUseageTemplate() ); + pageLines.add( p.txt.parse("Learn how to create a faction on the next page.") ); helpPages.add(pageLines); pageLines = new ArrayList(); - pageLines.add( new CmdCreate().getUseageTemplate() ); - pageLines.add( new CmdDescription().getUseageTemplate() ); - pageLines.add( new CmdTag().getUseageTemplate() ); - pageLines.add( "You might want to close it and use invitations:" ); - pageLines.add( new CmdOpen().getUseageTemplate() ); - pageLines.add( new CmdInvite().getUseageTemplate() ); - pageLines.add( new CmdDeinvite().getUseageTemplate() ); - pageLines.add( "And don't forget to set your home:" ); - pageLines.add( new CmdSethome().getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdCreate.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdDescription.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdTag.getUseageTemplate() ); + pageLines.add( p.txt.parse("You might want to close it and use invitations:" )); + pageLines.add( p.cmdBase.cmdOpen.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdInvite.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdDeinvite.getUseageTemplate() ); + pageLines.add( p.txt.parse("And don't forget to set your home:" )); + pageLines.add( p.cmdBase.cmdSethome.getUseageTemplate() ); helpPages.add(pageLines); if (Econ.enabled() && Conf.bankEnabled) { pageLines = new ArrayList(); pageLines.add( "" ); - pageLines.add( "Your faction has a bank which is used to pay for certain" ); - pageLines.add( "things, so it will need to have money deposited into it." ); + pageLines.add( p.txt.parse("Your faction has a bank which is used to pay for certain" )); + pageLines.add( p.txt.parse("things, so it will need to have money deposited into it." )); pageLines.add( "" ); - pageLines.add( new CmdBalance().getUseageTemplate() ); - pageLines.add( new CmdDeposit().getUseageTemplate() ); - pageLines.add( new CmdWithdraw().getUseageTemplate() ); - pageLines.add( new CmdPay().getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdBalance.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdDeposit.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdWithdraw.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdPay.getUseageTemplate() ); pageLines.add( "" ); helpPages.add(pageLines); } pageLines = new ArrayList(); - pageLines.add( new CmdClaim().getUseageTemplate() ); - pageLines.add( new CmdAutoClaim().getUseageTemplate() ); - pageLines.add( new CmdUnclaim().getUseageTemplate() ); - pageLines.add( new CmdUnclaimall().getUseageTemplate() ); - pageLines.add( new CmdKick().getUseageTemplate() ); - pageLines.add( new CmdMod().getUseageTemplate() ); - pageLines.add( new CmdAdmin().getUseageTemplate() ); - pageLines.add( new CmdTitle().getUseageTemplate() ); - pageLines.add( "Player titles are just for fun. No rules connected to them." ); + pageLines.add( p.cmdBase.cmdClaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdAutoClaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdUnclaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdUnclaimall.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdKick.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdMod.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdAdmin.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdTitle.getUseageTemplate() ); + pageLines.add( p.txt.parse("Player titles are just for fun. No rules connected to them." )); helpPages.add(pageLines); pageLines = new ArrayList(); - pageLines.add( new CmdMap().getUseageTemplate() ); - pageLines.add( new CmdBoom().getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdMap.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdBoom.getUseageTemplate() ); pageLines.add(""); - pageLines.add( new CmdOwner().getUseageTemplate() ); - pageLines.add( new CmdOwnerList().getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdOwner.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdOwnerList.getUseageTemplate() ); pageLines.add(""); - pageLines.add("Claimed land with ownership set is further protected so"); - pageLines.add("that only the owner(s), faction admin, and possibly the"); - pageLines.add("faction moderators have full access."); + pageLines.add(p.txt.parse("Claimed land with ownership set is further protected so")); + pageLines.add(p.txt.parse("that only the owner(s), faction admin, and possibly the")); + pageLines.add(p.txt.parse("faction moderators have full access.")); helpPages.add(pageLines); pageLines = new ArrayList(); - pageLines.add( new CmdDisband().getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdDisband.getUseageTemplate() ); pageLines.add(""); - pageLines.add( new CmdRelationAlly().getUseageTemplate() ); - pageLines.add( new CmdRelationNeutral().getUseageTemplate() ); - pageLines.add( new CmdRelationEnemy().getUseageTemplate() ); - pageLines.add("Set the relation you WISH to have with another faction."); - pageLines.add("Your default relation with other factions will be neutral."); - pageLines.add("If BOTH factions choose \"ally\" you will be allies."); - pageLines.add("If ONE faction chooses \"enemy\" you will be enemies."); + pageLines.add( p.cmdBase.cmdRelationAlly.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdRelationNeutral.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdRelationEnemy.getUseageTemplate() ); + pageLines.add(p.txt.parse("Set the relation you WISH to have with another faction.")); + pageLines.add(p.txt.parse("Your default relation with other factions will be neutral.")); + pageLines.add(p.txt.parse("If BOTH factions choose \"ally\" you will be allies.")); + pageLines.add(p.txt.parse("If ONE faction chooses \"enemy\" you will be enemies.")); helpPages.add(pageLines); pageLines = new ArrayList(); - pageLines.add("You can never hurt members or allies."); - pageLines.add("You can not hurt neutrals in their own territory."); - pageLines.add("You can always hurt enemies and players without faction."); + pageLines.add(p.txt.parse("You can never hurt members or allies.")); + pageLines.add(p.txt.parse("You can not hurt neutrals in their own territory.")); + pageLines.add(p.txt.parse("You can always hurt enemies and players without faction.")); pageLines.add(""); - pageLines.add("Damage from enemies is reduced in your own territory."); - pageLines.add("When you die you lose power. It is restored over time."); - pageLines.add("The power of a faction is the sum of all member power."); - pageLines.add("The power of a faction determines how much land it can hold."); - pageLines.add("You can claim land from factions with too little power."); + pageLines.add(p.txt.parse("Damage from enemies is reduced in your own territory.")); + pageLines.add(p.txt.parse("When you die you lose power. It is restored over time.")); + pageLines.add(p.txt.parse("The power of a faction is the sum of all member power.")); + pageLines.add(p.txt.parse("The power of a faction determines how much land it can hold.")); + pageLines.add(p.txt.parse("You can claim land from factions with too little power.")); helpPages.add(pageLines); pageLines = new ArrayList(); - pageLines.add("Only faction members can build and destroy in their own"); - pageLines.add("territory. Usage of the following items is also restricted:"); - pageLines.add("Door, Chest, Furnace, Dispenser, Diode."); + pageLines.add(p.txt.parse("Only faction members can build and destroy in their own")); + pageLines.add(p.txt.parse("territory. Usage of the following items is also restricted:")); + pageLines.add(p.txt.parse("Door, Chest, Furnace, Dispenser, Diode.")); pageLines.add(""); - pageLines.add("Make sure to put pressure plates in front of doors for your"); - pageLines.add("guest visitors. Otherwise they can't get through. You can"); - pageLines.add("also use this to create member only areas."); - pageLines.add("As dispensers are protected, you can create traps without"); - pageLines.add("worrying about those arrows getting stolen."); + pageLines.add(p.txt.parse("Make sure to put pressure plates in front of doors for your")); + pageLines.add(p.txt.parse("guest visitors. Otherwise they can't get through. You can")); + pageLines.add(p.txt.parse("also use this to create member only areas.")); + pageLines.add(p.txt.parse("As dispensers are protected, you can create traps without")); + pageLines.add(p.txt.parse("worrying about those arrows getting stolen.")); helpPages.add(pageLines); pageLines = new ArrayList(); pageLines.add("Finally some commands for the server admins:"); - pageLines.add( new CmdBypass().getUseageTemplate() ); - pageLines.add( new CmdSafeclaim().getUseageTemplate() ); - pageLines.add( new CmdAutoSafeclaim().getUseageTemplate() ); - pageLines.add( new CmdSafeunclaimall().getUseageTemplate() ); - pageLines.add( new CmdWarclaim().getUseageTemplate() ); - pageLines.add( new CmdAutoWarclaim().getUseageTemplate() ); - pageLines.add( new CmdWarunclaimall().getUseageTemplate() ); - pageLines.add("Note: " + new CmdUnclaim().getUseageTemplate(false) + P.p.txt.parse("") + " works on safe/war zones as well."); + pageLines.add( p.cmdBase.cmdBypass.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdSafeclaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdAutoSafeclaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdSafeunclaimall.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdWarclaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdAutoWarclaim.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdWarunclaimall.getUseageTemplate() ); + pageLines.add(p.txt.parse("Note: " + p.cmdBase.cmdUnclaim.getUseageTemplate(false) + P.p.txt.parse("") + " works on safe/war zones as well.")); helpPages.add(pageLines); pageLines = new ArrayList(); - pageLines.add("More commands for server admins:"); - pageLines.add( new CmdPeaceful().getUseageTemplate() ); - pageLines.add( new CmdPermanent().getUseageTemplate() ); - pageLines.add("Peaceful factions are protected from PvP and land capture."); - pageLines.add( new CmdLock().getUseageTemplate() ); - pageLines.add( new CmdReload().getUseageTemplate() ); - pageLines.add( new CmdSaveAll().getUseageTemplate() ); - pageLines.add( new CmdVersion().getUseageTemplate() ); - pageLines.add( new CmdConfig().getUseageTemplate() ); + pageLines.add(p.txt.parse("More commands for server admins:")); + pageLines.add( p.cmdBase.cmdPeaceful.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdPermanent.getUseageTemplate() ); + pageLines.add(p.txt.parse("Peaceful factions are protected from PvP and land capture.")); + pageLines.add( p.cmdBase.cmdLock.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdReload.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdSaveAll.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdVersion.getUseageTemplate() ); + pageLines.add( p.cmdBase.cmdConfig.getUseageTemplate() ); helpPages.add(pageLines); } - - static - { - updateHelp(); - } } diff --git a/src/com/massivecraft/factions/cmd/CmdHome.java b/src/com/massivecraft/factions/cmd/CmdHome.java index fab194bb..454126df 100644 --- a/src/com/massivecraft/factions/cmd/CmdHome.java +++ b/src/com/massivecraft/factions/cmd/CmdHome.java @@ -40,32 +40,32 @@ public class CmdHome extends FCommand // TODO: Hide this command on help also. if ( ! Conf.homesEnabled) { - fme.sendMessage("Sorry, Faction homes are disabled on this server."); + fme.sendMessageParsed("Sorry, Faction homes are disabled on this server."); return; } if ( ! Conf.homesTeleportCommandEnabled) { - fme.sendMessage("Sorry, the ability to teleport to Faction homes is disabled on this server."); + fme.sendMessageParsed("Sorry, the ability to teleport to Faction homes is disabled on this server."); return; } if ( ! myFaction.hasHome()) { - fme.sendMessage("You faction does not have a home. " + (fme.getRole().value < Role.MODERATOR.value ? " Ask your leader to:" : "You should:")); - fme.sendMessage(new CmdSethome().getUseageTemplate()); + fme.sendMessageParsed("You faction does not have a home. " + (fme.getRole().value < Role.MODERATOR.value ? " Ask your leader to:" : "You should:")); + fme.sendMessage(p.cmdBase.cmdSethome.getUseageTemplate()); return; } if ( ! Conf.homesTeleportAllowedFromEnemyTerritory && fme.isInEnemyTerritory()) { - fme.sendMessage("You cannot teleport to your faction home while in the territory of an enemy faction."); + fme.sendMessageParsed("You cannot teleport to your faction home while in the territory of an enemy faction."); return; } if ( ! Conf.homesTeleportAllowedFromDifferentWorld && me.getWorld().getUID() != myFaction.getHome().getWorld().getUID()) { - fme.sendMessage("You cannot teleport to your faction home while in a different world."); + fme.sendMessageParsed("You cannot teleport to your faction home while in a different world."); return; } @@ -114,7 +114,7 @@ public class CmdHome extends FCommand if (dx > max || dy > max || dz > max) continue; - fme.sendMessage("You cannot teleport to your faction home while an enemy is within " + Conf.homesTeleportAllowedEnemyDistance + " blocks of you."); + fme.sendMessageParsed("You cannot teleport to your faction home while an enemy is within " + Conf.homesTeleportAllowedEnemyDistance + " blocks of you."); return; } } diff --git a/src/com/massivecraft/factions/cmd/CmdJoin.java b/src/com/massivecraft/factions/cmd/CmdJoin.java index c923fcb3..eb360987 100644 --- a/src/com/massivecraft/factions/cmd/CmdJoin.java +++ b/src/com/massivecraft/factions/cmd/CmdJoin.java @@ -55,7 +55,7 @@ public class CmdJoin extends FCommand if( ! faction.getOpen() && ! faction.isInvited(fme)) { - sendMessageParsed("This guild requires invitation."); + sendMessageParsed("This faction requires invitation."); faction.sendMessageParsed("%s tried to join your faction.", fme.getNameAndRelevant(faction)); return; } diff --git a/src/com/massivecraft/factions/cmd/CmdList.java b/src/com/massivecraft/factions/cmd/CmdList.java index 5f22201b..33e32165 100644 --- a/src/com/massivecraft/factions/cmd/CmdList.java +++ b/src/com/massivecraft/factions/cmd/CmdList.java @@ -67,7 +67,7 @@ public class CmdList extends FCommand }); ArrayList lines = new ArrayList(); - lines.add(p.txt.parse("Factionless %d online", Factions.i.getNone().getFPlayersWhereOnline(true).size())); + lines.add(p.txt.parse("Factionless %d online", Factions.i.getNone().getFPlayersWhereOnline(true).size())); for (Faction faction : factionList) { lines.add(p.txt.parse("%s %d/%d online, %d/%d/%d", diff --git a/src/com/massivecraft/factions/cmd/CmdOpen.java b/src/com/massivecraft/factions/cmd/CmdOpen.java index a92ad3e4..d7db64db 100644 --- a/src/com/massivecraft/factions/cmd/CmdOpen.java +++ b/src/com/massivecraft/factions/cmd/CmdOpen.java @@ -35,7 +35,7 @@ public class CmdOpen extends FCommand String open = myFaction.getOpen() ? "open" : "closed"; // Inform - myFaction.sendMessageParsed("%s changed the faction to ", fme.getNameAndRelevant(myFaction)); + myFaction.sendMessageParsed("%s changed the faction to %s.", fme.getNameAndRelevant(myFaction), open); for (Faction faction : Factions.i.get()) { if (faction == myFaction) diff --git a/src/com/massivecraft/factions/cmd/CmdReload.java b/src/com/massivecraft/factions/cmd/CmdReload.java index d27d4f41..2aca7f24 100644 --- a/src/com/massivecraft/factions/cmd/CmdReload.java +++ b/src/com/massivecraft/factions/cmd/CmdReload.java @@ -72,7 +72,7 @@ public class CmdReload extends FCommand long timeReload = (System.currentTimeMillis()-timeInitStart); - sendMessageParsed("reloaded %s from disk, took %dms", fileName, timeReload); + sendMessageParsed("Reloaded %s from disk, took %dms.", fileName, timeReload); } } diff --git a/src/com/massivecraft/factions/cmd/CmdSaveAll.java b/src/com/massivecraft/factions/cmd/CmdSaveAll.java index dd653b43..13854470 100644 --- a/src/com/massivecraft/factions/cmd/CmdSaveAll.java +++ b/src/com/massivecraft/factions/cmd/CmdSaveAll.java @@ -37,4 +37,4 @@ public class CmdSaveAll extends FCommand sendMessageParsed("Factions saved to disk!"); } -} +} \ No newline at end of file diff --git a/src/com/massivecraft/factions/cmd/CmdSethome.java b/src/com/massivecraft/factions/cmd/CmdSethome.java index afb54724..1d04850c 100644 --- a/src/com/massivecraft/factions/cmd/CmdSethome.java +++ b/src/com/massivecraft/factions/cmd/CmdSethome.java @@ -66,8 +66,8 @@ public class CmdSethome extends FCommand faction.setHome(me.getLocation()); - faction.sendMessage(fme.getNameAndRelevant(myFaction)+" set the home for your faction. You can now use:"); - faction.sendMessage(new CmdHome().getUseageTemplate()); + faction.sendMessageParsed("%s set the home for your faction. You can now use:", fme.getNameAndRelevant(myFaction)); + faction.sendMessage(p.cmdBase.cmdHome.getUseageTemplate()); if (faction != myFaction) { fme.sendMessageParsed("You have set the home for the "+faction.getTag(fme)+" faction."); diff --git a/src/com/massivecraft/factions/cmd/FCmdRoot.java b/src/com/massivecraft/factions/cmd/FCmdRoot.java index ce79feab..05f525b9 100644 --- a/src/com/massivecraft/factions/cmd/FCmdRoot.java +++ b/src/com/massivecraft/factions/cmd/FCmdRoot.java @@ -72,55 +72,55 @@ public class FCmdRoot extends FCommand //this.subCommands.add(p.cmdHelp); - this.subCommands.add(this.cmdAdmin); - this.subCommands.add(this.cmdAutoClaim); - this.subCommands.add(this.cmdAutoSafeclaim); - this.subCommands.add(this.cmdAutoWarclaim); - this.subCommands.add(this.cmdBalance); - this.subCommands.add(this.cmdBoom); - this.subCommands.add(this.cmdBypass); - this.subCommands.add(this.cmdChat); - this.subCommands.add(this.cmdClaim); - this.subCommands.add(this.cmdConfig); - this.subCommands.add(this.cmdCreate); - this.subCommands.add(this.cmdDeinvite); - this.subCommands.add(this.cmdDeposit); - this.subCommands.add(this.cmdDescription); - this.subCommands.add(this.cmdDisband); - this.subCommands.add(this.cmdHelp); - this.subCommands.add(this.cmdHome); - this.subCommands.add(this.cmdInvite); - this.subCommands.add(this.cmdJoin); - this.subCommands.add(this.cmdKick); - this.subCommands.add(this.cmdLeave); - this.subCommands.add(this.cmdList); - this.subCommands.add(this.cmdLock); - this.subCommands.add(this.cmdMap); - this.subCommands.add(this.cmdMod); - this.subCommands.add(this.cmdOpen); - this.subCommands.add(this.cmdOwner); - this.subCommands.add(this.cmdOwnerList); - this.subCommands.add(this.cmdPay); - this.subCommands.add(this.cmdPeaceful); - this.subCommands.add(this.cmdPermanent); - this.subCommands.add(this.cmdPower); - this.subCommands.add(this.cmdRelationAlly); - this.subCommands.add(this.cmdRelationEnemy); - this.subCommands.add(this.cmdRelationNeutral); - this.subCommands.add(this.cmdReload); - this.subCommands.add(this.cmdSafeclaim); - this.subCommands.add(this.cmdSafeunclaimall); - this.subCommands.add(this.cmdSaveAll); - this.subCommands.add(this.cmdSethome); - this.subCommands.add(this.cmdShow); - this.subCommands.add(this.cmdTag); - this.subCommands.add(this.cmdTitle); - this.subCommands.add(this.cmdUnclaim); - this.subCommands.add(this.cmdUnclaimall); - this.subCommands.add(this.cmdVersion); - this.subCommands.add(this.cmdWarclaim); - this.subCommands.add(this.cmdWarunclaimall); - this.subCommands.add(this.cmdWithdraw); + this.addSubCommand(this.cmdAdmin); + this.addSubCommand(this.cmdAutoClaim); + this.addSubCommand(this.cmdAutoSafeclaim); + this.addSubCommand(this.cmdAutoWarclaim); + this.addSubCommand(this.cmdBalance); + this.addSubCommand(this.cmdBoom); + this.addSubCommand(this.cmdBypass); + this.addSubCommand(this.cmdChat); + this.addSubCommand(this.cmdClaim); + this.addSubCommand(this.cmdConfig); + this.addSubCommand(this.cmdCreate); + this.addSubCommand(this.cmdDeinvite); + this.addSubCommand(this.cmdDeposit); + this.addSubCommand(this.cmdDescription); + this.addSubCommand(this.cmdDisband); + this.addSubCommand(this.cmdHelp); + this.addSubCommand(this.cmdHome); + this.addSubCommand(this.cmdInvite); + this.addSubCommand(this.cmdJoin); + this.addSubCommand(this.cmdKick); + this.addSubCommand(this.cmdLeave); + this.addSubCommand(this.cmdList); + this.addSubCommand(this.cmdLock); + this.addSubCommand(this.cmdMap); + this.addSubCommand(this.cmdMod); + this.addSubCommand(this.cmdOpen); + this.addSubCommand(this.cmdOwner); + this.addSubCommand(this.cmdOwnerList); + this.addSubCommand(this.cmdPay); + this.addSubCommand(this.cmdPeaceful); + this.addSubCommand(this.cmdPermanent); + this.addSubCommand(this.cmdPower); + this.addSubCommand(this.cmdRelationAlly); + this.addSubCommand(this.cmdRelationEnemy); + this.addSubCommand(this.cmdRelationNeutral); + this.addSubCommand(this.cmdReload); + this.addSubCommand(this.cmdSafeclaim); + this.addSubCommand(this.cmdSafeunclaimall); + this.addSubCommand(this.cmdSaveAll); + this.addSubCommand(this.cmdSethome); + this.addSubCommand(this.cmdShow); + this.addSubCommand(this.cmdTag); + this.addSubCommand(this.cmdTitle); + this.addSubCommand(this.cmdUnclaim); + this.addSubCommand(this.cmdUnclaimall); + this.addSubCommand(this.cmdVersion); + this.addSubCommand(this.cmdWarclaim); + this.addSubCommand(this.cmdWarunclaimall); + this.addSubCommand(this.cmdWithdraw); } @Override diff --git a/src/com/massivecraft/factions/cmd/FRelationCommand.java b/src/com/massivecraft/factions/cmd/FRelationCommand.java index eb4e0ee4..933c808b 100644 --- a/src/com/massivecraft/factions/cmd/FRelationCommand.java +++ b/src/com/massivecraft/factions/cmd/FRelationCommand.java @@ -31,6 +31,7 @@ public abstract class FRelationCommand extends FCommand public void perform() { Faction them = this.argAsFaction(0); + if (them == null) return; if ( ! them.isNormal()) { diff --git a/src/com/massivecraft/factions/integration/Econ.java b/src/com/massivecraft/factions/integration/Econ.java index 6c0f6117..d6d132ca 100644 --- a/src/com/massivecraft/factions/integration/Econ.java +++ b/src/com/massivecraft/factions/integration/Econ.java @@ -4,7 +4,6 @@ import org.bukkit.event.Event; import org.bukkit.plugin.Plugin; import com.massivecraft.factions.listeners.FactionsServerListener; -import com.massivecraft.factions.cmd.CmdHelp; import com.earth2me.essentials.api.Economy; import com.nijikokun.register.payment.Methods; @@ -15,36 +14,47 @@ import com.massivecraft.factions.Conf; import com.massivecraft.factions.P; -public class Econ { +public class Econ +{ private static boolean registerUse = false; private static boolean iConomyUse = false; private static boolean essEcoUse = false; - public static void monitorPlugins() { + // TODO: WHY put this here instead of at the same place as the other listeners? + public static void monitorPlugins() + { P.p.getServer().getPluginManager().registerEvent(Event.Type.PLUGIN_ENABLE, new FactionsServerListener(P.p), Event.Priority.Monitor, P.p); P.p.getServer().getPluginManager().registerEvent(Event.Type.PLUGIN_DISABLE, new FactionsServerListener(P.p), Event.Priority.Monitor, P.p); } - public static void setup(P factions) { - if (enabled()) { + public static void setup(P factions) + { + if (enabled()) + { return; } - if (!registerHooked()) { + if (!registerHooked()) + { Plugin plug = factions.getServer().getPluginManager().getPlugin("Register"); - if (plug != null && plug.getClass().getName().equals("com.nijikokun.register.Register") && plug.isEnabled()) { + if (plug != null && plug.getClass().getName().equals("com.nijikokun.register.Register") && plug.isEnabled()) + { registerSet(true); } } - if (!iConomyHooked()) { + if (!iConomyHooked()) + { Plugin plug = factions.getServer().getPluginManager().getPlugin("iConomy"); - if (plug != null && plug.getClass().getName().equals("com.iConomy.iConomy") && plug.isEnabled()) { + if (plug != null && plug.getClass().getName().equals("com.iConomy.iConomy") && plug.isEnabled()) + { iConomySet(true); } } - if (!essentialsEcoHooked()) { + if (!essentialsEcoHooked()) + { Plugin plug = factions.getServer().getPluginManager().getPlugin("Essentials"); - if (plug != null && plug.isEnabled()) { + if (plug != null && plug.isEnabled()) + { essentialsEcoSet(true); } } @@ -59,7 +69,7 @@ public class Econ { else { P.p.log("Un-hooked from Register."); } - CmdHelp.updateHelp(); + P.p.cmdBase.cmdHelp.updateHelp(); } public static void iConomySet(boolean enable) @@ -71,7 +81,7 @@ public class Econ { else { P.p.log("Un-hooked from iConomy."); } - CmdHelp.updateHelp(); + P.p.cmdBase.cmdHelp.updateHelp(); } public static void essentialsEcoSet(boolean enable) @@ -85,7 +95,7 @@ public class Econ { { P.p.log("Un-hooked from EssentialsEco."); } - CmdHelp.updateHelp(); + P.p.cmdBase.cmdHelp.updateHelp(); } public static boolean registerHooked() diff --git a/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java b/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java index 792b9062..5422e2bf 100644 --- a/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java +++ b/src/com/massivecraft/factions/listeners/FactionsChatEarlyListener.java @@ -44,6 +44,12 @@ public class FactionsChatEarlyListener extends PlayerListener if (event.isCancelled()) return; + if (p.handleCommand(event.getPlayer(), event.getMessage())) + { + event.setCancelled(true); + return; + } + Player talkingPlayer = event.getPlayer(); String msg = event.getMessage(); diff --git a/src/com/massivecraft/factions/util/AsciiCompass.java b/src/com/massivecraft/factions/util/AsciiCompass.java index 1dda05f1..d7e79338 100644 --- a/src/com/massivecraft/factions/util/AsciiCompass.java +++ b/src/com/massivecraft/factions/util/AsciiCompass.java @@ -4,8 +4,10 @@ import java.util.*; import org.bukkit.ChatColor; -public class AsciiCompass { - public enum Point { +public class AsciiCompass +{ + public enum Point + { N('N'), NE('/'), E('E'), @@ -17,21 +19,25 @@ public class AsciiCompass { public final char asciiChar; - private Point(final char asciiChar) { + private Point(final char asciiChar) + { this.asciiChar = asciiChar; } @Override - public String toString() { + public String toString() + { return String.valueOf(this.asciiChar); } - public String toString(boolean isActive, ChatColor colorActive, String colorDefault) { + public String toString(boolean isActive, ChatColor colorActive, String colorDefault) + { return (isActive ? colorActive : colorDefault)+String.valueOf(this.asciiChar); } } - public static AsciiCompass.Point getCompassPointForDirection(double inDegrees) { + public static AsciiCompass.Point getCompassPointForDirection(double inDegrees) + { double degrees = (inDegrees - 90) % 360 ; if (degrees < 0) degrees += 360; @@ -58,7 +64,8 @@ public class AsciiCompass { return null; } - public static ArrayList getAsciiCompass(Point point, ChatColor colorActive, String colorDefault) { + public static ArrayList getAsciiCompass(Point point, ChatColor colorActive, String colorDefault) + { ArrayList ret = new ArrayList(); String row; @@ -83,7 +90,8 @@ public class AsciiCompass { return ret; } - public static ArrayList getAsciiCompass(double inDegrees, ChatColor colorActive, String colorDefault) { + public static ArrayList getAsciiCompass(double inDegrees, ChatColor colorActive, String colorDefault) + { return getAsciiCompass(getCompassPointForDirection(inDegrees), colorActive, colorDefault); } } diff --git a/src/com/massivecraft/factions/zcore/MCommand.java b/src/com/massivecraft/factions/zcore/MCommand.java index 9e1280d2..fb2905f6 100644 --- a/src/com/massivecraft/factions/zcore/MCommand.java +++ b/src/com/massivecraft/factions/zcore/MCommand.java @@ -18,6 +18,12 @@ public abstract class MCommand // The sub-commands to this command public List> subCommands; + public void addSubCommand(MCommand subCommand) + { + subCommand.commandChain.addAll(this.commandChain); + subCommand.commandChain.add(this); + this.subCommands.add(subCommand); + } // The different names this commands will react to public List aliases; @@ -58,7 +64,7 @@ public abstract class MCommand public Player me; // Will only be set when the sender is a player public boolean senderIsConsole; public List args; // Will contain the arguments, or and empty list if there are none. - public List> commandChain; // The command chain used to execute this command + public List> commandChain = new ArrayList>(); // The command chain used to execute this command public MCommand(T p) { diff --git a/src/com/massivecraft/factions/zcore/MPlugin.java b/src/com/massivecraft/factions/zcore/MPlugin.java index 6e688df2..00ffd938 100644 --- a/src/com/massivecraft/factions/zcore/MPlugin.java +++ b/src/com/massivecraft/factions/zcore/MPlugin.java @@ -211,7 +211,7 @@ public abstract class MPlugin extends JavaPlugin for (String alias : command.aliases) { - if (commandString.startsWith(alias) || commandString.equals(alias+" ")) + if (commandString.startsWith(alias+" ") || commandString.equals(alias)) { List args = new ArrayList(Arrays.asList(commandString.split("\\s+"))); args.remove(0); diff --git a/src/com/massivecraft/factions/zcore/MPluginSecretPlayerListener.java b/src/com/massivecraft/factions/zcore/MPluginSecretPlayerListener.java index 02977c02..6e111781 100644 --- a/src/com/massivecraft/factions/zcore/MPluginSecretPlayerListener.java +++ b/src/com/massivecraft/factions/zcore/MPluginSecretPlayerListener.java @@ -51,5 +51,4 @@ public class MPluginSecretPlayerListener extends PlayerListener } } } - } diff --git a/src/com/massivecraft/factions/zcore/persist/EntityCollection.java b/src/com/massivecraft/factions/zcore/persist/EntityCollection.java index e3169a5c..2d1cb387 100644 --- a/src/com/massivecraft/factions/zcore/persist/EntityCollection.java +++ b/src/com/massivecraft/factions/zcore/persist/EntityCollection.java @@ -90,6 +90,7 @@ public abstract class EntityCollection public boolean exists(String id) { + if (id == null) return false; return id2entity.get(id) != null; } @@ -110,7 +111,9 @@ public abstract class EntityCollection try { e = this.entityClass.newInstance(); - } catch (Exception ignored) {} + } catch (Exception ignored) { + ignored.printStackTrace(); + } e.setId(id); this.entities.add(e); diff --git a/src/com/massivecraft/factions/zcore/persist/PlayerEntity.java b/src/com/massivecraft/factions/zcore/persist/PlayerEntity.java index ea1c468c..f8ccced9 100644 --- a/src/com/massivecraft/factions/zcore/persist/PlayerEntity.java +++ b/src/com/massivecraft/factions/zcore/persist/PlayerEntity.java @@ -26,14 +26,6 @@ public class PlayerEntity extends Entity // Message Sending Helpers // -------------------------------------------- // - /* - public void sendMessageParsed(String str, Object... args) - { - this.sendMessage(p.txt.parse(str, args)); - } - Refference issue!! - */ - public void sendMessage(String msg) { Player player = this.getPlayer();