87 lines
2.5 KiB
Java
87 lines
2.5 KiB
Java
package com.massivecraft.factions.commands;
|
|
|
|
import com.massivecraft.factions.Conf;
|
|
import com.massivecraft.factions.integration.Econ;
|
|
import com.massivecraft.factions.Faction;
|
|
import com.massivecraft.factions.P;
|
|
import com.massivecraft.factions.FPlayer;
|
|
import com.massivecraft.factions.integration.SpoutFeatures;
|
|
import com.massivecraft.factions.struct.Role;
|
|
|
|
|
|
public class FCommandDisband extends FBaseCommand {
|
|
|
|
public FCommandDisband() {
|
|
aliases.add("disband");
|
|
|
|
senderMustBePlayer = false;
|
|
|
|
optionalParameters.add("faction tag");
|
|
|
|
helpDescription = "Disband a faction";
|
|
}
|
|
|
|
@Override
|
|
public void perform() {
|
|
|
|
Faction faction = null;
|
|
|
|
if( parameters.size() > 0) {
|
|
faction = Faction.findByTag(parameters.get(0));
|
|
|
|
if( faction == null || !faction.isNormal()) {
|
|
sendMessage("Faction \"" + parameters.get(0) + "\" not found");
|
|
return;
|
|
}
|
|
|
|
if ( ! P.hasPermDisband(sender)) {
|
|
if (me.getFaction() == faction) {
|
|
parameters.clear();
|
|
}
|
|
else {
|
|
sendMessage("You do not have sufficient permission to disband other factions.");
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
if (parameters.isEmpty()) {
|
|
if ( ! assertHasFaction()) {
|
|
return;
|
|
}
|
|
if ( ! assertMinRole(Role.ADMIN)) {
|
|
return;
|
|
}
|
|
|
|
faction = me.getFaction();
|
|
|
|
if (faction.isPermanent() && !P.hasPermDisband(sender)) {
|
|
sendMessage("Your faction is designated as permanent, so you cannot disband it.");
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Inform all players
|
|
for (FPlayer fplayer : FPlayer.getAllOnline()) {
|
|
if (fplayer.getFaction() == faction) {
|
|
fplayer.sendMessage((senderIsConsole ? "A server admin" : me.getNameAndRelevant(fplayer))+Conf.colorSystem+" disbanded your faction.");
|
|
} else {
|
|
fplayer.sendMessage((senderIsConsole ? "A server admin" : me.getNameAndRelevant(fplayer))+Conf.colorSystem+" disbanded the faction "+faction.getTag(fplayer)+".");
|
|
}
|
|
}
|
|
|
|
if (Conf.bankEnabled) {
|
|
double amount = faction.getMoney();
|
|
Econ.addMoney(me.getName(), amount ); //Give all the faction's money to the disbander
|
|
if (amount > 0.0) {
|
|
String amountString = Econ.moneyString(amount);
|
|
sendMessage("You have been given the disbanded faction's bank, totaling "+amountString+".");
|
|
P.log(player.getName() + " has been given bank holdings of "+amountString+" from disbanding "+faction.getTag()+".");
|
|
}
|
|
}
|
|
|
|
Faction.delete( faction.getId() );
|
|
SpoutFeatures.updateAppearances();
|
|
|
|
}
|
|
}
|