1.0.0-beta.2
Compatibility
Required content
Changes
Compatibility update for Verity JE 6, which restructured the classes this addon hooks into. Requires Verity JE 6.0+ and YACL 3.6+. Beta.1 no longer loads against Verity 6 at all, since its mixin targets were renamed.
Added
- Offline Voice now uses a native file picker instead of a typed path. The field is
replaced by an "Import .onnx..." button that opens the operating system's own file
dialog, filtered to
.onnxfiles. - The Offline Voice button reflects the current selection. With no voice chosen, it reads "Import .onnx..." in gray italics. Once a voice is selected, it displays the file name in plain white text instead.
Fixed
- All three overrides (Chat, Cloud Voice, Offline Voice) retargeted to Verity 6's new
class layout. Verity 6 moved chat handling into a new
LLMBuilderclass, TTS handling into a restructuredAiAPI, offline voice intoLocalTTSBuilder, and the config screen intoVerityConfigUI. Same three features as beta.1, same fields, rebuilt against the new classes. - Chat override now forces Verity's
LLMBuilderinto its OpenAI dispatch branch. Verity 6 added its own AI Provider setting, but it is a fixed dropdown (Gemini, Groq, OpenRouter, Mistral, Ollama, OpenAI). For four of those six choices, Verity hardcodes the real endpoint internally and ignores whatever is typed into its own endpoint field. Only Ollama and OpenAI honor a free form endpoint, so this override forces the OpenAI branch and feeds it this addon's own Endpoint URL, API Key, and Model Name, giving a genuinely arbitrary OpenAI compatible endpoint regardless of Verity's dropdown. - Cloud Voice override rebuilt against Verity 6's
playEndpointTTS. Verity 6's own cloud voice options still do not support a keyed custom endpoint: Groq's endpoint is hardcoded, and its Kokoro option sends no API key at all (self hosted, keyless only). This override takes over the whole request when enabled, using its own TTS Endpoint URL, API Key, Model, and Voice fields. - Fixed a game crash when opening the file picker. The initial implementation used a Swing file chooser, which conflicts with Minecraft's own window and rendering system on some setups. Replaced with LWJGL's native file dialog, which is already bundled with the game for this exact purpose.
Known limitations (beta)
- Same limitations as beta.1 below, now against Verity 6's equivalent settings and paths.
- Tied to Verity 6's internal class and method names. A future Verity update could
rename or restructure these again. Mixins are set to
defaultRequire: 1, so an incompatible update fails loudly at launch rather than silently ignoring your settings.
[1.0.0-beta.1] — 2026-07-28
First public release. Requires Verity JE 5.0+ and YACL 3.6+ (YACL is already required by Verity JE itself, so nothing extra to install if Verity is working).
Added
-
Verity JE Extra tab, appended to the end of Verity's own config screen. Three groups, each gated behind its own tickbox — fields stay greyed out until enabled, and nothing is touched in
verity-client.tomlunless you turn a group on. -
Chat — Override Verity JE AI Settings Redirects Verity's chat requests to any OpenAI-compatible endpoint (OpenRouter, a local LiteLLM/Ollama server, a different hosted model, etc.) instead of the GROQ/OPENROUTER choice in Verity's own settings. Fields: Endpoint URL, API Key, Model Name.
-
Cloud Voice — Override Verity JE TTS Settings Redirects Verity's cloud speech requests independently of the chat endpoint, with its own API key — cloud voice no longer has to share Verity's single
apiKeywith whichever chat provider you've pointed at. Defaults match Verity's stock Groq/Orpheus setup exactly, so turning this on with unmodified defaults changes nothing. Fields: TTS Endpoint URL, TTS API Key, TTS Model, TTS Voice. -
Offline Voice — Use A Custom Offline Voice Points Verity's built-in CPU speech engine at a Piper VITS model of your choosing, in place of the bundled
en_US-ryan-medium. Fully offline — no server, no key, no network call. Expects the standard sherpa-onnx Piper layout (tokens.txtandespeak-ng-data/alongside the.onnx). Falls back silently to Verity's bundled voice if the path is empty or anything's missing. Field: Voice Model Path.
Known limitations (beta)
- Voice input is not covered. Whisper transcription (
audio/transcriptions) is built by Verity outside the code path this mod hooks, so it always uses Verity's ownapiKeyagainst Groq regardless of any override here. - Cloud Voice only fires when Verity's own
useNativeTtsanduseLocalTtsare both off — that priority order is Verity's, not something this mod changes. - Verity refuses cloud speech outright when
aiProvider = "OPENROUTER"in its own settings, independent of anything this mod does. LeaveaiProvider = "GROQ"if you want cloud voice; the Chat override still redirects the LLM regardless of that field. - Tied to Verity 5.7.3's internal method names, including one synthetic lambda
(
lambda$playTTS$5) that a future Verity update could rename or restructure. Mixins are set todefaultRequire: 1, so an incompatible update fails loudly at launch rather than silently ignoring your settings — it will not fail quietly. - API keys are stored in plain text in
config/verityjeextra.json, same as Verity's own config storage.
Building
No Gradle, no ForgeGradle, no downloads — compiles directly against the jars an
existing Modrinth Forge 1.20.1 install already has on disk. See README.md.
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:wjhKNEct:o9lYxLY5"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:wjhKNEct:o9lYxLY5"
}



