Предметы в Контеинере

Версия Minecraft
1.11+
Вопрос Как сделать так чтобы в слот я мог класть только собственные предметы,Спасибо
 
Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    return (itemStack.getItem() == MyMod.my_item) ? false : super.isItemValid(itemStack);
}
Примерно как-то так:
Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    if (itemStack.getItem() == MyMod.my_item) {
        return super.isItemValid(itemStack);
    }
    else if (itemStack.getItem() == MyMod.my_sup_item) {
        return super.isItemValid(itemStack);
    }
    else if (itemStack.getItem() == Item.getItemFromBlock(MyMod.my_sap_blocky)) {
        return super.isItemValid(itemStack);
    }
    else {
        return super.isItemValid(itemStack);
    }
}

Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    return (itemStack.getItem() instanceof IItemStorage) ? false : super.isItemValid(itemStack);
}
 
Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    return (itemStack.getItem() == MyMod.my_item) ? false : super.isItemValid(itemStack);
}
Примерно как-то так:
Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    if (itemStack.getItem() == MyMod.my_item) {
        return super.isItemValid(itemStack);
    }
    else if (itemStack.getItem() == MyMod.my_sup_item) {
        return super.isItemValid(itemStack);
    }
    else if (itemStack.getItem() == Item.getItemFromBlock(MyMod.my_sap_blocky)) {
        return super.isItemValid(itemStack);
    }
    else {
        return super.isItemValid(itemStack);
    }
}

Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    return (itemStack.getItem() instanceof IItemStorage) ? false : super.isItemValid(itemStack);
}
Тут MyMod это мой главный класс а my_item это название класса предмета ???
 
@jokingguy, ой, немного не так написал:
Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    if (itemStack.getItem() == MyMod.my_item) {
        return true;
    }
    else {
        return false;
    }
}
Возвращаешь: false - нельзя поместить, true - можно положить.
 
@jokingguy, ой, немного не так написал:
Java:
@Override
public boolean isItemValid(ItemStack itemStack) {
    if (itemStack.getItem() == MyMod.my_item) {
        return true;
    }
    else {
        return false;
    }
}
Возвращаешь: false - нельзя поместить, true - можно положить.
А как сделать так чтобы другие вещи не можно было поместить кроме своего?
 
@jokingguy, ты издеваешься? Или ты имеешь виду, что у тебя ещё по Shift-клику ещё не помещать, то это в методе transferStackInSlot типа нужно возращять ItemStack.EMPTY c нужным условием, я точно не знаю как написать код под новую версию.
 
А, если тебе надо при шифт клике свои вещи помещать то да, нужно переопределять transferStackInSlot и там писать. Можешь в печке глянуть, как оно реализовано. Там уголь сразу попадает в нужный слот. А по поводу ShootingDownIntervalServer, то у тебя видимо где-то краш, нужно логи посмотреть
 
@Зарак, да вроде-бы это во всех версиях. Контейнер хранить количество слотов, но вот логики хотя-бы простого перемещения нет, так как контейнер не понимает, какие слоты к какому инвентарю принадлежат. Типа transferStackInSlot всегда приходилось создавать для контейнера с инвентарём.
 
Назад
Сверху