Вопрос Как использовать встроенные команды в Paper

Версия Minecraft
1.20.X

_4iz

Пользователь
Сообщения
1
Начал изучать Java (к сожалению только по гайдам с ютуба и прочих платформ), сейчас пробую сделать простенький плагин по типу SCheckPlayer (не повторить функциона, а просто сделать проверку на читы).
В итоге мне нужно чтобы, игрока, который не прошел проверку банило, как реализовать не понимаю.

Если есть какие-либо ошибки, прошу скажите о них.

Java:
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;

public class Check implements CommandExecutor {

    private final Main plugin;

    public Check(Main plugin) {
        this.plugin = plugin;
    }

    @Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
        if (args.length < 2 || !args[0].equalsIgnoreCase("check")) {
            sender.sendMessage("§4Использование /ss check <on|off> [игрок]");
            return true;
        }

        Player target = getTargetPlayer(sender, args);
        if (target == null) {
            return true;
        }

        if (args[1].equalsIgnoreCase("on")) {

            plugin.freezePlayer(target);
            sender.sendMessage("Вы заморозили игрока: " + target.getName());
            target.sendMessage(Objects.requireNonNull(
                    plugin.getConfig().getString("messages.challenge-for-verification")));
            target.sendTitle("§4ПРОВЕРКА", "§aСмотрите в чат", 10, 100, 20);
            target.sendMessage(Objects.requireNonNull(
                    plugin.getConfig().getString("messages.manual")));


        } else if (args[1].equalsIgnoreCase("off")) {

            plugin.unfreezePlayer(target);
            sender.sendMessage("Вы разморозили игрока: " + target.getName());

        } else if (args[1].equalsIgnoreCase("yes")) {

            plugin.unfreezePlayer(target);
            sender.sendMessage("Вы разморозили игрока: " + target.getName());
            target.sendMessage(Objects.requireNonNull(
                    plugin.getConfig().getString("messages.verification-completed")));

        } else if (args[1].equalsIgnoreCase("no")) {

            plugin.unfreezePlayer(target);
            sender.sendMessage("Вы заблокировали игрока: " + target.getName());
            // Сюда нужна блокировка игрока

        } else {
            sender.sendMessage("§4Использование /ss check <on | off> [игрок]");
        }
        return true;


    }

    public Player getTargetPlayer(CommandSender sender, String[] args) {
        if (args.length >= 3) {
            Player target = Bukkit.getPlayer(args[2]);
            if (target == null) {
                sender.sendMessage("§cИгрок не найден или не в сети!");
            }
            return target;
        } else if (sender instanceof Player) {
            return (Player) sender;
        } else {
            sender.sendMessage("§cКонсоль должна указать игрока: /ss check <on|off|no> <игрок>");
        }
        return null;
    }
}
 
В итоге мне нужно чтобы, игрока, который не прошел проверку банило, как реализовать не понимаю.
API плагинов на баны, либо

Java:
// но это явно не лучший вариант
plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(), "ban ник");

А ещё крайне не советую хардкодить строки в плагин
 
Начал изучать Java (к сожалению только по гайдам с ютуба и прочих платформ), сейчас пробую сделать простенький плагин по типу SCheckPlayer (не повторить функциона, а просто сделать проверку на читы).
В итоге мне нужно чтобы, игрока, который не прошел проверку банило, как реализовать не понимаю.

Если есть какие-либо ошибки, прошу скажите о них.

Java:
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.Objects;

public class Check implements CommandExecutor {

    private final Main plugin;

    public Check(Main plugin) {
        this.plugin = plugin;
    }

    @Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
        if (args.length < 2 || !args[0].equalsIgnoreCase("check")) {
            sender.sendMessage("§4Использование /ss check <on|off> [игрок]");
            return true;
        }

        Player target = getTargetPlayer(sender, args);
        if (target == null) {
            return true;
        }

        if (args[1].equalsIgnoreCase("on")) {

            plugin.freezePlayer(target);
            sender.sendMessage("Вы заморозили игрока: " + target.getName());
            target.sendMessage(Objects.requireNonNull(
                    plugin.getConfig().getString("messages.challenge-for-verification")));
            target.sendTitle("§4ПРОВЕРКА", "§aСмотрите в чат", 10, 100, 20);
            target.sendMessage(Objects.requireNonNull(
                    plugin.getConfig().getString("messages.manual")));


        } else if (args[1].equalsIgnoreCase("off")) {

            plugin.unfreezePlayer(target);
            sender.sendMessage("Вы разморозили игрока: " + target.getName());

        } else if (args[1].equalsIgnoreCase("yes")) {

            plugin.unfreezePlayer(target);
            sender.sendMessage("Вы разморозили игрока: " + target.getName());
            target.sendMessage(Objects.requireNonNull(
                    plugin.getConfig().getString("messages.verification-completed")));

        } else if (args[1].equalsIgnoreCase("no")) {

            plugin.unfreezePlayer(target);
            sender.sendMessage("Вы заблокировали игрока: " + target.getName());
            // Сюда нужна блокировка игрока

        } else {
            sender.sendMessage("§4Использование /ss check <on | off> [игрок]");
        }
        return true;


    }

    public Player getTargetPlayer(CommandSender sender, String[] args) {
        if (args.length >= 3) {
            Player target = Bukkit.getPlayer(args[2]);
            if (target == null) {
                sender.sendMessage("§cИгрок не найден или не в сети!");
            }
            return target;
        } else if (sender instanceof Player) {
            return (Player) sender;
        } else {
            sender.sendMessage("§cКонсоль должна указать игрока: /ss check <on|off|no> <игрок>");
        }
        return null;
    }
}
Когда в команде много аргументов, лучше использовать модульный подход, а не кучу else-if, сам себе скажешь спасибо, когда нужно будет дополнять функционал
 
Назад
Сверху Снизу