Добавление предметов в инвентарь

Версия Minecraft
1.7.10
Доброго времени суток. В результате работы вот этого кода
Java:
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int var6, float var7, float var8, float var9)
    {
        if(!world.isRemote) //Вызов мира :?
        {
            ItemStack currentStack = player.getCurrentEquippedItem();
            if(currentStack != null && currentStack.getItem().equals(BaseT2PMod.Knife))
            {
                player.inventory.addItemStackToInventory(new ItemStack (BaseT2PMod.Resin, 1));
                world.setBlock(x, y, z, BaseT2PMod.Log2);
                
                
                
                
                
            }
        }
        return false;
        
        
    }
в инвентарь должен добавиться итем BaseT2PMod.Resin. Он, собсно, это и делает, но: либо после перезахода в игру, либо после обновления слота с этим итемом. Внимание, вопрос: почему? Я так понимаю, не хватает какого-то события обновления инвентаря. Если так, то какого?
И сразу второй вопрос: как добавить свою генерацию по типу деревьев?
 
1,057
50
234
player.inventoryContainer.detectAndSendChanges();
 
477
7
51
как сделать чтоб выдовался только 1 раз и предмет тот котырый выдавал пропал
Не понял... Чтобы выдавался 1 раз с 1 блока или в принципе 1 раз всего? Если 1 раз с одного блока, то смотри мой код выше, либо с метадатой можно поиграться.
Ну а если всего 1 раз, то создай логическую переменную выдавалось\нет и при клике по блоку проверяй
 
917
22
332
Нужно сначала стак создать, а потом уже его выдавать игроку.
Всё одновременно делать не рекомендую
А разница? Всё равно оно создаст новый стак и только потом его добавит.
 
477
7
51
Не понял... Чтобы выдавался 1 раз с 1 блока или в принципе 1 раз всего? Если 1 раз с одного блока, то смотри мой код выше, либо с метадатой можно поиграться.
Ну а если всего 1 раз, то создай логическую переменную выдавалось\нет и при клике по блоку проверяй
я имел виду что выдовалось только 1 раз
 
Сверху