tcr/java/src/game/village/MerchantRecipeList.java
2025-03-12 18:13:11 +01:00

132 lines
4.9 KiB
Java
Executable file

package game.village;
import java.util.ArrayList;
import game.item.ItemStack;
import game.nbt.NBTTagCompound;
import game.nbt.NBTTagList;
import game.nbt.NBTUtil;
public class MerchantRecipeList extends ArrayList<MerchantRecipe>
{
public MerchantRecipeList()
{
}
public MerchantRecipeList(NBTTagCompound compound)
{
this.readRecipiesFromTags(compound);
}
/**
* can par1,par2 be used to in crafting recipe par3
*/
public MerchantRecipe canRecipeBeUsed(ItemStack p_77203_1_, ItemStack p_77203_2_, int p_77203_3_)
{
if (p_77203_3_ > 0 && p_77203_3_ < this.size())
{
MerchantRecipe merchantrecipe1 = (MerchantRecipe)this.get(p_77203_3_);
return !this.func_181078_a(p_77203_1_, merchantrecipe1.getItemToBuy()) || (p_77203_2_ != null || merchantrecipe1.hasSecondItemToBuy()) && (!merchantrecipe1.hasSecondItemToBuy() || !this.func_181078_a(p_77203_2_, merchantrecipe1.getSecondItemToBuy())) || p_77203_1_.stackSize < merchantrecipe1.getItemToBuy().stackSize || merchantrecipe1.hasSecondItemToBuy() && p_77203_2_.stackSize < merchantrecipe1.getSecondItemToBuy().stackSize ? null : merchantrecipe1;
}
else
{
for (int i = 0; i < this.size(); ++i)
{
MerchantRecipe merchantrecipe = (MerchantRecipe)this.get(i);
if (this.func_181078_a(p_77203_1_, merchantrecipe.getItemToBuy()) && p_77203_1_.stackSize >= merchantrecipe.getItemToBuy().stackSize && (!merchantrecipe.hasSecondItemToBuy() && p_77203_2_ == null || merchantrecipe.hasSecondItemToBuy() && this.func_181078_a(p_77203_2_, merchantrecipe.getSecondItemToBuy()) && p_77203_2_.stackSize >= merchantrecipe.getSecondItemToBuy().stackSize))
{
return merchantrecipe;
}
}
return null;
}
}
private boolean func_181078_a(ItemStack p_181078_1_, ItemStack p_181078_2_)
{
return ItemStack.areItemsEqual(p_181078_1_, p_181078_2_) && (!p_181078_2_.hasTagCompound() || p_181078_1_.hasTagCompound() && NBTUtil.compareTags(p_181078_2_.getTagCompound(), p_181078_1_.getTagCompound(), false));
}
// public void writeToBuf(PacketBuffer buffer)
// {
// buffer.writeByte((byte)(this.size() & 255));
//
// for (int i = 0; i < this.size(); ++i)
// {
// MerchantRecipe merchantrecipe = (MerchantRecipe)this.get(i);
// buffer.writeItemStackToBuffer(merchantrecipe.getItemToBuy());
// buffer.writeItemStackToBuffer(merchantrecipe.getItemToSell());
// ItemStack itemstack = merchantrecipe.getSecondItemToBuy();
// buffer.writeBoolean(itemstack != null);
//
// if (itemstack != null)
// {
// buffer.writeItemStackToBuffer(itemstack);
// }
//
// buffer.writeBoolean(merchantrecipe.isRecipeDisabled());
// buffer.writeInt(merchantrecipe.getToolUses());
// buffer.writeInt(merchantrecipe.getMaxTradeUses());
// }
// }
//
// public static MerchantRecipeList readFromBuf(PacketBuffer buffer) throws IOException
// {
// MerchantRecipeList merchantrecipelist = new MerchantRecipeList();
// int i = buffer.readByte() & 255;
//
// for (int j = 0; j < i; ++j)
// {
// ItemStack itemstack = buffer.readItemStackFromBuffer();
// ItemStack itemstack1 = buffer.readItemStackFromBuffer();
// ItemStack itemstack2 = null;
//
// if (buffer.readBoolean())
// {
// itemstack2 = buffer.readItemStackFromBuffer();
// }
//
// boolean flag = buffer.readBoolean();
// int k = buffer.readInt();
// int l = buffer.readInt();
// MerchantRecipe merchantrecipe = new MerchantRecipe(itemstack, itemstack2, itemstack1, k, l);
//
// if (flag)
// {
// merchantrecipe.compensateToolUses();
// }
//
// merchantrecipelist.add(merchantrecipe);
// }
//
// return merchantrecipelist;
// }
public void readRecipiesFromTags(NBTTagCompound compound)
{
NBTTagList nbttaglist = compound.getTagList("Recipes", 10);
for (int i = 0; i < nbttaglist.tagCount(); ++i)
{
NBTTagCompound nbttagcompound = nbttaglist.getCompoundTagAt(i);
this.add(new MerchantRecipe(nbttagcompound));
}
}
public NBTTagCompound getRecipiesAsTags()
{
NBTTagCompound nbttagcompound = new NBTTagCompound();
NBTTagList nbttaglist = new NBTTagList();
for (int i = 0; i < this.size(); ++i)
{
MerchantRecipe merchantrecipe = (MerchantRecipe)this.get(i);
nbttaglist.appendTag(merchantrecipe.writeToTags());
}
nbttagcompound.setTag("Recipes", nbttaglist);
return nbttagcompound;
}
}