Some bugs fixed.

This commit is contained in:
Olof Larsson 2011-10-10 01:21:05 +02:00
parent a5c8e2de49
commit 3cc7766fa7
26 changed files with 275 additions and 235 deletions

View File

@ -51,6 +51,7 @@ permissions:
factions.disband: true factions.disband: true
factions.help: true factions.help: true
factions.home: true factions.home: true
factions.invite: true
factions.join: true factions.join: true
factions.kick: true factions.kick: true
factions.leave: true factions.leave: true
@ -107,6 +108,8 @@ permissions:
description: display a help page description: display a help page
factions.home: factions.home:
description: teleport to the faction home description: teleport to the faction home
factions.invite:
description: invite a player to your faction
factions.join: factions.join:
description: join a faction description: join a faction
factions.kick: factions.kick:
@ -154,7 +157,7 @@ permissions:
factions.sethome: factions.sethome:
description: set the faction home description: set the faction home
factions.sethome.any: factions.sethome.any:
description: set any faction home description: set faction home for another faction
factions.show: factions.show:
description: show faction information description: show faction information
factions.tag: factions.tag:

View File

@ -31,7 +31,7 @@ public class FPlayer extends PlayerEntity
// FIELD: factionId // FIELD: factionId
private String 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 String getFactionId() { return this.factionId; }
public boolean hasFaction() { return ! factionId.equals("0"); } public boolean hasFaction() { return ! factionId.equals("0"); }
public void setFaction(Faction faction) public void setFaction(Faction faction)
@ -123,7 +123,7 @@ public class FPlayer extends PlayerEntity
// GSON need this noarg constructor. // GSON need this noarg constructor.
public FPlayer() public FPlayer()
{ {
this.resetFactionData(); this.resetFactionData(false);
this.power = this.getPowerMax(); this.power = this.getPowerMax();
this.lastPowerUpdateTime = System.currentTimeMillis(); this.lastPowerUpdateTime = System.currentTimeMillis();
this.lastLoginTime = System.currentTimeMillis(); this.lastLoginTime = System.currentTimeMillis();
@ -140,15 +140,17 @@ 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 // clean up any territory ownership in old faction, if there is one
if (Factions.i.exists(this.getFactionId()))
{
Faction currentFaction = this.getFaction(); Faction currentFaction = this.getFaction();
if (currentFaction.isNormal())
if (currentFaction != null && currentFaction.isNormal())
{ {
currentFaction.clearClaimOwnership(this.getId()); currentFaction.clearClaimOwnership(this.getId());
} }
}
this.factionId = "0"; // The default neutral faction this.factionId = "0"; // The default neutral faction
this.chatMode = ChatMode.PUBLIC; this.chatMode = ChatMode.PUBLIC;
@ -156,8 +158,16 @@ public class FPlayer extends PlayerEntity
this.title = ""; this.title = "";
this.autoClaimEnabled = false; this.autoClaimEnabled = false;
if (doSpotUpdate)
{
SpoutFeatures.updateAppearances(this.getPlayer()); SpoutFeatures.updateAppearances(this.getPlayer());
} }
}
public void resetFactionData()
{
this.resetFactionData(true);
}
// -------------------------------------------- // // -------------------------------------------- //
// Getters And Setters // Getters And Setters
@ -548,13 +558,13 @@ public class FPlayer extends PlayerEntity
if (!perm && this.getRole() == Role.ADMIN && myFaction.getFPlayers().size() > 1) if (!perm && this.getRole() == Role.ADMIN && myFaction.getFPlayers().size() > 1)
{ {
sendMessage("You must give the admin role to someone else first."); sendMessageParsed("<b>You must give the admin role to someone else first.");
return; return;
} }
if (!Conf.CanLeaveWithNegativePower && this.getPower() < 0) if (!Conf.CanLeaveWithNegativePower && this.getPower() < 0)
{ {
sendMessage("You cannot leave until your power is positive."); sendMessageParsed("<b>You cannot leave until your power is positive.");
return; return;
} }
@ -566,23 +576,23 @@ public class FPlayer extends PlayerEntity
if (cost > 0.0) { if (cost > 0.0) {
String costString = Econ.moneyString(cost); String costString = Econ.moneyString(cost);
if (!Econ.deductMoney(this.getName(), cost)) { if (!Econ.deductMoney(this.getName(), cost)) {
sendMessage("It costs "+costString+" to leave your faction, which you can't currently afford."); sendMessageParsed("<b>It costs <h>%s<b> to leave your faction, which you can't currently afford.", costString);
return; return;
} }
sendMessage("You have paid "+costString+" to leave your faction."); sendMessageParsed("<i>You have paid <h>%s<i> to leave your faction.", costString);
} }
// wait... we pay you to leave? // wait... we pay you to leave?
else if (cost < 0.0) else if (cost < 0.0)
{ {
String costString = Econ.moneyString(-cost); String costString = Econ.moneyString(-cost);
Econ.addMoney(this.getName(), -cost); Econ.addMoney(this.getName(), -cost);
sendMessage("You have been paid "+costString+" for leaving your faction."); sendMessageParsed("<i>You have been paid <h>%s<i> for leaving your faction.", costString);
} }
} }
if (myFaction.isNormal()) if (myFaction.isNormal())
{ {
myFaction.sendMessage(P.p.txt.parse(this.getNameAndRelevant(myFaction) + "<i> left your faction.")); myFaction.sendMessageParsed("%s<i> left your faction.", this.getNameAndRelevant(myFaction));
} }
this.resetFactionData(); this.resetFactionData();
@ -592,10 +602,10 @@ public class FPlayer extends PlayerEntity
// Remove this faction // Remove this faction
for (FPlayer fplayer : FPlayers.i.getOnline()) for (FPlayer fplayer : FPlayers.i.getOnline())
{ {
fplayer.sendMessage(P.p.txt.parse("The faction "+myFaction.getTag(fplayer)+"<i> was disbanded.")); fplayer.sendMessageParsed("<i>The faction %s<i> was disbanded.", myFaction.getTag(fplayer));
} }
//Faction.delete(myFaction.getId()); //Faction.delete(myFaction.getId());
this.detach(); myFaction.detach();
} }
} }
@ -612,59 +622,59 @@ public class FPlayer extends PlayerEntity
if (Conf.worldGuardChecking && Worldguard.checkForRegionsInChunk(loc)) if (Conf.worldGuardChecking && Worldguard.checkForRegionsInChunk(loc))
{ {
// Checks for WorldGuard regions in the chunk attempting to be claimed // Checks for WorldGuard regions in the chunk attempting to be claimed
sendMessage("This land is protected"); sendMessageParsed("<b>This land is protected");
return false; return false;
} }
if (myFaction == otherFaction) if (myFaction == otherFaction)
{ {
if (notifyFailure) if (notifyFailure)
sendMessage("You already own this land."); sendMessageParsed("<i>You already own this land.");
return false; return false;
} }
if (this.getRole().value < Role.MODERATOR.value) if (this.getRole().value < Role.MODERATOR.value)
{ {
sendMessage("You must be "+Role.MODERATOR+" to claim land."); sendMessageParsed("<i>You must be "+Role.MODERATOR+" to claim land.");
return false; return false;
} }
if (myFaction.getFPlayers().size() < Conf.claimsRequireMinFactionMembers && ! this.isAdminBypassing()) if (myFaction.getFPlayers().size() < Conf.claimsRequireMinFactionMembers && ! this.isAdminBypassing())
{ {
sendMessage("Your faction must have at least "+Conf.claimsRequireMinFactionMembers+" members to claim land."); sendMessageParsed("<b>Your faction must have at least <h>%s<b> members to claim land.", Conf.claimsRequireMinFactionMembers);
return false; return false;
} }
if (Conf.worldsNoClaiming.contains(flocation.getWorldName())) if (Conf.worldsNoClaiming.contains(flocation.getWorldName()))
{ {
sendMessage("Sorry, this world has land claiming disabled."); sendMessageParsed("<b>Sorry, this world has land claiming disabled.");
return false; return false;
} }
if (otherFaction.isSafeZone()) if (otherFaction.isSafeZone())
{ {
if (notifyFailure) if (notifyFailure)
sendMessage("You can not claim a Safe Zone."); sendMessageParsed("<b>You can not claim a Safe Zone.");
return false; return false;
} }
else if (otherFaction.isWarZone()) else if (otherFaction.isWarZone())
{ {
if (notifyFailure) if (notifyFailure)
sendMessage("You can not claim a War Zone."); sendMessageParsed("<b>You can not claim a War Zone.");
return false; return false;
} }
int ownedLand = myFaction.getLandRounded(); int ownedLand = myFaction.getLandRounded();
if (ownedLand >= myFaction.getPowerRounded()) if (ownedLand >= myFaction.getPowerRounded())
{ {
sendMessage("You can't claim more land! You need more power!"); sendMessageParsed("<b>You can't claim more land! You need more power!");
return false; return false;
} }
if (otherFaction.getRelation(this) == Relation.ALLY) if (otherFaction.getRelation(this) == Relation.ALLY)
{ {
if (notifyFailure) if (notifyFailure)
sendMessage("You can't claim the land of your allies."); sendMessageParsed("<b>You can't claim the land of your allies.");
return false; return false;
} }
@ -678,9 +688,9 @@ public class FPlayer extends PlayerEntity
) )
{ {
if (Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction) if (Conf.claimsCanBeUnconnectedIfOwnedByOtherFaction)
sendMessage("You can only claim additional land which is connected to your first claim or controlled by another faction!"); sendMessageParsed("<b>You can only claim additional land which is connected to your first claim or controlled by another faction!");
else else
sendMessage("You can only claim additional land which is connected to your first claim!"); sendMessageParsed("<b>You can only claim additional land which is connected to your first claim!");
return false; return false;
} }
@ -688,26 +698,26 @@ public class FPlayer extends PlayerEntity
{ {
if (myFaction.isPeaceful()) if (myFaction.isPeaceful())
{ {
sendMessage(P.p.txt.parse(this.getRelationColor(otherFaction)+otherFaction.getTag()+"<i> owns this land. Your faction is peaceful, so you cannot claim land from other factions.")); sendMessageParsed("%s<i> owns this land. Your faction is peaceful, so you cannot claim land from other factions.", otherFaction.getTag(this));
return false; return false;
} }
if (otherFaction.isPeaceful()) if (otherFaction.isPeaceful())
{ {
sendMessage(P.p.txt.parse(this.getRelationColor(otherFaction)+otherFaction.getTag()+"<i> owns this land, and is a peaceful faction. You cannot claim land from them.")); sendMessageParsed("%s<i> owns this land, and is a peaceful faction. You cannot claim land from them.", otherFaction.getTag(this));
return false; return false;
} }
if ( ! otherFaction.hasLandInflation()) if ( ! otherFaction.hasLandInflation())
{ {
// TODO more messages WARN current faction most importantly // TODO more messages WARN current faction most importantly
sendMessage(P.p.txt.parse(this.getRelationColor(otherFaction)+otherFaction.getTag()+"<i> owns this land and is strong enough to keep it.")); sendMessageParsed("%s<i> owns this land and is strong enough to keep it.", otherFaction.getTag(this));
return false; return false;
} }
if ( ! Board.isBorderLocation(flocation)) if ( ! Board.isBorderLocation(flocation))
{ {
sendMessage("You must start claiming land at the border of the territory."); sendMessageParsed("<b>You must start claiming land at the border of the territory.");
return false; return false;
} }
} }
@ -724,19 +734,20 @@ public class FPlayer extends PlayerEntity
if( ! faction.removeMoney(cost)) if( ! faction.removeMoney(cost))
{ {
sendMessage("It costs "+costString+" to claim this land, which your faction can't currently afford."); sendMessageParsed("<b>It costs <h>%s<b> to claim this land, which your faction can't currently afford.", costString);
return false; return false;
} }
else else
{ {
sendMessage(faction.getTag()+" has paid "+costString+" to claim some land."); // TODO: Only I can see this right?
sendMessageParsed("%s<i> has paid <h>%s<i> to claim some land.", faction.getTag(this), costString);
} }
} }
else 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("<b>Claiming this land will cost <h>%s<b>, which you can't currently afford.", costString);
return false; return false;
} }
sendMessage("You have paid "+costString+" to claim this land."); sendMessage("You have paid "+costString+" to claim this land.");

