Jump to content

Right click event that triggers after block interaction


StrangeOne101
 Share

Recommended Posts

I need an event that either triggers on right click AFTER block interaction or for some way to do that with the PlayerInteractEvent. I want it to be like the onItemUse method in items that triggers after block interaction or if the player is holding shift.

 

I did originally have the code in an item, but the item is meant to override a vanilla item with a new function and that's not possible with 1.7.

 

The following code it what I currently have for my PlayerInteractEvent. I've tried manually triggering the activation then canceling the event after (to prevent activation from happening twice, too) but it seems to cause other problems like no more chest animations or sound.

 

If anyone could help me with this, that'd be great.

 

Thanks :D

 

Code:

@SubscribeEvent
public void onRightClick(PlayerInteractEvent e)
{
	if (e.isCanceled())
	{
		return;
	}

	if (e.action == PlayerInteractEvent.Action.RIGHT_CLICK_AIR )
	{
		this.throwBrickEvent(e.entityPlayer); //New item function. Just easier in once line and place.
	}
	else if (e.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK && e.entityPlayer.getHeldItem() != null && this.canThrow(e.entityPlayer.getHeldItem()))
	{
		Block block = e.world.getBlock(e.x, e.y, e.z);
		if (!block.onBlockActivated(e.world, e.x, e.y, e.z, e.entityPlayer, e.face, e.x, e.y, e.z)) //Don't know what the last 3 parameters are 
		{
			e.setResult(Result.DEFAULT);
			this.throwBrickEvent(e.entityPlayer);
		} 			
		e.setCanceled(true);
	}
}

The enders are everywhere. You can't escape...

Link to comment
Share on other sites

As I said, it is causing me issues as it is still spawning when the player is interacting with a block like crafting tables, chests, doors, etc. I don't want it to spawn when they interact with blocks like these, I want it like the item interact code.

 

 

The enders are everywhere. You can't escape...

Link to comment
Share on other sites

Or you could fix your RIGHT_CLICK_BLOCK section of code to actually check for your block.  More than one block returns false when right clicked and more than one returns true...

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

Don't check for

RIGHT_CLICK_BLOCK

then...

That means that it will not spawn when they right click on any block. So if they click on grass even, it won't spawn. I don't want that.

 

Or you could fix your RIGHT_CLICK_BLOCK section of code to actually check for your block.  More than one block returns false when right clicked and more than one returns true...

I know that. I don't have a certain block I'm trying to check for though. I'm trying to check for all blocks that interact only so I can spawn my entity if it doesn't interact.

The enders are everywhere. You can't escape...

Link to comment
Share on other sites

Hope you aren't the person I helped on the irc, and if not, I may have a solution. If you want to check if a block does something on right click, you can just see if it is overridden from the vanilla one with reflection, I'll get the specific code to you soon, not at a workspace.

Link to comment
Share on other sites

Hope you aren't the person I helped on the irc, and if not, I may have a solution. If you want to check if a block does something on right click, you can just see if it is overridden from the vanilla one with reflection, I'll get the specific code to you soon, not at a workspace.

Haha, hey dude xD I tried what you said but it seemed to make everything stop working completely. Still was stuck so I posted here in hope of getting a solution.

 

As diesieben said, there may not be a way without some really clever stuff so I might just settle on testing for TileEntities and some other blocks. Thanks anyway.

The enders are everywhere. You can't escape...

Link to comment
Share on other sites

I know that. I don't have a certain block I'm trying to check for though. I'm trying to check for all blocks that interact only so I can spawn my entity if it doesn't interact.

 

So you want any item when right clicked on any block to spawn something?

 

Jesus christ, talk about a terrible idea...

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

So, if i get u right your trying to find out if the block that is clicked has an interraction,

Then, maybe using this code would be a good idea (probably isnt tho):

if(!e.world.getBlock(e.x, e.y, e.z).onBlockActivated(e.world, e.x, e.y, e.y, e.entityPlayer, e.face, 0F, 0F, 0F))

Link to comment
Share on other sites

Alright, the only other ways I can think of are listing all blocks that have a interaction and check if its the clicked block, wich wouldnt work with other mods adding blocks with interactions..

The other one beeing to fake the world and the player so its not going to have a impact on the game, dont know if/how this is possible but that would also fail if the block has a interaction but still doesnt return true in onBlockActivated  ???

guess you can never get a 100% sure :P

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

 Share



×
×
  • Create New...

Important Information

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