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

The only way I've seen to be able to change the drops of a block is to override Block.getDrops() in a Block subclass. Is there a way that I can modify the drops of a vanilla block without creating a subclass for it, and replacing instances of it in the world with my new one?

Edited by Aarilight
(updated title for future searchers)

Subscribe to the HarvestDropsEvent, which will give you access to drops and the harvester. More info on events here.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

  • Author
@SubscribeEvent
public static void onSpawnerHarvest(BlockEvent.HarvestDropsEvent event) {
	if (event.getState().getBlock() == Blocks.MOB_SPAWNER) {
		
	}
}

How do I edit the drops from here? the event doesn't seem to have any useful methods to replace them. Do I have to prevent the normal event and drop the items myself?

Edited by Aarilight
update code language

The HarvestDropsEvent contains a List<ItemStack> called drops. You can modify this List<ItemStack> however you want.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

  • Author

Oh, I was being dumb. I saw .getDrops() and was thinking I'd need .setDrops(). It's the same object, so editing it does the same thing. #genius

 

 

Edited by Aarilight

  • Author

In case anyone is ever trying to change the drops of a mob spawner based on the type it is, in the future, and found this old post, and got sad, there is a way!

 

You must subscribe to both BreakEvent and HarvestDropsEvent. In BreakEvent, when it's a Blocks.MOB_SPAWNER, set a static field to the TileEntityMobSpawner.

In the HarvestDropsEvent, when the same condition is met, use the TileEntityMobSpawner you saved.

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.