Faction admins can now disband their own faction using /f disband; note that use of /f disband with another faction specified (/f disband <faction tag>) still requires the factions.disband permission, but the permission is not required for faction admins disbanding their own faction

This commit is contained in:
Brettflan 2011-09-12 22:23:44 -05:00
parent 120039b07f
commit 632e2b2d1c

View File

@ -1,12 +1,12 @@
package com.massivecraft.factions.commands; package com.massivecraft.factions.commands;
import org.bukkit.command.CommandSender;
import com.massivecraft.factions.Conf; import com.massivecraft.factions.Conf;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions; import com.massivecraft.factions.Factions;
import com.massivecraft.factions.FPlayer; import com.massivecraft.factions.FPlayer;
import com.massivecraft.factions.SpoutFeatures; import com.massivecraft.factions.SpoutFeatures;
import com.massivecraft.factions.struct.Role;
public class FCommandDisband extends FBaseCommand { public class FCommandDisband extends FBaseCommand {
@ -15,37 +15,55 @@ public class FCommandDisband extends FBaseCommand {
senderMustBePlayer = false; senderMustBePlayer = false;
requiredParameters.add("faction tag"); optionalParameters.add("faction tag");
helpDescription = "Disband a faction"; helpDescription = "Disband a faction";
} }
@Override
public boolean hasPermission(CommandSender sender) {
return Factions.hasPermDisband(sender);
}
@Override @Override
public void perform() { public void perform() {
if( parameters.size() > 0) {
Faction faction = Faction.findByTag(parameters.get(0)); Faction faction = null;
if( parameters.size() > 0) {
faction = Faction.findByTag(parameters.get(0));
if( faction == null || !faction.isNormal()) { if( faction == null || !faction.isNormal()) {
sendMessage("Faction " + parameters.get(0) + "not found"); sendMessage("Faction \"" + parameters.get(0) + "\" not found");
return; return;
} }
// Inform all players if ( ! Factions.hasPermDisband(sender)) {
for (FPlayer fplayer : FPlayer.getAllOnline()) { if (me.getFaction() == faction) {
if (fplayer.getFaction() == faction) { parameters.clear();
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" disbanded your faction."); }
} else { else {
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" disbanded the faction "+faction.getTag(fplayer)+"."); sendMessage("You do not have sufficient permission to disband other factions.");
return;
} }
} }
Faction.delete( faction.getId() );
SpoutFeatures.updateAppearances();
} }
if (parameters.isEmpty()) {
if ( ! assertHasFaction()) {
return;
}
if ( ! assertMinRole(Role.ADMIN)) {
return;
}
faction = me.getFaction();
}
// Inform all players
for (FPlayer fplayer : FPlayer.getAllOnline()) {
if (fplayer.getFaction() == faction) {
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" disbanded your faction.");
} else {
fplayer.sendMessage(me.getNameAndRelevant(fplayer)+Conf.colorSystem+" disbanded the faction "+faction.getTag(fplayer)+".");
}
}
Faction.delete( faction.getId() );
SpoutFeatures.updateAppearances();
} }
} }