Вопрос Плагин на проверку

Anxi779

Заблокирован
Сообщения
85
Решения
5
Делаю плагин на проверку и вот, допустим игрока вызвали на проверку
И другой модератор, тоже только чуть позже
Вот как сделать, чтобы игрока вызвали и другой модер уже не мог вызвать на проверку
Ибо уже другой модер его вызвал
 
Код:
package ru.fucktmgc.vOpGuard.Cmd;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import ru.fucktmgc.vOpGuard.Main;



public class Check implements CommandExecutor {
    FileConfiguration Config = Main.getInstance().getConfig();
    private Main plugin;

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage(Main.getInstance().getConfig().getString("messages.not-player").replace("&", "§"));
            return true;
        }
        if (!sender.hasPermission("vcheck.use")) {
            sender.sendMessage(Main.getInstance().getConfig().getString("messages.no-perm").replace("&", "§"));
            return true;
        }
        if (args.length == 0) {
            sender.sendMessage(Config.getString("messages.help").replace("&", "§"));
            return true;
        }
        if (args.length == 1) {
            Player target = Bukkit.getPlayer(args[0]);
            target.sendTitle(Main.getInstance().getConfig().getString("check.title").replace("&", "§"), Main.getInstance().getConfig().getString("check.subtitle").replace("&", "§"), 40, 99999, 99999);
            target.sendMessage(Main.getInstance().getConfig().getString("check.chat").replace("&", "§").replace("%moder%", sender.getName()));
            target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999, 999999));
            sender.sendMessage(Config.getString("check.successfully").replace("§", "&"));
            if (!target.hasPermission("check.dont")) {
                Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check.command2").replace("%target%", target.getName()));
            }
            return false;
        }

        if (args[0].equalsIgnoreCase("ally")) {
            if (args.length == 2) {
                Player target = Bukkit.getPlayer(args[1]);
                target.removePotionEffect(PotionEffectType.SLOW);
                target.sendTitle(Main.getInstance().getConfig().getString("check_ally.title").replace("&", "§"), Main.getInstance().getConfig().getString("check_ally.subtitle").replace("&", "§"), 40, 40, 40);
                target.sendMessage(Main.getInstance().getConfig().getString("check_ally.chat").replace("&", "§").replace("%moder%", sender.getName()));
                Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Main.getInstance().getConfig().getString("check_ally.command").replace("%check%", target.getName()));
                if (target.hasPermission("check.dont")) {
                    Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check_ally.command2").replace("%target%", target.getName()));
                }
            }


            }
        if (args[0].equalsIgnoreCase("ban")) {
            if(args.length == 2) {
                Player target = Bukkit.getPlayer(args[1]);
                Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check_ban.command").replace("&", "§").replace("%target%", target.getName()));
                sender.sendMessage(Config.getString("check_ban.successfully").replace("&", "§").replace("%target%", target.getName()));
            }
            return false;
        }
        return false;
    }
}
 
Код:
private ArrayList<UUID> uuid = new ArrayList<>();
    
    public class Check implements CommandExecutor {
        FileConfiguration Config = Main.getInstance().getConfig();
        private Main plugin;

        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(Main.getInstance().getConfig().getString("messages.not-player").replace("&", "§"));
                return true;
            }
            if (!sender.hasPermission("vcheck.use")) {
                sender.sendMessage(Main.getInstance().getConfig().getString("messages.no-perm").replace("&", "§"));
                return true;
            }
            if (args.length == 0) {
                sender.sendMessage(Config.getString("messages.help").replace("&", "§"));
                return true;
            }
            if (args.length > 0) {
                Player target = Bukkit.getPlayer(args[0]);
                if(target == null || !target.isOnline()) {
                    //тут твой код если игрока не существует/он офлайн
                    return true;
                }
                if(uuid.contains(target.getUniqueId())) {
                    //код если игрок уже на проверке
                } else {
                    uuid.add(target.getUniqueId());
                }
                target.sendTitle(Main.getInstance().getConfig().getString("check.title").replace("&", "§"), Main.getInstance().getConfig().getString("check.subtitle").replace("&", "§"), 40, 99999, 99999);
                target.sendMessage(Main.getInstance().getConfig().getString("check.chat").replace("&", "§").replace("%moder%", sender.getName()));
                target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999, 999999));
                sender.sendMessage(Config.getString("check.successfully").replace("§", "&"));
                if (!target.hasPermission("check.dont")) {
                    Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check.command2").replace("%target%", target.getName()));
                }
                return false;
            }

            if (args[0].equalsIgnoreCase("ally")) {
                if (args.length > 1) {
                    Player target = Bukkit.getPlayer(args[1]);
                    if(target == null || !target.isOnline()) {
                        //тут твой код если игрока не существует/он офлайн
                        return true;
                    }
                    target.removePotionEffect(PotionEffectType.SLOW);
                    target.sendTitle(Main.getInstance().getConfig().getString("check_ally.title").replace("&", "§"), Main.getInstance().getConfig().getString("check_ally.subtitle").replace("&", "§"), 40, 40, 40);
                    target.sendMessage(Main.getInstance().getConfig().getString("check_ally.chat").replace("&", "§").replace("%moder%", sender.getName()));
                    Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Main.getInstance().getConfig().getString("check_ally.command").replace("%check%", target.getName()));
                    if (target.hasPermission("check.dont")) {
                        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check_ally.command2").replace("%target%", target.getName()));
                    }
                }


                }
            if (args[0].equalsIgnoreCase("ban")) {
                if(args.length > 1) {
                    Player target = Bukkit.getPlayer(args[1]);
                    if(target == null || !target.isOnline()) {
                        //тут твой код если игрока не существует/он офлайн
                        return true;
                    }
                    Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check_ban.command").replace("&", "§").replace("%target%", target.getName()));
                    sender.sendMessage(Config.getString("check_ban.successfully").replace("&", "§").replace("%target%", target.getName()));
                }
                return false;
            }
            return false;
        }
    }
 
