use of buildcraft.core.blueprints.Template in project BuildCraft by BuildCraft.
the class ItemBlueprint method loadBlueprint.
public static BlueprintBase loadBlueprint(ItemStack stack) {
if (stack == null || stack.getItem() == null || !(stack.getItem() instanceof IBlueprintItem)) {
return null;
}
LibraryId id = getId(stack);
if (id == null) {
return null;
}
NBTTagCompound nbt = BuildCraftBuilders.serverDB.load(id);
BlueprintBase base;
if (((IBlueprintItem) stack.getItem()).getType(stack) == EnumBlueprintType.TEMPLATE) {
base = new Template();
} else {
base = new Blueprint();
}
base.readFromNBT(nbt);
base.id = id;
return base;
}
use of buildcraft.core.blueprints.Template in project BuildCraft by BuildCraft.
the class RecursiveBlueprintBuilder method nextBuilder.
public BptBuilderBase nextBuilder() {
if (!returnedThis) {
blueprint = blueprint.adjustToWorld(world, pos, dir);
returnedThis = true;
BptBuilderBase builder;
if (blueprint instanceof Blueprint) {
builder = new BptBuilderBlueprint((Blueprint) blueprint, world, pos);
} else if (blueprint instanceof Template) {
builder = new BptBuilderTemplate(blueprint, world, pos);
} else {
return null;
}
box.initialize(builder);
return builder;
}
// Free memory associated with this blueprint
blueprint = null;
if (current != null) {
BptBuilderBase builder = current.nextBuilder();
if (builder != null) {
return builder;
}
}
if (nextSubBlueprint >= subBlueprints.size()) {
return null;
}
NBTTagCompound nbt = subBlueprints.get(nextSubBlueprint);
BlueprintBase bpt = BlueprintBase.loadBluePrint(nbt.getCompoundTag("bpt"));
int nx = box.min().getX() + nbt.getInteger("x");
int ny = box.min().getY() + nbt.getInteger("y");
int nz = box.min().getZ() + nbt.getInteger("z");
EnumFacing nbtDir = EnumFacing.values()[nbt.getByte("dir")];
current = new RecursiveBlueprintBuilder(bpt, world, new BlockPos(nx, ny, nz), nbtDir);
nextSubBlueprint++;
return current.nextBuilder();
}
Aggregations