
G1ax Crystal Optimizer
G1axCrystalOptimizer optimizes end crystal placement and breaking with efficient client-side processing, reducing perceived delay and delivering a faster, smoother Crystal PvP experience.
Оцените первым
55.8K
9
Список изменений
🔮 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.
Файлы
g1axcrystaloptimizer-1.0.4.jar(70.91 KiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.0.4
Загрузчики
Fabric
Версии игры
1.0–1.21.11
Загрузок
2.6K
Дата публикации
09.07.2026
