}else { ((PlayerInteractEvent.LeftClickBlock) event).setUseBlock(copy.getUseBlock()); ((PlayerInteractEvent.LeftClickBlock) event).setUseItem(copy.getUseItem());
/** * Make a complete copy of the argument. * @param event to copy over * @return the copy */ private static PlayerInteractEvent copy(PlayerInteractEvent event){ PlayerInteractEvent copy = null; if(event instanceof PlayerInteractEvent.RightClickEmpty) copy = new PlayerInteractEvent.RightClickEmpty(event.getEntityPlayer(), event.getHand()); else if(event instanceof PlayerInteractEvent.LeftClickBlock) { copy = new PlayerInteractEvent.LeftClickBlock(event.getEntityPlayer(), event.getPos(), event.getFace(), ((PlayerInteractEvent.LeftClickBlock) event).getHitVec()); ((PlayerInteractEvent.LeftClickBlock)copy).setUseItem(((PlayerInteractEvent.LeftClickBlock) event).getUseItem()); ((PlayerInteractEvent.LeftClickBlock)copy).setUseBlock(((PlayerInteractEvent.LeftClickBlock) event).getUseBlock()); } else if(event instanceof PlayerInteractEvent.EntityInteractSpecific) copy = new PlayerInteractEvent.EntityInteractSpecific(event.getEntityPlayer(), event.getHand(), ((PlayerInteractEvent.EntityInteractSpecific) event).getTarget(), ((PlayerInteractEvent.EntityInteractSpecific) event).getLocalPos()); else if(event instanceof PlayerInteractEvent.EntityInteract) copy = new PlayerInteractEvent.EntityInteract(event.getEntityPlayer(), event.getHand(), ((PlayerInteractEvent.EntityInteract) event).getTarget()); else if(event instanceof PlayerInteractEvent.RightClickBlock) { copy = new PlayerInteractEvent.RightClickBlock(event.getEntityPlayer(), event.getHand(), event.getPos(), event.getFace(), ((PlayerInteractEvent.RightClickBlock) event).getHitVec()); ((PlayerInteractEvent.RightClickBlock)copy).setUseItem(((PlayerInteractEvent.RightClickBlock) event).getUseItem()); ((PlayerInteractEvent.RightClickBlock)copy).setUseBlock(((PlayerInteractEvent.RightClickBlock) event).getUseBlock()); } else if(event instanceof PlayerInteractEvent.RightClickItem) copy = new PlayerInteractEvent.RightClickItem(event.getEntityPlayer(),event.getHand()); if(event.isCanceled()){ copy.setCanceled(true); } return copy; }
@SubscribeEvent public void interaction( final LeftClickBlock event ) { if ( event.getEntityPlayer() != null && event.getUseItem() != Result.DENY ) { final ItemStack is = event.getItemStack(); final boolean validEvent = event.getPos() != null && event.getWorld() != null; if ( is != null && ( is.getItem() instanceof ItemChisel || is.getItem() instanceof ItemChiseledBit ) && validEvent ) { final IBlockState state = event.getWorld().getBlockState( event.getPos() ); if ( BlockBitInfo.canChisel( state ) || MCMultipartProxy.proxyMCMultiPart.isMultiPartTileEntity( event.getWorld(), event.getPos() ) || LittleTiles.isLittleTilesBlock( event.getWorld().getTileEntity( event.getPos() ) ) ) { if ( event.getWorld().isRemote ) { // this is called when the player is survival - // client side. is.getItem().onBlockStartBreak( is, event.getPos(), event.getEntityPlayer() ); } // cancel interactions vs chiseable blocks, creative is // magic. event.setCanceled( true ); } } } testInteractionSupression( event, event.getUseItem() ); }
@SubscribeEvent public void playerInteractEvent(PlayerInteractEvent.LeftClickBlock event) { // only show event if either the test block or the test item is involved if (event.getPos() != null && event.getWorld().getBlockState(event.getPos()) == StartupCommon.blockToolTest) { } else { ItemStack heldItemStack = (event.getEntityPlayer() == null) ? ItemStack.EMPTY : //EMPTY_ITEM event.getEntityPlayer().getItemStackFromSlot(EntityEquipmentSlot.MAINHAND); Item heldItem = heldItemStack.getItem(); if (heldItem != StartupCommon.itemToolsTest) { return; } } StartupCommon.methodCallLogger.enterMethod("Event.PlayerInteractEvent.LeftClickBlock", "pos=" + event.getPos() + ", hitVec=" + event.getHitVec() +", face=" + event.getFace() ); // your code here StartupCommon.methodCallLogger.exitMethod("Event.PlayerInteractEvent.LeftClickBlock", "cancelled=" + event.isCanceled() + "; useItem=" + event.getUseItem() + "; useBlock=" + event.getUseBlock()); }
@SubscribeEvent public void leftClickBlock(PlayerInteractEvent.LeftClickBlock evt) { if (!evt.getWorld().isRemote && evt.getUseItem() != Event.Result.DENY && !evt.getItemStack().isEmpty() && evt.getItemStack().getItem() == this) { fireVolley(evt.getItemStack(), evt.getEntityPlayer()); } }
.getUseItem() == Result.DENY; boolean isRightDeny = event instanceof PlayerInteractEvent.RightClickBlock