183 lines
4.7 KiB
Java
183 lines
4.7 KiB
Java
package net.minecraft.village;
|
|
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraftforge.fml.relauncher.Side;
|
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
|
|
|
public class MerchantRecipe
|
|
{
|
|
/** Item the Villager buys. */
|
|
private ItemStack itemToBuy;
|
|
/** Second Item the Villager buys. */
|
|
private ItemStack secondItemToBuy;
|
|
/** Item the Villager sells. */
|
|
private ItemStack itemToSell;
|
|
/** Saves how much has been tool used when put into to slot to be enchanted. */
|
|
private int toolUses;
|
|
/** Maximum times this trade can be used. */
|
|
private int maxTradeUses;
|
|
private boolean rewardsExp;
|
|
|
|
public MerchantRecipe(NBTTagCompound tagCompound)
|
|
{
|
|
this.itemToBuy = ItemStack.EMPTY;
|
|
this.secondItemToBuy = ItemStack.EMPTY;
|
|
this.itemToSell = ItemStack.EMPTY;
|
|
this.readFromTags(tagCompound);
|
|
}
|
|
|
|
public MerchantRecipe(ItemStack buy1, ItemStack buy2, ItemStack sell)
|
|
{
|
|
this(buy1, buy2, sell, 0, 7);
|
|
}
|
|
|
|
public MerchantRecipe(ItemStack buy1, ItemStack buy2, ItemStack sell, int toolUsesIn, int maxTradeUsesIn)
|
|
{
|
|
this.itemToBuy = ItemStack.EMPTY;
|
|
this.secondItemToBuy = ItemStack.EMPTY;
|
|
this.itemToSell = ItemStack.EMPTY;
|
|
this.itemToBuy = buy1;
|
|
this.secondItemToBuy = buy2;
|
|
this.itemToSell = sell;
|
|
this.toolUses = toolUsesIn;
|
|
this.maxTradeUses = maxTradeUsesIn;
|
|
this.rewardsExp = true;
|
|
}
|
|
|
|
public MerchantRecipe(ItemStack buy1, ItemStack sell)
|
|
{
|
|
this(buy1, ItemStack.EMPTY, sell);
|
|
}
|
|
|
|
public MerchantRecipe(ItemStack buy1, Item sellItem)
|
|
{
|
|
this(buy1, new ItemStack(sellItem));
|
|
}
|
|
|
|
/**
|
|
* Gets the itemToBuy.
|
|
*/
|
|
public ItemStack getItemToBuy()
|
|
{
|
|
return this.itemToBuy;
|
|
}
|
|
|
|
/**
|
|
* Gets secondItemToBuy.
|
|
*/
|
|
public ItemStack getSecondItemToBuy()
|
|
{
|
|
return this.secondItemToBuy;
|
|
}
|
|
|
|
/**
|
|
* Gets if Villager has secondItemToBuy.
|
|
*/
|
|
public boolean hasSecondItemToBuy()
|
|
{
|
|
return !this.secondItemToBuy.isEmpty();
|
|
}
|
|
|
|
/**
|
|
* Gets itemToSell.
|
|
*/
|
|
public ItemStack getItemToSell()
|
|
{
|
|
return this.itemToSell;
|
|
}
|
|
|
|
public int getToolUses()
|
|
{
|
|
return this.toolUses;
|
|
}
|
|
|
|
public int getMaxTradeUses()
|
|
{
|
|
return this.maxTradeUses;
|
|
}
|
|
|
|
public void incrementToolUses()
|
|
{
|
|
++this.toolUses;
|
|
}
|
|
|
|
public void increaseMaxTradeUses(int increment)
|
|
{
|
|
this.maxTradeUses += increment;
|
|
}
|
|
|
|
public boolean isRecipeDisabled()
|
|
{
|
|
return this.toolUses >= this.maxTradeUses;
|
|
}
|
|
|
|
/**
|
|
* Compensates {@link net.minecraft.village.MerchantRecipe#toolUses toolUses} with {@link
|
|
* net.minecraft.village.MerchantRecipe#maxTradeUses maxTradeUses}
|
|
*/
|
|
@SideOnly(Side.CLIENT)
|
|
public void compensateToolUses()
|
|
{
|
|
this.toolUses = this.maxTradeUses;
|
|
}
|
|
|
|
public boolean getRewardsExp()
|
|
{
|
|
return this.rewardsExp;
|
|
}
|
|
|
|
public void readFromTags(NBTTagCompound tagCompound)
|
|
{
|
|
NBTTagCompound nbttagcompound = tagCompound.getCompoundTag("buy");
|
|
this.itemToBuy = new ItemStack(nbttagcompound);
|
|
NBTTagCompound nbttagcompound1 = tagCompound.getCompoundTag("sell");
|
|
this.itemToSell = new ItemStack(nbttagcompound1);
|
|
|
|
if (tagCompound.hasKey("buyB", 10))
|
|
{
|
|
this.secondItemToBuy = new ItemStack(tagCompound.getCompoundTag("buyB"));
|
|
}
|
|
|
|
if (tagCompound.hasKey("uses", 99))
|
|
{
|
|
this.toolUses = tagCompound.getInteger("uses");
|
|
}
|
|
|
|
if (tagCompound.hasKey("maxUses", 99))
|
|
{
|
|
this.maxTradeUses = tagCompound.getInteger("maxUses");
|
|
}
|
|
else
|
|
{
|
|
this.maxTradeUses = 7;
|
|
}
|
|
|
|
if (tagCompound.hasKey("rewardExp", 1))
|
|
{
|
|
this.rewardsExp = tagCompound.getBoolean("rewardExp");
|
|
}
|
|
else
|
|
{
|
|
this.rewardsExp = true;
|
|
}
|
|
}
|
|
|
|
public NBTTagCompound writeToTags()
|
|
{
|
|
NBTTagCompound nbttagcompound = new NBTTagCompound();
|
|
nbttagcompound.setTag("buy", this.itemToBuy.writeToNBT(new NBTTagCompound()));
|
|
nbttagcompound.setTag("sell", this.itemToSell.writeToNBT(new NBTTagCompound()));
|
|
|
|
if (!this.secondItemToBuy.isEmpty())
|
|
{
|
|
nbttagcompound.setTag("buyB", this.secondItemToBuy.writeToNBT(new NBTTagCompound()));
|
|
}
|
|
|
|
nbttagcompound.setInteger("uses", this.toolUses);
|
|
nbttagcompound.setInteger("maxUses", this.maxTradeUses);
|
|
nbttagcompound.setBoolean("rewardExp", this.rewardsExp);
|
|
return nbttagcompound;
|
|
}
|
|
} |