Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Решено Не могу использовать ArrayList больше 1 блока

Тема в разделе "Помощь", создана пользователем asdqwertypro, 12 май 2018.

  1. Автор темы
    asdqwertypro

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

    Баллы:
    76
    В общем, есть ArrayList. В него записываются все блоки, которые мне нужны, и позже их координаты сверяются с координатами, куда кликнул игрок. И всё бы ничего, но 1) если этих блоков нет, то gui открывается при клике/разрушении любого блока (кстати, как проверять только пкм по блоку?), 2) если этих блоков больше 1, то ничего не работает (вот эта проблема самая важная). Вот код открытия блоков:
    Код:
    @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e) {
            Block block = e.getClickedBlock();
            Player p = e.getPlayer();
            int x = block.getX();
            int y = block.getY();
            int z = block.getZ();
            for (int i = 0; i < a.size(); i++) {
                Block b = a.get(i);
                if (block.getX() != b.getX()) {return;}
                if (block.getY() != b.getY()) {return;}
                if (block.getZ() != b.getZ()) {return;}
            }
            GUI.OpenGUI(p,x,y,z);
        }
    *Ошибок в консоли нет.
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    asdqwertypro

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

    Баллы:
    76
    Только что понял, что когда в массиве более одного блока, то не смотря на результат одного блока, другие результаты заблочат работу. Но как это решить - по прежнему загадка для меня.
     
  4. Автор темы
    asdqwertypro

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

    Баллы:
    76
    ГОСПОДИ! Как я был слеп! В общем, проблема решена! Тему можно закрыть. Код того, как я всё поправил:
    Код:
    @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e) {
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
            Block block = e.getClickedBlock();
            Player p = e.getPlayer();
            for (int i = 0; i < a.size(); i++) {
                Block b = a.get(i);
                p.sendMessage("В массиве сейчас детектятся эти оси X: " + b.getX());
                if (block.getX() == b.getX() && block.getY() == b.getY() && block.getZ() == b.getZ()) {GUI.OpenGUI(p,block.getX(),block.getY(),block.getZ());}
                }
            }
        }
    P.S. Как видно, я тут добавил сообщение, выводящее X блоков из массива. Но есть один вопрос: почему в чате пишут дважды один и тот же результат?
     

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