Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.broken.cheststorage.database.sqlite.more;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.util.io.BukkitObjectInputStream;
- import org.bukkit.util.io.BukkitObjectOutputStream;
- import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- public class SerializDeserialzItemStackFromToDatabase {
- /**
- * A method to serialize an {@link ItemStack} array to Base64 String.
- * <p>
- * <p/>
- * <p>
- * Based of {@link #toBase64(Inventory)}.
- *
- * @param items to turn into a Base64 String.
- * @return Base64 string of the items.
- * @throws IllegalStateException
- */
- public static String itemStackArrayToBase64(ItemStack[] items) throws IllegalStateException {
- try {
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
- // Write the size of the inventory
- dataOutput.writeInt(items.length);
- // Save every element in the list
- for (int i = 0; i < items.length; i++) {
- dataOutput.writeObject(items[i]);
- }
- // Serialize that array
- dataOutput.close();
- return Base64Coder.encodeLines(outputStream.toByteArray());
- } catch (Exception e) {
- throw new IllegalStateException("Unable to save item stacks.", e);
- }
- }
- /**
- * Gets an array of ItemStacks from Base64 string.
- * <p>
- * <p/>
- * <p>
- * Base of {@link #fromBase64(String)}.
- *
- * @param data Base64 string to convert to ItemStack array.
- * @return ItemStack array created from the Base64 string.
- * @throws IOException
- */
- public static ItemStack[] itemStackArrayFromBase64(String data) throws IOException {
- try {
- ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(data));
- BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
- ItemStack[] items = new ItemStack[dataInput.readInt()];
- // Read the serialized inventory
- for (int i = 0; i < items.length; i++) {
- items[i] = (ItemStack) dataInput.readObject();
- }
- dataInput.close();
- return items;
- } catch (ClassNotFoundException e) {
- throw new IOException("Unable to decode class type.", e);
- }
- }
- }
Add Comment
Please, Sign In to add comment