/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.shininet.bukkit.itemrenamer.merchant; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.util.ArrayList; import org.bukkit.inventory.ItemStack; import org.shininet.bukkit.itemrenamer.listeners.SpigotSafeSerializer; import com.comphenix.protocol.utility.StreamSerializer; public class MerchantRecipeList extends ArrayList<MerchantRecipe> { /** * Generated by Eclipse. */ private static final long serialVersionUID = 935714970432081801L; private static final StreamSerializer streamSerializer = SpigotSafeSerializer.getDefault(); public void writeRecipiesToStream(DataOutputStream output) throws IOException { output.writeByte((byte)(this.size() & 255)); for (MerchantRecipe merchantRecipe : this) { MerchantRecipe recipe = (MerchantRecipe) merchantRecipe; streamSerializer.serializeItemStack(output, recipe.getItemToBuy()); streamSerializer.serializeItemStack(output, recipe.getItemToSell()); ItemStack secondItem = recipe.getSecondItemToBuy(); output.writeBoolean(secondItem != null); if (secondItem != null) { streamSerializer.serializeItemStack(output, secondItem); } output.writeBoolean(recipe.isCanUse()); } } public static MerchantRecipeList readRecipiesFromStream(DataInputStream input) throws IOException { MerchantRecipeList recipeList = new MerchantRecipeList(); int size = input.readByte() & 255; for (int i = 0; i < size; i++) { ItemStack toBuy = streamSerializer.deserializeItemStack(input); ItemStack toSell = streamSerializer.deserializeItemStack(input); ItemStack toBuy2 = null; if (input.readBoolean()) { toBuy2 = streamSerializer.deserializeItemStack(input); } boolean canUse = input.readBoolean(); MerchantRecipe recipe = new MerchantRecipe(toBuy, toBuy2, toSell, canUse); recipeList.add(recipe); } return recipeList; } }