Вопрос Сериализация и десериализация инвентаря

manul694

Premium
Сообщения
1 168
Решения
34
Как сериализировать и десериализировать инвентарь что бы сохранить его в БД? Какие готовые решения вы посоветуете?
 
Последнее редактирование:
Примерно так можешь сделать.
Java:
public class InventoryUtils {

    public static String toBase64(Inventory inventory) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        try (BukkitObjectOutputStream bukkitObjectOutputStream = new BukkitObjectOutputStream(byteArrayOutputStream)) {
            bukkitObjectOutputStream.writeInt(9 * 4);
            for (ItemStack stack : inventory.getContents())
                bukkitObjectOutputStream.writeObject(stack);
            return Base64Coder.encodeLines(byteArrayOutputStream.toByteArray());
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static Inventory fromBase64(String base64) {
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Base64Coder.decodeLines(base64));
        try (BukkitObjectInputStream bukkitObjectInputStream = new BukkitObjectInputStream(byteArrayInputStream)) {
            Inventory inventory = Bukkit.createInventory(null, bukkitObjectInputStream.readInt());
            for (int i = 0; i < inventory.getSize(); i++)
                inventory.setItem(i, (ItemStack) bukkitObjectInputStream.readObject());
            return inventory;
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

}
 
Назад
Сверху Снизу