You must be registered for see medias
You must be registered for see medias
Объединено

Ошибку пишет
Вам необходимо зарегистрироваться для просмотра изображений-вложений
Ты импортировал arraylist и uuid?
 
Belg1anKquck, поля объявляются внутри класса.


А как после команды /check <игрок> игроку запретить двигаться, ибо в классе CommandCheck, EventHandler не работает же ._.
Так же с помощью списка делаешь проверку в PlayerMoveEvent.
Объединено

Я бы сделал так:
Java:
public class YourCmd implements CommandExecutor, Listener {
    
    private final Map<UUID, UUID> players = new HashMap<>(); //1 - master, 2 - slave

    @Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
        if (!(sender instanceof Player)) return true;
        if (args.length < 1) return false;
        Player target = Bukkit.getPlayerExact(args[0]);
        if (target == null) {
            sender.sendMessage("Player is offline");
            return true;
        }
        if (players.containsValue(target.getUniqueId())) {
            sender.sendMessage("Player is already editing");
            return true;
        }
        players.put(((Player) sender).getUniqueId(), target.getUniqueId());
        return true;
    }

    @EventHandler
    public void onPlayerMove(PlayerMoveEvent e) {
        if (players.containsValue(e.getPlayer().getUniqueId()))
            e.setCancelled(true);
    }
}
Java:
    @Override
    public void onEnable() {
        YourCmd cmd = new YourCmd();
        Bukkit.getPluginManager().registerEvents(cmd, this);
        Bukkit.getPluginCommand("cmd").setExecutor(cmd);
    }
 
Последнее редактирование:
Belg1anKquck, поля объявляются внутри класса.



Так же с помощью списка делаешь проверку в PlayerMoveEvent.
Объединено

Я бы сделал так:
Java:
public class YourCmd implements CommandExecutor, Listener {
  
    private final Map<UUID, UUID> players = new HashMap<>(); //1 - master, 2 - slave

    @Override
    public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
        if (!(sender instanceof Player)) return true;
        if (args.length < 1) return false;
        Player target = Bukkit.getPlayerExact(args[0]);
        if (target == null) {
            sender.sendMessage("Player is offline");
            return true;
        }
        if (players.containsValue(target.getUniqueId())) {
            sender.sendMessage("Player is already editing");
            return true;
        }
        players.put(((Player) sender).getUniqueId(), target.getUniqueId());
        return true;
    }

    @EventHandler
    public void onPlayerMove(PlayerMoveEvent e) {
        if (players.containsValue(e.getPlayer().getUniqueId()))
            e.setCancelled(true);
    }
}
Java:
    @Override
    public void onEnable() {
        YourCmd cmd = new YourCmd();
        Bukkit.getPluginManager().registerEvents(cmd, this);
        Bukkit.getPluginCommand("cmd").setExecutor(cmd);
    }
А, понял, спасибо!
Объединено

А как добавить игрока в список HashMap?
 
Последнее редактирование:

В коде все есть.
В моем тогда плиз поменяй, если не сложно

Код:
package ru.fucktmgc.vOpGuard.Cmd;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import ru.fucktmgc.vOpGuard.Main;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;


