GitPedia

ChatPatches

A Minecraft client-side mod that touches up Minecraft's mundane chat, with configurability in mind!

From mrbuilder1961·Updated June 21, 2026·View on GitHub·

A Minecraft client-side mod that touches up Minecraft's mundane chat, with configurability in mind! The project is written primarily in Java, distributed under the GNU Lesser General Public License v3.0 license, first published in 2021. Key topics include: chat, client, cosmetic, essential, fabricmc.

Latest release: 1.21.7-217.6.16217.6.16
July 3, 2025View Changelog →

Fabric Mod
Latest Version

Build Status
GitHub code size

Curseforge Download
Modrinth Download
Join the Discord Server!

Chat Patches

Requires Yet Another Config Lib and a menu mod (see below) for 1.19.2+

A Minecraft client-side mod that touches up Minecraft's mundane chat, with configurability in mind!

It's most significant features include (but are not limited to):

  • Increasing the maximum amount of chat messages from 100 to 16,384
  • Adding a timestamp in front of all messages, formatted as [HOUR:MINUTE:SECOND] in pink text, with a tooltip that renders a complete date
  • Keeping chat history and previously sent messages across ALL worlds and servers
  • Allowing logging chat messages for restoring them later in future Minecraft sessions
  • Letting you modify vanilla player names to anything you want (ex. without the triangle brackets!)
  • Minimizing spam with a counter that shows how many duplicate messages have been sent in a row
  • Shifting the chat hud up by 10 pixels, so it doesn't overlap with the armor bar
  • Providing a menu to copy specific data (and the text of course!) from chat messages
  • Letting you search through all received messages with a search bar
  • YOU being able to toggle any of these features and MORE!

Many of these features were adopted or inspired from the following existing mods:

FAQ

  • What Minecraft version can I use this with?
    • The latest Fabric versions of Minecraft, plus 1.18.x. Quilt seemingly works out of the box, but I don't specifically develop versions for it.
  • Will you make it for (older Minecraft version)?
    • Unless it's after 1.18.x, then probably not. Any older version would only be considered if it was requested across the board, because I don't have the time for that!
  • Will you make this for Forge or NeoForge?
    • Yes, but it won't be ready for at least a few more months.
  • I found a bug/issue, what do I do?
    • First, make sure you're on the latest version of Chat Patches for your Minecraft version. If it doesn't go away, you can click on the Issues tab on this
      page, and if it hasn't been reported yet, you can create a new report! Make sure to fill out the entire thing as much as possible.
  • It says I need to install Fabric, but I already have it installed?
  • Do servers need this mod?
    • Nope! It's entirely client-side, meaning it won't do anything if installed on the server.
  • I can't access the config menu in-game!
    • <u>For 1.19.2+:</u>
    • <u>For 1.18.x:</u> You need the latest versions of both Cloth Config and Mod Menu.
    • Regardless of Minecraft version, you can always edit the config at (directory)/config/chatpatches.json.
  • How do I enable/disable/change X feature?
    1. Open the config menu. How you do this depends on the menu mod(s) you have installed, but it typically involves <kbd>Esc</kbd> -> Mods -> Chat Patches -> 3 sliders/Config button !
    2. Look through each category and see if the option is there - make sure to read the descriptions.
    3. If you still can't find it, scroll down on this page and see if it's listed in the option table. Note this refers to the latest version.
    4. If it's not in any of those, then check on the suggestion page; chances are someone already suggested your idea.
    5. Finally, it's not in the mod yet, so open a suggestion!
  • My config is broken/not working!
    • When you load one of the more recent mod versions, it makes a creates a new file with your old settings and resets the main file. You can access this
      copy at (directory)/config/chatpatches_old.json. By then opening both the new and old configs at the same time, you can copy and paste over the values.
      Make sure the settings have correct inputs (ex. time should be true/false not 123 or "true").
    • If you still are having problems, open a new issue on GitHub.
  • Can I use this in a modpack?
  • Can I re-upload this mod elsewhere?
    • No, unless you have explicit permission from me (OBro1961), modify the mod in an undisputable way, or any download links used direct to one of the official
      pages (see above). If you're unsure, message me on Discord (@obro1961) about it.
  • How do I do XYZ?
    • If the answer you're looking for isn't anywhere here or in the config, check the #Help section located below.
    • If you still can't find it, ask in the Discord!

