Search in sources :

Example 1 with Template

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;
}
Also used : BlueprintBase(buildcraft.core.blueprints.BlueprintBase) LibraryId(buildcraft.core.blueprints.LibraryId) Blueprint(buildcraft.core.blueprints.Blueprint) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IBlueprintItem(buildcraft.api.items.IBlueprintItem) Template(buildcraft.core.blueprints.Template)

Example 2 with Template

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();
}
Also used : BlueprintBase(buildcraft.core.blueprints.BlueprintBase) BptBuilderBase(buildcraft.core.blueprints.BptBuilderBase) Blueprint(buildcraft.core.blueprints.Blueprint) BptBuilderBlueprint(buildcraft.core.blueprints.BptBuilderBlueprint) EnumFacing(net.minecraft.util.EnumFacing) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) BlockPos(net.minecraft.util.math.BlockPos) BptBuilderBlueprint(buildcraft.core.blueprints.BptBuilderBlueprint) BptBuilderTemplate(buildcraft.core.blueprints.BptBuilderTemplate) Blueprint(buildcraft.core.blueprints.Blueprint) BptBuilderBlueprint(buildcraft.core.blueprints.BptBuilderBlueprint) Template(buildcraft.core.blueprints.Template) BptBuilderTemplate(buildcraft.core.blueprints.BptBuilderTemplate)

Aggregations

Blueprint (buildcraft.core.blueprints.Blueprint)2 BlueprintBase (buildcraft.core.blueprints.BlueprintBase)2 Template (buildcraft.core.blueprints.Template)2 NBTTagCompound (net.minecraft.nbt.NBTTagCompound)2 IBlueprintItem (buildcraft.api.items.IBlueprintItem)1 BptBuilderBase (buildcraft.core.blueprints.BptBuilderBase)1 BptBuilderBlueprint (buildcraft.core.blueprints.BptBuilderBlueprint)1 BptBuilderTemplate (buildcraft.core.blueprints.BptBuilderTemplate)1 LibraryId (buildcraft.core.blueprints.LibraryId)1 EnumFacing (net.minecraft.util.EnumFacing)1 BlockPos (net.minecraft.util.math.BlockPos)1