((PlayerInteractEvent.RightClickBlock) playerInteracted).setUseBlock(Event.Result.DENY);
event.setUseBlock(Event.Result.ALLOW);
/** * 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 onBlockRightClick(PlayerInteractEvent.RightClickBlock event){ EntityPlayer player = event.getEntityPlayer(); World world = event.getWorld(); ItemStack stack = event.getItemStack(); BlockPos pos = event.getPos(); if(player != null && world != null && StackUtil.isValid(stack) && pos != null){ IBlockState state = event.getWorld().getBlockState(pos); if(state != null && state.getBlock() instanceof BlockLaserRelay){ if(player.isSneaking()){ event.setUseBlock(Event.Result.ALLOW); } } } }
@SubscribeEvent public void onRightClick(PlayerInteractEvent.RightClickBlock event) { // Force allow right clicking with a fluid container passing through to this block if (!event.getItemStack().isEmpty() && event.getItemStack().hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, null) && event.getWorld().getBlockState(event.getPos()).getBlock() == this) { event.setUseBlock(Event.Result.ALLOW); } }
@SubscribeEvent public void onRightClickBlock(PlayerInteractEvent.RightClickBlock event) { World world = event.getWorld(); if(!event.getItemStack().isEmpty() && event.getItemStack().getItem() == Items.PAPER) { if(world.getBlockState(event.getPos()).getBlock() == DeviceBlocks.PRINTER) { event.setUseBlock(Event.Result.ALLOW); } } }
@SubscribeEvent public void onRightClick(PlayerInteractEvent.RightClickBlock event) { // Force allow shift-right clicking with a fluid container passing through to this block if (!event.getItemStack().isEmpty() && event.getItemStack().hasCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null) && event.getWorld().getBlockState(event.getPos()).getBlock() instanceof IBlockTank) { event.setUseBlock(Event.Result.ALLOW); } }
public void setUseBlock(Result trigger){ if(event instanceof PlayerInteractEvent.RightClickBlock){ ((PlayerInteractEvent.RightClickBlock) event).setUseBlock(trigger); } } }
@SubscribeEvent public void onInteract(PlayerInteractEvent.RightClickBlock event) { // does the player clicks on an echanting table with moss with 5 levels? if(ItemStack.areItemsEqual(event.getItemStack(), TinkerCommons.matMoss)) { World world = event.getWorld(); BlockPos pos = event.getPos(); if(world.getBlockState(pos).getBlock().getEnchantPowerBonus(world, pos) >= 1.0f) { EntityPlayer player = event.getEntityPlayer(); if(event.getEntityPlayer().experienceLevel >= ModMendingMoss.MENDING_MOSS_LEVELS) { // convert moss to mending moss player.playSound(SoundEvents.ENTITY_EXPERIENCE_ORB_PICKUP, 1f, 1f); if(!event.getWorld().isRemote) { event.getItemStack().shrink(1); player.onEnchant(null, ModMendingMoss.MENDING_MOSS_LEVELS); ItemHandlerHelper.giveItemToPlayer(player, TinkerCommons.matMendingMoss.copy()); event.setUseBlock(Event.Result.DENY); event.setUseItem(Event.Result.DENY); event.setCanceled(true); } } else { player.sendStatusMessage(new TextComponentTranslation("message.mending_moss.not_enough_levels", ModMendingMoss.MENDING_MOSS_LEVELS), true); } } } }