Posted May 24, 20196 yr Hello, I am trying to make an Itemstack with an energy capability, however the durability bar and tooltip are only updated when I press the right mouse button. This is the Code for my onItemRightClick-Method: Spoiler @Override public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { ItemStack stack = playerIn.getHeldItem(handIn); NBTTagCompound nbt; if(playerIn.getHeldItem(handIn) == null) return ActionResult.newResult(EnumActionResult.FAIL, null); if(stack.hasTagCompound()) { nbt = stack.getTagCompound(); if(stack.getTagCompound().hasKey("fill") && nbt.getBoolean("fill")) { nbt.setBoolean("fill",false); } else { nbt.setBoolean("fill",true); } } else { nbt = new NBTTagCompound(); nbt.setBoolean("fill",true); } stack.setTagCompound(nbt); return ActionResult.newResult(EnumActionResult.SUCCESS, stack); } and this is the code for the "Information" - Methods: Spoiler @Override public boolean showDurabilityBar(ItemStack itemStack) { return true; } @Override public double getDurabilityForDisplay(ItemStack stack) { if(stack.hasCapability(CapabilityEnergy.ENERGY,null)) { EnergyStorage stackenergy = (EnergyStorage) stack.getCapability(CapabilityEnergy.ENERGY,null); double e = stackenergy.getEnergyStored(); return 1.0-((double)(e / (double)capacity)); } return 1.0; } @Override @SideOnly(Side.CLIENT) public boolean hasEffect(ItemStack stack) { if(stack.hasTagCompound()) if(stack.getTagCompound().hasKey("fill")) return stack.getTagCompound().getBoolean("fill"); return false; } @Override public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn) { tooltip.add("Energy: "+stack.getCapability(CapabilityEnergy.ENERGY,null).getEnergyStored()); } Thank you for your help!
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.