Posted July 19, 201411 yr Hi, I want to cancel the PlayerInteractEvent only when a player tries to activate a block, like opening a gui for a chest or crafting table, or using a block like a repeater. I could do this by just checking the block I'm clicking (clickedBlock.equals(Blocks.Repeater)), but I can only do this for vanilla minecraft blocks. I can't use the gui event, because I've to know the result at the end of the PlayerInteractEvent. I want to do this server-side and I 'll need the player object & block location later on. Any idea how I could do this? (I'm using Forge 1.7.10-10.13.0.1180) Solution to cancel block interactions only: e.useBlock = Result.DENY; e.useItem = Result.ALLOW;
July 19, 201411 yr Author For blocks of other mods. I don't know which other mods the user of my mod is using. If you know a way to filter out all blocks who can be used like repeaters & levers are used or opening gui's way from other mods, that would solve my problem.
July 19, 201411 yr Author All blocks where I can interact with, like opening a gui for a chest or crafting table, or using a block like a repeater. (lever, button, anvil, ..)
July 19, 201411 yr Author "I want to cancel the PlayerInteractEvent only when a player tries to activate a block" Canceling PlayerInteractEvent will also cancel block placement.
July 19, 201411 yr Author I already found this, but it did look like it also blocks block placement when I used it. But I left the useItem on the default value. Now I used e.useItem = Result.ALLOW, and now it does work. Thank you very much! So this blocks both, placement & block interactions: public void onPlayerInteract(PlayerInteractEvent e) { e.useBlock = Result.DENY; e.useItem = Result.DEFAULT; } but using e.useItem = Result.ALLOW allows it to place blocks when useBlock is denied.
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.