View File

@ -41,7 +41,7 @@ public class P extends MPlugin
public final FactionsBlockListener blockListener; public final FactionsBlockListener blockListener;
// Persistance related // Persistance related
private boolean locked = true; private boolean locked = false;
public boolean getLocked() {return this.locked;} public boolean getLocked() {return this.locked;}
public void setLocked(boolean val) {this.locked = val; this.setAutoSave(val);} public void setLocked(boolean val) {this.locked = val; this.setAutoSave(val);}

View File

@ -48,7 +48,7 @@ public class CmdBalance extends FCommand
return; return;
} }
sendMessageParsed("<a>%s balance: %s", faction.getTag(), Econ.moneyString(faction.getMoney())); sendMessageParsed("<a>%s balance: %s", faction.getTag(fme), Econ.moneyString(faction.getMoney()));
} }
} }

View File

@ -34,11 +34,12 @@ public class CmdChat extends FCommand
return; return;
} }
String modeString = this.argAsString(0).toLowerCase(); String modeString = this.argAsString(0);
ChatMode modeTarget = fme.getChatMode().getNext(); ChatMode modeTarget = fme.getChatMode().getNext();
if (modeString != null) if (modeString != null)
{ {
modeString.toLowerCase();
if(modeString.startsWith("p")) if(modeString.startsWith("p"))
{ {
modeTarget = ChatMode.PUBLIC; modeTarget = ChatMode.PUBLIC;
@ -51,9 +52,12 @@ public class CmdChat extends FCommand
{ {
modeTarget = ChatMode.FACTION; modeTarget = ChatMode.FACTION;
} }
else
{
sendMessageParsed("<b>Unrecognised chat mode. <i>Please enter either 'a','f' or 'p'"); sendMessageParsed("<b>Unrecognised chat mode. <i>Please enter either 'a','f' or 'p'");
return; return;
} }
}
fme.setChatMode(modeTarget); fme.setChatMode(modeTarget);

View File

@ -37,13 +37,13 @@ public class CmdCreate extends FCommand
if (fme.hasFaction()) if (fme.hasFaction())
{ {
sendMessage("You must leave your current faction first."); sendMessageParsed("<b>You must leave your current faction first.");
return; return;
} }
if (Factions.i.isTagTaken(tag)) if (Factions.i.isTagTaken(tag))
{ {
sendMessage("That tag is already in use."); sendMessageParsed("<b>That tag is already in use.");
return; return;
} }
@ -70,7 +70,7 @@ public class CmdCreate extends FCommand
follower.sendMessageParsed("%s<i> created a new faction %s", fme.getNameAndRelevant(follower), faction.getTag(follower)); follower.sendMessageParsed("%s<i> created a new faction %s", fme.getNameAndRelevant(follower), faction.getTag(follower));
} }
sendMessage("You should now: " + new CmdDescription().getUseageTemplate()); sendMessageParsed("<i>You should now: %s", p.cmdBase.cmdDescription.getUseageTemplate());
} }
} }

