Package buildcraft.core

Source Code of buildcraft.core.BlockScanner$BlockIt

/**
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.core;

import java.util.Iterator;

import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;

import buildcraft.api.core.BlockIndex;

public class BlockScanner implements Iterable<BlockIndex> {

  Box box = new Box ();
  World world;

  int x, y, z;
  int iterationsPerCycle;
  int blocksDone = 0;

  class BlockIt implements Iterator<BlockIndex> {

    int it = 0;

    @Override
    public boolean hasNext() {
      return z <= box.zMax && it <= iterationsPerCycle;
    }

    @Override
    public BlockIndex next() {
      BlockIndex index = new BlockIndex(x, y, z);
      it++;
      blocksDone++;

      if (x < box.xMax) {
        x++;
      } else {
        x = box.xMin;

        if (y < box.yMax) {
          y++;
        } else {
          y = box.yMin;

          z++;
        }
      }

      return index;
    }

    @Override
    public void remove() {

    }
  }

  public  BlockScanner (Box box, World world, int iterationsPreCycle) {
    this.box = box;
    this.world = world;
    this.iterationsPerCycle = iterationsPreCycle;

    x = box.xMin;
    y = box.yMin;
    z = box.zMin;
  }

  public  BlockScanner () {
  }

  @Override
  public Iterator<BlockIndex> iterator() {
    return new BlockIt();
  }

  public int totalBlocks () {
    return box.sizeX() * box.sizeY() * box.sizeZ();
  }

  public int blocksLeft () {
    return totalBlocks() - blocksDone;
  }

  public void writeToNBT (NBTTagCompound nbt) {
    nbt.setInteger("x", x);
    nbt.setInteger("y", y);
    nbt.setInteger("z", z);
    nbt.setInteger("blocksDone", blocksDone);
    nbt.setInteger("iterationsPerCycle", iterationsPerCycle);
    NBTTagCompound boxNBT = new NBTTagCompound();
    box.writeToNBT(boxNBT);
    nbt.setTag("box", boxNBT);
  }

  public void readFromNBT (NBTTagCompound nbt) {
    x = nbt.getInteger("x");
    y = nbt.getInteger("y");
    z = nbt.getInteger("z");
    blocksDone = nbt.getInteger("blocksDone");
    iterationsPerCycle = nbt.getInteger("iterationsPerCycle");
    box.initialize(nbt.getCompoundTag("box"));
  }

}
TOP

Related Classes of buildcraft.core.BlockScanner$BlockIt

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.