[1.6.4] Траблы с consumeInventoryItem

player.inventory.consumeInventoryItem(Item2.itemID);
даёт ошибку Cannot make a static reference to the non-static field Item2.itemID
 
потому что ты обращаешься к классу, чтоб он дал тебе не статичную переменную itemID. надо обращаться к переменной этого предмета. А вообще иди учи джаву.
 
ок, следующая трабла:
Код:
    public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player){
        ++shot;
        if (shot>5){
            System.out.println(world.isRemote);
            player.inventory.consumeInventoryItem(mod.item2.itemID);
            shot = 0;
        }
        System.out.println("shot"+shot);
        return stack;
}
Почему world.isRemote всегда true?
 
потому что world.isRemote true на клиентской стороне, а на серверной false.
 
Тогда почему до if его колбасит с true на false?
и как итем конзумить, если shot больше 5 ?
 
Переменную записывай в нбт итем стака =)
 
Он же не будет сохраняться и будет для всех предметов одним.
 
так, а почему этот метод не выполняется, когда я достаю предмет из креативного инвентаря?
Код:
    @Override
    public void onCreated(ItemStack stack, World world, EntityPlayer player) {
        stack.stackTagCompound = new NBTTagCompound();
        stack.stackTagCompound.setString("owner", player.username);
        stack.stackTagCompound.setInteger("fire", 0);
    }
 
Dragon2488 написал(а):
Достойнейший ответ! Браво! Аплодисменты и свист.
метод выполняется только при крафте/смельте. А как это делают другие моды , у которых в инвентаре лежат предметы с нбт?
 
Полазил по буржуефорумам, у всех такая проблема. Решали или через onUpdate, или через addInformation.
В первом случае может быть нехилая нагрузка на сервер, во втором предметы привязываются к игроку, только после того, как тот наведет на них курсор, но он гораздо менее ресурсозатратен.
Тебе нужно сделать проверку NBT на нулл, и если условие сработать, создать новый NBT, привязав владельца.
 
Или в addInformation, или в onUpdate, я же выше расписал, где какие минусы.
 
А как же getSubItems?
Туда в лист можно добавить стак с нбт.
 
Majestic написал(а):
А как же getSubItems?
Туда в лист можно добавить стак с нбт.
Про это читал, но пока не понимаю, как это работает. Потом может разберусь. Пока устраивает вариант с крафтом.

Итак, следующая трабла: как конзумить стэк по клавише? Если брать Minecraft.getMinecraft().thePlayer, то конзумится опять только на клиенте.
Пакет серверу слать что-ли? Если да, то как получить экземпляр игрока на стороне сервера?
 
Назад
Сверху