View File

@ -49,15 +49,15 @@ public class CmdDeposit extends FCommand
else else
{ {
faction.addMoney(amount); faction.addMoney(amount);
sendMessage("You have deposited "+amountString+" into "+faction.getTag()+"'s bank."); sendMessageParsed("<i>You have deposited <h>%s<i> into <h>%s's<i> bank.", amountString, faction.getTag());
sendMessage(faction.getTag()+" now has "+Econ.moneyString(faction.getMoney())); sendMessageParsed("%s<i> now has <h>%s", faction.getTag(fme), Econ.moneyString(faction.getMoney()));
P.p.log(fme.getName() + " deposited "+amountString+" into "+faction.getTag()+"'s bank."); P.p.log(fme.getName() + " deposited "+amountString+" into "+faction.getTag()+"'s bank.");
for (FPlayer fplayer : FPlayers.i.getOnline()) for (FPlayer fplayer : FPlayers.i.getOnline())
{ {
if (fplayer.getFaction() == faction) if (fplayer.getFaction() == faction)
{ {
fplayer.sendMessageParsed("%s has deposited %s", fme.getNameAndRelevant(fplayer), amountString); fplayer.sendMessageParsed("%s<i> has deposited <h>%s", fme.getNameAndRelevant(fplayer), amountString);
} }
} }
} }

View File

@ -39,8 +39,8 @@ public class CmdDescription extends FCommand
// Broadcast the description to everyone // Broadcast the description to everyone
for (FPlayer fplayer : FPlayers.i.getOnline()) for (FPlayer fplayer : FPlayers.i.getOnline())
{ {
fplayer.sendMessageParsed("The faction "+fplayer.getRelationColor(fme)+myFaction.getTag()+"<i> changed their description to:"); fplayer.sendMessageParsed("<i>The faction "+fplayer.getRelationColor(fme)+myFaction.getTag()+"<i> changed their description to:");
fplayer.sendMessageParsed("<i>"+myFaction.getDescription()); fplayer.sendMessageParsed("<h>"+myFaction.getDescription());
} }
} }

