SQLib

SQLib

The easiest way to store data for all your minecraft needs!

von
11.8K Downloads
fabricquiltvelocitylibrarymanagementtechnology
Server mit dieser Mod mieten

Über diese Mod

Maintenance
PRs Welcome

ko-fi

SQLib

SQLib is the easiest way to store data for all your minecraft needs! A simple sql wrapper made with a focus on minecraft use cases.

Important Note:

This library is not a full-fledged sql wrapper, and does not provide full access to many sql features.
The main focus of this library is to provide an easy and simple way to store data in your mods.
If you are looking for a more advanced database I recommend taking a look at something like Nitrite.

Config

The mod generates a config on first time start that allows you to configure the database used by all mods relying on sqlib.
The default database is a sqlite database running in the sqlib directory.

Datatypes

The datatypes can be accessed via JavaTpes, MinecraftTypes or the AdventureTypes classes. I tend to add support for new types as I run into them in my projects. If you would like one added, pleade make an issue!

Standard Minecraft Adventure
Byte Vec3i Key
Byte[] BlockPos Component
Bool ChunkPos
Short Text
Int Identifier
Float Sound
Double Json
Long NbtElement
String
Char
Date
Color
UUID
URI
URL

You can also add your own custom types as seen here:

Setup

In your build.gradle include:

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

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

Developer Usage

This example uses the built-in database managed by sqlib. for 99% of mods, using the built-in database is good, however
further down are examples for custom database management.

// Do not call SQLib.getDatabase() in a early mod initializer. Doing so will likely crash your mod.
// Calling in or after the regular mod initializer is ok.
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"));

Custom Database Management

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

Transaction Support

This approach will bach sql commands into one command for faster read/writes of large amounts of data.

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

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

Custom Types

You can add a custom type by following the implentations in JavaTypes, MinecraftTypes and AdventureTypes. Then you can use it like any other native SQLib type.

// The SQLPrimitive is the base type to serialize to, and the two function lambdas are to serialize and deserialize from it
public static final SQLibType<JsonElement> JSON = new SQLibType<>(SQLPrimitive.STRING, JsonElement::toString, JsonParser::parseString);

// You can also extend a type like this:
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);

Verfügbare Versionen

SQLib 3.2.9release
MC 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11fabric, quilt, velocity
21. März 2025
SQLib 3.2.8release
MC 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4fabric, quilt, velocity
5. Februar 2025
SQLib 3.2.5release
MC 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4fabric, quilt, velocity
21. Dezember 2024
SQLib 3.2.4release
MC 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4fabric, quilt, velocity
26. November 2024
SQLib 3.2.3release
MC 1.16.5, 1.17, 1.17.1, 1.18, 1.18.1, 1.18.2, 1.19, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3fabric, quilt, velocity
23. Oktober 2024

SQLib auf dem Server installieren

1

Server bestellen

Bestelle einen Minecraft Java Server mit mindestens 3 GB RAM (4 GB empfohlen).

2

fabric Loader setzen

Wähle im Panel unter "Egg" den fabric-Loader und die passende Minecraft-Version (1.21.11).

3

Mod installieren

Öffne den Mod-Browser im Dashboard und suche nach "SQLib". Klicke "Installieren" – fertig! Alternativ: Lade die .jar via SFTP in den /mods Ordner.

Kompatibilität

Mod-Loader

fabricquiltvelocity

Minecraft-Versionen

1.21.11, 1.21.10, 1.21.9 (+27 weitere)

Server-seitig

~ Optional

Empfohlener RAM

4 GB(min. 3 GB)

Häufige Fragen

SQLib Server crasht beim Start – was tun?

Häufigste Ursache: falsche fabric-Version oder zu wenig RAM. Prüfe im Server-Log (latest.log), ob ein "OutOfMemoryError" oder "Mixin"-Fehler auftritt. Bei Mado Hosting: Stelle sicher, dass mindestens 3 GB RAM zugewiesen sind und der Loader zur Mod-Version passt (1.21.11). Über das Panel kannst du den Loader mit einem Klick wechseln.

Ist SQLib mit fabric und quilt und velocity kompatibel?

SQLib unterstützt offiziell fabric, quilt, velocity für Minecraft 1.21.11, 1.21.10, 1.21.9. Im Mado Dashboard werden inkompatible Loader-Kombinationen automatisch erkannt.

Server laggt mit SQLib – wie optimiere ich die Performance?

Empfohlener RAM: 4 GB (+1 GB pro 8 Spieler). Prüfe mit /spark profiler, ob SQLib den meisten Tick-Time verbraucht. Häufige Fixes: Server-View-Distance auf 8-10 reduzieren, bei Forge "performant" oder "starlight" als Zusatz-Mod installieren. Bei Mado Hosting läuft dein Server auf NVMe-SSDs mit dedizierten CPU-Kernen für minimale Latenz.

Modded Server mieten

Installiere SQLib mit nur einem Klick auf deinem Server.

Empfohlener RAM
4 GBab €5.2/Monat
Min. 3 GB | +1 GB pro 8 Spieler
Jetzt Server erstellen
1-Klick Mod Installation
NVMe SSD Speicher
DDoS-Schutz inklusive

Details

Lizenz
Creative Commons Zero v1.0 Universal
Server-seitig
Optional

Unterstützte Versionen

1.21.111.21.101.21.91.21.81.21.71.21.61.21.51.21.41.21.31.21.2+20 mehr