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

This code makes it drop different item depending on the random number generated, which is half of what I want, the other half would be making the item it drops be more than if it's stack size is more than one, for example when it drops a diamond I want it to drop 1-5 diamonds and not just one diamond?

 

public Item getItemDropped(IBlockState state, Random random, int fortune) {

	int Chance = random.nextInt(7) + 1;
	if (Chance == 1) {
		return Items.bread;
		}
		else if (Chance == 2) {
		return Items.gold_ingot;
		}
		else if (Chance == 3) {
		return Items.ender_pearl;
		}
		else if (Chance == 4) {
		return Items.diamond;
		}
		else if (Chance == 5) {
		return Items.blaze_rod;
		}
		else if (Chance == 6) {
		return Item.getItemFromBlock(ModBlocks.adjustable_light_block_full);
		}
		else if (Chance == 7) {
		return Item.getItemFromBlock(ModBlocks.ancient_brick_block);
		}
		else {
		return null;
		}
	}

  • Author

I should have said this first but I tried using quantityDropped and if I put it to 7, it drops 7 different items  rather than 7 diamonds?

  • Author

@Override
public List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
	Random random = new Random();
	int Chance = random.nextInt(4);
	if (Chance == 1) {
		return (List<ItemStack>) Items.arrow;
		}
		else if (Chance == 2) {
		return (List<ItemStack>) Items.apple;
		}
		else{
		return null;
	}
}

 

Okay I did this now but how do I add the drop quantity for each individual item, and also is my current code correct?

 

  • Author

Thanks for your help, I used a HarvestDropsEvent instead because I already knew how to use that, I just readjusted it to my needs.

The problem is that events should be used to alter vanilla/other things.

When you have access to your own class you should utilize it.

 

There is always only one optimized algorithm, all other are bad ones.

 

In this case you should be using getDrops.

 

List list = new List(); // +generics
list.add(item);
return list;

1.7.10 is no longer supported by forge, you are on your own.

  • Author

Okay thanks but with the list, what would I do to make it the item, the quantity and also the chance of getting that single item? For example:

 

Diamonds, 1 (amount), (20% chance of dropping)

 

Bread, 5 (amount), 50% (chance of dropping)

 

Redstone, 3-7 (amount), 30% (chance of dropping)

 

 

 

 

I belive list is of List<ItemStack>. Simply put new ItemStacks with stackSized fitting your needs.

 

As to chances - use Random class.

Generate nextDouble() and for e.g 20% do double < 0.2, for next 40% do 0.2 <= double < 0.6, etc.

1.7.10 is no longer supported by forge, you are on your own.

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...

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.