Made a Factions.disband() method into the api.
This commit is contained in:
parent
2320fe2586
commit
408725c1d7
@ -198,6 +198,8 @@ public interface Faction extends EconomyParticipator {
|
|||||||
|
|
||||||
void resetPerms();
|
void resetPerms();
|
||||||
|
|
||||||
|
void disband(Player disbander);
|
||||||
|
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
// Relation and relation colors
|
// Relation and relation colors
|
||||||
// -------------------------------
|
// -------------------------------
|
||||||
|
@ -1,14 +1,9 @@
|
|||||||
package com.massivecraft.factions.cmd;
|
package com.massivecraft.factions.cmd;
|
||||||
|
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.Faction;
|
||||||
import com.massivecraft.factions.event.FPlayerLeaveEvent;
|
|
||||||
import com.massivecraft.factions.event.FactionDisbandEvent;
|
|
||||||
import com.massivecraft.factions.integration.Econ;
|
|
||||||
import com.massivecraft.factions.scoreboards.FTeamWrapper;
|
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.struct.Role;
|
import com.massivecraft.factions.struct.Role;
|
||||||
import com.massivecraft.factions.zcore.util.TL;
|
import com.massivecraft.factions.zcore.util.TL;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
|
|
||||||
public class CmdDisband extends FCommand {
|
public class CmdDisband extends FCommand {
|
||||||
@ -59,46 +54,8 @@ public class CmdDisband extends FCommand {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FactionDisbandEvent disbandEvent = new FactionDisbandEvent(me, faction.getId());
|
//Success
|
||||||
Bukkit.getServer().getPluginManager().callEvent(disbandEvent);
|
faction.disband(me);
|
||||||
if (disbandEvent.isCancelled()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send FPlayerLeaveEvent for each player in the faction
|
|
||||||
for (FPlayer fplayer : faction.getFPlayers()) {
|
|
||||||
Bukkit.getServer().getPluginManager().callEvent(new FPlayerLeaveEvent(fplayer, faction, FPlayerLeaveEvent.PlayerLeaveReason.DISBAND));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Inform all players
|
|
||||||
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
|
|
||||||
String who = senderIsConsole ? TL.GENERIC_SERVERADMIN.toString() : fme.describeTo(fplayer);
|
|
||||||
if (fplayer.getFaction() == faction) {
|
|
||||||
fplayer.msg(TL.COMMAND_DISBAND_BROADCAST_YOURS, who);
|
|
||||||
} else {
|
|
||||||
fplayer.msg(TL.COMMAND_DISBAND_BROADCAST_NOTYOURS, who, faction.getTag(fplayer));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (Conf.logFactionDisband) {
|
|
||||||
//TODO: Format this correctly and translate.
|
|
||||||
P.p.log("The faction " + faction.getTag() + " (" + faction.getId() + ") was disbanded by " + (senderIsConsole ? "console command" : fme.getName()) + ".");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Econ.shouldBeUsed() && !senderIsConsole) {
|
|
||||||
//Give all the faction's money to the disbander
|
|
||||||
double amount = Econ.getBalance(faction.getAccountId());
|
|
||||||
Econ.transferMoney(fme, faction, fme, amount, false);
|
|
||||||
|
|
||||||
if (amount > 0.0) {
|
|
||||||
String amountString = Econ.moneyString(amount);
|
|
||||||
msg(TL.COMMAND_DISBAND_HOLDINGS, amountString);
|
|
||||||
//TODO: Format this correctly and translate
|
|
||||||
P.p.log(fme.getName() + " has been given bank holdings of " + amountString + " from disbanding " + faction.getTag() + ".");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Factions.getInstance().removeFaction(faction.getId());
|
|
||||||
FTeamWrapper.applyUpdates(faction);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package com.massivecraft.factions.zcore.persist;
|
package com.massivecraft.factions.zcore.persist;
|
||||||
|
|
||||||
import com.massivecraft.factions.*;
|
import com.massivecraft.factions.*;
|
||||||
|
import com.massivecraft.factions.event.FPlayerLeaveEvent;
|
||||||
|
import com.massivecraft.factions.event.FactionDisbandEvent;
|
||||||
import com.massivecraft.factions.iface.EconomyParticipator;
|
import com.massivecraft.factions.iface.EconomyParticipator;
|
||||||
import com.massivecraft.factions.iface.RelationParticipator;
|
import com.massivecraft.factions.iface.RelationParticipator;
|
||||||
import com.massivecraft.factions.integration.Econ;
|
import com.massivecraft.factions.integration.Econ;
|
||||||
|
import com.massivecraft.factions.scoreboards.FTeamWrapper;
|
||||||
import com.massivecraft.factions.struct.BanInfo;
|
import com.massivecraft.factions.struct.BanInfo;
|
||||||
import com.massivecraft.factions.struct.Permission;
|
import com.massivecraft.factions.struct.Permission;
|
||||||
import com.massivecraft.factions.struct.Relation;
|
import com.massivecraft.factions.struct.Relation;
|
||||||
@ -137,9 +140,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeAnnouncements(FPlayer fPlayer) {
|
public void removeAnnouncements(FPlayer fPlayer) {
|
||||||
if (announcements.containsKey(fPlayer.getId())) {
|
announcements.remove(fPlayer.getId());
|
||||||
announcements.remove(fPlayer.getId());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ConcurrentHashMap<String, LazyLocation> getWarps() {
|
public ConcurrentHashMap<String, LazyLocation> getWarps() {
|
||||||
@ -225,6 +226,54 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void disband(Player disbander) {
|
||||||
|
|
||||||
|
boolean disbanderIsConsole = disbander == null;
|
||||||
|
FPlayer fdisbander = FPlayers.getInstance().getByOfflinePlayer(disbander);
|
||||||
|
|
||||||
|
FactionDisbandEvent disbandEvent = new FactionDisbandEvent(disbander, this.getId());
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(disbandEvent);
|
||||||
|
if (disbandEvent.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send FPlayerLeaveEvent for each player in the faction
|
||||||
|
for (FPlayer fplayer : this.getFPlayers()) {
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(new FPlayerLeaveEvent(fplayer, this, FPlayerLeaveEvent.PlayerLeaveReason.DISBAND));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Inform all players
|
||||||
|
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
|
||||||
|
String who = disbanderIsConsole ? TL.GENERIC_SERVERADMIN.toString() : fdisbander.describeTo(fplayer);
|
||||||
|
if (fplayer.getFaction() == this) {
|
||||||
|
fplayer.msg(TL.COMMAND_DISBAND_BROADCAST_YOURS, who);
|
||||||
|
} else {
|
||||||
|
fplayer.msg(TL.COMMAND_DISBAND_BROADCAST_NOTYOURS, who, this.getTag(fplayer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Conf.logFactionDisband) {
|
||||||
|
//TODO: Format this correctly and translate.
|
||||||
|
P.p.log("The faction " + this.getTag() + " (" + this.getId() + ") was disbanded by " + (disbanderIsConsole ? "console command" : fdisbander.getName()) + ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Econ.shouldBeUsed() && !disbanderIsConsole) {
|
||||||
|
//Give all the faction's money to the disbander
|
||||||
|
double amount = Econ.getBalance(this.getAccountId());
|
||||||
|
Econ.transferMoney(fdisbander, this, fdisbander, amount, false);
|
||||||
|
|
||||||
|
if (amount > 0.0) {
|
||||||
|
String amountString = Econ.moneyString(amount);
|
||||||
|
msg(TL.COMMAND_DISBAND_HOLDINGS, amountString);
|
||||||
|
//TODO: Format this correctly and translate
|
||||||
|
P.p.log(fdisbander.getName() + " has been given bank holdings of " + amountString + " from disbanding " + this.getTag() + ".");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Factions.getInstance().removeFaction(this.getId());
|
||||||
|
FTeamWrapper.applyUpdates(this);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isBanned(FPlayer player) {
|
public boolean isBanned(FPlayer player) {
|
||||||
for (BanInfo info : bans) {
|
for (BanInfo info : bans) {
|
||||||
if (info.getBanned().equalsIgnoreCase(player.getId())) {
|
if (info.getBanned().equalsIgnoreCase(player.getId())) {
|
||||||
|
Loading…
Reference in New Issue
Block a user