Compatibility
Minecraft: Java Edition
Platforms
Supported environments
90% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+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
JVMDowngrader
to ensure API compatibility
- Adjusted the way
Dimension
andBiome
module 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 newDataComponent
system 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
, andreplace
script functions due to being obsolete- The backend for these functions was barely functional and has been largely obsolete for a while
- Added new
.identifier
placeholders for theBiome
andDimension
modules - (Backend) The default formatting for a slider's display value is now
%.1f
instead of a raw append - Added a
Sync End Color
button to theColor Editor
UI- Pressing this button, will set the
endData
to the currentstartColor
data, effectively useful for quickly removing theendColor
data 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
Advanced
Config Setting to toggleClassGraph
functionality- 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#getAllData
has been split intoModule#getInternalData
andModule#getConfigData
Module#scanForData
has been similarly split up, with separate threads now spawned for each part of the auto-lookupModule#canFetchData
has been split intoModule#canFetchInternals
andModule#canFetchConfig
Module#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
config
data being scanned first beforeinternal
data
- (Backend) Added
printException
for Config Modules, now used insetProperty
- These exceptions will only display while
Debug Mode
is enabled
- These exceptions will only display while
- Adjusted the way the
general.mods
placeholder is calculated (Constants#getModCount
)- Now uses a
Supplier
from each implemented loader rather than Reflection Statements (Constants#MOD_COUNT_SUPPLIER
) - Quilt now falls back to
getRawModCount
due 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
Override
system for Placeholder Argumentsoverrides.
placeholders have been removed, with overrides now applied directly to the placeholder whenuseAsMain
is false and such override data exists- Empty Parts of the
Presence Editor
are no longer ignored ifuseAsMain
was false - For
useAsMain
mode, theforcedData
iteration has been adjusted to now use the first non-null entry, rather than the last
Fixes
- (Backend) Modified
ExtendedScreen#getButtonY
to properly respond toScrollPane
padding 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#setEndColor
andColorData#setTexLocation
could be applied incorrectly- This fix was previously present in
ColorEditorGui#setCurrentData
but has been moved intoColorData
to remove duplicated logic and to resolve some edge-cases
- This fix was previously present in
- Fixed redundant formatting in
Color Editor
Slider UI elements- The RGBA sliders now use
Integer
formatting instead ofFloat
- The
Tint Factor
slider now uses a percentage value instead ofFloat
- The RGBA sliders now use
- Fixed edge-cases in the
Color Editor
where editing a nullendColor
after editingstartColor
would result in an incorrect result- This is caused from the
getEnd
call pulling thestartColor
if null, and only adjusting the value of one slider rather than all four - An additional case has been resolved where the
endColor
data wasn't being created, if the newstartColor
differs when it didn't before when usingsetStartColor
- This is caused from the
- (Backend) Fixed memory leaks that could occur through repeated
Module#toString
calls- This occurs due to this function utilizing GSON, and since we used this in
Module#hashCode
andModule#equals
, it was being called excessively - With this fix,
hashCode
andequals
functions for all Config Categories should be much more performant, followingPresenceData
formatting withObjects#hash
andObjects#equals
usage
- This occurs due to this function utilizing GSON, and since we used this in
- (Backend) Fixed memory leaks that could occur through repeated
FileUtils#findValidClass
calls- 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#findValidClass
andFileUtils#scanClasses
- This relates to the
useClassLoader
param infindValidClass
, which now only defaults to true if below Java 16 - This behavior matches the behavior used in
ClassGraph
within `scanClasses
- This relates to the
- (Backend) Fixed memory leaks that could occur through
Lenni Reflect
reflection operations- This issue effects
StringUtils#getFields
,StringUtils#getMethods
, and methods using these functions - Caching has been implemented to the
RStream#of
,RStream#methods
, andRStream#fields
functions to avoid repetitive allocation
- This issue effects
- (Backend) Fixed memory leaks caused from unnecessary
DiscordUtils#removeArguments
calls- This issue occurred in
DiscordUtils#syncPlaceholders
in 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 Config
button in theMain Gui
not 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
Server
module was improperly checking for newServerList
entries in some cases- This also fixes an issue where adjusting
config
data could trigger aninternal
scan
- This also fixes an issue where adjusting
- (Backend) Fixed an issue where the
ReplayMod
module could be improperly cleared in some cases - (Backend) Fixed memory leaks that could occur through
MappingUtils
due to excessiveString#replace
operations- Both
MappingUtils
and the way the mappings file is generated have been improved to avoid this issue
- Both
- (Backend) Fixed memory leaks that could occur through
FileUtils#getClassNamesMatchingSuperType
andFileUtils#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#getProperty
andModule#setProperty
usage to be static-defined rather than relying on reflection
- This additionally improves the performance of
- Fixed an issue where
entitySettings#ridingData
was being incorrectly read- The
entity.riding.message
andentity.riding.icon
placeholders 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#getLocalizedMessage
was introduced
- This was caused by a regression when
- Resolved a typo causing an issue in the
SimpleRPC
toCraftPresence
config 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
SimpleRPC
config
- This issue would cause a Starscript exception if the value was present in a
- (Backend) Fixed an issue preventing
DiscordAssetUtils#setUrl
from 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
DiscordIPC
Issue 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.4Loaders
Game versions
1.20.3–1.20.4Downloads
1040Publication date
June 13, 2024 at 4:07 PMPublisher
CDAGaming
Owner