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:
- More Chat History
- When Was That Again
- Don't Clear Chat History
- No Angled Brackets
- Clear Spam
- Chat Up!
- Compact Chat
- 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!
- For 1.19.2+:
- Installing either Mod Menu or Catalogue with Menulogue will allow you to edit the config in-game!
- Otherwise, if you still cannot access the config, open an issue on GitHub, and provide any logged errors if they exist.
- For 1.18.x: You need the latest versions of both Cloth Config and [Mod Menu] (https://modrinth.com/mod/modmenu/versions?l=fabric&c=release).
- Regardless of Minecraft version, you can always edit the config at
(directory)/config/chatpatches.json
.
- For 1.19.2+:
- 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 betrue
/false
not123
or"true"
). - If you still are having problems, open a new issue on GitHub.
- 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
- Can I use this in a modpack?
- Yes, as long as you credit me and/or link back to one of the official pages (GitHub, Modrinth, and CurseForge).
- 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!
- Download the latest ZIP (this page -> Code -> Download ZIP)
- Extract it to your desired folder
- Open a terminal/command prompt, then run
./gradlew build
(to build and collect jars for every Minecraft version, run./gradlew collectAll
) - [For a devenv]: open the folder in your IDE
- [For built jars]: navigate to
/versions/<version>/build/libs/
(or/build/libs/
if you rancollectAll
)
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!)
This mod is available under the GNU LGPLv3 license. Check out this page for information.
There are multiple different types of log file that can be uploaded, although they are all very similar. These are all located in (directory)/logs/
. In
order of most useful to least, these are the three main types:
debug.log
- Generated when the game is configured to output on theDEBUG
level. It isn't always present, but when it is, it almost always has a ton of extra information that can be critical to solving issues. This is a more detailed subset of thelatest.log
.crash-report-<date>-<time>.txt
- Generated when the game crashes; contains a lot of extra information not provided in the other two logs, however it is most useful when coupled with one of the others.latest.log
- The main log file that is generated every time the game is run. It constantly updates, and contains plenty of useful information on what the game is doing.
Generally, you should upload one .log
file and one crash-report-<date>-<time>.txt
file if you have them. Otherwise, just upload whatever you have that
is listed above. The only thing you shouldn't upload is both debug.log
and latest.log
, as the debug.log
has everything the latest.log
has and more.
TL;DR upload as much as you can, but don't upload both the debug.log
and latest.log
files.
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.
- Go to https://mclo.gs/
- Click the "Select a file" button, and select a file. OR Paste the contents of the log file into the text box.
- Click the "Save" button.
- 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.
- Open Prism Launcher.
- Click on your instance that contains the log you want to upload.
- Navigate to the "Minecraft Log" tab (or "Other logs" tab if it's not there)
- Click the "Upload" button when the log you want to upload is shown.
- 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.
- 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.
To access beta releases, you'll need a link that looks like this:
https://github.com/mrbuilder1961/ChatPatches/actions/runs/8310511511/ or
https://github.com/mrbuilder1961/ChatPatches/actions/runs/8310511511/artifacts/1332245802
- 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.
- Once the download is complete, open or extract the .zip file.
- You should see two folders,
libs
anddevlibs
. Open thelibs
folder. - Inside the
libs
folder, you should see a .jar file, and another file with the same name but instead ends with-sources.jar
. The .jar file is the mod itself, and the-sources.jar
file is the source code. - Move the .jar file, NOT the
-sources
file, to your mods folder. - If you have another version of Chat Patches already installed there, you can move it, rename the file extension to anything but
.jar
, or delete it. - 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.
Name | Default Value | Description | Lang Key |
---|---|---|---|
Timestamp toggle | true |
Should a timestamp in front of all messages show? | text.chatpatches.time |
Timestamp system messages | true |
Should a timestamp be added to system messages? Disable this to only add timestamps to player messages. Requires timestamps as a whole to be enabled. | text.chatpatches.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. | text.chatpatches.timeDate |
Timestamp decoration text | "[$]" |
The string of '&' + formatting codes and/or decoration text that create the timestamp. Requires '$' as a placeholder for the formatted time, as specified in the option above. | text.chatpatches.timeFormat |
Timestamp color | 0xFF55FF (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. | text.chatpatches.timeColor |
Hover toggle | true |
Should text appear stating a more detailed time description when you hover over the timestamp text in chat? | text.chatpatches.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. | text.chatpatches.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. | text.chatpatches.hoverFormat |
Hover text color | 0xFFFFFF (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. | text.chatpatches.hoverColor |
Message counter toggle | true |
Should 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. | text.chatpatches.counter |
Message 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. | text.chatpatches.counterFormat |
Message counter color | 0xFFFF55 (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. | text.chatpatches.counterColor |
Check message formatting | false |
Should 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. | text.chatpatches.counterCheckStyle |
CompactChat method toggle | false |
Should the message counter behave like the one from the CompactChat mod? | text.chatpatches.compactChat |
Message check distance | 0 |
The distance (inclusive) that messages will attempt to be compacted to. Setting this to '-1' will try the entire message list and '0' will try the max visible line count. | text.chatpatches.compactDistance |
Boundary toggle | true |
Should a boundary line show after chatting, leaving a world/server, and then joining another world/server later? | text.chatpatches.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. | text.chatpatches.boundaryFormat |
Boundary color | 0x55FFFF (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. | text.chatpatches.boundaryColor |
Chat Log toggle | true |
Should the chat be saved into a log so it can be re-added back into the chat in later game sessions? | text.chatpatches.chatlog |
Save interval (minutes) | 0 |
How 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. | text.chatpatches.chatlogSaveInterval |
Playername text toggle | true |
Should 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. | text.chatpatches.name |
Playername text | "<$>" |
The text that replaces the playername in §lvanilla§r chat messages. Requires '$' as a placeholder for the name, so vanilla's format is '<$>'. | text.chatpatches.nameFormat |
Playername color | 0xFFFFFF (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. | text.chatpatches.nameColor |
Maximum chat messages | 16384 |
The 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. | text.chatpatches.chatMaxMessages |
Override chat width | 0 |
The 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. | text.chatpatches.chatWidth |
Override focused chat height | 0 |
The 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. | text.chatpatches.chatHeight |
Chat shift offset | 0 |
Shifts 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. | text.chatpatches.chatShift |
Vanilla chat clearing | false |
Should chat messages clear after leaving a world/server like vanilla? Note that this completely erases the chat and effectively disables the chat log. | text.chatpatches.vanillaClearing |
Ignore hide message packet | true |
Should hide message packets that delete chat messages be ignored? | text.chatpatches.chatHidePacket |
Dynamic chat shifting | true |
Should the chat be shifted dynamically based on armor and health? If disabled, the chat is simply shifted according to the chat shifting constant. | text.chatpatches.dynamicChatShift |
Chat drafting toggle | false |
Should any text in the chat field persist after closing and reopening the chat? | text.chatpatches.messageDrafting |
Only invasive drafting toggle | false |
Should 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. | text.chatpatches.onlyInvasiveDrafting |
Context menu | true |
Should a context menu appear when right-clicking on chat messages? This allows for copying chat messages, replying to messages more easily, and more. | text.chatpatches.contextMenu |
Message outline color | 0x55FFFF (aqua) |
The color of the selection box that surrounds a chat message after right-clicking. | text.chatpatches.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. | text.chatpatches.contextReplyFormat |
Show search button | true |
Should the search button be shown? Note that if disabled, all search functionality will also be disabled. | text.chatpatches.search |
Search drafting toggle | true |
Should any text in the search field persist after closing and reopening the chat? | text.chatpatches.searchDrafting |
Prefix history search | false |
Should 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. | text.chatpatches.searchPrefix |
Case sensitive | true |
Should the search query only match text with the same capitalization? "abc" would match itself, "Abc", and "ABC"; case sensitive would only match "abc". | text.chatpatches.search.caseSensitive |
Formatting | false |
Should the search query allow matching text according to formatting codes? "abc" would match "abc" and "§e§labc§r"; with codes it would only match "abc" and not "§e§labc§r". Hex colors can be matched in the format "&#RRGGBB", however it no worky. | text.chatpatches.search.formatting |
Regex | false |
Should 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. | text.chatpatches.search.regex |
Log message structures | false |
When 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. | text.chatpatches.helpLogMessageStructures |
- Ko-Fi: https://ko-fi.com/obro1961