Package org.bukkit.util

# Class BlockIterator

java.lang.Object
org.bukkit.util.BlockIterator

All Implemented Interfaces:
  `Iterator<Block>`

public class BlockIterator extends Object implements Iterator<Block>
This class performs ray tracing and iterates along blocks on a line

## Constructor Summary

Constructors
Constructor
Description
`BlockIterator(@NotNull LivingEntity entity)`
Constructs the BlockIterator.
`BlockIterator(@NotNull LivingEntity entity, int maxDistance)`
Constructs the BlockIterator.
`BlockIterator(@NotNull Location loc)`
Constructs the BlockIterator.
`BlockIterator(@NotNull Location loc, double yOffset)`
Constructs the BlockIterator.
`BlockIterator(@NotNull Location loc, double yOffset, int maxDistance)`
Constructs the BlockIterator.
`BlockIterator(@NotNull World world, @NotNull Vector start, @NotNull Vector direction, double yOffset, int maxDistance)`
Constructs the BlockIterator.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`hasNext()`
Returns true if the iteration has more elements
`@NotNull Block`
`next()`
Returns the next Block in the trace
`void`
`remove()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface java.util.Iterator

`forEachRemaining`

## Constructor Details

### BlockIterator

public BlockIterator(@NotNull @NotNull World world, @NotNull @NotNull Vector start, @NotNull @NotNull Vector direction, double yOffset, int maxDistance)
Constructs the BlockIterator.

This considers all blocks as 1x1x1 in size.

Parameters:
  `world` - The world to use for tracing
  `start` - A Vector giving the initial location for the trace
  `direction` - A Vector pointing in the direction for the trace
  `yOffset` - The trace begins vertically offset from the start vector by this value
  `maxDistance` - This is the maximum distance in blocks for the trace. Setting this value above 140 may lead to problems with unloaded chunks. A value of 0 indicates no limit

### BlockIterator

public BlockIterator(@NotNull @NotNull Location loc, double yOffset, int maxDistance)
Constructs the BlockIterator.

This considers all blocks as 1x1x1 in size.

Parameters:
  `loc` - The location for the start of the ray trace
  `yOffset` - The trace begins vertically offset from the start vector by this value
  `maxDistance` - This is the maximum distance in blocks for the trace. Setting this value above 140 may lead to problems with unloaded chunks. A value of 0 indicates no limit

### BlockIterator

public BlockIterator(@NotNull @NotNull Location loc, double yOffset)
Constructs the BlockIterator.

This considers all blocks as 1x1x1 in size.

Parameters:
  `loc` - The location for the start of the ray trace
  `yOffset` - The trace begins vertically offset from the start vector by this value

### BlockIterator

public BlockIterator(@NotNull @NotNull Location loc)
Constructs the BlockIterator.

This considers all blocks as 1x1x1 in size.

Parameters:
  `loc` - The location for the start of the ray trace

### BlockIterator

public BlockIterator(@NotNull @NotNull LivingEntity entity, int maxDistance)
Constructs the BlockIterator.

This considers all blocks as 1x1x1 in size.

Parameters:
  `entity` - Information from the entity is used to set up the trace
  `maxDistance` - This is the maximum distance in blocks for the trace. Setting this value above 140 may lead to problems with unloaded chunks. A value of 0 indicates no limit

### BlockIterator

public BlockIterator(@NotNull @NotNull LivingEntity entity)
Constructs the BlockIterator.

This considers all blocks as 1x1x1 in size.

Parameters:
  `entity` - Information from the entity is used to set up the trace

## Method Details

### hasNext

public boolean hasNext()
Returns true if the iteration has more elements

Specified by:
  `hasNext` in interface `Iterator<Block>`

### next

@NotNull public @NotNull Block next() throws NoSuchElementException
Returns the next Block in the trace

Specified by:
  `next` in interface `Iterator<Block>`
Returns:
  the next Block in the trace
Throws:
  `NoSuchElementException`

### remove

public void remove()

Specified by:
  `remove` in interface `Iterator<Block>`