Как настроить слот под определенный предмет.

127
0
Доброе утро,

помогите разобраться как сделать чтобы в слот прибора можно было положить определенные предметы.
 Пытался сделать проверку на предмет в методе setInventorySlotContents
Код:
public void setInventorySlotContents(int i, ItemStack itemstack) {
       if(i == this.lensSlotIndex && itemstack != null && !(itemstack.getItem() instanceof ItemLens) ){
               return;
           }
      this.chargeSlots[i] = itemstack;
      if(itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()) {
         itemstack.stackSize = this.getInventoryStackLimit();
      }

      this.onInventoryChanged();
   }



в итоге предмет который не соответствует требованиям просто пропадает.
 
Ты искал?Было же.

Создаешь свой клас который наследует Slot,и добавляешь в него метод 

Код:
public boolean isItemValid(ItemStack itemstack)
{
        if (itemstack.getItem() instanceof MyModItems) //условие
        {
            return true;
        }
return false;

}
[merge_posts_bbcode]Добавлено: 04.06.2015 09:09:37[/merge_posts_bbcode]

Ну а если это не работает смотри код инвертаря лошади,там можно положить в слот только седло.
 
Спасибо, положить вручную можно теперь только заданный предмет.
Но есть проблема, если в инвентаре нажать shift + ЛКМ то в слот помещается любой предмет, так же мэ шиной можно загрузить так же любой предмет.
 
Шифр надо настраивать, для ме наследовать ISidedInventory в тайл энтити машины.
 
А чтобы из инвентаря не перемещалось?
И какой метод использовать из интерфейса [font=Verdana, Helvetica, Arial, sans-serif]ISidedInventory, чтобы в слот только определенный предмет помещался?[/font]
[font=Verdana, Helvetica, Arial, sans-serif]Заранее спасибо[/font]
 
Шифт запрети вот так:
Код:
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
    return null;
}


У тебя будет такой метод,просто замени его этим.
 
Из инвентаря не перекладывается, спасибо.
А как сделать чтобы из мэ шины попадал предмет в нужный слот? (слотов несколько, нужно чтобы именно в определенный слот попадал)
Сейчас из мэ шины абсолютно любые предметы во все слоты попадают.
 
весь вечер промучался, так и не удалось

у меня 4 слота и нужно помещать слот в 4 слот
Код:
public boolean canInsertItem(int index, ItemStack itemStack, int side) {
        
        return getLens() != null && index == lensSlotIndex;
    }

с функцией getAccessibleSlotsFromSide не совсем понятно, поковырял несколько модов и в них одно и тоже
Код:
private static final int[] slots_top = new int[] { 0 };
    private static final int[] slots_bottom = new int[] { 1, 1 };
    private static final int[] slots_sides = new int[] { 1 };
public int[] getAccessibleSlotsFromSide(int side) {
        return side == 0?slots_bottom:(side == 1?slots_top:slots_sides);
    }
 
А что непонятного?
В зависимости от стороны возвращаешь определенные слоты.
То есть если труба будет сверху, то она получит доступ к 0 слоту, если снизу - к 1 слоту, и если по сторонам - то к остальным.
 
Если мне нужен 4 слот, то по возвращать нужно в массиве четверки?
 
Спасибо всем кто откликнулся, очень помогли. Тему можно закрывать.
 
Назад
Сверху