package buildcraft.core.recipes;
import java.lang.ref.SoftReference;
import java.util.List;
import net.minecraft.item.ItemStack;
import buildcraft.api.recipes.IIntegrationRecipe;
public abstract class IntegrationRecipeBC implements IIntegrationRecipe {
private final int energyCost, maxExpansionCount;
private SoftReference<List<ItemStack>> exampleInputs;
private SoftReference<List<ItemStack>> exampleOutputs;
private SoftReference<List<List<ItemStack>>> exampleExpansions;
public IntegrationRecipeBC(int energyCost) {
this(energyCost, -1);
}
public IntegrationRecipeBC(int energyCost, int maxExpansionCount) {
this.energyCost = energyCost;
this.maxExpansionCount = maxExpansionCount;
}
public abstract List<ItemStack> generateExampleInput();
public abstract List<ItemStack> generateExampleOutput();
public abstract List<List<ItemStack>> generateExampleExpansions();
@Override
public int getEnergyCost() {
return energyCost;
}
@Override
public List<ItemStack> getExampleInput() {
if (exampleInputs != null && exampleInputs.get() != null) {
return exampleInputs.get();
}
exampleInputs = new SoftReference<List<ItemStack>>(generateExampleInput());
return exampleInputs.get();
}
@Override
public List<List<ItemStack>> getExampleExpansions() {
if (exampleExpansions != null && exampleExpansions.get() != null) {
return exampleExpansions.get();
}
exampleExpansions = new SoftReference<List<List<ItemStack>>>(generateExampleExpansions());
return exampleExpansions.get();
}
@Override
public List<ItemStack> getExampleOutput() {
if (exampleOutputs != null && exampleOutputs.get() != null) {
return exampleOutputs.get();
}
exampleOutputs = new SoftReference<List<ItemStack>>(generateExampleOutput());
return exampleOutputs.get();
}
@Override
public int getMaximumExpansionCount(ItemStack input) {
return maxExpansionCount;
}
}