Jump to content

Recommended Posts

Posted

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!

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.