001 package net.minecraft.src;
002
003 import java.util.Arrays;
004 import java.util.HashMap;
005 import java.util.Map;
006
007 public class FurnaceRecipes
008 {
009 private static final FurnaceRecipes smeltingBase = new FurnaceRecipes();
010
011 /** The list of smelting results. */
012 private Map smeltingList = new HashMap();
013 private Map experienceList = new HashMap();
014 private Map metaSmeltingList = new HashMap();
015
016 /**
017 * Used to call methods addSmelting and getSmeltingResult.
018 */
019 public static final FurnaceRecipes smelting()
020 {
021 return smeltingBase;
022 }
023
024 private FurnaceRecipes()
025 {
026 this.addSmelting(Block.oreIron.blockID, new ItemStack(Item.ingotIron), 0.7F);
027 this.addSmelting(Block.oreGold.blockID, new ItemStack(Item.ingotGold), 1.0F);
028 this.addSmelting(Block.oreDiamond.blockID, new ItemStack(Item.diamond), 1.0F);
029 this.addSmelting(Block.sand.blockID, new ItemStack(Block.glass), 0.1F);
030 this.addSmelting(Item.porkRaw.shiftedIndex, new ItemStack(Item.porkCooked), 0.35F);
031 this.addSmelting(Item.beefRaw.shiftedIndex, new ItemStack(Item.beefCooked), 0.35F);
032 this.addSmelting(Item.chickenRaw.shiftedIndex, new ItemStack(Item.chickenCooked), 0.35F);
033 this.addSmelting(Item.fishRaw.shiftedIndex, new ItemStack(Item.fishCooked), 0.35F);
034 this.addSmelting(Block.cobblestone.blockID, new ItemStack(Block.stone), 0.1F);
035 this.addSmelting(Item.clay.shiftedIndex, new ItemStack(Item.brick), 0.3F);
036 this.addSmelting(Block.cactus.blockID, new ItemStack(Item.dyePowder, 1, 2), 0.2F);
037 this.addSmelting(Block.wood.blockID, new ItemStack(Item.coal, 1, 1), 0.15F);
038 this.addSmelting(Block.oreEmerald.blockID, new ItemStack(Item.emerald), 1.0F);
039 this.addSmelting(Item.field_82794_bL.shiftedIndex, new ItemStack(Item.field_82795_bM), 0.35F);
040 this.addSmelting(Block.oreCoal.blockID, new ItemStack(Item.coal), 0.1F);
041 this.addSmelting(Block.oreRedstone.blockID, new ItemStack(Item.redstone), 0.7F);
042 this.addSmelting(Block.oreLapis.blockID, new ItemStack(Item.dyePowder, 1, 4), 0.2F);
043 }
044
045 /**
046 * Adds a smelting recipe.
047 */
048 public void addSmelting(int par1, ItemStack par2ItemStack, float par3)
049 {
050 this.smeltingList.put(Integer.valueOf(par1), par2ItemStack);
051 this.experienceList.put(Integer.valueOf(par2ItemStack.itemID), Float.valueOf(par3));
052 }
053
054 /**
055 * Returns the smelting result of an item.
056 * Deprecated in favor of a metadata sensitive version
057 */
058 @Deprecated
059 public ItemStack getSmeltingResult(int par1)
060 {
061 return (ItemStack)this.smeltingList.get(Integer.valueOf(par1));
062 }
063
064 public Map getSmeltingList()
065 {
066 return this.smeltingList;
067 }
068
069 public float getExperience(int par1)
070 {
071 return this.experienceList.containsKey(Integer.valueOf(par1)) ? ((Float)this.experienceList.get(Integer.valueOf(par1))).floatValue() : 0.0F;
072 }
073
074 /**
075 * Add a metadata-sensitive furnace recipe
076 * @param itemID The Item ID
077 * @param metadata The Item Metadata
078 * @param itemstack The ItemStack for the result
079 */
080 public void addSmelting(int itemID, int metadata, ItemStack itemstack)
081 {
082 metaSmeltingList.put(Arrays.asList(itemID, metadata), itemstack);
083 }
084
085 /**
086 * Used to get the resulting ItemStack form a source ItemStack
087 * @param item The Source ItemStack
088 * @return The result ItemStack
089 */
090 public ItemStack getSmeltingResult(ItemStack item)
091 {
092 if (item == null)
093 {
094 return null;
095 }
096 ItemStack ret = (ItemStack)metaSmeltingList.get(Arrays.asList(item.itemID, item.getItemDamage()));
097 if (ret != null)
098 {
099 return ret;
100 }
101 return (ItemStack)smeltingList.get(Integer.valueOf(item.itemID));
102 }
103 }