@Override @SideOnly(Side.CLIENT) public boolean addHitEffects(IBlockState state, World world, RayTraceResult target, ParticleManager manager) { TileEntity tile = world.getTileEntity(target.getBlockPos()); if (tile instanceof LogisticsTileGenericSubMultiBlock) { List<LogisticsTileGenericPipe> mainPipeList = ((LogisticsTileGenericSubMultiBlock) tile).getMainPipe(); Optional<LogisticsTileGenericPipe> result = mainPipeList.stream() .filter(Objects::nonNull) .filter(LogisticsTileGenericPipe::isMultiBlock) .filter(mainPipe -> Objects.nonNull(pipe.doRayTrace(world, mainPipe.getPos(), Minecraft.getMinecraft().player))) .findFirst(); result.ifPresent(mainPipe -> addHitEffects(mainPipe, state, world, target, manager)); if (result.isPresent()) { return true; } } return super.addHitEffects(state, world, target, manager); } }