2021-09-01 01:55:27 +00:00
|
|
|
package net.tylermurphy.hideAndSeek.command;
|
2021-08-13 20:49:36 +00:00
|
|
|
|
2021-10-23 00:03:15 +00:00
|
|
|
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
|
2021-08-25 03:43:01 +00:00
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
import java.util.Map;
|
|
|
|
|
2021-08-13 20:49:36 +00:00
|
|
|
import org.bukkit.command.CommandSender;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.util.Vector;
|
|
|
|
|
2021-10-21 00:14:01 +00:00
|
|
|
import net.tylermurphy.hideAndSeek.Main;
|
|
|
|
import net.tylermurphy.hideAndSeek.events.Worldborder;
|
2021-10-23 00:03:15 +00:00
|
|
|
import static net.tylermurphy.hideAndSeek.configuration.Localization.*;
|
2021-08-13 20:49:36 +00:00
|
|
|
|
|
|
|
public class SetBorder implements ICommand {
|
|
|
|
|
|
|
|
public void execute(CommandSender sender, String[] args) {
|
2021-10-21 00:14:01 +00:00
|
|
|
if(!Main.plugin.status.equals("Standby")) {
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(errorPrefix + message("GAME_INPROGRESS"));
|
2021-08-14 02:30:17 +00:00
|
|
|
return;
|
|
|
|
}
|
2021-08-13 20:49:36 +00:00
|
|
|
if(spawnPosition == null) {
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(errorPrefix + message("ERROR_GAME_SPAWN"));
|
2021-08-13 20:49:36 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
if(args.length < 2) {
|
2021-08-23 17:57:50 +00:00
|
|
|
worldborderEnabled = false;
|
2021-10-29 03:09:28 +00:00
|
|
|
addToConfig("worldBorder.enabled",false);
|
2021-08-23 17:57:50 +00:00
|
|
|
saveConfig();
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(messagePrefix + message("WORLDBORDER_DISABLE"));
|
2021-10-21 00:14:01 +00:00
|
|
|
Worldborder.resetWorldborder(spawnWorld);
|
2021-08-13 20:49:36 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
int num,delay;
|
|
|
|
try { num = Integer.parseInt(args[0]); } catch (Exception e) {
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(errorPrefix + message("WORLDBORDER_INVALID_INPUT").addAmount(args[0]));
|
2021-08-13 20:49:36 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
try { delay = Integer.parseInt(args[1]); } catch (Exception e) {
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(errorPrefix + message("WORLDBORDER_INVALID_INPUT").addAmount(args[1]));
|
2021-08-13 20:49:36 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
if(num < 100) {
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(errorPrefix + message("WORLDBORDER_MIN_SIZE"));
|
2021-08-13 20:49:36 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
Vector newWorldborderPosition = new Vector();
|
|
|
|
Player player = (Player) sender;
|
|
|
|
newWorldborderPosition.setX(player.getLocation().getBlockX());
|
|
|
|
newWorldborderPosition.setY(0);
|
|
|
|
newWorldborderPosition.setZ(player.getLocation().getBlockZ());
|
|
|
|
if(spawnPosition.distance(newWorldborderPosition) > 100) {
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(errorPrefix + message("WORLDBORDER_POSITION"));
|
2021-08-13 20:49:36 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
worldborderPosition = newWorldborderPosition;
|
|
|
|
worldborderSize = num;
|
|
|
|
worldborderDelay = delay;
|
2021-08-23 17:57:50 +00:00
|
|
|
worldborderEnabled = true;
|
2021-10-29 03:09:28 +00:00
|
|
|
addToConfig("worldBorder.x", worldborderPosition.getBlockX());
|
|
|
|
addToConfig("worldBorder.z", worldborderPosition.getBlockZ());
|
|
|
|
addToConfig("worldBorder.delay", worldborderDelay);
|
|
|
|
addToConfig("worldBorder.size", worldborderSize);
|
|
|
|
addToConfig("worldBorder.enabled", true);
|
2021-10-23 00:03:15 +00:00
|
|
|
sender.sendMessage(messagePrefix + message("WORLDBORDER_ENABLE").addAmount(num).addAmount(delay));
|
2021-08-13 20:49:36 +00:00
|
|
|
saveConfig();
|
2021-10-21 00:14:01 +00:00
|
|
|
Worldborder.resetWorldborder(spawnWorld);
|
2021-08-13 20:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public String getLabel() {
|
|
|
|
return "setBorder";
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getUsage() {
|
|
|
|
return "<size> <delay>";
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getDescription() {
|
2021-08-23 17:57:50 +00:00
|
|
|
return "Sets worldboarder's center location, size in blocks, and delay in minutes per shrink. Add no arguments to disable.";
|
2021-08-13 20:49:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|