use of mekanism.api.chemical.ChemicalType in project Mekanism by mekanism.
the class ChemicalCrystallizerInputRecipeCache method initCache.
@Override
protected void initCache(List<ChemicalCrystallizerRecipe> recipes) {
for (ChemicalCrystallizerRecipe recipe : recipes) {
IChemicalStackIngredient<?, ?> ingredient = recipe.getInput();
ChemicalType type = ChemicalType.getTypeFor(ingredient);
if (mapInputs(recipe, type, ingredient)) {
typeBasedComplexRecipes.get(type).add(recipe);
}
}
}
use of mekanism.api.chemical.ChemicalType in project Mekanism by mekanism.
the class BoxedChemicalStack method read.
/**
* Reads a Boxed Chemical Stack from a CompoundNBT.
*
* @param nbt NBT.
*
* @return Boxed Chemical Stack.
*/
public static BoxedChemicalStack read(@Nullable CompoundNBT nbt) {
ChemicalType chemicalType = ChemicalType.fromNBT(nbt);
ChemicalStack<?> stack = null;
if (chemicalType == ChemicalType.GAS) {
stack = GasStack.readFromNBT(nbt);
} else if (chemicalType == ChemicalType.INFUSION) {
stack = InfusionStack.readFromNBT(nbt);
} else if (chemicalType == ChemicalType.PIGMENT) {
stack = PigmentStack.readFromNBT(nbt);
} else if (chemicalType == ChemicalType.SLURRY) {
stack = SlurryStack.readFromNBT(nbt);
}
return chemicalType == null || stack == null ? EMPTY : new BoxedChemicalStack(chemicalType, stack);
}
use of mekanism.api.chemical.ChemicalType in project Mekanism by mekanism.
the class ChemicalDissolutionRecipeCategory method setIngredients.
@Override
public void setIngredients(ChemicalDissolutionRecipe recipe, IIngredients ingredients) {
ingredients.setInputLists(VanillaTypes.ITEM, Collections.singletonList(recipe.getItemInput().getRepresentations()));
List<@NonNull GasStack> gasInputs = recipe.getGasInput().getRepresentations();
List<GasStack> scaledGases = gasInputs.stream().map(gas -> new GasStack(gas, gas.getAmount() * TileEntityChemicalDissolutionChamber.BASE_TICKS_REQUIRED)).collect(Collectors.toList());
ingredients.setInputLists(MekanismJEI.TYPE_GAS, Collections.singletonList(scaledGases));
BoxedChemicalStack outputDefinition = recipe.getOutputDefinition();
ChemicalType chemicalType = outputDefinition.getChemicalType();
if (chemicalType == ChemicalType.GAS) {
ingredients.setOutput(MekanismJEI.TYPE_GAS, (GasStack) outputDefinition.getChemicalStack());
} else if (chemicalType == ChemicalType.INFUSION) {
ingredients.setOutput(MekanismJEI.TYPE_INFUSION, (InfusionStack) outputDefinition.getChemicalStack());
} else if (chemicalType == ChemicalType.PIGMENT) {
ingredients.setOutput(MekanismJEI.TYPE_PIGMENT, (PigmentStack) outputDefinition.getChemicalStack());
} else if (chemicalType == ChemicalType.SLURRY) {
ingredients.setOutput(MekanismJEI.TYPE_SLURRY, (SlurryStack) outputDefinition.getChemicalStack());
} else {
throw new IllegalStateException("Unknown chemical type");
}
}
use of mekanism.api.chemical.ChemicalType in project Mekanism by mekanism.
the class ChemicalDissolutionRecipeCategory method setRecipe.
@Override
public void setRecipe(IRecipeLayout recipeLayout, ChemicalDissolutionRecipe recipe, IIngredients ingredients) {
initItem(recipeLayout.getItemStacks(), 0, true, inputSlot, recipe.getItemInput().getRepresentations());
List<@NonNull GasStack> gasInputs = recipe.getGasInput().getRepresentations();
List<GasStack> scaledGases = gasInputs.stream().map(gas -> new GasStack(gas, gas.getAmount() * TileEntityChemicalDissolutionChamber.BASE_TICKS_REQUIRED)).collect(Collectors.toList());
IGuiIngredientGroup<GasStack> gasStacks = recipeLayout.getIngredientsGroup(MekanismJEI.TYPE_GAS);
initChemical(gasStacks, 0, true, inputGauge, scaledGases);
BoxedChemicalStack outputDefinition = recipe.getOutputDefinition();
ChemicalType chemicalType = outputDefinition.getChemicalType();
if (chemicalType == ChemicalType.GAS) {
initChemicalOutput(recipeLayout, MekanismJEI.TYPE_GAS, (GasStack) outputDefinition.getChemicalStack());
} else if (chemicalType == ChemicalType.INFUSION) {
initChemicalOutput(recipeLayout, MekanismJEI.TYPE_INFUSION, (InfusionStack) outputDefinition.getChemicalStack());
} else if (chemicalType == ChemicalType.PIGMENT) {
initChemicalOutput(recipeLayout, MekanismJEI.TYPE_PIGMENT, (PigmentStack) outputDefinition.getChemicalStack());
} else if (chemicalType == ChemicalType.SLURRY) {
initChemicalOutput(recipeLayout, MekanismJEI.TYPE_SLURRY, (SlurryStack) outputDefinition.getChemicalStack());
} else {
throw new IllegalStateException("Unknown chemical type");
}
}
use of mekanism.api.chemical.ChemicalType in project Mekanism by mekanism.
the class SerializerHelper method serializeBoxedChemicalStack.
/**
* Helper to serialize a Boxed Chemical Stack into a Json Object.
*
* @param stack Stack to serialize.
*
* @return Json representation.
*/
public static JsonElement serializeBoxedChemicalStack(@Nonnull BoxedChemicalStack stack) {
JsonObject json;
ChemicalType chemicalType = stack.getChemicalType();
if (chemicalType == ChemicalType.GAS) {
json = serializeGasStack((GasStack) stack.getChemicalStack());
} else if (chemicalType == ChemicalType.INFUSION) {
json = serializeInfusionStack((InfusionStack) stack.getChemicalStack());
} else if (chemicalType == ChemicalType.PIGMENT) {
json = serializePigmentStack((PigmentStack) stack.getChemicalStack());
} else if (chemicalType == ChemicalType.SLURRY) {
json = serializeSlurryStack((SlurryStack) stack.getChemicalStack());
} else {
throw new IllegalStateException("Unknown chemical type");
}
json.addProperty(JsonConstants.CHEMICAL_TYPE, chemicalType.getSerializedName());
return json;
}
Aggregations