Jump to content

[1.9] Cycling through players inventory


Daedalus

Recommended Posts

I've been at this for a while now, and I try to not ask for help usually, but this time I'm at an impasse.

 

I've created the command "count" which I want to get the item that the player is currently holding, then count the amount of that item in the players inventory, then send the player a message with the amount of that item.

 

        ItemStack heldStack = player.inventory.getCurrentItem();

        if (heldStack != null)  {
            for (int i = 0; i < player.inventory.getSizeInventory(); i++) {
                ItemStack cycledStack = player.inventory.getStackInSlot(i);

                if (cycledStack.getItem().equals(heldStack)) {
                    itemCount = itemCount + cycledStack.stackSize;
                }
            }
        }

 

I'm still fairly new to Java, so I'm assuming it's some stupid mistake that I somehow made. I don't want to be spoonfed code, I want to learn, so if you guys could help me out by pointing me in the right direction, that would be awesome.

 

I apologize if I've forgotten anything in this post, please let me know if I have.

 

Thanks!

 

Link to comment
Share on other sites

So what's the problem? Are you getting NullPointerException (i.e. because you don't check if cycledStack is null before calling a method with it)? Is your count not incrementing (i.e. because your condition is never true - ItemStack != Item)? Is the message not getting sent (I don't see any code to send a chat message...)?

Link to comment
Share on other sites

Wow, forgot the error... Sorry...

 

Yes, it's a NullPointerException, and I feel more like an idiot because checking if it was null or not fixed that issue, and then it wasn't counting which I fixed by changing:

 

if (cycledStack.getItem().equals(heldStack))

 

To:

 

if (cycledStack.getItem().equals(heldStack.getItem()))

 

Thank you!

Link to comment
Share on other sites

Np. Rookie mistakes (that every one of us has made) ;)

 

Btw, since Items are all instantiated as singletons, you can compare using identity '==' rather than the #equals method (which does check identity, but also potentially a lot of other stuff e.g. for complex objects that are separate instances but may still considered equal).

// this is the typical way of comparing Items and Blocks (but NOT ItemStacks if you care about damage value and/or NBT data)
if (cycledStack.getItem() == heldStack.getItem())

Link to comment
Share on other sites

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



×
×
  • Create New...

Important Information

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