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

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

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Nanit
    Имеется метод, который вызывается в эвенте PlayerMoveEvent. Никак не могу правильно запомнить блок на который игрок наступил. Пробовал записывать их в ArrayList, но видимо метод вызывается чаще чем нужно и в массив записывается уже не тот блок. Вопрос: как правильно запомнить каждый блок на который игрок наступал и потом заменить его?
    PHP:
        ArrayList<Blockprev = new ArrayList<Block>();
        
        public 
    void setColorTrack(Player player){
            
    Location loc player.getLocation();
            
    loc.setY(loc.getY() -);
            
    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);
            }
        }
     
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Может Runnable с заменой для одного блока (там где игрок) в PlayerMoveEvent?
    И твой код не работает потому что:

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

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

    Баллы:
    66
    Имя в Minecraft:
    Nanit
    Я просто считал, что если я сразу записываю блок в лист, то это будет работать. Я и хотел узнать, может есть способ нормально записать блок, или если бы был эвент, отслеживающий любое изменение блока,было бы проще это сделать.

    P.S. Может кто знает плагин в котором есть такая фича с цветными блоками? Хочу просто глянуть как там это сделано. Я искал но не нашел.
     
    Последнее редактирование: 9 фев 2018
  4. Автор темы
    maxim0098

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

    Баллы:
    66
    Имя в Minecraft:
    Nanit
    Все, решил проблему записью блоков и их локации в ХешМап и проверкой на их существование в этой мапе.
     
Статус темы:
Закрыта.

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