package crazypants.enderio.machine.enchanter;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.item.ItemStack;
import crazypants.enderio.machine.recipe.RecipeInput;
public class EnchanterRecipe {
private final RecipeInput input;
private final Enchantment enchantment;
private final int costPerLevel;
private final int stackSizePerLevel;
public static Enchantment getEnchantmentFromName(String enchantmentName) {
for(Enchantment ench : Enchantment.enchantmentsList) {
if(ench != null && ench.getName() != null && ench.getName().equals(enchantmentName)) {
return ench;
}
}
return null;
}
public EnchanterRecipe(RecipeInput curInput, String enchantmentName, int costPerLevel) {
input = curInput;
enchantment = getEnchantmentFromName(enchantmentName);
this.costPerLevel = costPerLevel;
stackSizePerLevel = curInput.getInput().stackSize;
}
public EnchanterRecipe(RecipeInput input, Enchantment enchantment, int costPerLevel) {
this.input = input;
this.enchantment = enchantment;
this.costPerLevel = costPerLevel;
stackSizePerLevel = input.getInput().stackSize;
}
public boolean isInput(ItemStack stack) {
if(stack == null || !isValid()) {
return false;
}
return input.isInput(stack);
}
public boolean isValid() {
return enchantment != null && input != null && input.getInput() != null && costPerLevel > -1;
}
public Enchantment getEnchantment() {
return enchantment;
}
public RecipeInput getInput() {
return input;
}
public int getCostPerLevel() {
return costPerLevel;
}
public int getLevelForStackSize(int size) {
return Math.min(size / stackSizePerLevel, enchantment.getMaxLevel());
}
public int getItemsPerLevel() {
return stackSizePerLevel;
}
}