final Direction d = direction.getSingle(e);
if (d == null)
return null;
if (l.getBlock() == null)
return null;
return new BlockLineIterator(l, o != l ? d.getDirection((Block) o) : d.getDirection(l), SkriptConfig.maxTargetBlockDistance.value());
} else {
final Block b = (Block) from.getSingle(e);
if (b == null)
return null;
assert end != null;
final Block b2 = end.getSingle(e);
if (b2 == null || b2.getWorld() != b.getWorld())
return null;
return new BlockLineIterator(b, b2);
}
} catch (final IllegalStateException ex) {
if (ex.getMessage().equals("Start block missed in BlockIterator"))
return null;
throw ex;