diff --git a/pom.xml b/pom.xml
index 5a1563e0..d423d74f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -77,61 +77,6 @@
maven-javadoc-plugin
3.0.1
-
- com.github.wvengen
- proguard-maven-plugin
-
-
- package
-
- proguard
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ${java.home}/lib/rt.jar
-
-
-
diff --git a/src/main/java/com/massivecraft/factions/Faction.java b/src/main/java/com/massivecraft/factions/Faction.java
index 44aa68ce..4c8008c4 100644
--- a/src/main/java/com/massivecraft/factions/Faction.java
+++ b/src/main/java/com/massivecraft/factions/Faction.java
@@ -24,6 +24,11 @@ public interface Faction extends EconomyParticipator {
boolean altInvited(FPlayer fplayer);
+ void deinviteAlt(FPlayer alt);
+
+ void deinviteAllAlts();
+
+
void altInvite(FPlayer fplayer);
boolean addAltPlayer(FPlayer fplayer);
diff --git a/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java b/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java
index 70a346c5..3f694adf 100644
--- a/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java
+++ b/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java
@@ -249,11 +249,11 @@ public class FCmdRoot extends FCommand {
}
if(SaberFactions.plugin.getConfig().getBoolean("f-points.Enabled")){
- this.addSubCommand(cmdPoints);
+ this.addSubCommand(this.cmdPoints);
}
if(SaberFactions.plugin.getConfig().getBoolean("f-alts.Enabled")){
- this.addSubCommand(cmdAlts);
+ this.addSubCommand(this.cmdAlts);
}
if (SaberFactions.plugin.getConfig().getBoolean("f-grace.Enabled")) {
diff --git a/src/main/java/com/massivecraft/factions/cmd/alts/CmdAlts.java b/src/main/java/com/massivecraft/factions/cmd/alts/CmdAlts.java
index a1657e79..274f7724 100644
--- a/src/main/java/com/massivecraft/factions/cmd/alts/CmdAlts.java
+++ b/src/main/java/com/massivecraft/factions/cmd/alts/CmdAlts.java
@@ -8,7 +8,6 @@ import com.massivecraft.factions.zcore.util.TL;
public class CmdAlts extends FCommand {
- public CmdKickAlt cmdKickAlt = new CmdKickAlt();
public CmdInviteAlt cmdInviteAlt = new CmdInviteAlt();
public CmdAltsList cmdAltsList = new CmdAltsList();
@@ -24,13 +23,12 @@ public class CmdAlts extends FCommand {
this.disableOnSpam = false;
senderMustBePlayer = true;
- senderMustBeMember = true;
+ senderMustBeMember = false;
senderMustBeModerator = false;
senderMustBeAdmin = false;
this.addSubCommand(this.cmdInviteAlt);
- this.addSubCommand(this.cmdKickAlt);
this.addSubCommand(this.cmdAltsList);
}
diff --git a/src/main/java/com/massivecraft/factions/cmd/alts/CmdAltsList.java b/src/main/java/com/massivecraft/factions/cmd/alts/CmdAltsList.java
index 0339cfa7..4ed8e494 100644
--- a/src/main/java/com/massivecraft/factions/cmd/alts/CmdAltsList.java
+++ b/src/main/java/com/massivecraft/factions/cmd/alts/CmdAltsList.java
@@ -1,13 +1,13 @@
package com.massivecraft.factions.cmd.alts;
+import com.google.common.base.Joiner;
import com.massivecraft.factions.FPlayer;
+import com.massivecraft.factions.Faction;
import com.massivecraft.factions.cmd.FCommand;
import com.massivecraft.factions.struct.Permission;
import com.massivecraft.factions.zcore.util.TL;
-import org.apache.commons.lang.time.DurationFormatUtils;
-import org.bukkit.ChatColor;
-import java.util.ArrayList;
+import java.util.stream.Collectors;
public class CmdAltsList extends FCommand {
@@ -15,13 +15,16 @@ public class CmdAltsList extends FCommand {
public CmdAltsList() {
super();
this.aliases.add("list");
+ this.aliases.add("l");
+ this.optionalArgs.put("faction", "yours");
+
this.permission = Permission.LIST.node;
this.disableOnLock = false;
this.disableOnSpam = false;
senderMustBePlayer = true;
- senderMustBeMember = true;
+ senderMustBeMember = false;
senderMustBeModerator = false;
senderMustBeAdmin = false;
@@ -29,22 +32,27 @@ public class CmdAltsList extends FCommand {
@Override
public void perform() {
-
- ArrayList ret = new ArrayList<>();
- for (FPlayer fp : myFaction.getAltPlayers()) {
- if(myFaction.getAltPlayers().isEmpty()){
- fme.sendMessage(TL.COMMAND_ALTS_LIST_NOALTS.toString());
- return;
- }
-
- String humanized = DurationFormatUtils.formatDurationWords(System.currentTimeMillis() - fp.getLastLoginTime(), true, true) + TL.COMMAND_STATUS_AGOSUFFIX;
- String last = fp.isOnline() ? ChatColor.GREEN + TL.COMMAND_STATUS_ONLINE.toString() : (System.currentTimeMillis() - fp.getLastLoginTime() < 432000000 ? ChatColor.YELLOW + humanized : ChatColor.RED + humanized);
- String power = ChatColor.YELLOW + String.valueOf(fp.getPowerRounded()) + " / " + fp.getPowerMaxRounded() + ChatColor.RESET;
- ret.add(String.format(TL.COMMAND_ALTS_LIST_FORMAT.toString(), ChatColor.GOLD + fp.getName() + ChatColor.RESET, power, last).trim());
+ Faction faction = myFaction;
+ if(argIsSet(0)){
+ faction = argAsFaction(0);
}
- fme.sendMessage(ret);
+ if(faction == null)
+ return;
+
+ if(faction != myFaction && !fme.isAdminBypassing()){
+ return;
+ }
+
+ if(faction.getAltPlayers().size() == 0){
+ msg(TL.COMMAND_ALTS_LIST_NOALTS, faction.getTag());
+ return;
+ }
+
+ msg("There are " + faction.getAltPlayers().size() + " alts in " + faction.getTag() + ":");
+ msg("" + Joiner.on(", ").join(faction.getAltPlayers().stream().map(FPlayer::getName).collect(Collectors.toList())));
}
+
@Override
public TL getUsageTranslation() {
return TL.COMMAND_ALTS_LIST_DESCRIPTION;
diff --git a/src/main/java/com/massivecraft/factions/cmd/alts/CmdKickAlt.java b/src/main/java/com/massivecraft/factions/cmd/alts/CmdKickAlt.java
deleted file mode 100644
index ea607800..00000000
--- a/src/main/java/com/massivecraft/factions/cmd/alts/CmdKickAlt.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package com.massivecraft.factions.cmd.alts;
-
-import com.massivecraft.factions.Conf;
-import com.massivecraft.factions.FPlayer;
-import com.massivecraft.factions.Faction;
-import com.massivecraft.factions.SaberFactions;
-import com.massivecraft.factions.cmd.FCommand;
-import com.massivecraft.factions.event.FPlayerLeaveEvent;
-import com.massivecraft.factions.struct.Permission;
-import com.massivecraft.factions.struct.Role;
-import com.massivecraft.factions.zcore.fperms.Access;
-import com.massivecraft.factions.zcore.fperms.PermissableAction;
-import com.massivecraft.factions.zcore.util.TL;
-import org.bukkit.Bukkit;
-
-public class CmdKickAlt extends FCommand {
-
- public CmdKickAlt(){
- super();
- this.aliases.add("kick");
-
- this.requiredArgs.add("player name");
- // this.optionalArgs.put("", "");
-
- this.permission = Permission.KICK.node;
- this.disableOnLock = false;
-
- senderMustBePlayer = true;
- senderMustBeMember = true;
- senderMustBeModerator = false;
- senderMustBeAdmin = false;
- }
-
- @Override
- public void perform() {
- if (!SaberFactions.plugin.getConfig().getBoolean("f-alts.Enabled", false)) {
- fme.msg(TL.GENERIC_DISABLED);
- return;
- }
-
-
-
- FPlayer toKick = this.argIsSet(0) ? this.argAsBestFPlayerMatch(0) : null;
- if (toKick == null) {
- msg(TL.COMMAND_ALTKICK_NOTMEMBER);
- return;
- }
-
- if (fme == toKick) {
- msg(TL.COMMAND_KICK_SELF);
- msg(TL.GENERIC_YOUMAYWANT.toString() + p.cmdBase.cmdLeave.getUseageTemplate(false));
- return;
- }
-
- Faction toKickFaction = toKick.getFaction();
-
- if (toKickFaction.isWilderness()) {
- sender.sendMessage(TL.COMMAND_KICK_NONE.toString());
- return;
- }
-
- // players with admin-level "disband" permission can bypass these
- // requirements
- if (!Permission.KICK_ANY.has(sender)) {
-
- Access access = myFaction.getAccess(fme, PermissableAction.KICK);
- if (access == Access.DENY || (access == Access.UNDEFINED && !assertMinRole(Role.MODERATOR))) {
- fme.msg(TL.GENERIC_NOPERMISSION, "kick");
- return;
- }
-
- if (toKickFaction != myFaction) {
- msg(TL.COMMAND_KICK_NOTMEMBER, toKick.describeTo(fme, true), myFaction.describeTo(fme));
- return;
- }
-
- if (!toKick.isAlt()) {
- msg(TL.COMMAND_ALTKICK_NOTALT);
- return;
- }
-
- // Check for Access before we check for Role.
- if (access != Access.ALLOW && toKick.getRole().value >= fme.getRole().value) {
- msg(TL.COMMAND_KICK_INSUFFICIENTRANK);
- return;
- }
-
- if (!Conf.canLeaveWithNegativePower && toKick.getPower() < 0) {
- msg(TL.COMMAND_KICK_NEGATIVEPOWER);
- return;
- }
- }
-
- Access access = myFaction.getAccess(fme, PermissableAction.KICK);
- // This statement allows us to check if they've specifically denied it,
- // or default to
- // the old setting of allowing moderators to kick
- if (access == Access.DENY || (access == Access.UNDEFINED && !assertMinRole(Role.MODERATOR))) {
- fme.msg(TL.GENERIC_NOPERMISSION, "kick");
- return;
- }
-
- // if economy is enabled, they're not on the bypass list, and this
- // command has a cost set, make sure they can pay
- if (!canAffordCommand(Conf.econCostKick, TL.COMMAND_KICK_TOKICK.toString())) {
- return;
- }
-
- // trigger the leave event (cancellable) [reason:kicked]
- FPlayerLeaveEvent event = new FPlayerLeaveEvent(toKick, toKick.getFaction(), FPlayerLeaveEvent.PlayerLeaveReason.KICKED);
- Bukkit.getServer().getPluginManager().callEvent(event);
- if (event.isCancelled()) {
- return;
- }
-
- // then make 'em pay (if applicable)
- if (!payForCommand(Conf.econCostKick, TL.COMMAND_KICK_TOKICK.toString(), TL.COMMAND_KICK_FORKICK.toString())) {
- return;
- }
-
- toKickFaction.msg(TL.COMMAND_KICK_FACTION, fme.describeTo(toKickFaction, true), toKick.describeTo(toKickFaction, true));
-
- toKick.msg(TL.COMMAND_KICK_KICKED, fme.describeTo(toKick, true), toKickFaction.describeTo(toKick));
-
- if (toKickFaction != myFaction) {
- fme.msg(TL.COMMAND_KICK_KICKS, toKick.describeTo(fme), toKickFaction.describeTo(fme));
- }
-
- if (Conf.logFactionKick) {
- SaberFactions.plugin.log((senderIsConsole ? "A console command" : fme.getName()) + " kicked " + toKick.getName() + " from the faction: "
- + toKickFaction.getTag());
- }
- // SHOULD NOT BE POSSIBLE BUT KEPT INCASE
- if (toKick.getRole() == Role.LEADER) {
- toKickFaction.promoteNewLeader();
- }
-
- toKickFaction.removeAltPlayer(toKick);
- toKickFaction.deinvite(toKick);
- toKick.resetFactionData();
- }
-
- @Override
- public TL getUsageTranslation() {
- return TL.COMMAND_ALTKICK_DESCRIPTION;
- }
-
-}
diff --git a/src/main/java/com/massivecraft/factions/cmd/points/CmdPoints.java b/src/main/java/com/massivecraft/factions/cmd/points/CmdPoints.java
index 16c0ede1..fb30dcb9 100644
--- a/src/main/java/com/massivecraft/factions/cmd/points/CmdPoints.java
+++ b/src/main/java/com/massivecraft/factions/cmd/points/CmdPoints.java
@@ -35,7 +35,6 @@ public class CmdPoints extends FCommand {
fme.msg(TL.GENERIC_DISABLED);
return;
}
-
this.commandChain.add(this);
SaberFactions.plugin.cmdAutoHelp.execute(this.sender, this.args, this.commandChain);
}
diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java
index cec1460b..2255df4e 100644
--- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java
+++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java
@@ -225,12 +225,16 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator {
this.player = fp;
}
- public Set getInvites() {
- return invites;
+ public Set getInvites() { return invites; }
+
+ public Set getAltInvites() { return altinvites; }
+
+ public void deinviteAlt(FPlayer fplayer) {
+ altinvites.remove(fplayer.getId());
}
- public Set getAltInvites() {
- return altinvites;
+ public void deinviteAllAlts() {
+ altinvites.clear();
}
public String getId() {
diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TL.java b/src/main/java/com/massivecraft/factions/zcore/util/TL.java
index a7748fbd..db95d635 100644
--- a/src/main/java/com/massivecraft/factions/zcore/util/TL.java
+++ b/src/main/java/com/massivecraft/factions/zcore/util/TL.java
@@ -138,7 +138,6 @@ public enum TL {
COMMAND_AHOME_TARGET("You were sent to your f home."),
COMMAND_ANNOUNCE_DESCRIPTION("Announce a message to players in faction."),
-
COMMAND_ALTS_DESCRIPTION("Faction Alts Commands"),
COMMAND_STRIKE_DESCRIPTION("Faction Strike Commands"),
@@ -163,7 +162,7 @@ public enum TL {
COMMAND_ALTKICK_NOTALT("&c&l[!] &7Player is not an alt."),
COMMAND_ALTKICK_NOTMEMBER("&c&l[!] &7This player is not a member of your faction."),
- COMMAND_ALTS_LIST_NOALTS("&c&l[!] &7You have no alts in your faction!"),
+ COMMAND_ALTS_LIST_NOALTS("&c&l[!] &7$1%s does not have any alts in their faction!"),
COMMAND_AUTOHELP_HELPFOR("Help for command \""),
COMMAND_BAN_DESCRIPTION("Ban players from joining your Faction."),
@@ -726,6 +725,7 @@ public enum TL {
COMMAND_SHOWINVITES_DESCRIPTION("Show pending faction invites"),
COMMAND_ALTS_LIST_FORMAT("%1$s Power: %2$s Last Seen: %3$s"),
+ COMMAND_ALTS_DEINVITE_DESCRIPTION("Base command for revoking alt invitations"),
COMMAND_STATUS_FORMAT("%1$s Power: %2$s Last Seen: %3$s"),
COMMAND_STATUS_ONLINE("Online"),