betterbeginnings/src/main/java/net/einsteinsci/betterbeginnings/register/recipe/CampfireRecipes.java

102 lines
2.3 KiB
Java

package net.einsteinsci.betterbeginnings.register.recipe;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import java.util.*;
import java.util.Map.Entry;
public class CampfireRecipes
{
private static final CampfireRecipes SMELTINGBASE = new CampfireRecipes();
private Map smeltingList = new HashMap();
private Map experienceList = new HashMap();
private CampfireRecipes()
{
// nothing here
}
public static void addRecipe(Item input, ItemStack output, float experience)
{
smelting().addLists(input, output, experience);
}
public void addLists(Item input, ItemStack itemStack, float experience)
{
putLists(new ItemStack(input, 1, OreDictionary.WILDCARD_VALUE), itemStack, experience);
}
public static CampfireRecipes smelting()
{
return SMELTINGBASE;
}
public void putLists(ItemStack itemStack, ItemStack itemStack2, float experience)
{
smeltingList.put(itemStack, itemStack2);
experienceList.put(itemStack2, experience);
}
public static void addRecipe(Block input, ItemStack output, float experience)
{
smelting().addLists(Item.getItemFromBlock(input), output, experience);
}
public static void addRecipe(ItemStack input, ItemStack output, float experience)
{
smelting().putLists(input, output, experience);
}
public ItemStack getSmeltingResult(ItemStack stack)
{
Iterator iterator = smeltingList.entrySet().iterator();
Entry entry;
do
{
if (!iterator.hasNext())
{
return null;
}
entry = (Entry)iterator.next();
} while (!canBeSmelted(stack, (ItemStack)entry.getKey()));
return (ItemStack)entry.getValue();
}
private boolean canBeSmelted(ItemStack stack, ItemStack stack2)
{
return stack2.getItem() == stack.getItem()
&& (stack2.getItemDamage() == OreDictionary.WILDCARD_VALUE || stack2.getItemDamage() == stack
.getItemDamage());
}
public float giveExperience(ItemStack stack)
{
Iterator iterator = experienceList.entrySet().iterator();
Entry entry;
do
{
if (!iterator.hasNext())
{
return 0.0f;
}
entry = (Entry)iterator.next();
} while (!canBeSmelted(stack, (ItemStack)entry.getKey()));
if (stack.getItem().getSmeltingExperience(stack) != -1)
{
return stack.getItem().getSmeltingExperience(stack);
}
return ((Float)entry.getValue()).floatValue();
}
}