Links
Tags
Creators
Details
v1.3.0
Compatibility
Changes
π Per-Player Language System
Players can now choose their preferred language β messages are served individually based on each player's selection.
| Command | Description |
|---|---|
/insureinv setlang <language> |
Set your preferred language |
/insureinv setlang |
View current language & available options |
- Language preference persisted via Bukkit's
PersistentDataContainer - Tab completion dynamically suggests all loaded languages
- Fully hot-reloadable β
/insureinv reloadrefreshes all translations without restart
π locales.yml β Admin-Configurable Language Registry
A new config file at plugins/InsureInv/locales.yml gives server admins full control over available languages:
languages:
en_US:
file: en_US.yml
vi_VN:
file: vi_VN.yml
pirate: # Custom identifier β no naming restrictions!
file: pirate_speak.yml
How to add a custom language
- Copy an existing translation file from
plugins/InsureInv/lang/ - Translate the messages in your new file
- Place it in
plugins/InsureInv/lang/ - Add an entry in
locales.ymlwith your chosen key and file name - Run
/insureinv reload
[!NOTE] Translation files are loaded from the data folder (
plugins/InsureInv/lang/), not from the JAR. Admins can edit translations directly on disk.
π Bundled Languages
| Language | Key | File |
|---|---|---|
| πΊπΈ English (US) | en_US |
en_US.yml |
| π¬π§ English (UK) | en_GB |
en_GB.yml |
| π»π³ Vietnamese | vi_VN |
vi_VN.yml |
| π«π· French | fr_FR |
fr_FR.yml |
| π―π΅ Japanese | ja_JP |
ja_JP.yml |
π§ Internal Improvements
- Atomic i18n reload β
I18nManagerusesAtomicReferencefor thread-safe bootstrap swapping during reloads, eliminating race conditions where concurrent message lookups could receive stale or null data - Merged
langreloadβreloadβ a single/insureinv reloadnow handles config, storage, and language reloads - Library update β
hyticallib-i18n-coreno longer enforces ISO locale codes (xx_XX), enabling fully custom language identifiers
β οΈ Known Limitations
[!CAUTION]
- Translations for
fr_FRandja_JPare AI-generated and may contain inaccuracies β community contributions welcome- Custom language file hot-reloading has not been extensively tested under heavy production load
- This build has not undergone full QA β edge cases may exist
- Breaking changes may occur in future pre-releases without prior notice
Supplementary resources
| File | Type | Size | |
|---|---|---|---|
| InsureInv-1.3.0.jar | Sources jar | 170.61 KiB |
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:V8AkmJh1:gVpxCpz5"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:V8AkmJh1:gVpxCpz5"
}

