001 package net.minecraft.src;
002
003 import cpw.mods.fml.common.Side;
004 import cpw.mods.fml.common.asm.SideOnly;
005
006 public class MerchantRecipe
007 {
008 /** Item the Villager buys. */
009 private ItemStack itemToBuy;
010
011 /** Second Item the Villager buys. */
012 private ItemStack secondItemToBuy;
013
014 /** Item the Villager sells. */
015 private ItemStack itemToSell;
016
017 /**
018 * Saves how much has been tool used when put into to slot to be enchanted.
019 */
020 private int toolUses;
021 private int field_82786_e;
022
023 public MerchantRecipe(NBTTagCompound par1NBTTagCompound)
024 {
025 this.readFromTags(par1NBTTagCompound);
026 }
027
028 public MerchantRecipe(ItemStack par1ItemStack, ItemStack par2ItemStack, ItemStack par3ItemStack)
029 {
030 this.itemToBuy = par1ItemStack;
031 this.secondItemToBuy = par2ItemStack;
032 this.itemToSell = par3ItemStack;
033 this.field_82786_e = 7;
034 }
035
036 public MerchantRecipe(ItemStack par1ItemStack, ItemStack par2ItemStack)
037 {
038 this(par1ItemStack, (ItemStack)null, par2ItemStack);
039 }
040
041 public MerchantRecipe(ItemStack par1ItemStack, Item par2Item)
042 {
043 this(par1ItemStack, new ItemStack(par2Item));
044 }
045
046 /**
047 * Gets the itemToBuy.
048 */
049 public ItemStack getItemToBuy()
050 {
051 return this.itemToBuy;
052 }
053
054 /**
055 * Gets secondItemToBuy.
056 */
057 public ItemStack getSecondItemToBuy()
058 {
059 return this.secondItemToBuy;
060 }
061
062 /**
063 * Gets if Villager has secondItemToBuy.
064 */
065 public boolean hasSecondItemToBuy()
066 {
067 return this.secondItemToBuy != null;
068 }
069
070 /**
071 * Gets itemToSell.
072 */
073 public ItemStack getItemToSell()
074 {
075 return this.itemToSell;
076 }
077
078 /**
079 * checks if both the first and second ItemToBuy IDs are the same
080 */
081 public boolean hasSameIDsAs(MerchantRecipe par1MerchantRecipe)
082 {
083 return this.itemToBuy.itemID == par1MerchantRecipe.itemToBuy.itemID && this.itemToSell.itemID == par1MerchantRecipe.itemToSell.itemID ? this.secondItemToBuy == null && par1MerchantRecipe.secondItemToBuy == null || this.secondItemToBuy != null && par1MerchantRecipe.secondItemToBuy != null && this.secondItemToBuy.itemID == par1MerchantRecipe.secondItemToBuy.itemID : false;
084 }
085
086 /**
087 * checks first and second ItemToBuy ID's and count. Calls hasSameIDs
088 */
089 public boolean hasSameItemsAs(MerchantRecipe par1MerchantRecipe)
090 {
091 return this.hasSameIDsAs(par1MerchantRecipe) && (this.itemToBuy.stackSize < par1MerchantRecipe.itemToBuy.stackSize || this.secondItemToBuy != null && this.secondItemToBuy.stackSize < par1MerchantRecipe.secondItemToBuy.stackSize);
092 }
093
094 public void incrementToolUses()
095 {
096 ++this.toolUses;
097 }
098
099 public void func_82783_a(int par1)
100 {
101 this.field_82786_e += par1;
102 }
103
104 public boolean func_82784_g()
105 {
106 return this.toolUses >= this.field_82786_e;
107 }
108
109 @SideOnly(Side.CLIENT)
110 public void func_82785_h()
111 {
112 this.toolUses = this.field_82786_e;
113 }
114
115 public void readFromTags(NBTTagCompound par1NBTTagCompound)
116 {
117 NBTTagCompound var2 = par1NBTTagCompound.getCompoundTag("buy");
118 this.itemToBuy = ItemStack.loadItemStackFromNBT(var2);
119 NBTTagCompound var3 = par1NBTTagCompound.getCompoundTag("sell");
120 this.itemToSell = ItemStack.loadItemStackFromNBT(var3);
121
122 if (par1NBTTagCompound.hasKey("buyB"))
123 {
124 this.secondItemToBuy = ItemStack.loadItemStackFromNBT(par1NBTTagCompound.getCompoundTag("buyB"));
125 }
126
127 if (par1NBTTagCompound.hasKey("uses"))
128 {
129 this.toolUses = par1NBTTagCompound.getInteger("uses");
130 }
131
132 if (par1NBTTagCompound.hasKey("maxUses"))
133 {
134 this.field_82786_e = par1NBTTagCompound.getInteger("maxUses");
135 }
136 else
137 {
138 this.field_82786_e = 7;
139 }
140 }
141
142 public NBTTagCompound writeToTags()
143 {
144 NBTTagCompound var1 = new NBTTagCompound();
145 var1.setCompoundTag("buy", this.itemToBuy.writeToNBT(new NBTTagCompound("buy")));
146 var1.setCompoundTag("sell", this.itemToSell.writeToNBT(new NBTTagCompound("sell")));
147
148 if (this.secondItemToBuy != null)
149 {
150 var1.setCompoundTag("buyB", this.secondItemToBuy.writeToNBT(new NBTTagCompound("buyB")));
151 }
152
153 var1.setInteger("uses", this.toolUses);
154 var1.setInteger("maxUses", this.field_82786_e);
155 return var1;
156 }
157 }