Проблема с randomDisplayTick

Если не знаешь Жабу, тоже не значит, что тупой :'-(
[merge_posts_bbcode]Добавлено: 28.11.2015 12:44:21[/merge_posts_bbcode]

GreenBudgie написал(а):
А можно, чтобы не ждать первого тика, записать scheduleBlockUpdate в какой-либо другой метод, например onBlockAdded?
Только в апдейте всё равно придётся продублировать.
 
Практика тоже хороша, но надо учиться читая хотя бы Java API Documentation.
 
FanKar написал(а):
Практика тоже хороша, но надо учиться читая хотя бы Java API Documentation.
5IhUEpTG5fU.jpg
 
Окей, спасибо за метод world.scheduleBlockUpdate. Разобрался с ним, все работает. Первый тик я вписал в onBlockAdded.
 
Черт, уж думал что все - тема закрыта, но действия выполняться все не хотят. Мне нужно, чтобы когда нажимаешь на блок, а переменная timer > 10, то выполняется метод spawnFeather.

Код:
    public void spawnFeather(World world, int x, int y, int z, Item feather, EntityPlayer player) {
    ItemStack stack = new ItemStack(feather);
    EntityItem entityitem = player.dropPlayerItemWithRandomChoice(stack, false);
    entityitem.delayBeforeCanPickup = 0;
    }
    
    public void onBlockAdded(World world, int x, int y, int z) {
        timer = 0;
        world.scheduleBlockUpdate(x, y, z, this, 5); 
    }
    
    public boolean checkAllSides(World world, int x, int y, int z, Block block) {
        if(world.getBlock(x, y + 1, z) == block ||
                world.getBlock(x, y - 1, z) == block ||
                world.getBlock(x - 1, y, z) == block ||
                world.getBlock(x + 1, y, z) == block ||
                world.getBlock(x, y, z + 1) == block ||
                world.getBlock(x, y, z - 1) == block) {
            return true;
        } else {
        return false;
        }
    }
    
    public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
        block = Main.mirror;
        if (checkAllSides(world, x, y, z, block) == true) {
            borz = 1;
        } else {
            borz = 0;
        }
    }
    
    public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
        if (timer >= 10 && borz == 1) {
            spawnFeather(world, x, y, z, Main.featherGreen, player);
            timer = 0;
        }
        return true;
    }
    
    public void updateTick(World world, int x, int y, int z, Random rand) {
        world.scheduleBlockUpdate(x, y, z, this, 5); 
        Block block = Main.mirror;
        if (checkAllSides(world, x, y, z, block) == true) {
            borz = 1;
        } else {
            borz = 0;
        }
        if (borz != 0) timer++;
        System.out.println(timer);
    }

Каждые 5 тиков блок обновляется, все верно. Таймер работает. Но вот при нажатии на блок ничего не происходит. Метод spawnFeather я проверял отдельно, работает. В чем же ошибка?
 
Люблю, не всегда проще написать получается. Яву не долго изучаю, в основном на C++ пишу.
 
Уйди со своей комфортабельностью в кровать
 
Ну сложного ничего нет. Просто делаешь отдельные классы для переменных с блоками к примеру итд. Ничё сложного.
[merge_posts_bbcode]Добавлено: 28.11.2015 23:29:42[/merge_posts_bbcode]

CoomingSoon написал(а):
Уйди со своей комфортабельностью в кровать 
Многа хочишь.
 
Назад
Сверху