Package buildcraft.api.core

Examples of buildcraft.api.core.BlockIndex


      }

      if (BlockUtil.isUnbreakableBlock(world, slot.x, slot.y, slot.z)) {
        iterator.remove();
        if (slot.mode == Mode.ClearIfInvalid) {
          clearedLocations.add(new BlockIndex(slot.x, slot.y, slot.z));
        } else {
          builtLocations.add(new BlockIndex(slot.x, slot.y, slot.z));
        }
      } else if (slot.mode == Mode.ClearIfInvalid) {
        if (BuildCraftAPI.isSoftBlock(world, slot.x, slot.y, slot.z)) {
          iterator.remove();
          clearedLocations.add(new BlockIndex(slot.x, slot.y, slot.z));
        } else {
          if (canDestroy(builder, context, slot)) {
            consumeEnergyToDestroy(builder, slot);
            createDestroyItems(slot);

            result = slot;
            iterator.remove();
            clearedLocations.add(new BlockIndex(slot.x, slot.y, slot.z));

            break;
          }
        }
      } else if (slot.mode == Mode.Build) {
        if (!BuildCraftAPI.isSoftBlock(world, slot.x, slot.y, slot.z)) {
          iterator.remove();
          builtLocations.add(new BlockIndex(slot.x, slot.y, slot.z));
        } else {
          if (builder.consumeEnergy(BuilderAPI.BUILD_ENERGY) && firstSlotToConsume != null) {
            slot.addStackConsumed(firstSlotToConsume.decreaseStackInSlot(1));
            result = slot;
            iterator.remove();
            builtLocations.add(new BlockIndex(slot.x, slot.y, slot.z));

            break;
          }
        }
      }
View Full Code Here


      z = bitPosition / 16;
      x = bitPosition - 16 * z;
    }

    return new BlockIndex(x, 0, z);
  }
