104 lines
4.7 KiB
Java
104 lines
4.7 KiB
Java
package dev.siskel.poketDimensions.commands.player;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.Objects;
|
|
import java.util.logging.Logger;
|
|
import java.util.stream.Collectors;
|
|
|
|
import dev.siskel.poketDimensions.managers.InviteManager;
|
|
import dev.siskel.poketDimensions.managers.PoketDimensionManager;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandExecutor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.command.TabCompleter;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.plugin.Plugin;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
public class pd implements CommandExecutor, TabCompleter{
|
|
public static final String[] actionlist = new String[]{"invite", "kick", "acceptinv"};
|
|
public Logger logger = Bukkit.getLogger();
|
|
private final Plugin plugin = Bukkit.getPluginManager().getPlugin("PoketDimensions");
|
|
private final InviteManager inviteManager;
|
|
private final PoketDimensionManager pocketDimensionManager;
|
|
|
|
public pd(InviteManager inviteManager, PoketDimensionManager pocketDimensionManager) {
|
|
this.inviteManager = inviteManager;
|
|
this.pocketDimensionManager = pocketDimensionManager;
|
|
}
|
|
|
|
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
|
|
if (!(sender instanceof Player)) {
|
|
sender.sendMessage("This command can only be executed by a player.");
|
|
return true;
|
|
} else {
|
|
Player player = ((Player)sender).getPlayer();
|
|
if (args.length != 0 && !args[0].isEmpty()) {
|
|
boolean isValidAction = Arrays.stream(actionlist).anyMatch((action) -> action.equals(args[0]));
|
|
if (!isValidAction) {
|
|
player.sendMessage("Invalid action. Valid actions are: " + Arrays.toString(actionlist));
|
|
return true;
|
|
} else {
|
|
this.logger.info(Arrays.toString(args));
|
|
if (args[0].equals("invite")) {
|
|
if (!player.hasPermission("pocketdimensions.commands.player.pd.invite")) {
|
|
player.sendMessage(ChatColor.RED + "No permission");
|
|
return true;
|
|
} else if (args.length < 2) {
|
|
player.sendMessage("You must specify a player for this action.\nUsage:/pd invite <player>");
|
|
return true;
|
|
} else {
|
|
String targetPlayerName = args[1];
|
|
Player targetPlayer = Bukkit.getPlayer(targetPlayerName);
|
|
if (targetPlayer == null) {
|
|
player.sendMessage("The specified player is not online.");
|
|
return true;
|
|
} else {
|
|
this.inviteManager.sendInvite(player, targetPlayer);
|
|
return true;
|
|
}
|
|
}
|
|
} else {
|
|
if (args[0].equals("acceptinv")) {
|
|
this.inviteManager.acceptInvite((Player)Objects.requireNonNull(((Player)sender).getPlayer()));
|
|
}
|
|
|
|
if (args[0].equals("kick")) {
|
|
if (!player.hasPermission("pocketdimensions.commands.player.pd.kick")) {
|
|
player.sendMessage(ChatColor.RED + "No permission");
|
|
return true;
|
|
}
|
|
|
|
if (args.length < 2) {
|
|
player.sendMessage("You must specify a player for this action.\nUsage:/pd kick <player>");
|
|
return true;
|
|
}
|
|
|
|
String targetPlayerName = args[1];
|
|
Player targetPlayer = Bukkit.getPlayer(targetPlayerName);
|
|
this.pocketDimensionManager.kick(player, targetPlayer);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
} else {
|
|
player.sendMessage("Mention an action. Usage: /pd <action> [player]");
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
|
|
if (args.length == 1) {
|
|
return Arrays.asList(actionlist);
|
|
} else {
|
|
return args.length == 2 ? (List)Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList()) : null;
|
|
}
|
|
}
|
|
}
|