Setup devenv / Build latest jars

  1. Download the latest ZIP (this page -> Code -> Download ZIP)
  2. Extract it to your desired folder
  3. Open a terminal/command prompt, then run ./gradlew build (to build and collect jars for every Minecraft version, run ./gradlew collectAll)
  4. [For a devenv]: open the folder in your IDE
  5. [For built jars]: navigate to /versions/<version>/build/libs/ (or /build/libs/ if you ran collectAll)

Localization and Translation

If you would like to help translate Chat Patches into other languages, you can:

  • Create a pull request that adds, corrects, or updates a language file (preferred)
  • DM me on Discord (@obro1961)

Once you contribute, join the Discord server so you can receive your complementary Contributor and Translator roles!
(Or join for extra info and status updates!)

License

This mod is available under GNU LGPLv3 as a legal compromise
between GPL (my ideal choice) and Minecraft as a product.

Despite this not being noted in the license, the following restrictions apply to all versions of this project ("The Software") and its derivatives:

  1. The Software must list or credit the developer(s) and contributor(s) in a clear and accessible manner.

  2. The Software and any modifications made to it may not be used for the purpose of training or improving machine learning algorithms,
    including but not limited to artificial intelligence, natural language processing, or data mining. This condition applies to any derivatives,
    modifications, or updates based on the Software code. Any usage of the Software in an AI-training dataset is considered a breach of this License.

  3. The Software may not be included in any dataset used for training or improving machine learning algorithms,
    including but not limited to artificial intelligence, natural language processing, or data mining.

I am working to find a license that includes these terms in them intrinsically, but for now this is the best option to avoid creating a custom, niche license.

Help

How to upload log files [log-info]

There are multiple different types of log file that can be uploaded, all located in (directory)/logs/. In order of most useful to least:

  1. latest.log - The main log file that is generated every time the game is run. I personally consider it the most useful because it often contains some information
    about what was going on before the issue or crash occurred.
  2. crash-report-<date>-<time>.txt - Generated when the game crashes. It contains a lot of extra information not provided in the other logs, but it typically lacks
    context of what happened before the crash.
  3. debug.log - Generated when the game is configured to output on the DEBUG level. It isn't always present, but it is extremely verbose and contains tons of extra
    information, albeit at the cost of a LOT of bloat. Although this log can have more relevant information than the latest.log, it often just takes up more space.

Generally, you should upload one .log file and one crash-report-<date>-<time>.txt file. If you need more help, feel free to ask!

Now that you have the files, simply submitting them to https://mclo.gs/ will give you a link that you can share with me and others to help diagnose your issue.
It is really the only site I use, because it provides a lot of useful tools both for me and for you. One of those being that it censors many instances of
potentially identifiable information, such as your computer's username and IP address, and it allows filtering errors and warnings!

To upload the log(s) without Prism Launcher: [log-upload]

  1. Go to https://mclo.gs/
  2. Click the "Select a file" button, and select a file. OR Paste the contents of the log file into the text box.
  3. Click the "Save" button.
  4. Wait for a moment, and it will redirect you to your uploaded log file. Copy the URL from the address bar and paste it wherever you were asked or need to
    share it.

