Jump to content

How to override normal block-drop procedure?


nullbear

Recommended Posts

In the past, i'm used to working with 1.6 and 1.7, using mcp standalone, without forge. I have some basic understanding of how forge works, and most of my issues so far have been with the lack of documentation regarding forge classes and events and stuff not being up-to-date in the slightest. (most documentation seems to have been last updated several years ago.)

 

What i want to do:

 

Make blocks drop multiple different (non-block) items based on the tools they were harvested with.

 

(ex. toolA drops 4 of object A, toolB drops 4 of object B.)

 

There are like seventeen 'onharvest' 'onharvestbyplayer' 'onblockbreak' 'onblockharvest' and similar methods that all appear synonymous with eachother. In the past, i've been able to just go to minecraft.block or whatever and read the code, in order to understand what the methods are each used for. But this seems to have been made impossible with forge.

Link to comment
Share on other sites

There's nothing stopping you from reading the Minecraft and Forge code in your IDE if you've set up your workspace correctly. This page explains how to do that.

 

In most cases, you can override

Block#getDrops

(or the vanilla methods called by it) to control the drops of a block; but this doesn't give you access to the player who broke the block or the tool they used to break it.

 

The best way to have drops vary based on the tool used to break the block is probably to subscribe to

BlockEvent.HarvestDropsEvent

, check the block is yours, check which tool the player is holding and add the appropriate drops to the event's drop list.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

There's also

public boolean removedByPlayer(IBlockState state, World world, BlockPos pos, EntityPlayer player, boolean willHarvest)

or

public void harvestBlock(World worldIn, EntityPlayer player, BlockPos pos, IBlockState state, @Nullable TileEntity te, @Nullable ItemStack stack)

?

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.

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.