Posted November 29, 201311 yr Hello! I'm having a problem with removing metadata items. The problem isn't its not removing one of the item, it does, but it removes one of each of the metadata items if you have them in your inventory... Code: public void removeItem(EntityPlayer ep, ItemStack removeitem, int remove) { IInventory inv = ep.inventory; for(int i=0; i < inv.getSizeInventory(); i++) { if(inv.getStackInSlot(i) != null) { ItemStack j = inv.getStackInSlot(i); if(j.getItem() != null && j.getItem() == removeitem.getItem()) { inv.decrStackSize(i, remove); } } } } Thanks ahead of time!
November 29, 201311 yr You need to test for the metadata because the item never changes with the metadata. PM's regarding modding questions should belong in the Modder Support sub-forum and won't be answered.
November 29, 201311 yr public void removeItem(EntityPlayer ep, ItemStack removeitem, int remove, int metadata) { IInventory inv = ep.inventory; for(int i=0; i < inv.getSizeInventory(); i++) { if(inv.getStackInSlot(i) != null) { ItemStack j = inv.getStackInSlot(i); if(j.getItem() != null && j.getItem() == removeitem.getItem() && j.getItemDamage() == metadata) { inv.decrStackSize(i, remove); } } } }
November 29, 201311 yr Author public void removeItem(EntityPlayer ep, ItemStack removeitem, int remove, int metadata) { IInventory inv = ep.inventory; for(int i=0; i < inv.getSizeInventory(); i++) { if(inv.getStackInSlot(i) != null) { ItemStack j = inv.getStackInSlot(i); if(j.getItem() != null && j.getItem() == removeitem.getItem() && j.getItem().getItemDamage() == metadata) { inv.decrStackSize(i, remove); } } } } Thanks but getItemDamage doesn't work... i changed it to this and it worked public void removeItem(EntityPlayer ep, ItemStack removeitem, int remove, int metadata) { IInventory inv = ep.inventory; for(int i=0; i < inv.getSizeInventory(); i++) { if(inv.getStackInSlot(i) != null) { ItemStack j = inv.getStackInSlot(i); if(j.getItem() != null && j.getItem() == removeitem.getItem() && j.getItem().getDamage(j) == metadata) { inv.decrStackSize(i, remove); } } } }
November 30, 201311 yr You need to use j.getItemDamage(). That gets the damage/metadata of the itemstack "Thinking that coding is the nerdy IT guy at work rebooting your computer is like thinking that music is what happens when the piano tuner comes round." - Ed Rex
November 30, 201311 yr Thanks but getItemDamage doesn't work... My bad, getItemDamage() is in ItemStack.java, not Item.java. j.getItemDamage() should work.
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.