Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Creators
Details
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 intoModule#getInternalDataandModule#getConfigDataModule#scanForDatahas been similarly split up, with separate threads now spawned for each part of the auto-lookupModule#canFetchDatahas been split intoModule#canFetchInternalsandModule#canFetchConfigModule#hasScanned...andModule#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 Argumentsoverrides.placeholders have been removed, with overrides now applied directly to the placeholder whenuseAsMainis 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.
Files
Metadata
Release channel
ReleaseVersion number
2.4.0+1.20.1Loaders
Game versions
1.20–1.20.1Downloads
5261Publication date
June 13, 2024 at 4:10 PMPublisher
CDAGaming
Owner


