2.1
Compatibility
Changes
🚀 Homes 2.1 Release
Homes 2.1 introduces full database storage support (MySQL and SQLite), end-to-end AES-256-GCM coordinate encryption to protect player privacy from administrators, powerful console management commands, and an automated update checker.
🌟 New Features & Enhancements
🗄️ MySQL & SQLite Database Support
- Added native storage support for SQLite (default, local file
homes.db) and remote MySQL / MariaDB. - Integrated, shaded, and relocated HikariCP connection pooling to ensure zero classpath conflicts.
- SQLite runs with WAL mode (Write-Ahead Logging) and an isolated single-connection pool to eliminate file locking issues.
- Automatic Migration: detects legacy
homes.ymlon first run, imports all homes directly into the database, encrypts them, and renames the file tohomes.yml.migrated.
🔒 AES-256-GCM Encryption (Admin-Proof Privacy)
- All coordinates ($X, Y, Z$), worlds, and viewing angles ($Yaw, Pitch$) are encrypted with AES-256-GCM before being written to the database.
- Server admins inspecting SQLite or MySQL via phpMyAdmin, DBeaver, or HeidiSQL cannot view player home coordinates (stored as encrypted
ENC:v1:...strings). - Unique per-player keys derived via
HMAC-SHA256(MasterKey, PlayerUUID). - Every record is encrypted with a unique, cryptographically random 12-byte IV.
- Automatically creates a secure 256-bit key in
.encryption_keyif none is configured.
💻 New Console Commands
/home clear <player|all>:- Strictly console-only (in-game players, even OPs, cannot execute it).
- Purges all homes of a specific player or all players across the entire server.
/homes add <homes.yml|sqlite> to MySQL <user:password>:- Strictly console-only migration tool.
- Exports all homes from a legacy
homes.ymlor localSQLitedatabase directly into MySQL with real-time encryption and zero server lag.
- Added contextual tab-completion for console operators.
- Reserved the home names
reloadandclearto prevent command collisions.
🔄 Automated Version Checker
- Asynchronously checks for new updates via Modrinth API and GitHub Releases API on startup and
/home reload. - Prints
You running on the Latest version (v2.1)to the console or displays an alert banner with direct download links if an update is found.
⚙️ Configuration (config.yml)
storage:
type: "sqlite" # or "mysql"
sqlite:
file: "homes.db"
mysql:
host: "localhost"
port: 3306
database: "homes"
username: "root"
password: ""
table-prefix: "homes_"
ssl: false
pool-size: 10
encryption:
enabled: true
secret-key: "" # Leave blank to auto-generate a 256-bit key in .encryption_key
check-updates: true
home-limit: 10
teleport-timeout: 5
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:vOKFjt5I:UL9rMJkl"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:vOKFjt5I:UL9rMJkl"
}

