75 lines
1.6 KiB
Java
75 lines
1.6 KiB
Java
|
package mekanism.api;
|
||
|
|
||
|
import mekanism.common.RecipeHandler;
|
||
|
import mekanism.common.RecipeHandler.Recipe;
|
||
|
import net.minecraft.item.ItemStack;
|
||
|
import net.minecraft.item.crafting.FurnaceRecipes;
|
||
|
|
||
|
public interface IFactory
|
||
|
{
|
||
|
/**
|
||
|
* Gets the recipe type this Smelting Factory currently has.
|
||
|
* @param itemStack - stack to check
|
||
|
* @return RecipeType ordinal
|
||
|
*/
|
||
|
public int getRecipeType(ItemStack itemStack);
|
||
|
|
||
|
/**
|
||
|
* Sets the recipe type of this Smelting Factory to a new value.
|
||
|
* @param type - RecipeType ordinal
|
||
|
* @param itemStack - stack to set
|
||
|
*/
|
||
|
public void setRecipeType(int type, ItemStack itemStack);
|
||
|
|
||
|
/**
|
||
|
* Whether or not this item is a Smelting Factory.
|
||
|
* @param itemStack - stack to check
|
||
|
* @return if the item is a smelting factory
|
||
|
*/
|
||
|
public boolean isFactory(ItemStack itemStack);
|
||
|
|
||
|
public static enum RecipeType
|
||
|
{
|
||
|
SMELTING("Smelting"),
|
||
|
ENRICHING("Enriching"),
|
||
|
CRUSHING("Crushing");
|
||
|
|
||
|
private String name;
|
||
|
|
||
|
public ItemStack getCopiedOutput(ItemStack input, boolean stackDecrease)
|
||
|
{
|
||
|
if(this == SMELTING)
|
||
|
{
|
||
|
ItemStack toReturn = FurnaceRecipes.smelting().getSmeltingResult(input).copy();
|
||
|
|
||
|
if(stackDecrease)
|
||
|
{
|
||
|
input.stackSize--;
|
||
|
}
|
||
|
|
||
|
return toReturn;
|
||
|
}
|
||
|
else if(this == ENRICHING)
|
||
|
{
|
||
|
return RecipeHandler.getOutput(input, stackDecrease, Recipe.ENRICHMENT_CHAMBER.get());
|
||
|
}
|
||
|
else if(this == CRUSHING)
|
||
|
{
|
||
|
return RecipeHandler.getOutput(input, stackDecrease, Recipe.CRUSHER.get());
|
||
|
}
|
||
|
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
public String getName()
|
||
|
{
|
||
|
return name;
|
||
|
}
|
||
|
|
||
|
private RecipeType(String s)
|
||
|
{
|
||
|
name = s;
|
||
|
}
|
||
|
}
|
||
|
}
|