package org.dragons.dragonscheck;

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.entity.Player;

public class CheckCommand implements CommandExecutor {

    private final DragonsCheckPlugin plugin;
    private final PlayerEventListener playerEventListener;

    public CheckCommand(DragonsCheckPlugin plugin, PlayerEventListener playerEventListener) {
        this.plugin = plugin;
        this.playerEventListener = playerEventListener;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage(ChatColor.RED + "Эту команду может использовать только игрок.");
            return true;
        }

        Player moderator = (Player) sender;

        if (args.length != 1) {
            moderator.sendMessage(ChatColor.RED + "Использование: /check <ник>");
            return true;
        }

        if (!moderator.hasPermission("dragonscheck.check")) {
            moderator.sendMessage(ChatColor.RED + "У вас нет прав на использование этой команды.");
            return true;
        }

        Player target = Bukkit.getPlayerExact(args[0]);
        if (target == null) {
            moderator.sendMessage(ChatColor.RED + "Игрок не найден.");
            return true;
        }

        if (target.equals(moderator)) {
            moderator.sendMessage(ChatColor.RED + "Вы не можете вызвать себя на проверку.");
            return true;
        }

        if (playerEventListener.isPlayerInCheck(target)) {
            Player currentModerator = playerEventListener.getModeratorCheckingPlayer(target);
            if (currentModerator != null && !currentModerator.equals(moderator)) {
                moderator.sendMessage(ChatColor.RED + "Игрок уже проверяется модератором " + currentModerator.getName() + ".");
                return true;
            }

            playerEventListener.removePlayerFromCheck(target);
            target.sendTitle(
                    ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("endCheckMessage.title")),
                    ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("endCheckMessage.subtitle")),
                    10, 70, 20
            );
            moderator.sendMessage(ChatColor.GREEN + "Проверка игрока завершена.");
        } else {
            target.teleport(moderator.getLocation());
            playerEventListener.addPlayerToCheck(target, moderator, false); // Обычная проверка
            plugin.sendAlertToPlayer(target, moderator, "checkMessage");
            moderator.sendMessage(ChatColor.GREEN + "Игрок вызван на проверку.");
        }
        return true;
    }
}



package org.dragons.dragonscheck;

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.entity.Player;

public class AnyCheckCommand implements CommandExecutor {

    private final DragonsCheckPlugin plugin;
    private final PlayerEventListener playerEventListener;

    public AnyCheckCommand(DragonsCheckPlugin plugin, PlayerEventListener playerEventListener) {
        this.plugin = plugin;
        this.playerEventListener = playerEventListener;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage(ChatColor.RED + "Эту команду может использовать только игрок.");
            return true;
        }

        Player moderator = (Player) sender;

        if (args.length != 1) {
            moderator.sendMessage(ChatColor.RED + "Использование: /anycheck <ник>");
            return true;
        }

        if (!moderator.hasPermission("dragonscheck.anycheck")) {
            moderator.sendMessage(ChatColor.RED + "У вас нет прав на использование этой команды.");
            return true;
        }

        Player target = Bukkit.getPlayerExact(args[0]);
        if (target == null) {
            moderator.sendMessage(ChatColor.RED + "Игрок не найден.");
            return true;
        }

        if (target.equals(moderator)) {
            moderator.sendMessage(ChatColor.RED + "Вы не можете вызвать себя на продвинутую проверку.");
            return true;
        }

        if (playerEventListener.isPlayerInCheck(target)) {
            Player currentModerator = playerEventListener.getModeratorCheckingPlayer(target);
            if (currentModerator != null && !currentModerator.equals(moderator)) {
                moderator.sendMessage(ChatColor.RED + "Игрок уже проверяется модератором " + currentModerator.getName() + ".");
                return true;
            }

            playerEventListener.removePlayerFromCheck(target);
            target.sendTitle(
                    ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("endCheckMessage.title")),
                    ChatColor.translateAlternateColorCodes('&', plugin.getConfig().getString("endCheckMessage.subtitle")),
                    10, 70, 20
            );
            moderator.sendMessage(ChatColor.GREEN + "Продвинутая проверка игрока завершена.");
        } else {
            target.teleport(moderator.getLocation());
            playerEventListener.addPlayerToCheck(target, moderator, true); // Продвинутая проверка
            plugin.sendAlertToPlayer(target, moderator, "anyCheckMessage");
            moderator.sendMessage(ChatColor.GREEN + "Игрок вызван на продвинутую проверку.");
        }
        return true;
    }
}


В этих двух классах сделай чтобы если модератор который находится в воздухе попытался вызвать игрока то он не мог