Minecraft SQLite JDBC
Актуальный драйвер SQLite JDBC, обёрнутый как универсальная библиотека Forge/Fabric/Bukkit для таких плагинов, как Dynmap и Grim.
- Загрузчики
- FabricNeoForgeForgeQuilt
- Скачиваний на Modrinth
- 26,1 тыс.
- Подписчиков на Modrinth
- 17
- версий
- 18
- Обновлён
- 16 октября 202616 окт.
- Опубликован
- в 2025
Коротко о моде
Работает и в игре, и на сервере — ставьте, где нужен
SQLite JDBC для Minecraft
Поддерживаемый форк заглохшего мода SQLite JDBC для Minecraft, теперь отслеживает последний релиз Xerial sqlite-jdbc с автообновлением, когда upstream выпускает новую версию.
Сам по себе мод ничего не делает — он кладёт драйвер SQLite JDBC в classpath сервера, чтобы другим плагинам/модам, которые хотят читать или писать файлы .db/.sqlite через JDBC, не приходилось тащить свою копию.
Типичные потребители: Dynmap, Plan, LuckPerms, Grim Anti-Cheat и любой плагин, которому нужен встроенный SQLite без распространения 10 МБ нативных бинарников.
Что внутри jar
org.xerial:sqlite-jdbc:3.53.0.0 плюс минимальные заглушки-загрузчики для Spigot, Forge 1.12, Forge 1.13–1.16, Forge 1.17–1.20, NeoForge 1.21+ и Fabric. Классы драйвера остаются по своим каноническим путям org.sqlite.* — без перемещения — так что потребители находят их обычным Class.forName("org.sqlite.JDBC"). META-INF/services/java.sql.Driver сохранён, чтобы драйвер автоматически регистрировался в DriverManager.
Драйвер xerial включает нативные бинарники SQLite для всех распространённых платформ/архитектур (linux x64/aarch64, macos x64/arm64, windows x64). Они распаковываются во временную папку JVM при первом использовании.
Совместимость
| Загрузчик | Версии MC | Примечания |
|---|---|---|
| Bukkit / Spigot / Paper / Folia / Purpur | 1.8 → текущая | кинуть в plugins/ |
| Fabric | 1.16.1 → текущая | нужен Fabric Loader 0.14+ |
| Forge | 1.12 → 1.20 | универсальный jar, без Mixins |
| NeoForge | 1.21 → текущая | кинуть в mods/ |
Требуется Java 8+. Чистые серверы на BukkitAPI без Java 8 (всё старше ~1.8.8) не смогут загрузить ни один современный релиз xerial; это ограничение upstream, а не этого мода.
Когда этот мод действительно нужен
CraftBukkit/Spigot/Paper поставляют sqlite-jdbc в родительском classloader сервера ещё со времён коммита ebeans эпохи 1.4. Classloader'ы плагинов делегируют сначала родителю, так что для стандартного пути JDBC (Class.forName("org.sqlite.JDBC") / DriverManager.getConnection) всегда побеждает встроенный драйвер, независимо от того, что лежит в plugins/. Проверено эмпирически на Paper 1.12.2 и 1.21.11.
Этот мод нужен, когда:
- Вы на Fabric или NeoForge — ванильный Minecraft вообще не поставляет JDBC-драйверы
- Вы на форке Bukkit, из которого вырезан встроенный драйвер (редко, но бывает на минифицированных сборках сервера)
- Вы хотите более новую версию движка SQLite, чем поставляет ваш сервер — для
RETURNING, таблицSTRICT, современного UPSERT на сервере 1.8–1.12 или просто чтобы отслеживать последний релиз Xerial. См. Использование более нового движка через публичный API ниже.
Использование более нового движка через публичный API
Стандартный путь использует встроенный драйвер. Чтобы использовать драйвер этого мода, ваш плагин должен мягко зависеть от этого холдера и вызывать MinecraftSqliteJdbc.connect(url) напрямую:
// в вашем plugin.yml
softdepend: [sqlite-jdbc]// в коде вашего плагина
Connection c;
try {
c = MinecraftSqliteJdbc.connect("jdbc:sqlite:foo.db");
} catch (NoClassDefFoundError | ClassNotFoundException notInstalled) {
// холдер не установлен — откатываемся на встроенный драйвер
c = DriverManager.getConnection("jdbc:sqlite:foo.db");
}MinecraftSqliteJdbc оборачивает child-first URLClassLoader, указывающий на URL этого jar, с родителем в виде classloader платформы, так что org.sqlite.* обязан прийти из этого jar (а не из встроенной цепочки). Возвращённый Connection — стандартный java.sql.Connection — держите приведения к интерфейсам java.sql.*; класс реализации org.sqlite.SQLiteConnection живёт в child-first classloader и не приведётся через границу.
Проверено на Paper 1.12.2 (встроенный движок 3.21.0) — та же JVM, та же загрузка:
baseline DriverManager.getConnection → engine 3.21.0
MinecraftSqliteJdbc.connect() → engine 3.53.0Поверхность API (всё статическое):
| Метод | Возвращает |
|---|---|
connect(String url) | открытый Connection через этот драйвер |
connect(String url, Properties props) | то же самое, но с props |
driver() | экземпляр java.sql.Driver |
engineVersion() | версия движка SQLite (например, "3.53.0") |
driverVersion() | строка версии драйвера (например, "3.53.0.0") |
eagerInit() | прогреть загрузчик классов при включении плагина |
shutdown() | освободить файловые дескрипторы + JNI при выключении плагина |
SQLite-бэкенд Grim Anti-Cheat использует этот API автоматически, когда установлен этот холдер и в нём поставляется движок новее встроенного — см. страницу вики Grim про базу данных.
Версии встроенного движка SQLite в распространённых ветках Bukkit
Для справки, если вам интересно, какая версия движка на самом деле поставляется с вашим сервером:
| Ветка CraftBukkit / Paper | Встроенный движок SQLite |
|---|---|
| 1.8 – 1.10 | 3.7.2 |
| 1.11 | 3.16.1 |
| 1.12 | 3.21.0.1 |
| 1.13 | 3.25.2 |
| 1.14 | 3.28.0 |
| 1.15 | 3.30.1 |
| 1.16 – 1.17 | 3.34.0 |
| 1.20.6 | 3.45.3.0 |
| Paper 1.21.4 | 3.47.0.0 |
| Paper 1.21.5 – 1.21.11 | 3.49.1.0 |
| master / 26.x | 3.51.3.0 |
Этот мод поставляет движок 3.53.0.0 (или какой там последний релиз xerial), но на серверах семейства Bukkit всё это не имеет значения — ваши запросы на самом деле выполняет встроенный движок. Если вам нужен более новый движок для таких возможностей, как RETURNING (3.35+) или таблицы STRICT (3.37+), обновитесь до версии Paper, в которой поставляется достаточно свежий драйвер, или перенесите эту нагрузку на Fabric/NeoForge, где вы можете управлять драйвером.
Использование из плагина или мода
Объявите sqlite-jdbc как compileOnly:
compileOnly("org.xerial:sqlite-jdbc:3.53.0.0")Проверка при запуске:
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
getLogger().warning("SQLite backend disabled — install minecraft-sqlite-jdbc");
return;
}
try (Connection c = DriverManager.getConnection("jdbc:sqlite:" + dataDir.resolve("data.db"))) {
// ...
}На Paper 1.17+ загрузчик классов каждого плагина изолирован. Добавьте этот мод в softdepend вашего plugin.yml, чтобы классы драйвера были видны вашему плагину:
softdepend: [minecraft-sqlite-jdbc]Fabric и NeoForge объединяют все моды в один загрузчик классов, так что там такое объявление не нужно.
Версионирование
Версия jar один в один повторяет релиз sqlite-jdbc от Xerial. 3.53.0.0+2026-04-14 поставляет движок 3.53.0.0; суффикс — это дата сборки. Запланированный GitHub Action ежедневно проверяет Maven Central — когда xerial выпускает новый релиз, здесь открывается PR на автослияние, и релиз на Modrinth выходит автоматически.
Лицензия
Apache 2.0 (Xerial / Taro L. Saito). Перепаковка не вносит функциональных изменений и наследует эту лицензию. Полный текст в LICENSE.
Проблемы, исходники: GitHub.
Частые вопросы
Как установить Minecraft SQLite JDBC?
Установите Fabric под свою версию Minecraft, скачайте Minecraft SQLite JDBC под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Minecraft SQLite JDBC?
У Minecraft SQLite JDBC есть сборки для Minecraft 1.12.2–26.3.
Нужен ли Minecraft SQLite JDBC на сервере?
Работает и в игре, и на сервере — ставьте, где нужен