- Fixed teams with prefixes or suffixes preventing playernames from formatting
- Synced with the in-progress
omnivers
branch:- Simplified the way messages are condensed (when the dupe counter is enabled) and fixed some bugs relating to it
- Added the
chatName
option, which toggles the modification of playernames in chat messages. On by default, but can be turned off to prevent formatting issues with other mods or plugins - Added the search settings to the regular config, so they can be saved and loaded like other options. Note that they are still toggled in the chat screen, like before (#149)
- Fixed the search bar not searching properly and the text color not updating properly
- Updated the contributors list in the
fabric.mod.json
- Lots of internal code refactoring and cleanup
- Now compatible with 1.21.4! Only ONE code change was made and it's super basic :D (#212)
- Updated
pt_br
translations thanks to demorogabrtz! (#209) - Fixed players on colored teams not having their names colored when far away (#202)
- Added a better but still odd preemptive fix for random
ConcurrentModificationException
crashes (#181)- Report any bugs relating to this if they occur, as I'm kinda in the dark about it
- Dev notes:
- Removed the now redundant
Flags
class, which helped some random parts of the message modification process that didn't actually need to be out of scope - Removed the casting methods in the two
Accessor
interfaces: we don't need an extra method call just for a cast- Also renamed all variable references of
ChatHudAccessor
strictly tochat
for consistency
- Also renamed all variable references of
- Cleanup and consistent formatting
- Now logs errors from
ChatLog#deserialize
andChatPatches#jsonOps
like all other errors - Synced with cleanup stuff already present on the
omnivers
branch
- Removed the now redundant
- Updated to 1.21.2-3
- Fixed blank messages being sent instead of Xaero's Minimap waypoints (#158)
- Should also fix any issues in the special case where a message is modified in between receiving and storing it
- Synced
zh_cn.json
with the current English translation, thanks suoyukii! (#203) - Dev notes:
- The config will now always appear open-able regardless of installed mods, but will instead prompt the user to install YACL (1.19 or newer) or Cloth Config if it's not already installed. However, this is currently useless as YACL is required in newer versions, and is more for backwards compatibility
- Fixed the chat log taking insane amounts of time to read (#191)
- Fixed the copy menu staying open when other chat widgets were focused/interacted with (#165)
- Gradle 8.10
- Fixed the chat log enchantment registry crash, thanks ArkoSammy12! (1.20.5+, #180)
- Now requires the user to be in-game to save or load
- Clarified this new requirement in the description
- Now logs how long loading and saving takes
- Removed
MinecraftClientMixin
, which may result in losing data on some crashes whenchatlogSaveInterval
is set to zero - Removed debug logpoint in
ChatUtils#tryCondenseMessage
- Fixed the 'Copy JSON String' copy menu button sometimes causing the game to crash, should now instead log an error and copy a warning
- Fixed boundary lines instantly rendering when the chat is opened (#151)
- Removed literal newline in
fabric.mod.json
(#159) - Fixed the
shiftChat
option not shifting hover events (#172) - Added a basic crash prevention mechanism for
ConcurrentModificationException
s while saving the chat log (if it works, #181) - Fixed the search bar rendering over the input suggestor (#186)
- Simplified part of the chat shifting process in
ChatHudMixin#moveChatLineY
, resolving an incompatibility with ChatShot (#187) - Added an option to modify the height of the chat box for larger screens (#190)
- Added support for 1.21.1!
- Note: There was technically TWO code privatizations in 1.21.1, but they had simple fixes
- Added Korean translation from Nooiee! (#193)
- Fixed team messages showing up blank and throwing an error (#199)
- Modified messages should now be used even if errors occurred, so long as they're still valid. This might be undone in the future based on feedback
- Fix incompatibility with 1.20.5-6 (we were THIS close) (#177)
- Implement chat log codecification from the WIP branch (#178)
- Tweaked a part of
ChatUtils#tryCondenseMessage
to hopefully prevent some messages from throwing annoying errors
- Ported to Minecraft 1.21!
- Dev notes:
- Since this is the first release for 1.21, and because on the surface at least this appears to be compatible with 206.6.5, the source branches will be split just in case any breaking issues arise later
/!\ WARNING /!\: THIS RELEASE SHOULD BE COMPATIBLE WITH MINECRAFT VERSIONS 1.20.5-1.21, BUT ERRORS MAY OCCUR
- Actually updated to Java 21 and Gradle 8.7
- Fixed copy menu rendering behind other chat elements
- Otherwise identical to
204.6.5
- Dev notes:
- Switched some references from
Text.Serialization
toTextCodecs.CODEC
due to weird new registry stuff - Minecraft made adding messages into the chat use a more modular system, however this makes future unified jar plans more difficult
- Switched some references from
- Fixed certain messages from showing up blank and logging
ArrayIndexOutOfBoundsException
s (#156) - Fixed normal duplicate messages not having a counter (1.20.4 only, #157)
- Fixed CompactChat duplicate messages not having a counter (1.20.2-4)
- Added a help section to the README, which currently explains how to upload log files and access beta versions fresh from Actions
- Fixed errors with regex input on the search screen not updating the text color
- Made ChatSearchSettings save when the chat screen is closed then reopened; resets on game restart
- Fixed team name colors, prefixes, and suffixes being ignored when
chatNameFormat
is customized (#115) - Added a new runnable config option to reload the config from disk
- Added a minor optimization to the way messages are modified to largely simplify the process in a few scenarios [prepub impl]
- Switched the text in the search settings screen to use pre-bundled translations (ON/OFF instead of a visual switch)
- Fixed the Copy String > Copy Raw String button in the copy menu removing &<code> formattings
- Dev notes:
- Changed the
CONFIG_PATH
andCHATLOG_PATH
variables to use thePath#resolve(String)
method instead of concatenating strings - Removed some (now) redundant file constants and references (in
StringTextUtils
andConfig
) - Condensed most
make
... methods inConfig
to be less repetitive formatPlayername(GameProfile)
now accounts for team metadata as mentioned in the #115 fix- Capitalized some static final variables
- Changed some stuff about how the config is initialized, read, and written to disk
- Refactor StringTextUtils to TextUtils
- Restructured the powerhouse
ChatHudMixin#modifyMessage(Text, boolean)
method to be more modular with message reconstruction - Moved the bulk of the
modifyMessage
method to ChatUtils to help development and greatly ease future troubleshooting - Created a new
ChatUtils#getArg(..)
method to avoid the elusiveClassCastException
s that kept getting thrown - Tweaked the
MessageHandlerMixin#cacheGameData
method to use built-in methods instead of rewriting the same thing - Removed the
VANILLA_MESSAGE
matcher inChatUtils
because it was redundant
- Changed the
- Should be compatible with Quilt again! (requires Loader 0.23.0+)
- Note that Chat Patches still isn't developed directly for Quilt, issues may still arise
- Added the
counterCheckStyle
option, which controls checking style data when condensing duplicate messages (#144) - Added the
chatNameColor
option, which overrides the color of playernames in vanilla chat messages. (#133) - Removed MoreChatHistory as incompatible, due to MixinExtra's compatibility injectors! (it's actually been compatible for a while, but I forgot to remove it)
- Dev info:
- Overhauled the publishing system for CurseForge and Modrinth, revived the GitHub Releases channel, and added a webhook to the Discord server to automatically post new releases! Now only uses modmuss50-publish-plugin, which is much cleaner and easier to use
- Moved most volatile Gradle variables to
gradle.properties
to make it easier to change them - "Synced" some parts of the
build.gradle
file with the fabric-example-mod template to fix old warnings and keep it up to date - Added two specific methods to
StringTextUtils
for use with dupe counter methods, to work with the newcounterCheckStyle
option - Removed the weird returning message reconstruction segment from
ChatUtils#getCondensedMessage(Text, int)
because it was actually unnecessary! - Added some uncertain notes about certain aspects of the dupe counter process
- Fixed log spam with
UnsupportedOperationException
s when loading the chat log (thanks ArkoSammy12!) - Fixed the chat log crashing the game when saving a message that opens a file when clicked (#138)
- Note: these two only apply to Minecraft versions 1.20.3 and above
- Fixed a couple issues with the Smooth Scroll mod thanks to @SmajloSlovakian! (#139, #141)
- Switched
chatWidth
's YACL max value to the game window's width. Note: this can be incorrect if the game window is resized after the config screen is opened. To fix this, just open the config screen when the game window is at the desired size. - Fixed messages starting with a newline not being copyable
- Dev stuff:
- Change source Java version to 21 and update Gradle to 8.5
- Replaced weird
ChatLog#serialize(boolean, String)
method with#backup()
- Updated
Config#writeCopy()
to use the same thought process asChatLog#backup()
Dev note: many little changes have not been synced to this branch yet, as 1.20.2 is still the active-development version.
- Ported v203.6.0 to 1.20.4
- Remove Gradle integration system, it was completely unnecessary and unused
| /!\ WARNING: NOT CURRENTLY SUPPORTED ON QUILT DUE TO FABRIC LOADER 0.15.0
/!\ |
- Ported v202.6.0 to 1.20.3
| /!\ WARNING: NOT CURRENTLY SUPPORTED ON QUILT DUE TO FABRIC LOADER 0.15.0
/!\ |
- Removed MixinExtras from dependencies because it's automatically bundled with the Fabric Loader since
0.15.0
!- /!\ WARNING: NOT CURRENTLY SUPPORTED ON QUILT DUE TO THIS! /!\
- Add "Only Invasive Drafting" option (#131 -JustAlittleWolf)
- Improve mod compatibility with the dupe counter injector + teeny optimizations (#132 -JustAlittleWolf)
- Extracted
chatLog
to the new ChatLog tab in the config - Added a new config option to the tab:
chatLogSaveInterval
, which configures the timer for saving the chat log to disk - Added new executable buttons to the chat log tab to manipulate it in game: Clear all messages, Clear sent messages, Clear regular messages, Load, Save, and Backup
- Additionally, the chatlog will now only actually write to disk if it has been modified since the last save (#134)
- Inform users that Catalogue + Menulogue works as a substitution for ModMenu (#42)
- Removed an unused variable from
ChatSearchSetting
- Fixed some weird messages and game events formatting incorrectly, such as the Open-to-LAN message
- The ChatLog now removes the oldest message and adds the newest one once the max limit is reached (#130)
- Additionally, the ChatLog now only keeps and loads the newest data when loading a chat log file that is over the limit
- Cleaned up other unnecessary code in
ChatLog
- Improve performance when using compact chat (#118 -JustALittleWolf)
- Fix longer messages sometimes not compacting properly (#123 -JustALittleWolf)
- Make ModMenu a recommended dependency instead of a required one (#120)
- Extract textures to individual
.png
s to align with Minecraft's new sprite system - Removed an unused button sprite
- No longer writes the
chatlog.json
file to disk if the ChatLog is empty - Fixed the Copy Raw String button including formatting data (#122)
- YACL images now load without crashing the game! Enjoy preview images right from the get-go!
- Fixed #108, thanks replaceitem!
- Fixed some minor grammar issues in the
fabric.mod.json
file - Reverted the
client
split sources change from201.5.4
because it was causing issues and is unnecessary - Fix some mods that inject into
ChatHud.clear()
not working - Changed
ChatHudAccessor
prefixes
- Fixed right-clicking on chat messages not showing the copy menu (fixed #106, closed #107)
- Added
ja_jp
translations (huge thanks to co-91!) - Fixed "Copy Raw String" rarely formatting incorrectly
- Switched the internal main directory from
main
toclient
to match the expected split sources standard
-
Better #86 fix, also with auto-complete suggestor not going up when pressing the up key (#101)
-
Fixed elements added by other mods are not clickable
-
Fixed Tweakeroo message draft not working
-
Added Ignore Hide Message Packet option toggle (
chatHidePacket
) -
Fixed chat focus bug again, inline with #86 and #101 above
-
Re-implemented another part of the overall fix for #99 (checks that
chatNameFormat
was modified before applying it) -
Removed all
cps$
prefixes as mixin will automatically add them -
Swapped the copy menu's Copy Raw String and Copy Formatted String functions. Copy Formatted String now copies the message with <&?> codes, although they do sometimes redundantly repeat.
-
Fixed a large lag spike that would occur when opening the chat with a lot of messages loaded (#102)
- Note: This will still happen if you have something in the search field and search drafting is enabled. However, this is not considered a bug because lag is to be expected when searching through large lists of data.
-
Added a little more documentation
-
I guess I lied about the version numbers thing... doesn't always make sense like in this situation
-
Fixed invalid mixin signature (not sure why my plugin to avoid this problem wasn't working...)
-
Ported
194.5.1
to 1.20 (#92) -
From now on, all mod versions with the same features will use identical version numbers (excluding the Minecraft version part) to make it easier to track changes across versions
- Removed compatibility with
1.19.3
because YetAnotherConfigLib 3.x doesn't support it - Added zh_cn.json translations (HUGE thanks to SJC08!)
- Show Me What You Got now works with Chat Patches again! (#88)
- Now some odd formatting mods/plugins should work with Chat Patches again (#96)
- Fixed a couple README formatting issues
- Changed the default config value for
counterFormat
to use '&r' socounterColor
will appear to apply right out-of-the-box; same fix applied toboundaryFormat
forboundaryColor
- Updated the changelog snippet function in
build.gradle
that automatically populates new version descriptions when publishing - Added some more loggers in
ChatLog
so if it runs out of space it should tell you... (open any issues if it randomly clears the log please!) - Switched the preview image file types from .jpg to .webp to reduce file size, and because YACL (is supposed to) support it well
- Unfortunately YACL still is crashing with the images, so they remain disabled. I've opened up an issue on the YACL repo, so hopefully it will be fixed soon! Note: this is why the file size of the mod is much higher now.
- Changed the "Chat HUD" config category to "Chat Interface" again, and split the options within it into 2 subcategories: "Heads Up Display (HUD)" and "Screen" for more organization
- You can now use vanilla chat clearing (
vanillaClearing
) if you really want.. (#85) - Fixed the up arrow switching focus to the search field while also accessing sent message history? (#86)
- Completely revamped the method to copy messages! Instead of the old and clunky
/copymessage
command, you just right-click on a message and a menu will appear with a multitude of options to access data contained within the message. For example, you can copy the raw message, a json representation, or even any links within the message! (#77, #87) - There are two config options associated with the new copy menu:
copyColor
andcopyReplyFormat
which control the color of the selection box around the clicked message, and the text that is put into the chat box when clicking on "Reply", respectively - All messages now store their time received in the timestamp's insertion text, which just means if you shift-left click on the timestamp text, it will insert the unix timestamp of the received message into the chat box
- Removed the
/copymessage
command and its translations - Added
fr_fr
translations (huge thanks to Calvineries!) - Refactored some config options and their translations (
saveChat
=>chatLog
,nameFormat
=>chatNameFormat
, andmaxMsgs
=>chatMaxMessages
) to work properly with the new subgroups - Fixed the dupe message adder method breaking when a boundary line was the last message sent
- You can now choose to use a CompactChat style dupe counter, which is explained in the config (#67)
- There is now a CompactChat subgroup under the dupe counter category in the config, which provides
counterCompact
for the toggle andcounterCompactDistance
for how many messages to check for duplicates - Updated YetAnotherConfigLib to 3.0.3-fabric, which overhauls the config UI to use a new tab system, but more notably has image previews now! For
this reason along with popular opinion, YACL is now required to load Chat Patches (#91)
- WARNING: The images currently crash the game, so they've been temporarily disabled until a bugfix is released. Check back in a week or so for the hotfix!
Misc changes and developer stuff:
- Added some more detailed JavaDocs overall
- The old method that was used to condense duplicate messages was overhauled with a slightly faster implementation that doubles as a way to use the
CompactChat style dupe counter. The original method was moved to
ChatUtils#getCondensedMessage(Text, int)
and instead removes the old message, rather than updating the old message and ignoring the new one - Also cleaned up the
YACLConfig
class a little more to use less "magic numbers" and more clear method calls - Added the
[Config.writeCopy]
prefix to a logger call inConfig#writeCopy()
to maintain consistency and clarity - Replaced the common obtaining of
ChatHudAccessor
from the ugly(ChatHudAccessor) client.inGameHud.getChatHud()
with two static methods,ChatHudAccessor.from(ChatHud)
andChatHudAccessor.from(MinecraftClient)
, which wrap the cast for convenience - Added message indices stored in
ChatUtils
to clearly identify what data is being interacted with, instead of magic numbers everywhere - Added the
RenderUtils
class, which currently only has a subclassMousePos
- Added
StringTextUtils#getLinks(String)
for getting all links from a string, used in the copy menu - All of
ChatScreenMixin
is really just complete hell, it's all over the place, but most of the complex methods have javadocs (except for#cps$loadCopyMenu(mX, mY)
which has comments inside). It works especially now together withMenuButtonWidget
which is also disgusting. In the future, when I have time, I will rewrite the whole menu thing as a new class just for menus and buttons, and then use that. For now, I'm so sorry.
- Removed the floating gray search background when
hideSearchButton
is enabled (#83) - Also added the mixin prefix
cps$
to a few unique methods inChatScreenMixin
that previously were unmarked
- Showing/hiding the chat search bar or the chat search settings will now persist after closing and reopening chat (#81)
- You can now additionally hide the search button entirely, but keep in mind this disables all other chat searching functionality
-
Updated dependencies, including YACL to
2.5.0-fabric
so you may need to update that as well -
Fixed #78, which uses a large mixin instead of an entirely new screen to allow for compatibility with other mods
-
Removed the
chatSearchScreen
option because the search settings can be hidden and other mods should be compatible now- That being said, the only real difference is that the search settings button cannot be removed from the chat screen
-
Added the
messageDrafting
andsearchDrafting
options (#79), which when toggled let any text in the fields persist after closing and reopening the chat -
Tweaked the README config table to add double quotes around String options and removed the decimal numbers attached to Color options
-
Updated the changelog from only containing the latest version's changes to all of them starting from
194.4.0
. Unless you're a contributor, this doesn't really matter -
Contributor note: Now when you edit the changelog, assuming you run
build
orpublish
(which both subsequently runprocessResources
) before committing any changes, this file will- have any double hashtags (
##
) followed by a number replaced with a GitHub issue link - replace any instances of
${}
with eitherversion
,targets
, orloaders
in between the brackets with the appropriate value from thegradle.properties
file
- have any double hashtags (
-
You can now specify the
-PnoPublish=true
flag when running./gradlew publish
to prevent the file from actually being published on Modrinth and Curseforge. This helps to avoid needing to adddebug=true
every time you want to double-check the changelog before publishing
- Fixed #73, which was caused by a slight method change from
1.19.3
to.4
. To fix this I simply removed it, which was fine because it didn't really work in the first place. - However, the method that was tweaked to fix this issue prevented a couple problems relating to selecting both the search and chat fields at the same time (but it can't anymore)
- So to try and help with any issues that may arise from this, whenever you type a chat message that hasn't been sent yet, if you close the chat and reopen it the message will reappear in the chat field.
- Fixed a couple of grammar mistakes
- Fixed #72 (pressing the slash key doesn't put the slash in the input box)
- Updated to FAPI 0.77.0 and YACL 2.4.0
- Added the
regex
andregex_tester
links in the YACL Help category for web links to regex assistance. - Added the new ChatSearchScreen screen, an extension of ChatScreen that allows for searching through chat messages plus more features!
- Added the
chatSearchScreen
option that toggles the new chat search screen (which overrides the vanilla chat screen) - Added a new mixin injector to override the vanilla chat screen with the new one (if enabled)
- Added some new String util methods
- Fixed the '&<?>'-formatted string to text parser not removing double backslashes from literal uses of ampersands
- Added a button icon and a background sprite
This update officially fixes #4!!! sorry for taking so long, but hey it's done now!
- Changes go here
Typically as a list but not required!