Custom Chat is a client-side Fabric mod for Minecraft that provides a configurable chat screen, styled local history, searchable logs, optional translation tools, rank tooltips, and a Twitch chat HUD.
Active development and support by the original author are paused indefinitely while the author focuses on other development directions and projects. The project is not declared permanently abandoned: this repository will remain public, issues may be opened, and pull requests may still be reviewed. Response times are not guaranteed, accepted pull requests do not imply that a release will be published, and there is no release schedule.
If development resumes, the source repository is intended to remain public.
| Component | Version / requirement |
|---|---|
| Custom Chat source | 1.0.8 |
| Minecraft | 1.21.11 |
| Java | 21 |
| Mod loader | Fabric Loader 0.18.4 or newer |
| Environment | Client only |
Fabric API and Fabric Language Kotlin are required. Mod Menu is optional; the built-in settings screen can also be opened with /customchat settings.
- Custom chat screen opened with
Uby default, with vanilla-compatible message and command sending. - Styled local history that preserves Minecraft
Text, including click, hover, insertion, item, and entity interactions. - Readable and indexed binary local chat logs, separated by server or single-player context.
- Optional message translation through MyMemory or a user-configured LibreTranslate-compatible service.
- Configurable rank tooltips that do not replace hover events supplied by a server.
- Optional Twitch IRC HUD with sending controls, connection status, test mode, and 7TV emotes.
- Multiple built-in UI themes and a built-in settings screen.
- Install Minecraft 1.21.11, Fabric Loader, Fabric API, and Fabric Language Kotlin.
- Download a compatible Custom Chat jar from the official Modrinth page, if one is available, or build the current source.
- Place the mod jar and its required Fabric dependencies in the Minecraft
modsdirectory.
Custom Chat is client-side only. Do not install it as a server requirement.
Clone the repository and use the checked-in Gradle Wrapper with JDK 21. The complete build logic, ProGuard rules, wrapper, and required libs/GardeLogStore-0.1.5-dev.jar dependency are part of the repository.
Normal build on Windows:
.\gradlew.bat buildNormal build on Unix-like systems:
chmod +x gradlew
./gradlew buildThe one-time chmod is needed because the wrapper currently has a non-executable mode in Git.
The normal remapped mod jar and sources jar are written to build/libs/custom-chat-1.0.8.jar and build/libs/custom-chat-1.0.8-sources.jar.
The public protected pipeline runs ProGuard, protects internal texture paths, embeds the required logging library, and verifies metadata, mixins, localization parity, the icon, obfuscation invariants, and secret-like patterns.
Windows:
.\gradlew.bat protectedJar --rerun-tasksUnix-like systems:
./gradlew protectedJar --rerun-tasksThe result is build/libs/custom-chat-1.0.8-protected.jar. Generated mappings and verification reports are under build/protection/. See docs/BUILDING.md for details.
Start at the complete developer documentation index.
- Architecture
- Development Setup and Workflow
- Project Structure
- Building
- Chat Pipeline
- UI and Rendering
- Logging and Local History
- Translation System
- Rank Tooltips
- Twitch HUD and 7TV
- Configuration
- Mixins
- Localization
- Testing
- Performance
- Protected Builds
- Troubleshooting
- Release Process
- Security Model
- GardeLogStore Integration
- Contributing
The primary configuration is stored in the Minecraft instance at config/custom-chat/custom-chat.json. Rank tooltip mappings are stored separately in config/custom-chat/rank-tooltips.json. The built-in settings screen is available through Mod Menu or /customchat settings, /customchat config, and /customchat options.
Configuration can contain private values such as a Twitch OAuth token or a LibreTranslate-compatible API key. Never commit or upload a personal configuration file.
Local history records incoming chat, game messages, outgoing chat, and outgoing commands. Readable logs are stored under config/custom-chat/logs/; indexed binary logs are stored under config/custom-chat/binary-logs/. The in-game logs screen can be opened from Custom Chat, settings, or an optional key binding.
Sensitive authentication-style commands are filtered by the logging implementation, but always review logs before sharing them publicly.
When translation is enabled, Shift + Right Click on a local-history message opens the translation screen. Translation is never sent automatically:
- Insert only inserts the translated text into Custom Chat.
- Copy only copies the result to the clipboard.
- Google Translate only opens the public Google Translate page in the browser.
The built-in providers are MyMemory and a user-configured LibreTranslate-compatible endpoint. The project contains no embedded translation API key and does not use hidden Google translation endpoints.
Rank tooltips can map server-specific glyphs or nickname colors to readable rank names. The enhancer preserves click events and refuses to overwrite an existing server HoverEvent. Mappings can be scoped globally or per server in rank-tooltips.json.
The optional Twitch HUD connects to Twitch IRC, can show connection state, supports controlled outgoing messages, and can render supported 7TV emotes. Configure the channel, username, and OAuth token only in local settings. Use a token with only the scopes required by the feature and never include it in an issue, log, screenshot, or commit.
The /customchat twitchhud command tree provides status, connect, disconnect, reconnect, test, clear, send, and 7TV diagnostic actions.
The interface currently ships eight locale files: English, Russian, Spanish, German, Polish, Brazilian Portuguese, French, and Simplified Chinese. Every localization change must keep identical key sets across all eight files. See docs/LOCALIZATION.md.
Pull requests may still be reviewed during the development hiatus. Keep changes focused, preserve Minecraft text styles and interactions, update every locale when adding a key, and run the relevant normal and protected builds. Read CONTRIBUTING.md before submitting a change.
Use GitHub Issues for reproducible bugs and proposals. Remove tokens, API keys, account details, server addresses, and other private information from logs before uploading them. There is no guaranteed response, fix, merge, or release schedule during the hiatus.
Custom Chat is licensed under GNU General Public License v3.0 only (GPL-3.0-only); see LICENSE.txt. The license permits use, inspection, modification, forks, and redistribution under its terms, including the source and copyleft obligations that apply when covered works are conveyed.
Copyright (c) 2026 Garde1.
The complete source and build pipeline are public at github.com/Gardeone12/CustomChat, including Java/Kotlin sources, resources, Gradle configuration, ProGuard rules, protected-build logic, checks, and the required vendored logging library.
Official new releases and active support are paused until the original author returns. Pull requests and issues remain available, but acceptance of a contribution does not automatically produce a release. This status may change in the future; the repository is intended to remain public either way.