Скачать SQLib — Minecraft Моды — MetaMods

Установок

0

Последнее обновление

7 месяцев назад

Версии

1.16.5 — 1.21.9
Клиент
Fabric
Quilt
Библиотеки
Управление
Технологические

SQLib

SQLib представляет собой упрощённую библиотеку для работы с базами данных, специально адаптированную для использования в модах Minecraft. Она предлагает разработчикам удобный способ хранения различных типов данных без необходимости глубокого погружения в сложности SQL.

Основная концепция

Данная библиотека не является полноценной обёрткой SQL и не предоставляет доступ ко всем возможностям SQL. Её главная цель — упростить процесс сохранения данных в ваших модах, сделав его максимально интуитивным и эффективным.

Настройка конфигурации

При первом запуске мод автоматически создаёт конфигурационный файл, который позволяет настраивать параметры базы данных для всех модов, использующих SQLib. По умолчанию используется база данных SQLite, расположенная в директории sqlib.

Поддерживаемые типы данных

Библиотека предоставляет три основные категории типов данных:

Стандартные Java-типы:

  • Byte, Byte[], Bool, Short, Int, Float, Double
  • Long, String, Char, Date, Color, UUID, URI, URL

Minecraft-специфичные типы:

  • Vec3i, BlockPos, ChunkPos, Text, Identifier
  • Sound, Json, NbtElement

Adventure-типы:

  • Key, Component

Разработчик постоянно расширяет список поддерживаемых типов в процессе работы над своими проектами. Если вам нужен дополнительный тип данных, вы можете создать соответствующий запрос.

Установка

Добавьте в файл build.gradle:

repositories {
    maven { url "https://api.modrinth.com/maven" }
}

dependencies {
  modImplementation("maven.modrinth:sqlib:3.2.2")
}

Пример использования

// Не вызывайте SQLib.getDatabase() в раннем инициализаторе мода - это может вызвать сбой
// Вызов в обычном инициализаторе мода или позже безопасен
Database db = SQLib.getDatabase();

DataStore store = db.dataStore("myModId", "userdata");

DataContainer playerData = store.createDataContainer();
playerData.put(JavaTypes.STRING, "username", "CoolGuy123");
playerData.put(MinecraftTypes.BLOCKPOS, "home", new BlockPos(304, 62, 37));
playerData.put(MinecraftTypes.NBT, "nbt", new NbtCompound());

System.out.println(playerdata.get(JavaTypes.STRING, "username"));
System.out.println(playerdata.get(MinecraftTypes.BLOCKPOS, "home"));
System.out.println(playerdata.get(MinecraftTypes.NBT, "nbt"));

Работа с пользовательскими базами данных

Postgres db = new Postgres("name", "192.168.1.69", "3306", "cooluser", "radman");
// ИЛИ
MySQL db = new MySQL("name", "192.168.1.69", "3306", "cooluser", "radman");
// ИЛИ
SQLite db = new SQLite("name", "some/dir");

Поддержка транзакций

Этот подход позволяет объединять SQL-команды в одну операцию для ускорения чтения/записи больших объёмов данных.

DataStore store = db.dataStore("modId", "userdata");

DataContainer playerData = table.createDataContainer();
playerData.transaction().put("username", "CoolGuy123").put("home", new BlockPos(304, 62, 37).commit();

Создание пользовательских типов

Вы можете добавлять собственные типы данных, следуя примерам реализации в классах JavaTypes, MinecraftTypes и AdventureTypes. После создания их можно использовать так же, как и встроенные типы SQLib.

// SQLPrimitive - базовый тип для сериализации, две лямбда-функции отвечают за сериализацию и десериализацию
public static final SQLibType<JsonElement> JSON = new SQLibType<>(SQLPrimitive.STRING, JsonElement::toString, JsonParser::parseString);

// Также можно расширять существующие типы:
public static final SQLibType<Identifier> IDENTIFIER = new SQLibType<>(SQLPrimitive.STRING, Identifier::toString, Identifier::tryParse);
public static final SQLibType<SoundEvent> SOUND = new SQLibType<>(IDENTIFIER, SoundEvent::getId, SoundEvent::of);
Участники проекта
mrnavastar

mrnavastar

Разработчик

Создан: 2 мая 2023

ID: 8192