View Full Code Here

          if (yCoord < 0 || yCoord >= context.world.getHeight()) {
            continue;
          }

          if (!clearedLocations.contains(new BlockIndex(
                  xCoord, yCoord, zCoord))) {
            SchematicBlock slot = (SchematicBlock) blueprint.contents[i][j][k];

            if (slot == null && !blueprint.excavate) {
              continue;
            }

            if (slot == null) {
              slot = new SchematicBlock();
              slot.meta = 0;
              slot.block = Blocks.air;
            }

            if (!SchematicRegistry.INSTANCE.isAllowedForBuilding(slot.block, slot.meta)) {
              continue;
            }

            BuildingSlotBlock b = new BuildingSlotBlock();
            b.schematic = slot;
            b.x = xCoord;
            b.y = yCoord;
            b.z = zCoord;
            b.mode = Mode.ClearIfInvalid;
            b.buildStage = 0;

            buildList.add(b);
          }

        }
      }
    }

    LinkedList<BuildingSlotBlock> tmpStandalone = new LinkedList<BuildingSlotBlock>();
    LinkedList<BuildingSlotBlock> tmpSupported = new LinkedList<BuildingSlotBlock>();
    LinkedList<BuildingSlotBlock> tmpExpanding = new LinkedList<BuildingSlotBlock>();

    for (int j = 0; j < blueprint.sizeY; ++j) {
      for (int i = 0; i < blueprint.sizeX; ++i) {
        for (int k = 0; k < blueprint.sizeZ; ++k) {
          int xCoord = i + x - blueprint.anchorX;
          int yCoord = j + y - blueprint.anchorY;
          int zCoord = k + z - blueprint.anchorZ;

          SchematicBlock slot = (SchematicBlock) blueprint.contents[i][j][k];

          if (slot == null || yCoord < 0 || yCoord >= context.world.getHeight()) {
            continue;
          }

          if (!SchematicRegistry.INSTANCE.isAllowedForBuilding(slot.block, slot.meta)) {
            continue;
          }

          BuildingSlotBlock b = new BuildingSlotBlock();
          b.schematic = slot;
          b.x = xCoord;
          b.y = yCoord;
          b.z = zCoord;
          b.mode = Mode.Build;

          if (!builtLocations.contains(new BlockIndex(xCoord, yCoord,
                zCoord))) {
            switch (slot.getBuildStage()) {
            case STANDALONE:
              tmpStandalone.add(b);
              b.buildStage = 1;
View Full Code Here

      if (slot.built) {
        iterator.remove();

        if (slot.mode == Mode.ClearIfInvalid) {
          clearedLocations.add(new BlockIndex(slot.x,
              slot.y, slot.z));
        } else {
          builtLocations.add(new BlockIndex(slot.x,
              slot.y, slot.z));
        }

        postProcessing.add(slot);

        continue;
      }

      if (slot.reserved) {
        continue;
      }

      try {
        if (BlockUtil.isUnbreakableBlock(world, slot.x, slot.y, slot.z)) {
          // if the block can't be broken, just forget this iterator
          iterator.remove();

          if (slot.mode == Mode.ClearIfInvalid) {
            clearedLocations.add(new BlockIndex(slot.x,
                slot.y, slot.z));
          } else {
            builtLocations.add(new BlockIndex(slot.x,
                slot.y, slot.z));
          }
        } else if (!slot.isAlreadyBuilt(context)) {
          if (slot.mode == Mode.ClearIfInvalid) {
            if (BuildCraftAPI.isSoftBlock(world, slot.x, slot.y,
                slot.z)) {
              iterator.remove();
              clearedLocations.add(new BlockIndex(slot.x,
                  slot.y, slot.z));
            } else {
              if (builder == null) {
                createDestroyItems(slot);
                return slot;
              } else if (canDestroy(builder, context, slot)) {
                consumeEnergyToDestroy(builder, slot);
                createDestroyItems(slot);

                iterator.remove();
                clearedLocations.add(new BlockIndex(slot.x,
                    slot.y, slot.z));
                return slot;
              }
            }
          } else if (!slot.schematic.doNotBuild()) {
            if (builder == null) {
              return slot;
            } else if (checkRequirements(builder, slot.schematic)) {
              // At this stage, regardless of the fact that the
              // block can actually be built or not, we'll try.
              // When the item reaches the actual block, we'll
              // verify that the location is indeed clear, and
              // avoid building otherwise.
              builder.consumeEnergy(slot.getEnergyRequirement());
              useRequirements(builder, slot);

              iterator.remove();
              postProcessing.add(slot);
              builtLocations.add(new BlockIndex(slot.x,
                  slot.y, slot.z));
              return slot;
            }
          } else {
            // Even slots that don't need to be build may need
View Full Code Here

    nbt.setInteger("localId", localId);
    nbt.setString("class", getClass().getCanonicalName());
  }

  protected void readFromNBT(NBTTagCompound nbt) {
    index = new BlockIndex(nbt.getCompoundTag("index"));
    side = ForgeDirection.values()[nbt.getByte("side")];
    localId = nbt.getInteger("localId");
  }
View Full Code Here

    int chunkId = rand.nextInt(chunkMapping.size());

    for (Map.Entry<ChunkIndex, ZoneChunk> e : chunkMapping.entrySet()) {
      if (chunkId == 0) {
        BlockIndex i = e.getValue().getRandomBlockIndex(rand);
        i.x = (e.getKey().x << 4) + i.x;
        i.z = (e.getKey().z << 4) + i.z;

        return i;
      }
View Full Code Here

        if (parameters[0] != null) {
          StatementParameterItemStack stackParam = (StatementParameterItemStack) parameters[0];
          ItemStack item = stackParam.getItemStack();

          if (item != null && item.getItem() instanceof ItemMapLocation) {
            BlockIndex index = ItemMapLocation.getBlockIndex(item);

            if (index != null) {
              ForgeDirection side = ItemMapLocation.getSide(item);
              DockingStation paramStation = (DockingStation)
                  registry.getStation(index.x,
View Full Code Here

      return z <= box.zMax && it <= iterationsPerCycle;
    }

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

      if (x < box.xMax) {
        x++;
View Full Code Here

  @Override
  public void loadSelfFromNBT(NBTTagCompound nbt) {
    super.loadSelfFromNBT(nbt);

    if (nbt.hasKey("blockFound")) {
      blockFound = new BlockIndex(nbt.getCompoundTag("blockFound"));
    }
  }
View Full Code Here

  protected StationIndex() {
  }

  public StationIndex(ForgeDirection iSide, int x, int y, int z) {
    side = iSide;
    index = new BlockIndex(x, y, z);
  }
View Full Code Here

TOP

Related Classes of buildcraft.api.core.BlockIndex

Copyright © 2018 www.massapicom. 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.