Как получить TileEntity из предмета

Хмм, а как тогда сохранить например данные о предметах в контейнере, который открывается предметом? В моде с рюкзаками такое есть, так что это как-то возможно 
unsure.png
 
Что ты хочешь сделать вообще,может ничего такого и не надо делать.
 
Вот есть предмет. Когда на него пкм тыкаешь открывается GUI с контейнером от его ентити. Вот я хочу что бы он как-то через NBT сохранял предметы в себе. Но из за того что я не могу получить его ентили при открытии контейнера я не могу считать прошлое NBT
 
Лол. Просто записывай в нбт предмета, делается элементарно
 
Предмета? Можно гайдик?
[merge_posts_bbcode]Добавлено: 10.03.2016 20:33:24[/merge_posts_bbcode]

А я куда записываю? Не в предмет что ли?
Код:
    @Override
    public void writeToNBT(NBTTagCompound nbt) {
        super.writeToNBT(nbt);

        NBTTagList list = new NBTTagList();
        for (int i = 0; i < this.getSizeInventory(); ++i) {
            if (this.getStackInSlot(i) != null) {
                NBTTagCompound stackTag = new NBTTagCompound();
                stackTag.setByte("Slot", (byte) i);
                this.getStackInSlot(i).writeToNBT(stackTag);
                list.appendTag(stackTag);
            }
        }
        nbt.setTag("Items", list);

        if (this.hasCustomName()) {
            nbt.setString("CustomName", this.getCustomName());
        }
    }


    @Override
    public void readFromNBT(NBTTagCompound nbt) {
        super.readFromNBT(nbt);

        NBTTagList list = nbt.getTagList("Items", 10);
        for (int i = 0; i < list.tagCount(); ++i) {
            NBTTagCompound stackTag = list.getCompoundTagAt(i);
            int slot = stackTag.getByte("Slot") & 255;
            this.setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(stackTag));
        }

        if (nbt.hasKey("CustomName", 8)) {
            this.setCustomName(nbt.getString("CustomName"));
        }
    }
 
У предметов нет TileEntity. Как такая мысль вообще могла придти в голову?
В классе ItemStack есть поле stackTagCompound и методы setTagCompound и getTagCompound
Тебе нужно воспользоваться этими методами. Кстати, метод setStackDisplayName (то есть переименование на наковальне и прочее) как раз использует эти методы.
 
Нет не в предмет что-ли. Передаешь контейнеру айтемстак предмета, грузишь итемы из его нбт при открытии и пишешь в него же при закрытии
 
О, спасибо тебе. Я думал что у предметов есть TileEntity. В каком тогда методе записывать/считывать NBT данные?
[merge_posts_bbcode]Добавлено: 10.03.2016 21:01:10[/merge_posts_bbcode]

Стоп, раз у предметов нету TE как мне добавлять слоты для контейнера. Что бы добавить слот в контейнер мне надо TE
 
Tile как бы намекает, что только у блоков. Слоты привязаны к IInventory, следовательно пилишь его реализацию с загрузкой из предмета в конструктора и сохранением при закрытии.
 
Типа, открытие инвентаря можно из конструктора контейнера.
Закрытие инвентаря можно из метода onContainerClosed контейнера.
[merge_posts_bbcode]Добавлено: 10.03.2016 20:04:31[/merge_posts_bbcode]

Minebot, т.е. тебе надо инвентарь для предмета (а не для блока). Ведь так?
 
Назад
Сверху