@Override @SideOnly(Side.CLIENT) public boolean addDestroyEffects(World world, BlockPos pos, ParticleManager manager) { TileEntity tile = world.getTileEntity(pos); Optional<Boolean> result = Optional.empty(); if (tile instanceof LogisticsTileGenericSubMultiBlock) { IBlockState state = tile.getBlockType().getExtendedState(tile.getBlockType().getDefaultState(), world, pos); List<LogisticsTileGenericPipe> mainPipeList = ((LogisticsTileGenericSubMultiBlock) tile).getMainPipe(); result = mainPipeList.stream() .filter(Objects::nonNull) .filter(LogisticsTileGenericPipe::isMultiBlock) .filter(mainPipe -> Objects.nonNull(pipe.doRayTrace(world, mainPipe.getPos(), Minecraft.getMinecraft().player))) .map(mainPipe -> pipe.addDestroyEffects(world, mainPipe.getPos(), manager)) .findFirst(); } return result.orElse(super.addDestroyEffects(world, pos, manager)); }