@Override
@Nonnull
public ItemStack getPickBlock(@Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player) {
TileEntity tile = world.getTileEntity(pos);
Optional<ItemStack> result = Optional.empty();
if (tile instanceof LogisticsTileGenericSubMultiBlock) {
List<LogisticsTileGenericPipe> mainPipeList = ((LogisticsTileGenericSubMultiBlock) tile).getMainPipe();
result = mainPipeList.stream()
.filter(Objects::nonNull)
.filter(LogisticsTileGenericPipe::isMultiBlock)
.filter(mainPipe -> Objects.nonNull(pipe.doRayTrace(world, mainPipe.getPos(), player)))
.map(mainPipe -> pipe.getPickBlock(state, target, world, mainPipe.getPos(), player))
.findFirst();
if (!result.isPresent()) {
result = mainPipeList.stream()
.findFirst()
.map(mainPipe -> pipe.getPickBlock(state, target, world, mainPipe.getPos(), player));
}
}
return result.orElse(super.getPickBlock(state, target, world, pos, player));
}