package moze_intel.projecte.api.proxy;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import java.util.Map;
public interface IConversionProxy
{
/**
* Add a Conversion to the EMC Calculation.
*
* Adding a Conversion allows ProjectE to calculate the EMC value for the output based on the specified ingredients.
* These do not need to be actually Conversions. You can use it to make the EMC value of an item relative to the EMC value of other items.
* ProjectE will automatically select the Conversion with the lowest EMC value.
*
* Has to be called after {@code FMLInitializationEvent} and before {@code FMLServerStartingEvent}.
*
* You can use the following things for the {@code output}-Parameter and the keys in the {@code ingredients} Map:
*
*
{@link ItemStack} - The ItemId and Metadata will be used to identify this ItemStack (May contain a {@code Block} or {@code Item}). You can use {@link net.minecraftforge.oredict.OreDictionary#WILDCARD_VALUE} as metadata.
*
{@link Block} - Same as calling it with {@code new ItemStack(block)}. Uses the Id and metadata = 0
*
{@link Item} - Same as calling it with {@code new ItemStack(item)}. Uses the Id and metadata = 0
*
{@link FluidStack} - {@link FluidStack#getFluid()} and {@link Fluid#getName()} will be used to identify this Fluid.
*
{@link String} - will be interpreted as an OreDictionary name.
*
{@link Object} - (No subclasses of {@code Object} - only {@code Object}!) can be used as a intermediate fake object for complex conversion.
*
* All {@code Object}s will be assumed to be a single instance. No stacksize will be used.
*
* Use the {@code amount} parameter to specify how many {@code output}s are created.
* Use the value in the {@code ingredients}-Map to specify how much of an ingredient is required.
* (Use Millibuckets for Fluids)
*
* Examples:
*
*