Changelog
CraftPresence Changes
v2.4.0 (06/13/2024)
A Detailed Changelog from the last release is available here
See the Mod Description or README for more info regarding the mod.
Changes
- (Backend) Updated Build Dependencies (Please see the appropriate repositories for changes)
- Unimined (1.2.3->1.2.7)
- JVMDowngrader (local->0.7.1)
- ModPublisher (2.1.1->2.1.4)
- ModFusioner (1.0.10->1.0.12)
- Fabric Loader (0.15.10->0.15.11)
- Lenni Reflect (1.3.2->1.3.4)
- UniCore (1.0.10->1.1.9)
- DiscordIPC (0.8.7->0.9.1)
- Starscript (0.3.0->0.3.3)
- SpotBugs Annotations (4.8.4->4.8.5)
- ClassGraph (4.8.172->4.8.173)
 
- Unimined (
- All versions of the mod are now built using Java 21, rather than being dependent on legacy Java
- This allows us to have a consistent API as well as develop under the current modern standards
- In versions where a downgrade is needed, this is performed using JVMDowngraderto ensure API compatibility
 
- Adjusted the way DimensionandBiomemodule data is loaded in MC 1.16+- These changes are designed to support auto-locating data related to data pack additions
- These changes also resolve issues where repeated Registry Lookups could cause a crash in both modules
- Additional performance improvements have also been implemented for all MC versions for these modules
 
- Added a new script function, getComponent, to support the newDataComponentsystem introduced in MC 1.20.5+- Usage: getComponent(data=DataComponentHolder, path=String)
- On versions below MC 1.20.5, an error will appear instead
 
- Usage: 
- Removed the hasAlphaNumeric,hasWhitespace, andreplacescript functions due to being obsolete- The backend for these functions was barely functional and has been largely obsolete for a while
 
- Added new .identifierplaceholders for theBiomeandDimensionmodules
- (Backend) The default formatting for a slider's display value is now %.1finstead of a raw append
- Added a Sync End Colorbutton to theColor EditorUI- Pressing this button, will set the endDatato the currentstartColordata, effectively useful for quickly removing theendColordata from the final saving
 
- Pressing this button, will set the 
- Adjusted Mod Initialization in MC 1.7.10 and below to better detect (and avoid) running the mod on server-side
- This uses a similar system implemented for MC 1.13+ in v2.2.4
- This change is only applied for Forge, Risugami ModLoader, or users on similar modloaders
 
- Added a new AdvancedConfig Setting to toggleClassGraphfunctionality- This option allows disabling several backend functions, improving memory usage at the cost of some module functionality
- Disabling this feature will prevent module auto-lookup functionality in some cases, but is set by default to be disabled in response to several concerns over memory usage
 
- (Backend) Adjusted Module Auto-Retrieval Processes for improved usability and error prevention
- Module#getAllDatahas been split into- Module#getInternalDataand- Module#getConfigData
- Module#scanForDatahas been similarly split up, with separate threads now spawned for each part of the auto-lookup
- Module#canFetchDatahas been split into- Module#canFetchInternalsand- Module#canFetchConfig
- Module#hasScanned...and- Module#queue...functions have also been added for configuring when to scan for what data
- To align better with MC 1.20.5 and above, the scan order has been inverted for modules, with configdata being scanned first beforeinternaldata
 
- (Backend) Added printExceptionfor Config Modules, now used insetProperty- These exceptions will only display while Debug Modeis enabled
 
- These exceptions will only display while 
- Adjusted the way the general.modsplaceholder is calculated (Constants#getModCount)- Now uses a Supplierfrom each implemented loader rather than Reflection Statements (Constants#MOD_COUNT_SUPPLIER)
- Quilt now falls back to getRawModCountdue to not having an independent build layer
- Added support for Rift, Flint, and Risugami ModLoader mod counts
- Fixes placeholder functionality for Forge 1.13+
 
- Now uses a 
- (Backend) Improved performance for various placeholder argument options as well as compiling data
- These changes should conform better towards how Starscript was meant to be used
 
- (Breaking) Overhauled the Overridesystem for Placeholder Arguments- overrides.placeholders have been removed, with overrides now applied directly to the placeholder when- useAsMainis false and such override data exists
- Empty Parts of the Presence Editorare no longer ignored ifuseAsMainwas false
- For useAsMainmode, theforcedDataiteration has been adjusted to now use the first non-null entry, rather than the last
 
Fixes
- (Backend) Modified ExtendedScreen#getButtonYto properly respond toScrollPanepadding and to better clarify the logic- For screens where this is used, this places UI elements in the proper position comparable to v1.x versions
- Old Calculation: (40 + (25 * (order - 1)))
- New Calculation topPosition + (DEFAULT_ELEMENT_PADDING * (order + 1)) + (DEFAULT_ELEMENT_HEIGHT * order)
 
- (Backend) Fixed an issue where ColorData#setEndColorandColorData#setTexLocationcould be applied incorrectly- This fix was previously present in ColorEditorGui#setCurrentDatabut has been moved intoColorDatato remove duplicated logic and to resolve some edge-cases
 
- This fix was previously present in 
- Fixed redundant formatting in Color EditorSlider UI elements- The RGBA sliders now use Integerformatting instead ofFloat
- The Tint Factorslider now uses a percentage value instead ofFloat
 
- The RGBA sliders now use 
- Fixed edge-cases in the Color Editorwhere editing a nullendColorafter editingstartColorwould result in an incorrect result- This is caused from the getEndcall pulling thestartColorif null, and only adjusting the value of one slider rather than all four
- An additional case has been resolved where the endColordata wasn't being created, if the newstartColordiffers when it didn't before when usingsetStartColor
 
- This is caused from the 
- (Backend) Fixed memory leaks that could occur through repeated Module#toStringcalls- This occurs due to this function utilizing GSON, and since we used this in Module#hashCodeandModule#equals, it was being called excessively
- With this fix, hashCodeandequalsfunctions for all Config Categories should be much more performant, followingPresenceDataformatting withObjects#hashandObjects#equalsusage
 
- This occurs due to this function utilizing GSON, and since we used this in 
- (Backend) Fixed memory leaks that could occur through repeated FileUtils#findValidClasscalls- Caching has been added to this method, preventing repetitive calls to Class#forName
 
- Caching has been added to this method, preventing repetitive calls to 
- (Backend) Fixed a possible discrepancy between using FileUtils#findValidClassandFileUtils#scanClasses- This relates to the useClassLoaderparam infindValidClass, which now only defaults to true if below Java 16
- This behavior matches the behavior used in ClassGraphwithin `scanClasses
 
- This relates to the 
- (Backend) Fixed memory leaks that could occur through Lenni Reflectreflection operations- This issue effects StringUtils#getFields,StringUtils#getMethods, and methods using these functions
- Caching has been implemented to the RStream#of,RStream#methods, andRStream#fieldsfunctions to avoid repetitive allocation
 
- This issue effects 
- (Backend) Fixed memory leaks caused from unnecessary DiscordUtils#removeArgumentscalls- This issue occurred in DiscordUtils#syncPlaceholdersin how we were synchronizingcustom.arguments
- The old method has been replaced with a new more performant system for removals and iteration
- Several methods have also been adjusted to avoid excessive calls to this function as well
 
- This issue occurred in 
- Fixed the Sync Configbutton in theMain Guinot properly applying settings- This was caused by the Config#applyFrom(Config)function not being called
 
- This was caused by the 
- (Backend) Fixed an issue where the Servermodule was improperly checking for newServerListentries in some cases- This also fixes an issue where adjusting configdata could trigger aninternalscan
 
- This also fixes an issue where adjusting 
- (Backend) Fixed an issue where the ReplayModmodule could be improperly cleared in some cases
- (Backend) Fixed memory leaks that could occur through MappingUtilsdue to excessiveString#replaceoperations- Both MappingUtilsand the way the mappings file is generated have been improved to avoid this issue
 
- Both 
- (Backend) Fixed memory leaks that could occur through FileUtils#getClassNamesMatchingSuperTypeandFileUtils#isSubclassOf- Both functions have been rewritten to be significantly more performant compared to past releases
 
- (Backend) Fixed memory leaks that could occur due to excessive Reflection Usage in Config Modules
- This additionally improves the performance of Config#handleVerification
- This fix primarily effects Module#getPropertyandModule#setPropertyusage to be static-defined rather than relying on reflection
 
- This additionally improves the performance of 
- Fixed an issue where entitySettings#ridingDatawas being incorrectly read- The entity.riding.messageandentity.riding.iconplaceholders should work properly again
 
- The 
- Resolved an issue where parts of the mod may show up un-localized when using a different language
- This was caused by a regression when TranslationUtils#getLocalizedMessagewas introduced
 
- This was caused by a regression when 
- Resolved a typo causing an issue in the SimpleRPCtoCraftPresenceconfig migration layer where the%replaytimeleft%placeholder, if present, was incorrectly converted to an invalid Starscript expression- This issue would cause a Starscript exception if the value was present in a SimpleRPCconfig
 
- This issue would cause a Starscript exception if the value was present in a 
- (Backend) Fixed an issue preventing DiscordAssetUtils#setUrlfrom triggering inDiscordAssetUtils#loadAssets- This fix also brings a performance improvement to DiscordAssetUtils#getUrl(list, key)
 
- This fix also brings a performance improvement to 
- (Backend) Fixed a DiscordIPCIssue preventing Mod Functionality on Java 22- This primarily effected Windows users or those using a non-standard filesystem
- Users effected would receive a false Unable to connect to Discord...message
- Several other error messages have also been improved alongside this fix
 
More Information
Known Issues
Despite configuration compatibility being ensured between v1.8.x/v1.9.x and v2.0, caution is advised to ensure the best experience, while also baring in mind that features can be adjusted, removed, or added/iterated upon between releases.
The following known issues are present in this build:
- The HypherionMC Config Layer (To Convert a Simple RPC config to CraftPresence) contains the following known issues:
- Placeholders related to the realm event are currently unimplemented and parse as {''}.
 
- Placeholders related to the realm event are currently unimplemented and parse as 
Please refer to the Mod Description or README to view more info relating to known issues.
Snapshot Build Info
Some Versions of this Mod are for Minecraft Snapshots or Experimental Versions, and as such, caution should be noted.
Any Snapshot Build released will be marked as ALPHA to match its Snapshot Status depending on tests done before release and issues found.
Snapshot Builds, depending on circumstances, may also contain changes for a future version of the mod, and will be noted
as so if this is the case with the -Staging label.
