Jump to content

Recommended Posts

Posted

Hi, I've been searching all over the internet looking for how to do something when the item breaks but I can't find anything. I'm trying to make it so when my item breaks it gives me another item (by the way I'm modding on 1.7.2). Can anyone help?

 

Thanks In Advance

Posted

It is easy. Just add setContainerItem(THE_ITEM_TO_CHANGE) in the constructor of your item.

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Posted

Hi, I've been searching all over the internet looking for how to do something when the item breaks but I can't find anything. I'm trying to make it so when my item breaks it gives me another item (by the way I'm modding on 1.7.2). Can anyone help?

 

Thanks In Advance

 

Not sure if this would work for you, but there is an event called PlayerDestroyItemEvent that might be what you need.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Could someone please tell me how to format them properly, that might be the problem. For "setContainerItem()" I tried putting |--- this.setContainerItem(SwordsMod.BrokenHilt); ---| and for "PlayerDestroyItemEvent" I tried |--- public void PlayerDestroyItemEvent(ItemStack itemstack, World world, EntityPlayer player) {

player.inventory.addItemStackToInventory(new ItemStack(SwordsMod.BrokenHilt, 1));

} ---|

Posted

Oh then edit the Item#setDamage method. It would be called any time when the damage is changed.

You may check if the damage is 0.

I. Stellarium for Minecraft: Configurable Universe for Minecraft! (WIP)

II. Stellar Sky, Better Star Rendering&Sky Utility mod, had separated from Stellarium.

Posted

Could you give me an example of a way to give item on break? Here's the code for giving the item:

public void WHATEVER_EVENT(EntityPlayer player) {

player.inventory.addItemStackToInventory(new ItemStack(SwordsMod.BrokenHilt, 1));

}

Also I'm completely confused about the Item#setDamage, could you show me an example of that?

Posted

Again, that is not how you listen for events.

The Event is called PlayerDestroyItemEvent.

I know the event's called PlayerDestroyItemEvent, the code I actually tried was(as stated in jabelars tutorial):

public void onEvent(PlayerDestroyItemEvent event){

event.entityPlayer.inventory.addItemStackToInventory(new ItemStack(SwordsMod.BrokenHilt, 1));

}

I typed WHATEVER_EVENT(EntityPlayer player) so nobody would get confused as to why it said player instead of EntityPlayer. The only reason it's there is to show how to add an item to inventory to make it easier to show me an example.

Posted

Did you do have the @SubscribeEvent annotation on the method?  Did you register the handling class on the right event bus?

 

Also, I usually put in a System.out.println("PlayerDestroyItemEvent handler called"); type of console message in the method to confirm whether the handler is actually being called.

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Well, it is old, but the system still works the same.

 

Generally, but the details are different.  For example back then people used @ForgeSubscribe annotation, now it is @SubscribeEvent, also I think some of the actual available events are different.  There is the FML bus now too, etc.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

If you are not completely stupid it's easy to figure that out...

 

You'd think.  But there seem to be a lot of people asking questions without much knowledge of Java.  You seem to have a lot of patience for noobs today but some of these threads make me laugh -- i see you tell them exactly what to do and they do something different then you tell them again and they do something different...

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

I made it give me an item when it breaks through TutEventHandler with this code:

public class TutEventHandler {

 

  @SubscribeEvent

    public void onEvent(PlayerDestroyItemEvent event) {

event.entityPlayer.inventory.addItemStackToInventory(new ItemStack(SwordsMod.BrokenHilt, 1));

}

}

 

I still need an 'if' statement to determine what item broke, any ideas for what 'if' statement I should use.

 

Thanks for the help up until now  :D

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.