Tags
Creators
Details
1.0.1-RELEASE
Compatibility
Changes
Fixes three things found while testing against a real MySQL server and a connected client.
MySQL storage never worked. CREATE INDEX IF NOT EXISTS is SQLite syntax; MySQL answers with a syntax error, so the schema stopped after the first table and the plugin refused to enable. Anyone who set storage.type to mysql got a startup failure and nothing else. Indexes are now created through information_schema on MySQL. Checked against MySQL 8.4.6: ten tables, six indexes, homes, warps, mail and the transaction log written and read back, and a second save updating the row rather than adding one.
Vault lookups blocked the server thread. Accounts were fetched through a future with a two second timeout, called from the tick. A shop plugin walking a list of offline accounts could stall the server for that long. Vault's API is synchronous and there is no correct way to answer it asynchronously, so the read now happens inline as one indexed query and is cached afterwards. A warning is logged if one ever takes longer than 25ms.
/pay could destroy money. The transfer ignored the result of the withdrawal, so a failed deposit left the amount in neither account. The move is now serialised and the deposit is compensated if it fails.
Two servers sharing one MySQL database can still race the balance ceiling check. That needs row locking and has not been done.
Optional dependencies
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:3jGmDvjD:9DLE0gqn"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:3jGmDvjD:9DLE0gqn"
}