public class Check implements CommandExecutor, Listener {
    private ArrayList<UUID> uuid = new ArrayList<>();
    private final Map<UUID, UUID> players = new HashMap<>(); //1 - master, 2 - slave
    FileConfiguration Config = Main.getInstance().getConfig();
    private Main plugin;
    public Check(Main main) {

    }

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage(Main.getInstance().getConfig().getString("messages.not-player").replace("&", "§"));
            return true;
        }
        if (!sender.hasPermission("vcheck.use")) {
            sender.sendMessage(Main.getInstance().getConfig().getString("messages.no-perm").replace("&", "§"));
            return true;
        }
        if (args.length == 0) {
            sender.sendMessage(Config.getString("messages.help").replace("&", "§"));
            return true;
        }
        if (args.length == 1) {
            Player target = Bukkit.getPlayer(args[0]);
            if (target == null || !target.isOnline()) {
                sender.sendMessage(Config.getString("messages.offline").replace("&", "§").replace("%target%", target.getName()));
                return true;
            }
            if (players.containsValue(target.getUniqueId())) {
                sender.sendMessage(Config.getString("messages.check").replace("&", "§").replace("%target%", target.getName()));
                return true;
            } else {
                players.put(target.getUniqueId(), ((Player) sender).getUniqueId());
            }
            target.sendTitle(Main.getInstance().getConfig().getString("check.title").replace("&", "§"), Main.getInstance().getConfig().getString("check.subtitle").replace("&", "§"), 40, 99999, 99999);
            target.sendMessage(Main.getInstance().getConfig().getString("check.chat").replace("&", "§").replace("%moder%", sender.getName()));
            target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 999999, 999999));
            sender.sendMessage(Config.getString("check.successfully").replace("&", "§").replace("%target%", target.getName()));

            return false;
        }


        if (args[0].equalsIgnoreCase("ally")) {
            if (args.length == 2) {
                Player target = Bukkit.getPlayer(args[1]);
                if (args.length > 0) {
                    if (target == null || !target.isOnline()) {
                        sender.sendMessage(Config.getString("messages.offline").replace("&", "§").replace("%target%", target.getName()));
                        return true;
                    }
                    if (!uuid.contains(target.getUniqueId())) {
                        sender.sendMessage(Config.getString("messages.ally").replace("&", "§").replace("%target%", target.getName()));
                        return true;
                    }
                    target.removePotionEffect(PotionEffectType.SLOW);
                    target.sendTitle(Main.getInstance().getConfig().getString("check_ally.title").replace("&", "§"), Main.getInstance().getConfig().getString("check_ally.subtitle").replace("&", "§"), 40, 40, 40);
                    target.sendMessage(Main.getInstance().getConfig().getString("check_ally.chat").replace("&", "§").replace("%moder%", sender.getName()));
                    Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Main.getInstance().getConfig().getString("check_ally.command").replace("%check%", target.getName()));
                        players.remove(target.getUniqueId());
                    }
                }


            }


        if (args[0].equalsIgnoreCase("leave")) {
            Player target = Bukkit.getPlayer(args[1]);
            if (args.length > 0) {
                if (target == null || !target.isOnline()) {
                    sender.sendMessage(Config.getString("messages.offline").replace("&", "§").replace("%target%", target.getName()));
                    return true;
                }
                if (!uuid.contains(target.getUniqueId())) {
                    sender.sendMessage(Config.getString("messages.leave").replace("&", "§").replace("%target%", target.getName()));
                    return true;
                }
                Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check_leave.command").replace("&", "§").replace("%target%", target.getName()));
                sender.sendMessage(Config.getString("check_leave.successfully").replace("&", "§").replace("%target%", target.getName()));
            }
            return false;
        }

        if (args[0].equalsIgnoreCase("ban")) {
            Player target = Bukkit.getPlayer(args[1]);
            if (args.length > 0) {
                if (target == null || !target.isOnline()) {
                    sender.sendMessage(Config.getString("messages.offline").replace("&", "§").replace("%target%", target.getName()));
                    return true;
                }
                if (!uuid.contains(target.getUniqueId())) {
                    sender.sendMessage(Config.getString("messages.ban").replace("&", "§").replace("%target%", target.getName()));
                    return true;

                }


                Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Config.getString("check_ban.command").replace("&", "§").replace("%target%", target.getName()));
                sender.sendMessage(Config.getString("check_ban.successfully").replace("&", "§").replace("%target%", target.getName()));
            }

            return false;
        }
        return false;
    }


    @EventHandler
    public void onPlayerMove(PlayerMoveEvent e) {
        Player p = e.getPlayer();
        if(players.containsValue(p.getUniqueId())) {
            e.setCancelled(true);


        }
    }
}
 
Назад
Сверху Снизу