Помогите Цветной след из блоков

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

maxim0098

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Nanit
Имеется метод, который вызывается в эвенте PlayerMoveEvent. Никак не могу правильно запомнить блок на который игрок наступил. Пробовал записывать их в ArrayList, но видимо метод вызывается чаще чем нужно и в массив записывается уже не тот блок. Вопрос: как правильно запомнить каждый блок на который игрок наступал и потом заменить его?
PHP:
    ArrayList<Block> prev = new ArrayList<Block>();
    
    public void setColorTrack(Player player){
        Location loc = player.getLocation();
        loc.setY(loc.getY() -1 );
        prev.add(loc.getBlock());
        Block block = loc.getBlock();
        
        Random random = new Random();
        byte randData = (byte)random.nextInt(14);
        
        if(block.getType().equals(Material.AIR)){
            return;
        }
        
        block.setType(Material.STAINED_CLAY);
        block.setData(randData);
        
        for(Block b : prev){
            Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
                public void run() {
                    block.setType(b.getType());
                    block.setData(b.getData());
                }
            }, 30L);
        }
    }
 
Может Runnable с заменой для одного блока (там где игрок) в PlayerMoveEvent?
И твой код не работает потому что:

PHP:
        block.setType(Material.STAINED_CLAY);
        block.setData(randData);
А потом через 30 тиков ты делаешь.
PHP:
        block.setType(b.getType());
        block.setData(b.getData());
В List'е ссылки на тот же блок, ты ничего не меняешь
 
Я просто считал, что если я сразу записываю блок в лист, то это будет работать. Я и хотел узнать, может есть способ нормально записать блок, или если бы был эвент, отслеживающий любое изменение блока,было бы проще это сделать.

P.S. Может кто знает плагин в котором есть такая фича с цветными блоками? Хочу просто глянуть как там это сделано. Я искал но не нашел.
 
Последнее редактирование:
Все, решил проблему записью блоков и их локации в ХешМап и проверкой на их существование в этой мапе.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх