1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Andoroid, 14 янв 2018.

Метки:
Статус темы:
Закрыта.
  1. Автор темы
    Andoroid

    Andoroid Активный участник Пользователь

    Баллы:
    76
    Вообщем есть код:
    Код:
    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.
    Как исправить?
     
    Последнее редактирование: 14 янв 2018
  2. _MasterCapeXD_

    _MasterCapeXD_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    final may be?
     
  3. aceJKE

    aceJKE Старожил Пользователь

    Баллы:
    123
    Это был намек на hb?
    Все правильно, сначала отрабатывает событие PlayerCommandPreprocessEvent, на момент срабатывания события spies действительно 0, а затем уже отрабатывает команда
     
  4. _MasterCapeXD_

    _MasterCapeXD_ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Ах да, точно..

    ТС, можешь команду всю ловить в PlayerCommandPreprocessEvent, без onCommand.
     
  5. Автор темы
    Andoroid

    Andoroid Активный участник Пользователь

    Баллы:
    76
    Как вариант, но сначало сработал PCPE потом onCommand. Меня внесли в spies. А втоой раз тоже самое токо я куда-то пропал из spies.
     
  6. Slavkaa

    Slavkaa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    public static List<Player> spies
     
  7. Автор темы
    Andoroid

    Andoroid Активный участник Пользователь

    Баллы:
    76
    Спс
     
Статус темы:
Закрыта.

Поделиться этой страницей