Tags
Creators
Details
All versions
1.0.4
Release
G1ax Crystal Optimizer 1.0.42 months ago 2,643
Compatibility
Minecraft: Java Edition
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.x
1.15.x
1.14.x
1.13.x
1.12.x
1.11.x
1.10.x
1.9.x
1.8.x
1.7.x
1.6.4
1.6.1โ1.6.2
1.5.x
1.4.4โ1.4.7
1.4.2
1.3.x
1.2.x
1.1
1.0
Platforms
Fabric
Legacy Fabric
Supported environments
Client-side
Changes
๐ฎ G1ax Crystal Optimizer Release Notes
๐ Version 1.0.4
New Features
Performance Enhancement
- Integrated PerformanceGuard: A nanosecond-precision, ping-adaptive rate limiter with independent budgets for placing and breaking to maximize PvP performance.
- Added OptOutCache: Multi-server session-persistent opt-out memory that retains server-requested disable states across logins (up to 10 servers).
- Handshake Protocol Integration:
VersionPacket(C2S): Announces current project version to server.ServerOptOutPacket(S2C): Receives server instructions to disable the optimizer, displaying a clean hoverable notification in game.OptOutAckPacket(C2S): Acknowledges server opt-out commands.
Modrinth Auto Update Checker
- Added
UpdateChecker.javaโ a lightweight background update checker powered by the public Modrinth API (no API key required). - On mod load, a daemon thread silently fetches the latest published version from
api.modrinth.com. - The first tick the player enters a world, if a newer version is available, a single beautifully formatted notification is displayed in chat with the download link and custom dev contact.
- Shows once per session only โ no spam.
- If already on the latest version, completely silent.
Bug Fixes
Command Output Colors Not Rendering
- Fixed all
ยงcolor codes in chat messages being silently ignored. - Root cause:
MutableText.formatted()is non-mutating โ the returned styled text was discarded, causing every color, bold, and italic code to fall back to plain white. - All command output (
/g1axoptimizer default,tweak,off, status) now renders with correct gold, green, red, yellow, and gray formatting.
Classloading Mismatch / Mixin Startup Crash (Minecraft 1.21)
- Resolved startup crash with
ClassMetadataNotFoundException: net.minecraft.class_1269$class_9859when running on Minecraft 1.21. - Root cause:
ActionResultwas refactored from an enum to a sealed interface in 1.21.2+. Compiling against 1.21.11 caused references toActionResult.PASSto seek non-existent inner records. - Solution: Introduced
ActionResultResolver.javausing reflection to dynamically retrieveSUCCESS,CONSUME, andPASSconstants across all Minecraft 1.21โ1.21.11 builds, resolving any compile-time bytecode dependency on the inner classes.
Incorrect Compatibility Warnings on Production/Obfuscated Clients
- Fixed startup log output displaying
Minecraft: unknownand reportingINCOMPATIBILITY: Mixin targets not found: MinecraftClient, EndCrystalItem, ClientConnection. - Root cause:
CompatibilityCheckerlooked up named classes (MinecraftClient, etc.) which are obfuscated to intermediary names (class_310, etc.) in the production environment. Also,SharedConstantsreflection failed due to obfuscated method names. - Solution: Updated
CompatibilityCheckerto query both named and intermediary names for class presence, and integrated Fabric Loader's mod container version lookup for robust, obfuscation-safe Minecraft version detection.
NoSuchMethodError Registry Crash on Older Fabric API Versions
- Resolved startup crash throwing
NoSuchMethodError: 'net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry.playC2S()'when running on older Fabric API versions. - Root cause: The mod registered packets directly via the
PayloadTypeRegistryclass APIs which did not exist or had different signatures on older Fabric API versions. - Solution: Migrated all packet registrations to use reflection and dynamic method lookup (handling missing classes and method mismatches gracefully), allowing the mod to start up without crashes on all Fabric API versions.
NoClassDefFoundError HoverEvent$ShowText Crash on Minecraft 1.21/1.21.1
- Resolved startup crash throwing
java.lang.NoClassDefFoundError: net/minecraft/class_2568$class_10613(HoverEvent$ShowText) when running on Minecraft 1.21/1.21.1. - Root cause: Minecraft 1.21.2+ introduced
HoverEvent.ShowText(obfuscated asclass_2568$class_10613). Compiling against 1.21.11 introduced a direct bytecode reference to this class, which does not exist in Minecraft 1.21/1.21.1 client runtime environments. - Solution: Created
HoverEventResolver.javausing dynamic reflection to detect class availability. It dynamically instantiatesHoverEvent.ShowTexton 1.21.2+ environments and falls back to passingTextdirectly on 1.21/1.21.1 environments, removing all static compile-time classloading references.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Xqnzyc08:FiiTEju6"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Xqnzyc08:FiiTEju6"
}

