Как присвоить ItemStack[] пустое значение ?

Ari

38
0
Есть код:
Код:
    @Override
    public void updateEntity() 
    {
        if(!this.worldObj.isRemote)
        {
            if(items[0] != null)
            {
                if(items[0].getItem() == Items.diamond && items[0].stackSize >= 5  && items[2] == null)
                {
                    if(items[0].stackSize == 5)
                    {
                        items[0] = null;
                    }
                    if(items[0].stackSize > 5)
                    {
                        items[0].stackSize -= 5;
                    }
                    items[2] = new ItemStack(Items.glass_bottle, 10);
                }
            }
        }
    }

Но если положить 5 алмазов майн крашит. Вот причина "items[0] = null;"
Подскажите пожалусто как присвоить null.
Мои попытки (не удалось):

Код:
ItemStack st = new ItemStack();//говорит что тут ошибка
items[0] = st;

ItemStack st = null//краш
items[0] = st;
 
Это нужно чтобы очистить слот. Если зделать с stackSize то 1 алмаз всегда будет оставаться
 
Код:
    @Override
    public void updateEntity() {
        if (items[0] != null) {
            if (items[0].getItem() == Items.diamond && items[0].stackSize >= 5  && items[2] == null) {
                items[0].stackSize -= 5;
                if (items[0].stackSize <= 0) items[0] = null;
                items[2] = new ItemStack(Items.glass_bottle, 10);
            }
        }
    }
Код:
    @Override
    public void updateEntity() {
        ItemStack slot0 = getStackInSlot(0).copy();
        if (slot0 != null) {
            if (slot0.getItem() == Items.diamond && slot0.stackSize >= 5  && getStackInSlot(2) == null) {
                slot0.stackSize -= 5;
                setInventorySlotContents(0, (slot0.stackSize <= 0 ? null ? slot0));
                setInventorySlotContents(2, new ItemStack(Items.glass_bottle, 10));
            }
        }
    }
[merge_posts_bbcode]Добавлено: 21.01.2016 17:25:12[/merge_posts_bbcode]

Ari написал(а):
Код:
ItemStack st = new ItemStack();//говорит что тут ошибка
items[0] = st;
Нужен(-ы) аргумент(-ы).
Ari написал(а):
Код:
ItemStack st = null//краш
items[0] = st;
Именно на этом, маловероятно, но может ссылаться на эту строчку, потому-что не было после него проверки на не равен null.
 
Ari написал(а):
Есть код:
Код:
    @Override
    public void updateEntity() 
    {
        if(!this.worldObj.isRemote)
        {
            if(items[0] != null)
            {
                if(items[0].getItem() == Items.diamond && items[0].stackSize >= 5  && items[2] == null)
                {
                    if(items[0].stackSize == 5)
                    {
                        items[0] = null;
                    }
                    if(items[0].stackSize > 5)
                    {
                        items[0].stackSize -= 5;
                    }
                    items[2] = new ItemStack(Items.glass_bottle, 10);
                }
            }
        }
    }

Но если положить 5 алмазов майн крашит. Вот причина "items[0] = null;"
Подскажите пожалусто как присвоить null.
Мои попытки (не удалось):

Код:
ItemStack st = new ItemStack();//говорит что тут ошибка
items[0] = st;

ItemStack st = null//краш
items[0] = st;
 
Это нужно чтобы очистить слот. Если зделать с stackSize то 1 алмаз всегда будет оставаться

Все верно крашит.

тут 
Код:
if(items[0].stackSize == 5)
{
   items[0] = null;
}
ты делаешь объект равным null
и в следующей строке делаешь:
if(items[0].stackSize > 5)
т.е. получается "if (null.stackSize > 5)"
 
Назад
Сверху