Posted November 28, 201410 yr 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 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...
November 30, 201410 yr Author I'm trying to spawn a custom entity when a player right clicks with an item. The only thing is that it still spawns when I interact with blocks like crafting tables, chests, etc The enders are everywhere. You can't escape...
December 2, 201410 yr Author The item is can be any item that fits the standard of what I need. I don't have an item file for it. The enders are everywhere. You can't escape...
December 3, 201410 yr Author 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...
December 3, 201410 yr 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.
December 3, 201410 yr Author 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...
December 3, 201410 yr 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.
December 3, 201410 yr Author 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 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...
December 3, 201410 yr 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.
December 3, 201410 yr 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))
December 3, 201410 yr I'm somewhat new to events, but cant you just cancel it so the method is only called once? So for the player its not goin to make a change..
December 3, 201410 yr 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
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.