With Prism Launcher: [log-upload-prism]

  1. Open Prism Launcher.
  2. Click on your instance that contains the log you want to upload.
  3. Navigate to the "Minecraft Log" tab (or "Other logs" tab if it's not there)
  4. Click the "Upload" button when the log you want to upload is shown.
  5. Click the "Yes" button in response to the security prompt. If you're worried about the security of the log, you can always censor it yourself before
    uploading it.
  6. The log should now be uploaded, and you can click the blue underlined text to view it in your browser. The URL is automatically copied to your clipboard,
    so you can now share it wherever you were asked or need to.

How to access beta releases [beta-install]

To access beta releases, you'll need a link that looks like this:

https://github.com/mrbuilder1961/ChatPatches/actions/runs/1234567890/ or

https://github.com/mrbuilder1961/ChatPatches/actions/runs/1234567890/artifacts/0987654321

Now, follow these steps:

  1. Click on the link. If it doesn't instantly download, scroll down, and under the "Artifacts" section, click on "jars" and the download should start. If the text isn't clickable, make sure you're logged in to GitHub. Otherwise, click on build -> ubuntu-latest (if multiple runs are present) -> capture build artifacts; the last line should have a download link
  2. Once the download is complete, open or extract the .zip file.
  3. You should see two folders, libs and devlibs. Open the libs folder.
  4. Inside the libs folder, you should see multiple .jar files for different Minecraft versions.
  5. Move the file applicable to your version to your mods folder. If your specific version is not present but nearby ones are, pick the newest between them (ex. you need 1.21.2, but only 1.21.1 and 1.21.4 are present, so use the file for 1.21.4)
  6. If you have another version of Chat Patches already installed, you can move it, rename the file extension to anything but .jar, or delete it.
  7. Now you should be good to go! Launching the game should now load the beta version. If you experience any issues, make sure to report them as soon as
    possible wherever you were given the link (here on GitHub or the Discord).

(taken from the Fabric Discord bot, not written by me!)

A binary search can be used to quickly find a specific mod causing trouble, which can be especially useful when logs don't give a conclusive answer to your issue.

Start by removing or disabling half of your mods, then test if the problem still occurs. If it does, remove half of the remaining mods and test again. If it doesn't, add back half of the mods you just removed.

Keep in mind you don't have to stick strictly to halves each time, and may have to enable some library mods like Fabric API out of order.

By repeating this on an increasingly smaller set of mods, you'll find the problematic mod within a few iterations.

Make sure you leave Chat Patches and its dependencies installed when you're looking for the problematic mod, otherwise it won't do anything to help diagnose the issue.

Config option table

NameDefault ValueDescriptionLang Key
TimestamptrueShould a timestamp in front of all messages show?time
Timestamp system messagestrueShould a timestamp be added to system messages? Disable this to only add timestamps to player messages. Requires timestamps as a whole to be enabled.timeSystemMessages
Timestamp format text"HH:mm:ss"The text that is formatted into a timestamp. See the Help > Date & Time Formatting section for more information.timeDate
Timestamp decoration text"[$]"The string of '&' + formatting codes and/or decoration text that create the timestamp. '$' is a placeholder for the formatted time, as specified in the option above.timeFormat
Timestamp color0xFF55FF (light_purple)The color that fills in the unformatted areas of the resulting timestamp. To use this with other formatting codes, use '&r' in the decoration text.timeColor
Timestamp hover texttrueShould text appear stating a more detailed time description when you hover over the timestamp text in chat?hover
Hover format text"MM/dd/yyyy"The text that is formatted into a longer date/time string. See the Help > Date & Time Formatting section for more information.hoverDate
Hover decoration text"$"The string of '&' + formatting codes and/or decoration text that create the hover description. Requires '$' as a placeholder for the formatted time, as specified in the option above.hoverFormat
Hover text color0xFFFFFF (white)The color that fills in the unformatted areas of the resulting hover text. To use this with other formatting codes, use '&r' in the decoration text.hoverColor
Duplicate message countertrueShould a message counter show after messages to indicate multiple duplicates were sent? Note that this is required to be enabled for the CompactChat options to work.counter
Counter text"&8(&7x&r$&8)"The text that's added to the end of a message to indicate multiple duplicates were sent. Requires '$' for the number of duplicates, also supports '&' + formatting codes. Still applies to the CompactChat method, if enabled.counterFormat
Counter color0xFFFF55 (yellow)The color that fills in the unformatted areas of the resulting duplicate counter. To use this with other formatting codes, use '&r' in the decoration text option. Still applies to the CompactChat method, if enabled.counterColor
Check message formattingfalseShould the message counter check formatting codes when checking for duplicates? For example, "§e§labc§r" and "abc" would NOT be considered duplicates if true. Still applies to the CompactChat method, if enabled.counterCheckStyle
CompactChat method togglefalseShould the message counter behave like the one from the CompactChat mod and check the amount of messages specified in the option below for duplicates?compactChat
Message check distance0The distance (inclusive) that messages will attempt to be compacted to. Setting this to '0' will try the max visible line count (how many you can see at once).compactDistance
Boundary linetrueShould a boundary line show after chatting, leaving a world/server, and then joining another world/server later?boundary
Boundary text"&8[&r$&8]"The text that is formatted and used for the boundary line. Supports '&' + formatting codes, '\n' for new lines, and requires '$' as a placeholder for the world name.boundaryFormat
Boundary color0x55FFFF (aqua)The color that fills in the unformatted areas of the resulting boundary line. To use this with other formatting codes, use '&r' in the decoration text option.boundaryColor
Chat logtrueShould the chat be saved into a log so it can be re-added back into the chat in later game sessions?chatlog
Save interval (minutes)0How long should the chat log wait before saving to disk? This is in minutes, the minimum is 1. Set to 0 to only save when paused (warning: setting to <5 will lag a lot). Always saves on exit.chatlogSaveInterval
Custom playername texttrueShould the playername be modified in chat messages? Turning this off will make the playername appear as it does in vanilla, and disable both of the following options. Disable this if you have conflicting plugins that modify the playername in chat.name
Playername format"<$>"The text that replaces the playername in vanilla chat messages. Requires '$' as a placeholder for the name, so vanilla's format is '<$>'.nameFormat
Playername color0xFFFFFF (white)The color that fills in the unformatted areas of the resulting formatted playername. To use this with other formatting codes, use '&r' in the decoration text option.nameColor
Maximum chat messages16384The max amount of chat messages allowed to save. Vanilla caps it at 100, this mod can increase it up to 32,767. Keep in mind a higher max equals higher memory usage.chatMaxMessages
Override chat width0The width of the chat box. This overrides vanilla's default and allows for a much larger width. Set to 0 to use the vanilla setting and not override it.chatWidth
Override focused chat height0The focused height of the chat box. This overrides vanilla's default and allows for a much larger height. Set to 0 to use the vanilla setting and not override it.chatHeight
Chat shift offset0Shifts the chat interface according to the provided value (negative values shift downward). Default is 0 with dynamic shift enabled; to emulate vanilla behavior make sure to disable dynamic shift.chatShift
Dynamic chat shiftingtrueShould the chat be shifted dynamically based on armor and health? If disabled, the chat is simply shifted according to the chat shifting constant.dynamicChatShift
Vanilla chat clearingfalseShould chat messages clear after leaving a world/server like vanilla? Note that this completely erases the chat and effectively disables the chat log.vanillaClearing
Ignore hide message packettrueShould hide message packets that delete chat messages be ignored?chatHidePacket
Chat draftingfalseShould any text in the chat field persist after closing and reopening the chat?messageDrafting
Only invasive draftingfalseShould the text in the chat field only persist when chat is closed unexpectedly? For example when chat is closed by the server opening a GUI, the player is moved to another dimension, or the player dies. On 1.21.9+, this is natively supported via 'Save Unsent Chats' in the vanilla chat settings.onlyInvasiveDrafting
Context menutrueShould a context menu appear when right-clicking on chat messages? This allows for copying chat messages, replying to messages more easily, and more.contextMenu
Show message deletion warningtrueShould a warning screen appear when you try to delete a message? Be aware that a deleted message cannot be restored.contextDeletionWarning
Play message deletion sizzletrueShould a lava sizzle sound cue be played after deleting a message?contextDeletionSizzle
Message outline color0x55FFFF (aqua)The color of the selection box that surrounds a chat message after right-clicking.contextOutlineColor
Reply text format"/msg $ "The text that is filled into the chat box after right-clicking on a chat message and clicking on the 'Reply' button in the context menu. Requires '$' as a placeholder for the message sender's name.contextReplyFormat
Show search buttontrueShould the search button be shown? Note that if disabled, all search functionality will also be disabled.search
Search draftingtrueShould any text in the search field persist after closing and reopening the chat?searchDrafting
Prefix history searchfalseShould searching through sent history filter messages with the same prefix behind the cursor? This allows for quicker autocompletion of previous history messages that start with the same string. Vanilla disables this, instead using immediate history only.searchPrefix
Case sensitivetrueShould the search query only match text with the same capitalization? "abc" would match itself, "Abc", and "ABC"; case sensitive would only match "abc".search.caseSensitive
RegexfalseShould the search query be used as a regular expression? To learn how to use regex, see the help section in the config. Note that Java regex requires a full match, so remember to put "^." in front and ".$" at the end.search.regex
Log message structuresfalseWhen enabled, logs the structure of all modified messages. Useful for diagnosing chat issues, but quickly inflates the log size, so this is disabled by default.logMessageStructures

15% off your first month with code OBRO15!

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from mrbuilder1961/ChatPatches via the GitHub API.Last fetched: 6/21/2026