View File

@ -33,6 +33,8 @@ public class CmdHelp extends FCommand
@Override @Override
public void perform() public void perform()
{ {
if (helpPages == null) updateHelp();
int page = this.argAsInt(0, 1); int page = this.argAsInt(0, 1);
sendMessage(p.txt.titleize("Factions Help ("+page+"/"+helpPages.size()+")")); sendMessage(p.txt.titleize("Factions Help ("+page+"/"+helpPages.size()+")"));
@ -51,140 +53,135 @@ public class CmdHelp extends FCommand
// Build the help pages // Build the help pages
//----------------------------------------------// //----------------------------------------------//
public static ArrayList<ArrayList<String>> helpPages; public ArrayList<ArrayList<String>> helpPages;
public static void updateHelp() public void updateHelp()
{ {
helpPages = new ArrayList<ArrayList<String>>(); helpPages = new ArrayList<ArrayList<String>>();
ArrayList<String> pageLines; ArrayList<String> pageLines;
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( new CmdHelp().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdHelp.getUseageTemplate() );
pageLines.add( new CmdList().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdList.getUseageTemplate() );
pageLines.add( new CmdShow().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdShow.getUseageTemplate() );
pageLines.add( new CmdPower().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPower.getUseageTemplate() );
pageLines.add( new CmdJoin().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdJoin.getUseageTemplate() );
pageLines.add( new CmdLeave().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdLeave.getUseageTemplate() );
pageLines.add( new CmdChat().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdChat.getUseageTemplate() );
pageLines.add( new CmdHome().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdHome.getUseageTemplate() );
pageLines.add( "Learn how to create a faction on the next page." ); pageLines.add( p.txt.parse("<i>Learn how to create a faction on the next page.") );
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( new CmdCreate().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdCreate.getUseageTemplate() );
pageLines.add( new CmdDescription().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDescription.getUseageTemplate() );
pageLines.add( new CmdTag().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdTag.getUseageTemplate() );
pageLines.add( "You might want to close it and use invitations:" ); pageLines.add( p.txt.parse("<i>You might want to close it and use invitations:" ));
pageLines.add( new CmdOpen().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdOpen.getUseageTemplate() );
pageLines.add( new CmdInvite().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdInvite.getUseageTemplate() );
pageLines.add( new CmdDeinvite().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDeinvite.getUseageTemplate() );
pageLines.add( "And don't forget to set your home:" ); pageLines.add( p.txt.parse("<i>And don't forget to set your home:" ));
pageLines.add( new CmdSethome().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSethome.getUseageTemplate() );
helpPages.add(pageLines); helpPages.add(pageLines);
if (Econ.enabled() && Conf.bankEnabled) if (Econ.enabled() && Conf.bankEnabled)
{ {
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( "" ); pageLines.add( "" );
pageLines.add( "Your faction has a bank which is used to pay for certain" ); pageLines.add( p.txt.parse("<i>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("<i>things, so it will need to have money deposited into it." ));
pageLines.add( "" ); pageLines.add( "" );
pageLines.add( new CmdBalance().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdBalance.getUseageTemplate() );
pageLines.add( new CmdDeposit().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDeposit.getUseageTemplate() );
pageLines.add( new CmdWithdraw().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdWithdraw.getUseageTemplate() );
pageLines.add( new CmdPay().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPay.getUseageTemplate() );
pageLines.add( "" ); pageLines.add( "" );
helpPages.add(pageLines); helpPages.add(pageLines);
} }
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( new CmdClaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdClaim.getUseageTemplate() );
pageLines.add( new CmdAutoClaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAutoClaim.getUseageTemplate() );
pageLines.add( new CmdUnclaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdUnclaim.getUseageTemplate() );
pageLines.add( new CmdUnclaimall().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdUnclaimall.getUseageTemplate() );
pageLines.add( new CmdKick().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdKick.getUseageTemplate() );
pageLines.add( new CmdMod().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdMod.getUseageTemplate() );
pageLines.add( new CmdAdmin().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAdmin.getUseageTemplate() );
pageLines.add( new CmdTitle().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdTitle.getUseageTemplate() );
pageLines.add( "Player titles are just for fun. No rules connected to them." ); pageLines.add( p.txt.parse("<i>Player titles are just for fun. No rules connected to them." ));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( new CmdMap().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdMap.getUseageTemplate() );
pageLines.add( new CmdBoom().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdBoom.getUseageTemplate() );
pageLines.add(""); pageLines.add("");
pageLines.add( new CmdOwner().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdOwner.getUseageTemplate() );
pageLines.add( new CmdOwnerList().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdOwnerList.getUseageTemplate() );
pageLines.add(""); pageLines.add("");
pageLines.add("Claimed land with ownership set is further protected so"); pageLines.add(p.txt.parse("<i>Claimed land with ownership set is further protected so"));
pageLines.add("that only the owner(s), faction admin, and possibly the"); pageLines.add(p.txt.parse("<i>that only the owner(s), faction admin, and possibly the"));
pageLines.add("faction moderators have full access."); pageLines.add(p.txt.parse("<i>faction moderators have full access."));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add( new CmdDisband().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdDisband.getUseageTemplate() );
pageLines.add(""); pageLines.add("");
pageLines.add( new CmdRelationAlly().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdRelationAlly.getUseageTemplate() );
pageLines.add( new CmdRelationNeutral().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdRelationNeutral.getUseageTemplate() );
pageLines.add( new CmdRelationEnemy().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdRelationEnemy.getUseageTemplate() );
pageLines.add("Set the relation you WISH to have with another faction."); pageLines.add(p.txt.parse("<i>Set the relation you WISH to have with another faction."));
pageLines.add("Your default relation with other factions will be neutral."); pageLines.add(p.txt.parse("<i>Your default relation with other factions will be neutral."));
pageLines.add("If BOTH factions choose \"ally\" you will be allies."); pageLines.add(p.txt.parse("<i>If BOTH factions choose \"ally\" you will be allies."));
pageLines.add("If ONE faction chooses \"enemy\" you will be enemies."); pageLines.add(p.txt.parse("<i>If ONE faction chooses \"enemy\" you will be enemies."));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add("You can never hurt members or allies."); pageLines.add(p.txt.parse("<i>You can never hurt members or allies."));
pageLines.add("You can not hurt neutrals in their own territory."); pageLines.add(p.txt.parse("<i>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("<i>You can always hurt enemies and players without faction."));
pageLines.add(""); pageLines.add("");
pageLines.add("Damage from enemies is reduced in your own territory."); pageLines.add(p.txt.parse("<i>Damage from enemies is reduced in your own territory."));
pageLines.add("When you die you lose power. It is restored over time."); pageLines.add(p.txt.parse("<i>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(p.txt.parse("<i>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(p.txt.parse("<i>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("<i>You can claim land from factions with too little power."));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add("Only faction members can build and destroy in their own"); pageLines.add(p.txt.parse("<i>Only faction members can build and destroy in their own"));
pageLines.add("territory. Usage of the following items is also restricted:"); pageLines.add(p.txt.parse("<i>territory. Usage of the following items is also restricted:"));
pageLines.add("Door, Chest, Furnace, Dispenser, Diode."); pageLines.add(p.txt.parse("<i>Door, Chest, Furnace, Dispenser, Diode."));
pageLines.add(""); pageLines.add("");
pageLines.add("Make sure to put pressure plates in front of doors for your"); pageLines.add(p.txt.parse("<i>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(p.txt.parse("<i>guest visitors. Otherwise they can't get through. You can"));
pageLines.add("also use this to create member only areas."); pageLines.add(p.txt.parse("<i>also use this to create member only areas."));
pageLines.add("As dispensers are protected, you can create traps without"); pageLines.add(p.txt.parse("<i>As dispensers are protected, you can create traps without"));
pageLines.add("worrying about those arrows getting stolen."); pageLines.add(p.txt.parse("<i>worrying about those arrows getting stolen."));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add("Finally some commands for the server admins:"); pageLines.add("Finally some commands for the server admins:");
pageLines.add( new CmdBypass().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdBypass.getUseageTemplate() );
pageLines.add( new CmdSafeclaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSafeclaim.getUseageTemplate() );
pageLines.add( new CmdAutoSafeclaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAutoSafeclaim.getUseageTemplate() );
pageLines.add( new CmdSafeunclaimall().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSafeunclaimall.getUseageTemplate() );
pageLines.add( new CmdWarclaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdWarclaim.getUseageTemplate() );
pageLines.add( new CmdAutoWarclaim().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdAutoWarclaim.getUseageTemplate() );
pageLines.add( new CmdWarunclaimall().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdWarunclaimall.getUseageTemplate() );
pageLines.add("Note: " + new CmdUnclaim().getUseageTemplate(false) + P.p.txt.parse("<i>") + " works on safe/war zones as well."); pageLines.add(p.txt.parse("<i>Note: " + p.cmdBase.cmdUnclaim.getUseageTemplate(false) + P.p.txt.parse("<i>") + " works on safe/war zones as well."));
helpPages.add(pageLines); helpPages.add(pageLines);
pageLines = new ArrayList<String>(); pageLines = new ArrayList<String>();
pageLines.add("More commands for server admins:"); pageLines.add(p.txt.parse("<i>More commands for server admins:"));
pageLines.add( new CmdPeaceful().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPeaceful.getUseageTemplate() );
pageLines.add( new CmdPermanent().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdPermanent.getUseageTemplate() );
pageLines.add("Peaceful factions are protected from PvP and land capture."); pageLines.add(p.txt.parse("<i>Peaceful factions are protected from PvP and land capture."));
pageLines.add( new CmdLock().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdLock.getUseageTemplate() );
pageLines.add( new CmdReload().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdReload.getUseageTemplate() );
pageLines.add( new CmdSaveAll().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdSaveAll.getUseageTemplate() );
pageLines.add( new CmdVersion().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdVersion.getUseageTemplate() );
pageLines.add( new CmdConfig().getUseageTemplate() ); pageLines.add( p.cmdBase.cmdConfig.getUseageTemplate() );
helpPages.add(pageLines); helpPages.add(pageLines);
} }
static
{
updateHelp();
}
} }

View File

@ -40,32 +40,32 @@ public class CmdHome extends FCommand
// TODO: Hide this command on help also. // TODO: Hide this command on help also.
if ( ! Conf.homesEnabled) if ( ! Conf.homesEnabled)
{ {
fme.sendMessage("Sorry, Faction homes are disabled on this server."); fme.sendMessageParsed("<b>Sorry, Faction homes are disabled on this server.");
return; return;
} }
if ( ! Conf.homesTeleportCommandEnabled) if ( ! Conf.homesTeleportCommandEnabled)
{ {
fme.sendMessage("Sorry, the ability to teleport to Faction homes is disabled on this server."); fme.sendMessageParsed("<b>Sorry, the ability to teleport to Faction homes is disabled on this server.");
return; return;
} }
if ( ! myFaction.hasHome()) 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.sendMessageParsed("<b>You faction does not have a home. " + (fme.getRole().value < Role.MODERATOR.value ? "<i> Ask your leader to:" : "<i>You should:"));
fme.sendMessage(new CmdSethome().getUseageTemplate()); fme.sendMessage(p.cmdBase.cmdSethome.getUseageTemplate());
return; return;
} }
if ( ! Conf.homesTeleportAllowedFromEnemyTerritory && fme.isInEnemyTerritory()) if ( ! Conf.homesTeleportAllowedFromEnemyTerritory && fme.isInEnemyTerritory())
{ {
fme.sendMessage("You cannot teleport to your faction home while in the territory of an enemy faction."); fme.sendMessageParsed("<b>You cannot teleport to your faction home while in the territory of an enemy faction.");
return; return;
} }
if ( ! Conf.homesTeleportAllowedFromDifferentWorld && me.getWorld().getUID() != myFaction.getHome().getWorld().getUID()) 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("<b>You cannot teleport to your faction home while in a different world.");
return; return;
} }
@ -114,7 +114,7 @@ public class CmdHome extends FCommand
if (dx > max || dy > max || dz > max) if (dx > max || dy > max || dz > max)
continue; continue;
fme.sendMessage("You cannot teleport to your faction home while an enemy is within " + Conf.homesTeleportAllowedEnemyDistance + " blocks of you."); fme.sendMessageParsed("<b>You cannot teleport to your faction home while an enemy is within " + Conf.homesTeleportAllowedEnemyDistance + " blocks of you.");
return; return;
} }
} }

View File

@ -55,7 +55,7 @@ public class CmdJoin extends FCommand
if( ! faction.getOpen() && ! faction.isInvited(fme)) if( ! faction.getOpen() && ! faction.isInvited(fme))
{ {
sendMessageParsed("<i>This guild requires invitation."); sendMessageParsed("<i>This faction requires invitation.");
faction.sendMessageParsed("%s<i> tried to join your faction.", fme.getNameAndRelevant(faction)); faction.sendMessageParsed("%s<i> tried to join your faction.", fme.getNameAndRelevant(faction));
return; return;
} }

View File

@ -67,7 +67,7 @@ public class CmdList extends FCommand
}); });
ArrayList<String> lines = new ArrayList<String>(); ArrayList<String> lines = new ArrayList<String>();
lines.add(p.txt.parse("Factionless <i> %d online", Factions.i.getNone().getFPlayersWhereOnline(true).size())); lines.add(p.txt.parse("<i>Factionless<i> %d online", Factions.i.getNone().getFPlayersWhereOnline(true).size()));
for (Faction faction : factionList) for (Faction faction : factionList)
{ {
lines.add(p.txt.parse("%s<i> %d/%d online, %d/%d/%d", lines.add(p.txt.parse("%s<i> %d/%d online, %d/%d/%d",

View File

@ -35,7 +35,7 @@ public class CmdOpen extends FCommand
String open = myFaction.getOpen() ? "open" : "closed"; String open = myFaction.getOpen() ? "open" : "closed";
// Inform // Inform
myFaction.sendMessageParsed("%s<i> changed the faction to ", fme.getNameAndRelevant(myFaction)); myFaction.sendMessageParsed("%s<i> changed the faction to <h>%s<i>.", fme.getNameAndRelevant(myFaction), open);
for (Faction faction : Factions.i.get()) for (Faction faction : Factions.i.get())
{ {
if (faction == myFaction) if (faction == myFaction)

View File

@ -72,7 +72,7 @@ public class CmdReload extends FCommand
long timeReload = (System.currentTimeMillis()-timeInitStart); long timeReload = (System.currentTimeMillis()-timeInitStart);
sendMessageParsed("reloaded %s from disk, took %dms", fileName, timeReload); sendMessageParsed("<i>Reloaded <h>%s <i>from disk, took <h>%dms<i>.", fileName, timeReload);
} }
} }

View File

@ -66,8 +66,8 @@ public class CmdSethome extends FCommand
faction.setHome(me.getLocation()); faction.setHome(me.getLocation());
faction.sendMessage(fme.getNameAndRelevant(myFaction)+"<i> set the home for your faction. You can now use:"); faction.sendMessageParsed("%s<i> set the home for your faction. You can now use:", fme.getNameAndRelevant(myFaction));
faction.sendMessage(new CmdHome().getUseageTemplate()); faction.sendMessage(p.cmdBase.cmdHome.getUseageTemplate());
if (faction != myFaction) if (faction != myFaction)
{ {
fme.sendMessageParsed("<b>You have set the home for the "+faction.getTag(fme)+"<i> faction."); fme.sendMessageParsed("<b>You have set the home for the "+faction.getTag(fme)+"<i> faction.");

View File

@ -72,55 +72,55 @@ public class FCmdRoot extends FCommand
//this.subCommands.add(p.cmdHelp); //this.subCommands.add(p.cmdHelp);
this.subCommands.add(this.cmdAdmin); this.addSubCommand(this.cmdAdmin);
this.subCommands.add(this.cmdAutoClaim); this.addSubCommand(this.cmdAutoClaim);
this.subCommands.add(this.cmdAutoSafeclaim); this.addSubCommand(this.cmdAutoSafeclaim);
this.subCommands.add(this.cmdAutoWarclaim); this.addSubCommand(this.cmdAutoWarclaim);
this.subCommands.add(this.cmdBalance); this.addSubCommand(this.cmdBalance);
this.subCommands.add(this.cmdBoom); this.addSubCommand(this.cmdBoom);
this.subCommands.add(this.cmdBypass); this.addSubCommand(this.cmdBypass);
this.subCommands.add(this.cmdChat); this.addSubCommand(this.cmdChat);
this.subCommands.add(this.cmdClaim); this.addSubCommand(this.cmdClaim);
this.subCommands.add(this.cmdConfig); this.addSubCommand(this.cmdConfig);
this.subCommands.add(this.cmdCreate); this.addSubCommand(this.cmdCreate);
this.subCommands.add(this.cmdDeinvite); this.addSubCommand(this.cmdDeinvite);
this.subCommands.add(this.cmdDeposit); this.addSubCommand(this.cmdDeposit);
this.subCommands.add(this.cmdDescription); this.addSubCommand(this.cmdDescription);
this.subCommands.add(this.cmdDisband); this.addSubCommand(this.cmdDisband);
this.subCommands.add(this.cmdHelp); this.addSubCommand(this.cmdHelp);
this.subCommands.add(this.cmdHome); this.addSubCommand(this.cmdHome);
this.subCommands.add(this.cmdInvite); this.addSubCommand(this.cmdInvite);
this.subCommands.add(this.cmdJoin); this.addSubCommand(this.cmdJoin);
this.subCommands.add(this.cmdKick); this.addSubCommand(this.cmdKick);
this.subCommands.add(this.cmdLeave); this.addSubCommand(this.cmdLeave);
this.subCommands.add(this.cmdList); this.addSubCommand(this.cmdList);
this.subCommands.add(this.cmdLock); this.addSubCommand(this.cmdLock);
this.subCommands.add(this.cmdMap); this.addSubCommand(this.cmdMap);
this.subCommands.add(this.cmdMod); this.addSubCommand(this.cmdMod);
this.subCommands.add(this.cmdOpen); this.addSubCommand(this.cmdOpen);
this.subCommands.add(this.cmdOwner); this.addSubCommand(this.cmdOwner);
this.subCommands.add(this.cmdOwnerList); this.addSubCommand(this.cmdOwnerList);
this.subCommands.add(this.cmdPay); this.addSubCommand(this.cmdPay);
this.subCommands.add(this.cmdPeaceful); this.addSubCommand(this.cmdPeaceful);
this.subCommands.add(this.cmdPermanent); this.addSubCommand(this.cmdPermanent);
this.subCommands.add(this.cmdPower); this.addSubCommand(this.cmdPower);
this.subCommands.add(this.cmdRelationAlly); this.addSubCommand(this.cmdRelationAlly);
this.subCommands.add(this.cmdRelationEnemy); this.addSubCommand(this.cmdRelationEnemy);
this.subCommands.add(this.cmdRelationNeutral); this.addSubCommand(this.cmdRelationNeutral);
this.subCommands.add(this.cmdReload); this.addSubCommand(this.cmdReload);
this.subCommands.add(this.cmdSafeclaim); this.addSubCommand(this.cmdSafeclaim);
this.subCommands.add(this.cmdSafeunclaimall); this.addSubCommand(this.cmdSafeunclaimall);
this.subCommands.add(this.cmdSaveAll); this.addSubCommand(this.cmdSaveAll);
this.subCommands.add(this.cmdSethome); this.addSubCommand(this.cmdSethome);
this.subCommands.add(this.cmdShow); this.addSubCommand(this.cmdShow);
this.subCommands.add(this.cmdTag); this.addSubCommand(this.cmdTag);
this.subCommands.add(this.cmdTitle); this.addSubCommand(this.cmdTitle);
this.subCommands.add(this.cmdUnclaim); this.addSubCommand(this.cmdUnclaim);
this.subCommands.add(this.cmdUnclaimall); this.addSubCommand(this.cmdUnclaimall);
this.subCommands.add(this.cmdVersion); this.addSubCommand(this.cmdVersion);
this.subCommands.add(this.cmdWarclaim); this.addSubCommand(this.cmdWarclaim);
this.subCommands.add(this.cmdWarunclaimall); this.addSubCommand(this.cmdWarunclaimall);
this.subCommands.add(this.cmdWithdraw); this.addSubCommand(this.cmdWithdraw);
} }
@Override @Override

View File

@ -31,6 +31,7 @@ public abstract class FRelationCommand extends FCommand
public void perform() public void perform()
{ {
Faction them = this.argAsFaction(0); Faction them = this.argAsFaction(0);
if (them == null) return;
if ( ! them.isNormal()) if ( ! them.isNormal())
{ {

View File

@ -4,7 +4,6 @@ import org.bukkit.event.Event;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.massivecraft.factions.listeners.FactionsServerListener; import com.massivecraft.factions.listeners.FactionsServerListener;
import com.massivecraft.factions.cmd.CmdHelp;
import com.earth2me.essentials.api.Economy; import com.earth2me.essentials.api.Economy;
import com.nijikokun.register.payment.Methods; import com.nijikokun.register.payment.Methods;
@ -15,36 +14,47 @@ import com.massivecraft.factions.Conf;
import com.massivecraft.factions.P; import com.massivecraft.factions.P;
public class Econ { public class Econ
{
private static boolean registerUse = false; private static boolean registerUse = false;
private static boolean iConomyUse = false; private static boolean iConomyUse = false;
private static boolean essEcoUse = 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_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); P.p.getServer().getPluginManager().registerEvent(Event.Type.PLUGIN_DISABLE, new FactionsServerListener(P.p), Event.Priority.Monitor, P.p);
} }
public static void setup(P factions) { public static void setup(P factions)
if (enabled()) { {
if (enabled())
{
return; return;
} }
if (!registerHooked()) { if (!registerHooked())
{
Plugin plug = factions.getServer().getPluginManager().getPlugin("Register"); 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); registerSet(true);
} }
} }
if (!iConomyHooked()) { if (!iConomyHooked())
{
Plugin plug = factions.getServer().getPluginManager().getPlugin("iConomy"); 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); iConomySet(true);
} }
} }
if (!essentialsEcoHooked()) { if (!essentialsEcoHooked())
{
Plugin plug = factions.getServer().getPluginManager().getPlugin("Essentials"); Plugin plug = factions.getServer().getPluginManager().getPlugin("Essentials");
if (plug != null && plug.isEnabled()) { if (plug != null && plug.isEnabled())
{
essentialsEcoSet(true); essentialsEcoSet(true);
} }
} }
@ -59,7 +69,7 @@ public class Econ {
else { else {
P.p.log("Un-hooked from Register."); P.p.log("Un-hooked from Register.");
} }
CmdHelp.updateHelp(); P.p.cmdBase.cmdHelp.updateHelp();
} }
public static void iConomySet(boolean enable) public static void iConomySet(boolean enable)
@ -71,7 +81,7 @@ public class Econ {
else { else {
P.p.log("Un-hooked from iConomy."); P.p.log("Un-hooked from iConomy.");
} }
CmdHelp.updateHelp(); P.p.cmdBase.cmdHelp.updateHelp();
} }
public static void essentialsEcoSet(boolean enable) public static void essentialsEcoSet(boolean enable)
@ -85,7 +95,7 @@ public class Econ {
{ {
P.p.log("Un-hooked from EssentialsEco."); P.p.log("Un-hooked from EssentialsEco.");
} }
CmdHelp.updateHelp(); P.p.cmdBase.cmdHelp.updateHelp();
} }
public static boolean registerHooked() public static boolean registerHooked()

