Jump to content

Recommended Posts

Posted (edited)

I created a capability which is supposed to store ItemStacks the player has dropped. I do this by having an ArrayList in my capability class. I can add and get the items correctly via the getLostItems getter, but whenever I rejoin the list is empty, indicating that the list isn't saved. I tried to match the saveAllItems and loadAllItems in the ItemStackHelper class, but I am not sure where I went wrong.

 

Storage class:

        @Nullable
        @Override
        public NBTBase writeNBT(Capability<ILostItemsCapability> capability, ILostItemsCapability instance, EnumFacing side)
        {
            return ItemNBTHelper.saveItemList(new NBTTagCompound(), instance.getLostItems());
        }

        @Override
        public void readNBT(Capability<ILostItemsCapability> capability, ILostItemsCapability instance, EnumFacing side, NBTBase nbt)
        {
            ItemNBTHelper.loadItemList((NBTTagCompound) nbt, instance.getLostItems());
        }

ItemNBTHelper:

    public static NBTTagCompound saveItemList(NBTTagCompound tag, List<ItemStack> itemStacks)
    {
        NBTTagList tagList = new NBTTagList();

        for(int i = 0; i < itemStacks.size(); ++i)
        {
            ItemStack itemStack = itemStacks.get(i);

            if(!itemStack.isEmpty())
            {
                NBTTagCompound compound = new NBTTagCompound();
                compound.setByte("Slot", (byte)i);
                itemStack.writeToNBT(compound);
                tagList.appendTag(compound);
            }
        }

        if(!tagList.hasNoTags())
        {
            tag.setTag("Items", tagList);
        }

        return tag;
    }

    public static void loadItemList(NBTTagCompound tag, List<ItemStack> itemStacks)
    {
        NBTTagList tagList = tag.getTagList("Items", 10);

        for(int i = 0; i < tagList.tagCount(); ++i)
        {
            NBTTagCompound compound = tagList.getCompoundTagAt(i);
            int slot = compound.getByte("Slot") & 255;

            if(slot >= 0 && slot < itemStacks.size())
            {
                itemStacks.set(slot, new ItemStack(compound));
            }
        }
    }

 

Edited by That_Martin_Guy
Posted

I was following the original code too closely, apparently. Doing what you said seems to have fixed it!

 

New saving and loading code:

    public static NBTTagCompound saveItemList(NBTTagCompound tag, List<ItemStack> itemStacks)
    {
        NBTTagList tagList = new NBTTagList();

        for(int i = 0; i < itemStacks.size(); ++i)
        {
            ItemStack itemStack = itemStacks.get(i);

            if(!itemStack.isEmpty())
            {
                NBTTagCompound compound = itemStack.writeToNBT(new NBTTagCompound());
                tagList.appendTag(compound);
            }
        }

        if(!tagList.hasNoTags())
        {
            tag.setTag("Items", tagList);
        }

        return tag;
    }

    public static void loadItemList(NBTTagCompound tag, List<ItemStack> itemStacks)
    {
        NBTTagList tagList = tag.getTagList("Items", 10);

        for(int i = 0; i < tagList.tagCount(); ++i)
        {
            NBTTagCompound compound = tagList.getCompoundTagAt(i);
            itemStacks.add(new ItemStack(compound));
        }
    }

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Dear Brunoe Quick Hack (Team) Thank you so much for your remarkable help in recovering my funds after I was scammed. As a busy surgeon and single mother to three children, the loss was overwhelming.Web-Site: Brunoequickhack.COM Your team's hard work, expertise, and unwavering support gave me hope and helped restore my financial stability. I admire your professionalism and the way you genuinely care about your clients. I highly recommend your services to anyone who has fallen prey to scammers. You are truly life savers. Whats-App: +1705-(7842)-635 With heartfelt thanks, Contact information: BrunoequickhackATgmail.cOM Dear Brunoe Quick Hack (Team) Thank you so much for your remarkable help in recovering my funds after I was scammed. As a busy surgeon and single mother to three children, the loss was overwhelming.Web-Site: Brunoequickhack.COM Your team's hard work, expertise, and unwavering support gave me hope and helped restore my financial stability. I admire your professionalism and the way you genuinely care about your clients. I highly recommend your services to anyone who has fallen prey to scammers. You are truly life savers. Whats-App: +1705-(7842)-635 With heartfelt thanks, Contact information: BrunoequickhackATgmail.cOM
    • ok i tried to disable the last mod's i installed and it is some of then, so now im going to do the classic enable and disable trick to find out which mod cause the crash. thanks for the help  
    • ok  make it work (java not being recognize) by downloading the zip putting it in the java folder and manually setting the path but is still give the same crush report https://pastebin.com/PPmR6jN0
    • Install this one: https://www.azul.com/downloads/?version=java-17-lts&os=windows&architecture=x86-64-bit&package=jdk#zulu After installation, set the java version in your Launcher / Java settings
    • it say it requires java 17 so when i go to install it is say "the installer has encounter an unexpected error installing this package." error code 2503 and 2502. https://pastebin.com/AL6AHMM9
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.