diff --git a/src/main/java/WayofTime/bloodmagic/api/ritual/AreaDescriptor.java b/src/main/java/WayofTime/bloodmagic/api/ritual/AreaDescriptor.java index edbec54d..2443ce7d 100644 --- a/src/main/java/WayofTime/bloodmagic/api/ritual/AreaDescriptor.java +++ b/src/main/java/WayofTime/bloodmagic/api/ritual/AreaDescriptor.java @@ -2,12 +2,14 @@ package WayofTime.bloodmagic.api.ritual; import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.List; +import java.util.function.Consumer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.BlockPos; -public abstract class AreaDescriptor +public abstract class AreaDescriptor implements Iterator { public List getContainedPositions(BlockPos pos) { @@ -27,6 +29,7 @@ public abstract class AreaDescriptor { private BlockPos minimumOffset; private BlockPos maximumOffset; // Non-inclusive maximum offset. + private BlockPos currentPosition; private ArrayList blockPosCache; private BlockPos cachedPosition; @@ -121,6 +124,45 @@ public abstract class AreaDescriptor return x >= minimumOffset.getX() && x < maximumOffset.getX() && y >= minimumOffset.getY() && y < maximumOffset.getY() && z >= minimumOffset.getZ() && z < maximumOffset.getZ(); } + + @Override + public void forEachRemaining(Consumer action) + { + while (hasNext()) + { + action.accept(next()); + } + } + + @Override + public boolean hasNext() + { + // TODO Auto-generated method stub + return false; + } + + @Override + public BlockPos next() + { + if (currentPosition != null) + { + int nextX = currentPosition.getX() + 1 >= maximumOffset.getX() ? minimumOffset.getX() : currentPosition.getX() + 1; + int nextZ = nextX == minimumOffset.getX() ? currentPosition.getZ() : (currentPosition.getZ() + 1 >= maximumOffset.getZ() ? minimumOffset.getZ() : currentPosition.getZ() + 1); + int nextY = nextZ == minimumOffset.getZ() ? currentPosition.getY() : currentPosition.getY() + 1; + currentPosition = new BlockPos(nextX, nextY, nextZ); + } else + { + currentPosition = minimumOffset; + } + + return cachedPosition.add(currentPosition); + } + + @Override + public void remove() + { + + } } public static class HemiSphere extends AreaDescriptor @@ -209,5 +251,33 @@ public abstract class AreaDescriptor { return blockPosCache.contains(pos); } + + @Override + public void forEachRemaining(Consumer arg0) + { + // TODO Auto-generated method stub + + } + + @Override + public boolean hasNext() + { + // TODO Auto-generated method stub + return false; + } + + @Override + public BlockPos next() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public void remove() + { + // TODO Auto-generated method stub + + } } } diff --git a/src/main/resources/assets/bloodmagic/textures/models/AlchemyArrays/HasteSigil.png b/src/main/resources/assets/bloodmagic/textures/models/AlchemyArrays/HasteSigil.png new file mode 100644 index 00000000..8654f74f Binary files /dev/null and b/src/main/resources/assets/bloodmagic/textures/models/AlchemyArrays/HasteSigil.png differ