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:
parent
120039b07f
commit
632e2b2d1c
@ -1,12 +1,12 @@
|
||||
package com.massivecraft.factions.commands;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.Conf;
|
||||
import com.massivecraft.factions.Faction;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.FPlayer;
|
||||
import com.massivecraft.factions.SpoutFeatures;
|
||||
import com.massivecraft.factions.struct.Role;
|
||||
|
||||
|
||||
public class FCommandDisband extends FBaseCommand {
|
||||
|
||||
@ -15,37 +15,55 @@ public class FCommandDisband extends FBaseCommand {
|
||||
|
||||
senderMustBePlayer = false;
|
||||
|
||||
requiredParameters.add("faction tag");
|
||||
optionalParameters.add("faction tag");
|
||||
|
||||
helpDescription = "Disband a faction";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(CommandSender sender) {
|
||||
return Factions.hasPermDisband(sender);
|
||||
}
|
||||
|
||||
@Override
|
||||
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()) {
|
||||
sendMessage("Faction " + parameters.get(0) + "not found");
|
||||
sendMessage("Faction \"" + parameters.get(0) + "\" not found");
|
||||
return;
|
||||
}
|
||||
|
||||
// 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)+".");
|
||||
if ( ! Factions.hasPermDisband(sender)) {
|
||||
if (me.getFaction() == faction) {
|
||||
parameters.clear();
|
||||
}
|
||||
else {
|
||||
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();
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user