Обвес/рюкзак для инвентаря

svk

1,185
3
2 - Хочу добавить что-то типо рюкзака. Как сделать так, что-бы когда я ложу предмет в свой дополнительный слот, который у игрока в инвентаре, то сохранялся он в НБТ предмета, который будет в моём слоте, который я описал выше.
 
Ё-мое. Делаешь разные темы - делай нормальные названия. Сейчас нарушаешь пункт 1.1.8. 
Ты что хочешь сделать? Рюкзак,  ну так и пиши в названии темы. 
Две темы с одинаковым названием - плохой способ улучшить поиск на форуме.
Исправился.
 
Нет слова "ложу" :dizzy: . Ну делай тайл, в котором будет запись в NBT. Метод writeToNBT отвечает за него. readFromNBT - чтение. Любой майновский тайл открой да посмотри. Печи, или сундука. Конечно, ненужного для твоего случая там не мало, по просто жми Ctrl + f и в поиске вбивай имена методов. Там все будет.
[merge_posts_bbcode]Добавлено: 17.07.2015 17:20:59[/merge_posts_bbcode]

Код:
    public void readFromNBT(NBTTagCompound compound)
    {
        super.readFromNBT(compound);
        NBTTagList nbttaglist = compound.getTagList("Items", 10);
        this.chestContents = new ItemStack[this.getSizeInventory()];

        if (compound.hasKey("CustomName", 8))
        {
            this.customName = compound.getString("CustomName");
        }

        for (int i = 0; i < nbttaglist.tagCount(); ++i)
        {
            NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
            int j = nbttagcompound1.getByte("Slot") & 255;

            if (j >= 0 && j < this.chestContents.length)
            {
                this.chestContents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
            }
        }
    }

    public void writeToNBT(NBTTagCompound compound)
    {
        super.writeToNBT(compound);
        NBTTagList nbttaglist = new NBTTagList();

        for (int i = 0; i < this.chestContents.length; ++i)
        {
            if (this.chestContents[i] != null)
            {
                NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                nbttagcompound1.setByte("Slot", (byte)i);
                this.chestContents[i].writeToNBT(nbttagcompound1);
                nbttaglist.appendTag(nbttagcompound1);
            }
        }

        compound.setTag("Items", nbttaglist);

        if (this.hasCustomName())
        {
            compound.setString("CustomName", this.customName);
        }
    }

Вот методы, а по привязке тайла к итему не помогу. Сам без понятия.
 
Вопрос: причём тут тайл? Он тут вообще никаким боком не нужен.
Всё реализуется через события и IExtendedEntityProperties + NBT самого ItemStack'а, где, внезапно, можно хранить другие ItemStack'и.
 
Oldestkon написал(а):
Вопрос: причём тут тайл? Он тут вообще никаким боком не нужен.
Всё реализуется через события и IExtendedEntityProperties + NBT самого ItemStack'а, где, внезапно, можно хранить другие ItemStack'и.
Нуок. Я бы просто попытался, понял, что ничегошеньки не работает, и пошел бы в интернет. Либо, что более вероятно, бросил бы проект. Но, буду знать.
 
Назад
Сверху