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