Jump to content

[1.12.2] ItemStack Durability Bar does not update correctly


GloriousAlpaca

Recommended Posts

Hello,

I am currently making an item that has the energy capability and is supposed to show it's current energy level in a durability bar, however this durability bar is only updated when the item is charged fully or when I press the right mouse button. I suspect that I need to send a packet to synchronize the energy level with the client, but I am not sure how I could convert the itemstack to bytes. I also don't understand why it even updates the durability bar at all if it needs a packet (maybe the onrightclick method updates the itemstack ?).

Here is the code for the durability bar:

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;
    	
    }

 

This is the code for the onRightClick-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);
	}

 

Thank you for your help!

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

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