Search in sources :

Example 1 with DriveMetadata

use of mekanism.common.content.qio.IQIODriveItem.DriveMetadata in project Mekanism by mekanism.

the class RecipeUpgradeData method getUpgradeData.

/**
 * Make sure to validate with getSupportedTypes before calling this
 */
@Nullable
static RecipeUpgradeData<?> getUpgradeData(@Nonnull RecipeUpgradeType type, @Nonnull ItemStack stack) {
    Item item = stack.getItem();
    switch(type) {
        case ENERGY:
            return new EnergyRecipeData(ItemDataUtils.getList(stack, NBTConstants.ENERGY_CONTAINERS));
        case FLUID:
            return new FluidRecipeData(ItemDataUtils.getList(stack, NBTConstants.FLUID_TANKS));
        case GAS:
            return new GasRecipeData(ItemDataUtils.getList(stack, NBTConstants.GAS_TANKS));
        case INFUSION:
            return new InfusionRecipeData(ItemDataUtils.getList(stack, NBTConstants.INFUSION_TANKS));
        case PIGMENT:
            return new PigmentRecipeData(ItemDataUtils.getList(stack, NBTConstants.PIGMENT_TANKS));
        case SLURRY:
            return new SlurryRecipeData(ItemDataUtils.getList(stack, NBTConstants.SLURRY_TANKS));
        case ITEM:
            return new ItemRecipeData(((ISustainedInventory) item).getInventory(stack));
        case SECURITY:
            ISecurityItem securityItem = (ISecurityItem) item;
            UUID ownerUUID = securityItem.getOwnerUUID(stack);
            return ownerUUID == null ? null : new SecurityRecipeData(ownerUUID, securityItem.getSecurity(stack));
        case UPGRADE:
            CompoundNBT componentUpgrade = ItemDataUtils.getCompound(stack, NBTConstants.COMPONENT_UPGRADE);
            return componentUpgrade.isEmpty() ? null : new UpgradesRecipeData(Upgrade.buildMap(componentUpgrade));
        case QIO_DRIVE:
            DriveMetadata data = DriveMetadata.load(stack);
            if (data.getCount() > 0 && ((IQIODriveItem) item).hasStoredItemMap(stack)) {
                // If we don't have any stored items don't actually grab any recipe data
                return new QIORecipeData(data, ItemDataUtils.getList(stack, NBTConstants.QIO_ITEM_MAP));
            }
            break;
    }
    return null;
}
Also used : DriveMetadata(mekanism.common.content.qio.IQIODriveItem.DriveMetadata) CompoundNBT(net.minecraft.nbt.CompoundNBT) GasRecipeData(mekanism.common.recipe.upgrade.chemical.GasRecipeData) SlurryRecipeData(mekanism.common.recipe.upgrade.chemical.SlurryRecipeData) IQIODriveItem(mekanism.common.content.qio.IQIODriveItem) Item(net.minecraft.item.Item) ISecurityItem(mekanism.common.lib.security.ISecurityItem) BlockItem(net.minecraft.item.BlockItem) ISecurityItem(mekanism.common.lib.security.ISecurityItem) PigmentRecipeData(mekanism.common.recipe.upgrade.chemical.PigmentRecipeData) UUID(java.util.UUID) InfusionRecipeData(mekanism.common.recipe.upgrade.chemical.InfusionRecipeData) Nullable(javax.annotation.Nullable)

Example 2 with DriveMetadata

use of mekanism.common.content.qio.IQIODriveItem.DriveMetadata in project Mekanism by mekanism.

the class QIORecipeData method applyToStack.

@Override
public boolean applyToStack(ItemStack stack) {
    IQIODriveItem driveItem = (IQIODriveItem) stack.getItem();
    if (itemCount > driveItem.getCountCapacity(stack) || itemMap.size() > driveItem.getTypeCapacity(stack)) {
        // then return that we are not able to actually apply them to the stack
        return false;
    }
    ListNBT list = new ListNBT();
    for (Entry<HashedItem> entry : itemMap.object2LongEntrySet()) {
        CompoundNBT tag = new CompoundNBT();
        tag.put(NBTConstants.ITEM, entry.getKey().getStack().save(new CompoundNBT()));
        tag.putLong(NBTConstants.AMOUNT, entry.getLongValue());
        list.add(tag);
    }
    ItemDataUtils.setList(stack, NBTConstants.QIO_ITEM_MAP, list);
    DriveMetadata meta = new DriveMetadata(itemCount, itemMap.size());
    meta.write(stack);
    return true;
}
Also used : DriveMetadata(mekanism.common.content.qio.IQIODriveItem.DriveMetadata) ListNBT(net.minecraft.nbt.ListNBT) HashedItem(mekanism.common.lib.inventory.HashedItem) CompoundNBT(net.minecraft.nbt.CompoundNBT) IQIODriveItem(mekanism.common.content.qio.IQIODriveItem)

Aggregations

IQIODriveItem (mekanism.common.content.qio.IQIODriveItem)2 DriveMetadata (mekanism.common.content.qio.IQIODriveItem.DriveMetadata)2 CompoundNBT (net.minecraft.nbt.CompoundNBT)2 UUID (java.util.UUID)1 Nullable (javax.annotation.Nullable)1 HashedItem (mekanism.common.lib.inventory.HashedItem)1 ISecurityItem (mekanism.common.lib.security.ISecurityItem)1 GasRecipeData (mekanism.common.recipe.upgrade.chemical.GasRecipeData)1 InfusionRecipeData (mekanism.common.recipe.upgrade.chemical.InfusionRecipeData)1 PigmentRecipeData (mekanism.common.recipe.upgrade.chemical.PigmentRecipeData)1 SlurryRecipeData (mekanism.common.recipe.upgrade.chemical.SlurryRecipeData)1 BlockItem (net.minecraft.item.BlockItem)1 Item (net.minecraft.item.Item)1 ListNBT (net.minecraft.nbt.ListNBT)1