Skip to content

mrbuilder1961/ChatPatches

Repository files navigation

Fabric Mod Latest Version

Build Status GitHub code size

Curseforge Download Modrinth Download Join the Discord Server!

Chat Patches (formerly Where's My Chat History)

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!
  • 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 the GNU LGPLv3 license. Check out this page for information.

Help

How to upload log files [log-info]

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:

  1. debug.log - Generated when the game is configured to output on the DEBUG 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 the latest.log.
  2. 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.
  3. 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.

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/8310511511/ or

https://github.com/mrbuilder1961/ChatPatches/actions/runs/8310511511/artifacts/1332245802

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.
  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 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.
  5. Move the .jar file, NOT the -sources file, to your mods folder.
  6. 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.
  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).

How to find mod(s) causing compatibility issues [binary-search]

(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

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

Sponsor me!

15% off your first month with code OBRO15!