use of mekanism.common.recipe.upgrade.chemical.InfusionRecipeData 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;
}
Aggregations