Переменная в двух методах.

Статус
Закрыто для дальнейших ответов.

Andoroid

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
_Andoroid_
Вообщем есть код:
Код:
public static List<Player> spies = new ArrayList<>();

public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if(command.getName().equalsIgnoreCase("console")) {
        if (args[0].equalsIgnoreCase("on")) {
            if (!spies.contains(player)) {
                spies.add(player); //Внимательно тут (пункт 1)
                player.sendMessage("§f[§6CONSOLE§f] §aКонсоль успешно включена!");
            } else {
                Bukkit.getLogger().info(Integer.toString(spies.size()));
                player.sendMessage("§f[§6CONSOLE§f] §aВы уже включили консоль!");
            }
            return true;
        }
    return false;
}

@EventHandler
public void sendCommandInfo(PlayerCommandPreprocessEvent event) {
    Player player = event.getPlayer();
    Bukkit.getLogger().info(Integer.toString(spies.size())); //Тут тоже внимательно (пункт 2)
    for (Player p : spies) {
            p.sendMessage("§f[§6CONSOLE§f] §2§l" + event.getPlayer().getDisplayName() + "§7 использовал команду: §3" + event.getMessage());
        }
    }
}

Когда я прописал команду /console on меня добавило в List spies.
Когда я пропишу эту команду ещ1 раз, мне вывоит что консоль уже включена и к консль серева выводит 0 а потом 1. Тоесть в методе onCommand размер spies = 1, а одновременно в sendCommandInfo = 0.
Как исправить?
 
Последнее редактирование:
Это был намек на hb?
Вообщем есть код:
Когда я прописал команду /console on меня добавило в List spies.
Когда я пропишу эту команду ещ1 раз, мне вывоит что консоль уже включена и к консль серева выводит 0 а потом 1. Тоесть в методе onCommand размер spies = 1, а одновременно в sendCommandInfo = 0.
Как исправить?
Все правильно, сначала отрабатывает событие PlayerCommandPreprocessEvent, на момент срабатывания события spies действительно 0, а затем уже отрабатывает команда
 
Все правильно, сначала отрабатывает событие PlayerCommandPreprocessEvent, на момент срабатывания события spies действительно 0, а затем уже отрабатывает команда
Ах да, точно..

ТС, можешь команду всю ловить в PlayerCommandPreprocessEvent, без onCommand.
 
Как вариант, но сначало сработал PCPE потом onCommand. Меня внесли в spies. А втоой раз тоже самое токо я куда-то пропал из spies.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх