diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdAHome.java b/src/main/java/com/massivecraft/factions/cmd/CmdAHome.java new file mode 100644 index 00000000..f9a2bdc1 --- /dev/null +++ b/src/main/java/com/massivecraft/factions/cmd/CmdAHome.java @@ -0,0 +1,52 @@ +package com.massivecraft.factions.cmd; + +import com.massivecraft.factions.FPlayer; +import com.massivecraft.factions.Faction; +import com.massivecraft.factions.struct.Permission; +import com.massivecraft.factions.zcore.util.TL; +import org.bukkit.event.player.PlayerTeleportEvent; + +public class CmdAHome extends FCommand { + + public CmdAHome() { + super(); + this.aliases.add("ahome"); + + this.requiredArgs.add("player name"); + + this.permission = Permission.AHOME.node; + this.disableOnLock = false; + + senderMustBePlayer = false; + senderMustBeMember = false; + senderMustBeModerator = false; + senderMustBeAdmin = false; + } + + @Override + public void perform() { + FPlayer target = argAsBestFPlayerMatch(0); + if (target == null) { + msg(TL.GENERIC_NOPLAYERMATCH, argAsString(0)); + return; + } + + if (target.isOnline()) { + Faction faction = target.getFaction(); + if (faction.hasHome()) { + target.getPlayer().teleport(faction.getHome(), PlayerTeleportEvent.TeleportCause.PLUGIN); + msg(TL.COMMAND_AHOME_SUCCESS, target.getName()); + target.msg(TL.COMMAND_AHOME_TARGET); + } else { + msg(TL.COMMAND_AHOME_NOHOME, target.getName()); + } + } else { + msg(TL.COMMAND_AHOME_OFFLINE, target.getName()); + } + } + + @Override + public TL getUsageTranslation() { + return TL.COMMAND_AHOME_DESCRIPTION; + } +} diff --git a/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java b/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java index 8615aa50..366e2fa3 100644 --- a/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java +++ b/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java @@ -67,6 +67,7 @@ public class FCmdRoot extends FCommand { public CmdLogins cmdLogins = new CmdLogins(); public CmdClaimLine cmdClaimLine = new CmdClaimLine(); public CmdTop cmdTop = new CmdTop(); + public CmdAHome cmdAHome = new CmdAHome(); public FCmdRoot() { super(); @@ -149,6 +150,7 @@ public class FCmdRoot extends FCommand { this.addSubCommand(this.cmdLogins); this.addSubCommand(this.cmdClaimLine); this.addSubCommand(this.cmdTop); + this.addSubCommand(this.cmdAHome); } @Override diff --git a/src/main/java/com/massivecraft/factions/struct/Permission.java b/src/main/java/com/massivecraft/factions/struct/Permission.java index e6a816a0..42718746 100644 --- a/src/main/java/com/massivecraft/factions/struct/Permission.java +++ b/src/main/java/com/massivecraft/factions/struct/Permission.java @@ -9,6 +9,7 @@ public enum Permission { OWNERSHIP_BYPASS("ownershipbypass"), ADMIN("admin"), ADMIN_ANY("admin.any"), + AHOME("ahome"), ANNOUNCE("announce"), AUTOCLAIM("autoclaim"), BYPASS("bypass"), 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 c4b17b7c..2061e644 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TL.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TL.java @@ -59,6 +59,12 @@ public enum TL { COMMAND_ADMIN_PROMOTED("%1$s gave %2$s the leadership of %3$s."), COMMAND_ADMIN_DESCRIPTION("Hand over your admin rights"), + COMMAND_AHOME_DESCRIPTION("Send a player to their f home no matter what."), + COMMAND_AHOME_NOHOME("%1$s doesn't have an f home."), + COMMAND_AHOME_SUCCESS("$1%s was sent to their f home."), + COMMAND_AHOME_OFFLINE("%1$s is offline."), + COMMAND_AHOME_TARGET("You were sent to your f home."), + COMMAND_ANNOUNCE_DESCRIPTION("Announce a message to players in faction."), COMMAND_AUTOCLAIM_ENABLED("Now auto-claiming land for %1$s."), diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index c45800dd..6e6b43e2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -17,6 +17,7 @@ permissions: factions.reload: true factions.save: true factions.modifypower: true + factions.ahome: true factions.*: description: This is just an alias for factions.kit.admin children: @@ -259,4 +260,6 @@ permissions: factions.togglealliancechat: description: toggle alliance chat on and off factions.dontlosepoweroffline: - description: Don't lose power for being offline. \ No newline at end of file + description: Don't lose power for being offline. + factions.ahome: + description: Ability to send players to their faction home. \ No newline at end of file