2014-11-07 18:49:54 +01:00
|
|
|
package com.massivecraft.factions.cmd;
|
|
|
|
|
2014-11-11 16:28:53 +01:00
|
|
|
import com.massivecraft.factions.FPlayer;
|
2018-10-23 01:42:57 +02:00
|
|
|
import com.massivecraft.factions.SavageFactions;
|
2014-11-07 18:49:54 +01:00
|
|
|
import com.massivecraft.factions.struct.Permission;
|
2018-08-05 03:32:36 +02:00
|
|
|
import com.massivecraft.factions.struct.Role;
|
2015-05-25 22:53:48 +02:00
|
|
|
import com.massivecraft.factions.util.WarmUpUtil;
|
2018-03-04 21:53:20 +01:00
|
|
|
import com.massivecraft.factions.util.WarpGUI;
|
2018-02-03 22:04:21 +01:00
|
|
|
import com.massivecraft.factions.zcore.fperms.Access;
|
|
|
|
import com.massivecraft.factions.zcore.fperms.PermissableAction;
|
2014-12-08 00:12:52 +01:00
|
|
|
import com.massivecraft.factions.zcore.util.TL;
|
2015-09-07 16:00:58 +02:00
|
|
|
import org.bukkit.Bukkit;
|
2015-06-14 00:18:42 +02:00
|
|
|
import org.bukkit.entity.Player;
|
2014-11-07 18:49:54 +01:00
|
|
|
|
2015-09-07 16:00:58 +02:00
|
|
|
import java.util.UUID;
|
2014-12-08 04:59:59 +01:00
|
|
|
|
2014-11-07 18:49:54 +01:00
|
|
|
public class CmdFWarp extends FCommand {
|
|
|
|
|
|
|
|
public CmdFWarp() {
|
|
|
|
super();
|
|
|
|
this.aliases.add("warp");
|
|
|
|
this.aliases.add("warps");
|
|
|
|
this.optionalArgs.put("warpname", "warpname");
|
2017-12-19 11:10:52 +01:00
|
|
|
this.optionalArgs.put("password", "password");
|
2014-11-07 18:49:54 +01:00
|
|
|
|
|
|
|
this.permission = Permission.WARP.node;
|
|
|
|
this.senderMustBeMember = true;
|
|
|
|
this.senderMustBeModerator = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void perform() {
|
|
|
|
//TODO: check if in combat.
|
2018-11-07 06:38:43 +01:00
|
|
|
if (! fme.isAdminBypassing()) {
|
2018-09-09 00:28:09 +02:00
|
|
|
Access access = myFaction.getAccess(fme, PermissableAction.WARP);
|
2018-11-07 06:38:43 +01:00
|
|
|
if (access != Access.ALLOW && fme.getRole() != Role.LEADER) {
|
2018-09-09 00:28:09 +02:00
|
|
|
fme.msg(TL.GENERIC_FPERM_NOPERMISSION, "use warps");
|
|
|
|
return;
|
|
|
|
}
|
2018-02-03 22:04:21 +01:00
|
|
|
}
|
|
|
|
|
2018-08-02 19:55:21 +02:00
|
|
|
|
2014-11-07 18:49:54 +01:00
|
|
|
if (args.size() == 0) {
|
2018-03-04 21:53:20 +01:00
|
|
|
WarpGUI warpGUI = new WarpGUI(fme);
|
|
|
|
warpGUI.build();
|
|
|
|
|
|
|
|
me.openInventory(warpGUI.getInventory());
|
2017-12-19 11:10:52 +01:00
|
|
|
} else if (args.size() > 2) {
|
2014-12-08 00:12:52 +01:00
|
|
|
fme.msg(TL.COMMAND_FWARP_COMMANDFORMAT);
|
2014-11-07 18:49:54 +01:00
|
|
|
} else {
|
2015-01-20 00:59:15 +01:00
|
|
|
final String warpName = argAsString(0);
|
2017-12-19 11:10:52 +01:00
|
|
|
final String passwordAttempt = argAsString(1);
|
|
|
|
|
2014-11-07 18:49:54 +01:00
|
|
|
if (myFaction.isWarp(argAsString(0))) {
|
2017-12-19 11:10:52 +01:00
|
|
|
|
|
|
|
// Check if requires password and if so, check if valid. CASE SENSITIVE
|
2018-11-07 06:38:43 +01:00
|
|
|
if (myFaction.hasWarpPassword(warpName) && ! myFaction.isWarpPassword(warpName, passwordAttempt)) {
|
2017-12-19 11:10:52 +01:00
|
|
|
fme.msg(TL.COMMAND_FWARP_INVALID_PASSWORD);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check transaction AFTER password check.
|
2018-11-07 06:38:43 +01:00
|
|
|
if (! transact(fme)) {
|
2014-11-11 16:28:53 +01:00
|
|
|
return;
|
|
|
|
}
|
2015-09-07 16:00:58 +02:00
|
|
|
final FPlayer fPlayer = fme;
|
|
|
|
final UUID uuid = fme.getPlayer().getUniqueId();
|
2015-05-25 06:42:31 +02:00
|
|
|
this.doWarmUp(WarmUpUtil.Warmup.WARP, TL.WARMUPS_NOTIFY_TELEPORT, warpName, new Runnable() {
|
2015-01-20 00:59:15 +01:00
|
|
|
@Override
|
|
|
|
public void run() {
|
2015-09-07 16:00:58 +02:00
|
|
|
Player player = Bukkit.getPlayer(uuid);
|
2015-06-14 00:18:42 +02:00
|
|
|
if (player != null) {
|
2015-09-07 16:00:58 +02:00
|
|
|
player.teleport(fPlayer.getFaction().getWarp(warpName).getLocation());
|
|
|
|
fPlayer.msg(TL.COMMAND_FWARP_WARPED, warpName);
|
2015-06-14 00:18:42 +02:00
|
|
|
}
|
2015-01-20 00:59:15 +01:00
|
|
|
}
|
|
|
|
}, this.p.getConfig().getLong("warmups.f-warp", 0));
|
2014-11-07 18:49:54 +01:00
|
|
|
} else {
|
2018-04-03 16:38:11 +02:00
|
|
|
fme.msg(TL.COMMAND_FWARP_INVALID_WARP, warpName);
|
2014-11-07 18:49:54 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-11-11 16:28:53 +01:00
|
|
|
|
|
|
|
private boolean transact(FPlayer player) {
|
2018-11-07 06:38:43 +01:00
|
|
|
return ! SavageFactions.plugin.getConfig().getBoolean("warp-cost.enabled", false) || player.isAdminBypassing() || payForCommand(SavageFactions.plugin.getConfig().getDouble("warp-cost.warp", 5), TL.COMMAND_FWARP_TOWARP.toString(), TL.COMMAND_FWARP_FORWARPING.toString());
|
2014-11-11 16:28:53 +01:00
|
|
|
}
|
2015-01-22 00:58:33 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public TL getUsageTranslation() {
|
|
|
|
return TL.COMMAND_FWARP_DESCRIPTION;
|
|
|
|
}
|
2014-11-07 18:49:54 +01:00
|
|
|
}
|