View File

@ -44,6 +44,12 @@ public class FactionsChatEarlyListener extends PlayerListener
if (event.isCancelled()) return; if (event.isCancelled()) return;
if (p.handleCommand(event.getPlayer(), event.getMessage()))
{
event.setCancelled(true);
return;
}
Player talkingPlayer = event.getPlayer(); Player talkingPlayer = event.getPlayer();
String msg = event.getMessage(); String msg = event.getMessage();

View File

@ -4,8 +4,10 @@ import java.util.*;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
public class AsciiCompass { public class AsciiCompass
public enum Point { {
public enum Point
{
N('N'), N('N'),
NE('/'), NE('/'),
E('E'), E('E'),
@ -17,21 +19,25 @@ public class AsciiCompass {
public final char asciiChar; public final char asciiChar;
private Point(final char asciiChar) { private Point(final char asciiChar)
{
this.asciiChar = asciiChar; this.asciiChar = asciiChar;
} }
@Override @Override
public String toString() { public String toString()
{
return String.valueOf(this.asciiChar); 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); 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 ; double degrees = (inDegrees - 90) % 360 ;
if (degrees < 0) if (degrees < 0)
degrees += 360; degrees += 360;
@ -58,7 +64,8 @@ public class AsciiCompass {
return null; return null;
} }
public static ArrayList<String> getAsciiCompass(Point point, ChatColor colorActive, String colorDefault) { public static ArrayList<String> getAsciiCompass(Point point, ChatColor colorActive, String colorDefault)
{
ArrayList<String> ret = new ArrayList<String>(); ArrayList<String> ret = new ArrayList<String>();
String row; String row;
@ -83,7 +90,8 @@ public class AsciiCompass {
return ret; return ret;
} }
public static ArrayList<String> getAsciiCompass(double inDegrees, ChatColor colorActive, String colorDefault) { public static ArrayList<String> getAsciiCompass(double inDegrees, ChatColor colorActive, String colorDefault)
{
return getAsciiCompass(getCompassPointForDirection(inDegrees), colorActive, colorDefault); return getAsciiCompass(getCompassPointForDirection(inDegrees), colorActive, colorDefault);
} }
} }

View File

@ -18,6 +18,12 @@ public abstract class MCommand<T extends MPlugin>
// The sub-commands to this command // The sub-commands to this command
public List<MCommand<?>> subCommands; public List<MCommand<?>> 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 // The different names this commands will react to
public List<String> aliases; public List<String> aliases;
@ -58,7 +64,7 @@ public abstract class MCommand<T extends MPlugin>
public Player me; // Will only be set when the sender is a player public Player me; // Will only be set when the sender is a player
public boolean senderIsConsole; public boolean senderIsConsole;
public List<String> args; // Will contain the arguments, or and empty list if there are none. public List<String> args; // Will contain the arguments, or and empty list if there are none.
public List<MCommand<?>> commandChain; // The command chain used to execute this command public List<MCommand<?>> commandChain = new ArrayList<MCommand<?>>(); // The command chain used to execute this command
public MCommand(T p) public MCommand(T p)
{ {

View File

@ -211,7 +211,7 @@ public abstract class MPlugin extends JavaPlugin
for (String alias : command.aliases) for (String alias : command.aliases)
{ {
if (commandString.startsWith(alias) || commandString.equals(alias+" ")) if (commandString.startsWith(alias+" ") || commandString.equals(alias))
{ {
List<String> args = new ArrayList<String>(Arrays.asList(commandString.split("\\s+"))); List<String> args = new ArrayList<String>(Arrays.asList(commandString.split("\\s+")));
args.remove(0); args.remove(0);

View File

@ -51,5 +51,4 @@ public class MPluginSecretPlayerListener extends PlayerListener
} }
} }
} }
} }

View File

@ -90,6 +90,7 @@ public abstract class EntityCollection<E extends Entity>
public boolean exists(String id) public boolean exists(String id)
{ {
if (id == null) return false;
return id2entity.get(id) != null; return id2entity.get(id) != null;
} }
@ -110,7 +111,9 @@ public abstract class EntityCollection<E extends Entity>
try try
{ {
e = this.entityClass.newInstance(); e = this.entityClass.newInstance();
} catch (Exception ignored) {} } catch (Exception ignored) {
ignored.printStackTrace();
}
e.setId(id); e.setId(id);
this.entities.add(e); this.entities.add(e);

View File

@ -26,14 +26,6 @@ public class PlayerEntity extends Entity
// Message Sending Helpers // Message Sending Helpers
// -------------------------------------------- // // -------------------------------------------- //
/*
public void sendMessageParsed(String str, Object... args)
{
this.sendMessage(p.txt.parse(str, args));
}
Refference issue!!
*/
public void sendMessage(String msg) public void sendMessage(String msg)
{ {
Player player = this.getPlayer(); Player player = this.getPlayer();