Jump to content

[1.6.4] ForgeGradle - Turn an item/tool into another item before it breaks?


Elite_Forges

Recommended Posts

So first off, the reason this is 1.6.4 is because it is for my modpack. I have made my own forge mod to go along with my modpack and I will update to 1.7.2 only when the vast majority of the current ones I have are updated.

 

The item in question:  A weapon (coded almost the same as a sword) called a "Cane" that changes into a powered up version of itself on right click (which I have achieved). But when the "powered up" Cane's durability runs out or gets to a certain level, I want it to automatically change back into the regular Cane then have a cooldown before you can power it up again.

 

My goal:  Get the Powered Cane to turn into a Cane when durability runs out. And if possible, add a cooldown to onItemRightClick or something that adds a right click cooldown function that still works with powering up the Cane.

 

CaneGold.java is the regular cane I'm talking about

CaneSword.java is the "Sword" tool that all canes extend from.

CanePower.java is the "powered up" cane. You get this when right clicking the Gold Cane. (Which works)

 

Here is my code: https://gist.github.com/EliteForges/e5067c9fceccdc039712

 

If you need any more info or something explained I will explain it, just ask!  :D

Link to comment
Share on other sites

How can I make an item change texture change and the item's damage  in a method?

 

EDIT:  I updated CaneGold.java. Is this how I would properly set a cooldown timer so that it changes items? Or can I make it change texture, damage delt, and name for 10 seconds then change back into a gold cane?

 

 

 

public static int ticks = 10;
  public static int use = 0;
  
  public static void givePoweredCane() {
  ItemStack Poweredcane = new ItemStack(Main.canePower);
  use=1;
  }
  
  public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5) {
  if((use == 1) && (ticks > 0)){
	  ticks--;
	  ItemStack cane = new ItemStack(Main.caneCool);
  }
  else if(ticks <= 0){
	  use = 0;
	  ticks = 10;
	  ItemStack cane = new ItemStack(Main.canegold);
  }
  }
  
    public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player, Entity entity)
    {
    	if(use==0)
    		givePoweredCane();
    		CaneCooldown.givePoweredCane();
	return itemStack;
    }

 

 

Link to comment
Share on other sites

If you are using Eclipse, then you should probably be seeing warnings about unused variables in your methods. Heed them! Or turn the warnings on in your options, since that can save you heartaches in these kinds of instances.

You are creating local variables in your methodsZ: ItemStack <stackname> = new ItemStack(<blah blah>) just creates an itemstack and promptly lets it get garbage collected and disappear.

The way to make these persist is to store them in a persistent place or return them from methods. You do neither. The player has an inventory and a held itemstack, you might want to use one of them to store the new 'ItemStack' or at least spawn it in world and delete the original.

Link to comment
Share on other sites

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.