Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

I want to execute some code when my item breaks a block, but in Item.class there is only a boolean called onBlockDestroyed. How would i run code on block destroyed?

You mean

 

public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, int blockID, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase){}

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

So...what about it?

What is insufficient?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

...put it in that function?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

ok. but since it is boolean what do I need to return?

 

A...boolean...

 

True if the block is allowed to be destroyed, false otherwise.

 

If you don't know what you want it to do, specifically, you can always run your code and then do return super.onBlockDestroyed(...)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Hi Alix

 

If you are not sure what the parameters for a particular function are, the fastest way to find out is to look through vanilla code which uses the parameters and trace through until you either reach something you know or which has comments.

 

For example:

onBlockDestroyed(ItemStack par1ItemStack, World par2World, int par3, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase)

 

If you look in ItemShears.onBlockDestroyed, you see this...

 

par3 != Block.leaves.blockID

 

This tells you that par3 is the blockID.

 

In ItemSword.onBlockDestroyed, you see

 

Block.blocksList[par3].getBlockHardness(par2World, par4, par5, par6)

 

If you then go into Block.getBlockHardness, you see in the comments

    /**

    * Returns the block hardness at a location. Args: world, x, y, z

    */

so par4, par5, par6 are x,y,z

 

-TGG

 

 

 

 

  • Author

I'm assuming I need to @Override it. To do what I need to do, I need an instance of entity player

(EntityPlayer par8EntityPlayer)

added to the boolean method. Is there another way to edit players inventory? I'm trying to set item damage to 1 if  a random integer == 1.

You don't need the player or the player's inventory.  The item they're using is already being passed to the function.

 

(And adding another parameter is not Magic, it won't make that reference suddenly show up)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

  • Author

Thanks guys a lot. here is my final method if anyone wants it.

@Override
public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, int blockID, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase)
{

	final int x = 1;
	final int y = Reference.chiselBreakTime;
	int rand = new Random().nextInt(y-x) + x;

	if(rand == 2 && par1ItemStack.getItemDamage() == 0)
	{
		par1ItemStack.setItemDamage(1);
	}

	return false;
}

Guest
This topic is now closed to further replies.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.