Files
PoketDimensions/src/main/java/dev/siskel/poketDimensions/commands/player/pd.java
T
2025-05-13 18:35:25 +02:00

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;
}
}
}