1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Лучший способ сохранить инвентарь в mysql?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Yourbreath, 12 авг 2022.

Статус темы:
Закрыта.
  1. Автор темы
    Yourbreath

    Yourbreath Активный участник Пользователь

    Баллы:
    61
    Нужно сохранять содержимое кастомных инвентарей в бд. Есть ли какие-то способы - во что можно преобразовать массив айтем стаков, чтобы записывать в бд и читать оттуда?

    Единственный вариант у меня в голове - превратить массив айтем стаков в массив байт, и, соответственно, последний полетит в бд. Главное, чтобы big int типа хватило, он вроде большой, но не имею представления
     
  2. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Как вариант сериализовать в json
     
  3. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Если память не изменяет, ChestShop примерно так и делает, только хранит предметы в виде base64.
     
  4. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    закодировать в Base64:good:
     
  5. Автор темы
    Yourbreath

    Yourbreath Активный участник Пользователь

    Баллы:
    61
    Ну это кринж, ибо слишком много придется учитывать в адаптере
     
  6. Автор темы
    Yourbreath

    Yourbreath Активный участник Пользователь

    Баллы:
    61
    а в чем прикол base64 и как примерно это работает? На сколько я помню, это длинная строка из каких-то закодированных букав
     
  7. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    примерно так:
    Код:
        public static List<ItemStack> deserializeItems(String string) {
            List<ItemStack> items = new ArrayList<>();
    
            if (string.isEmpty()) return items;
    
            ByteArrayInputStream inputStream = new ByteArrayInputStream(Base64Coder.decodeLines(string));
            BukkitObjectInputStream dataInput = new BukkitObjectInputStream(inputStream);
    
            try {
                while (true) {
                    items.add((ItemStack) dataInput.readObject());
                }
            } catch (IOException | ClassNotFoundException ignored) {
            }
    
    
            dataInput.close();
    
            return items;
        }
    
        @SneakyThrows
        public static String serializeItems(ItemStack... items) {
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            BukkitObjectOutputStream dataOutput = new BukkitObjectOutputStream(outputStream);
            for (ItemStack item : items)
                dataOutput.writeObject(item);
            dataOutput.close();
            return Base64Coder.encodeLines(outputStream.toByteArray());
        }
     
  8. imDaniX

    imDaniX Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Это те же биты да байты, просто перекодированные в символы, чтобы проще и более ёмко держать подобные данные. Глянь статью на Вики, там понятнее.
     
  9. Автор темы
    Yourbreath

    Yourbreath Активный участник Пользователь

    Баллы:
    61
    Спасибо
     
Статус темы:
Закрыта.

Поделиться этой страницей