001 package org.bukkit.inventory; 002 003 import org.bukkit.Material; 004 import org.bukkit.material.MaterialData; 005 006 /** 007 * Represents a smelting recipe. 008 */ 009 public class FurnaceRecipe implements Recipe { 010 private ItemStack output; 011 private ItemStack ingredient; 012 013 /** 014 * Create a furnace recipe to craft the specified ItemStack. 015 * 016 * @param result The item you want the recipe to create. 017 * @param source The input material. 018 */ 019 public FurnaceRecipe(ItemStack result, Material source) { 020 this(result, source, 0); 021 } 022 023 /** 024 * Create a furnace recipe to craft the specified ItemStack. 025 * 026 * @param result The item you want the recipe to create. 027 * @param source The input material. 028 */ 029 public FurnaceRecipe(ItemStack result, MaterialData source) { 030 this(result, source.getItemType(), source.getData()); 031 } 032 033 /** 034 * Create a furnace recipe to craft the specified ItemStack. 035 * 036 * @param result The item you want the recipe to create. 037 * @param source The input material. 038 * @param data The data value. (Note: This is currently ignored by the 039 * CraftBukkit server.) 040 * @deprecated Magic value 041 */ 042 @Deprecated 043 public FurnaceRecipe(ItemStack result, Material source, int data) { 044 this.output = new ItemStack(result); 045 this.ingredient = new ItemStack(source, 1, (short) data); 046 } 047 048 /** 049 * Sets the input of this furnace recipe. 050 * 051 * @param input The input material. 052 * @return The changed recipe, so you can chain calls. 053 */ 054 public FurnaceRecipe setInput(MaterialData input) { 055 return setInput(input.getItemType(), input.getData()); 056 } 057 058 /** 059 * Sets the input of this furnace recipe. 060 * 061 * @param input The input material. 062 * @return The changed recipe, so you can chain calls. 063 */ 064 public FurnaceRecipe setInput(Material input) { 065 return setInput(input, 0); 066 } 067 068 /** 069 * Sets the input of this furnace recipe. 070 * 071 * @param input The input material. 072 * @param data The data value. (Note: This is currently ignored by the 073 * CraftBukkit server.) 074 * @return The changed recipe, so you can chain calls. 075 * @deprecated Magic value 076 */ 077 @Deprecated 078 public FurnaceRecipe setInput(Material input, int data) { 079 this.ingredient = new ItemStack(input, 1, (short) data); 080 return this; 081 } 082 083 /** 084 * Get the input material. 085 * 086 * @return The input material. 087 */ 088 public ItemStack getInput() { 089 return this.ingredient.clone(); 090 } 091 092 /** 093 * Get the result of this recipe. 094 * 095 * @return The resulting stack. 096 */ 097 public ItemStack getResult() { 098 return output.clone(); 099 } 100 }