2011-10-09 21:57:43 +02:00
|
|
|
package com.massivecraft.factions.cmd;
|
2011-03-22 15:45:41 +01:00
|
|
|
|
2011-07-18 22:06:02 +02:00
|
|
|
import com.massivecraft.factions.Conf;
|
|
|
|
import com.massivecraft.factions.FPlayer;
|
|
|
|
import com.massivecraft.factions.Faction;
|
2011-10-09 18:35:39 +02:00
|
|
|
import com.massivecraft.factions.Factions;
|
2014-04-04 20:55:21 +02:00
|
|
|
import com.massivecraft.factions.integration.Econ;
|
2011-10-09 18:35:39 +02:00
|
|
|
import com.massivecraft.factions.struct.Permission;
|
2012-11-06 16:43:30 +01:00
|
|
|
import com.massivecraft.factions.struct.Relation;
|
2014-04-04 20:55:21 +02:00
|
|
|
import com.massivecraft.factions.struct.Role;
|
2014-11-13 20:49:13 +01:00
|
|
|
import mkremins.fanciful.FancyMessage;
|
|
|
|
import org.bukkit.ChatColor;
|
2014-04-04 20:55:21 +02:00
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
|
|
public class CmdShow extends FCommand {
|
|
|
|
|
|
|
|
public CmdShow() {
|
2014-07-01 22:10:18 +02:00
|
|
|
this.aliases.add("show");
|
|
|
|
this.aliases.add("who");
|
2014-04-04 20:55:21 +02:00
|
|
|
|
|
|
|
//this.requiredArgs.add("");
|
|
|
|
this.optionalArgs.put("faction tag", "yours");
|
|
|
|
|
2014-07-01 22:10:18 +02:00
|
|
|
this.permission = Permission.SHOW.node;
|
|
|
|
this.disableOnLock = false;
|
2014-04-04 20:55:21 +02:00
|
|
|
|
2014-07-01 22:10:18 +02:00
|
|
|
senderMustBePlayer = true;
|
|
|
|
senderMustBeMember = false;
|
|
|
|
senderMustBeModerator = false;
|
|
|
|
senderMustBeAdmin = false;
|
2014-04-04 20:55:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void perform() {
|
2014-07-01 22:10:18 +02:00
|
|
|
Faction faction = myFaction;
|
|
|
|
if (this.argIsSet(0)) {
|
|
|
|
faction = this.argAsFaction(0);
|
|
|
|
if (faction == null) {
|
|
|
|
return;
|
|
|
|
}
|
2014-04-04 20:55:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// if economy is enabled, they're not on the bypass list, and this command has a cost set, make 'em pay
|
2014-07-01 21:49:42 +02:00
|
|
|
if (!payForCommand(Conf.econCostShow, "to show faction information", "for showing faction information")) {
|
|
|
|
return;
|
|
|
|
}
|
2014-04-04 20:55:21 +02:00
|
|
|
|
|
|
|
Collection<FPlayer> admins = faction.getFPlayersWhereRole(Role.ADMIN);
|
|
|
|
Collection<FPlayer> mods = faction.getFPlayersWhereRole(Role.MODERATOR);
|
|
|
|
Collection<FPlayer> normals = faction.getFPlayersWhereRole(Role.NORMAL);
|
|
|
|
|
2014-07-01 22:10:18 +02:00
|
|
|
msg(p.txt.titleize(faction.getTag(fme)));
|
|
|
|
msg("<a>Description: <i>%s", faction.getDescription());
|
2014-04-04 20:55:21 +02:00
|
|
|
if (!faction.isNormal()) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2014-07-01 22:10:18 +02:00
|
|
|
String peaceStatus = "";
|
|
|
|
if (faction.isPeaceful()) {
|
2014-04-04 20:55:21 +02:00
|
|
|
peaceStatus = " " + Conf.colorNeutral + "This faction is Peaceful";
|
|
|
|
}
|
|
|
|
|
|
|
|
msg("<a>Joining: <i>" + (faction.getOpen() ? "no invitation is needed" : "invitation is required") + peaceStatus);
|
|
|
|
|
|
|
|
double powerBoost = faction.getPowerBoost();
|
|
|
|
String boost = (powerBoost == 0.0) ? "" : (powerBoost > 0.0 ? " (bonus: " : " (penalty: ") + powerBoost + ")";
|
|
|
|
msg("<a>Land / Power / Maxpower: <i> %d/%d/%d %s", faction.getLandRounded(), faction.getPowerRounded(), faction.getPowerMaxRounded(), boost);
|
|
|
|
|
|
|
|
if (faction.isPermanent()) {
|
|
|
|
msg("<a>This faction is permanent, remaining even with no members.");
|
|
|
|
}
|
|
|
|
|
|
|
|
// show the land value
|
|
|
|
if (Econ.shouldBeUsed()) {
|
|
|
|
double value = Econ.calculateTotalLandValue(faction.getLandRounded());
|
2014-07-01 22:10:18 +02:00
|
|
|
double refund = value * Conf.econClaimRefundMultiplier;
|
|
|
|
if (value > 0) {
|
2014-04-04 20:55:21 +02:00
|
|
|
String stringValue = Econ.moneyString(value);
|
|
|
|
String stringRefund = (refund > 0.0) ? (" (" + Econ.moneyString(refund) + " depreciated)") : "";
|
|
|
|
msg("<a>Total land value: <i>" + stringValue + stringRefund);
|
|
|
|
}
|
|
|
|
|
|
|
|
//Show bank contents
|
|
|
|
if (Conf.bankEnabled) {
|
|
|
|
msg("<a>Bank contains: <i>" + Econ.moneyString(Econ.getBalance(faction.getAccountId())));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-11-13 20:49:13 +01:00
|
|
|
FancyMessage allies = new FancyMessage("Allies: ").color(ChatColor.GOLD);
|
|
|
|
FancyMessage enemies = new FancyMessage("Enemies: ").color(ChatColor.GOLD);
|
2014-11-17 19:32:34 +01:00
|
|
|
boolean firstAlly = true;
|
|
|
|
boolean firstEnemy = true;
|
2014-10-19 07:37:25 +02:00
|
|
|
for (Faction otherFaction : Factions.getInstance().getAllFactions()) {
|
2014-07-01 22:10:18 +02:00
|
|
|
if (otherFaction == faction) {
|
|
|
|
continue;
|
|
|
|
}
|
2014-04-04 20:55:21 +02:00
|
|
|
|
2014-07-01 22:10:18 +02:00
|
|
|
Relation rel = otherFaction.getRelationTo(faction);
|
2014-11-13 20:49:13 +01:00
|
|
|
String s = otherFaction.getTag(fme);
|
2014-07-01 22:10:18 +02:00
|
|
|
if (rel.isAlly()) {
|
2014-11-17 19:32:34 +01:00
|
|
|
if (firstAlly)
|
|
|
|
allies.then(s).tooltip(getToolTips(otherFaction));
|
|
|
|
else
|
|
|
|
alies.then(", " + s).tooltip(getToolTips(otherFaction));
|
|
|
|
firstAlly = false;
|
2014-07-01 22:10:18 +02:00
|
|
|
} else if (rel.isEnemy()) {
|
2014-11-17 19:32:34 +01:00
|
|
|
if (firstEnemy)
|
|
|
|
enemies.then(s).tooltip(getToolTips(otherFaction));
|
|
|
|
else
|
|
|
|
enemies.then(", " + s).tooltip(getToolTips(otherFaction));
|
|
|
|
firstEnemy = false;
|
2014-07-01 22:10:18 +02:00
|
|
|
}
|
|
|
|
}
|
2014-04-04 20:55:21 +02:00
|
|
|
|
|
|
|
|
2014-11-13 20:49:13 +01:00
|
|
|
FancyMessage online = new FancyMessage("Members online: ").color(ChatColor.GOLD);
|
|
|
|
FancyMessage offline = new FancyMessage("Members offline: ").color(ChatColor.GOLD);
|
2014-11-17 19:32:34 +01:00
|
|
|
boolean firstOnline = true;
|
|
|
|
boolean firstOffline = true;
|
2014-11-13 20:49:13 +01:00
|
|
|
for (FPlayer p : faction.getFPlayers()) {
|
|
|
|
String name = p.getNameAndTitle();
|
|
|
|
if (p.isOnline()) {
|
2014-11-17 19:32:34 +01:00
|
|
|
if (firstOnline)
|
|
|
|
online.then(name).tooltip(getToolTips(p));
|
|
|
|
else
|
|
|
|
online.then(", " + name).tooltip(getToolTips(p));
|
|
|
|
firstOnline = false;
|
2014-07-01 21:52:40 +02:00
|
|
|
} else {
|
2014-11-17 19:32:34 +01:00
|
|
|
if (firstOffline)
|
|
|
|
offline.then(name).tooltip(getToolTips(p));
|
|
|
|
else
|
|
|
|
offline.then(", " + name).tooltip(getToolTips(p));
|
|
|
|
firstOffline = false;
|
2014-04-04 20:55:21 +02:00
|
|
|
}
|
2014-07-01 22:10:18 +02:00
|
|
|
}
|
2014-04-04 20:55:21 +02:00
|
|
|
|
2014-11-13 20:49:13 +01:00
|
|
|
// Send all at once ;D
|
|
|
|
sendFancyMessage(allies);
|
|
|
|
sendFancyMessage(enemies);
|
|
|
|
sendFancyMessage(online);
|
|
|
|
sendFancyMessage(offline);
|
2014-04-04 20:55:21 +02:00
|
|
|
}
|
2011-03-22 15:45:41 +01:00
|
|
|
|
|
|
|
}
|