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"),