Jump to content

[1.10] Adding custom drops to a vanilla block (mob spawner)


Aarilight

Recommended Posts

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)
Link to comment
Share on other sites

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

  • Like 1

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/

Link to comment
Share on other sites

@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
Link to comment
Share on other sites

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

  • Like 1

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/

Link to comment
Share on other sites

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.

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.