[1.7.10] ItemStack не учитывает кол-во предметов

1,239
2
24
Вобщем не буду томить,перейдем к делу:


Код:
@SubscribeEvent
    public void onRenderPlayer(RenderPlayerEvent.Pre e)
    {
        ItemStack testStack = new ItemStack(Item.getItemById(32), 5);
        if (e.entityPlayer.inventory.hasItemStack(testStack)) { e.setCanceled(true); }
    }
32-это мертвый куст.
5 - это подразумеваемое кол-во предметов для требования.
Но если взять в инвертарь 1 куст-то всеравно невидимость.
ItemStack не учитывает кол-во предметов
 
Код:
hasItemStack
(Если у тебя так работает плохо, то возможно) Этот метод, не учитывает количество.
[merge_posts_bbcode]Добавлено: 11.03.2015 13:21:02[/merge_posts_bbcode]

Код:
for (ItemStack slot : e.entityPlayer.inventory.mainInventory) {
    if (slot.getItem() == Item.getItemFromBlock(Blocks.deadbush) && slot.stackSize >= 5) {
        e.setCanceled(true);
        break;
    }
}
 
Крашит майн если нажимаю F5 или открываю инвертарь :|
timaxa007 написал(а):
Код:
hasItemStack
(Если у тебя так работает плохо, то возможно) Этот метод, не учитывает количество.
[merge_posts_bbcode]Добавлено: 11.03.2015 13:21:02[/merge_posts_bbcode]

Код:
for (ItemStack slot : e.entityPlayer.inventory.mainInventory) {
    if (slot.getItem() == Item.getItemFromBlock(Blocks.deadbush) && slot.stackSize >= 5) {
        e.setCanceled(true);
        break;
    }
}
 
XuPuPG написал(а):
Краш-лог где?
Я не использовал этот эвант, и не знаю что он может делать.
 
У меня тоже крашило, но оказалось ошибкой банальной, нужно ещё было проверят слот не равной нулевому значению (slot != null):
Код:
@SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Pre e) {
    for (ItemStack slot : e.entityPlayer.inventory.mainInventory) {
        if (slot != null && slot.getItem() == Item.getItemFromBlock(Blocks.deadbush) && slot.stackSize >= 5) {
            e.setCanceled(true);
            break;
        }
    }
}
 
Получилось!Спасибо!
timaxa007 написал(а):
У меня тоже крашило, но оказалось ошибкой банальной, нужно ещё было проверят слот не равной нулевому значению (slot != null):
Код:
@SubscribeEvent
public void onRenderPlayer(RenderPlayerEvent.Pre e) {
    for (ItemStack slot : e.entityPlayer.inventory.mainInventory) {
        if (slot != null && slot.getItem() == Item.getItemFromBlock(Blocks.deadbush) && slot.stackSize >= 5) {
            e.setCanceled(true);
            break;
        }
    }
}
 
Пожалуйста.
 
Назад
Сверху