Posted October 4, 201510 yr The title says it all. I want to be able to 'shift+right click' and the two items (a case and a sword) to swap. Say I'm using the sword and I do said process and it changes into a case (The sword has no durability and can't be enchanted/named so that's not a problem, btw). I've been stuck on this for a bit and need a lil help. Thanks "You're a wizard, Will." "I'm a whwat?"
October 4, 201510 yr Override Item#onItemRightClick to check if the player is sneaking ( Entity#isSneaking ). If they are, return an ItemStack of the other Item ; else return the result of the super method. You can see a basic example of this here. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
October 4, 201510 yr Author Cheers! It's working now EDIT: I've stumbled across a problem on my behalf (obviously), I have no idea how to set the other item. I used another project the first time but now I need to change the item and I'm confused (I'm a derp), I change all the instances of 'otherItem' right? "You're a wizard, Will." "I'm a whwat?"
October 4, 201510 yr Author I have the two items created but I don't know how to set 'otherItem' as the case (and vice versa). EDIT: This is my code for the ItemQuinqueDoujima. I'm trying to create the 'Quinques' from Tokyo Ghoul. package com.tokyoghoul.tgmod.items; import com.tokyoghoul.tgmod.TokyoGhoulMod; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import java.util.List; public class ItemQuinqueDoujima extends Item { private ItemStack ItemQuinqueCase; public boolean hasOtherItem() { return ItemQuinqueCase != null; } public void setOtherItem(ItemStack otherItem) { this.ItemQuinqueCase = otherItem; } @Override public void addInformation(ItemStack stack, EntityPlayer playerIn, List tooltip, boolean advanced) { super.addInformation(stack, playerIn, tooltip, advanced); if (hasOtherItem()) { tooltip.add(StatCollector.translateToLocalFormatted("item.swapTestWithItem.desc", ItemQuinqueCase.getDisplayName())); } else { tooltip.add(StatCollector.translateToLocal("item.swapTestWithoutItem.desc")); } } @Override public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { if (hasOtherItem() && playerIn.isSneaking()) { return ItemQuinqueCase.copy(); } return super.onItemRightClick(itemStackIn, worldIn, playerIn); } } "You're a wizard, Will." "I'm a whwat?"
October 4, 201510 yr Author OH! IM AN IDIOT. Thanks! EDIT: Y'know what. I'ma just stop I can't get this to work so nevermind, I'll just look for another way. "You're a wizard, Will." "I'm a whwat?"
October 4, 201510 yr Do you understand how the code works? You have an instance of your ItemQuinqueCase class stored in a static field of some class (e.g. TokyoGhoulMod or ModItems ), return a new ItemStack of this Item instance from ItemQuinqueDoujima#onItemRightClick . Do the same in ItemQuinqueCase#onItemRightClick , except return an ItemStack of the sword instead of the case. You don't need the ItemQuinqueCase field if the result of the swap is hardcoded, I just used that to demonstrate two items that use the same class swapping to each other. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
October 4, 201510 yr Author Not particularly, no Ah, ok. I'll fix it in the morning and see if it works. I asked this on Minecraft Forums but got the same answer, there's no other way "You're a wizard, Will." "I'm a whwat?"
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.