Moonlight Lib

Moonlight Lib

86M Downloads

Can't I register `DynClientResourcesGenerator` in client init hook on fabric?

SettingDust opened this issue · 12 comments

commented

The moonlight not init phase Method has to be called during mod initialization phase

commented

Send log

commented

Anyway, reflection magic just works. Should I close this issue?

commented

oh interesting i didnt know that was a thing. im not sure if i can geet a good fix for this. i have to see if i can make my code run after the client initializer instead of in it

commented

I've removed that restriction. should work for client stuff once again

commented
[00:05:17] [main/INFO] (FabricLoader/GameProvider) Loading Minecraft 1.20.1 with Fabric Loader 0.15.3
[00:05:17] [main/INFO] (FabricLoader) Loading 63 mods:
	- better-ui-textures 0.0.1-SNAPSHOT+006.sha.9ace4dc
	- fabric-api 0.90.7+1.20.1
	- fabric-api-base 0.4.30+7abfd51577
	- fabric-api-lookup-api-v1 1.6.35+4d8536c977
	- fabric-biome-api-v1 13.0.12+215bbe9677
	- fabric-block-api-v1 1.0.10+92a0d36777
	- fabric-block-view-api-v2 1.0.0+92a0d36777
	- fabric-blockrenderlayer-v1 1.1.40+b3afc78b77
	- fabric-client-tags-api-v1 1.1.1+97bb207577
	- fabric-command-api-v1 1.2.33+f71b366f77
	- fabric-command-api-v2 2.2.12+b3afc78b77
	- fabric-commands-v0 0.2.50+df3654b377
	- fabric-containers-v0 0.1.63+df3654b377
	- fabric-content-registries-v0 4.0.10+57aed33f77
	- fabric-convention-tags-v1 1.5.4+a1a980da77
	- fabric-crash-report-info-v1 0.2.18+aeb40ebe77
	- fabric-data-generation-api-v1 12.3.2+d7b148e077
	- fabric-dimensions-v1 2.1.53+8536527b77
	- fabric-entity-events-v1 1.5.22+b3afc78b77
	- fabric-events-interaction-v0 0.6.1+e91849a877
	- fabric-events-lifecycle-v0 0.2.62+df3654b377
	- fabric-game-rule-api-v1 1.0.39+ae9f657a77
	- fabric-gametest-api-v1 1.2.12+b3afc78b77
	- fabric-item-api-v1 2.1.27+b3afc78b77
	- fabric-item-group-api-v1 4.0.11+d7b148e077
	- fabric-key-binding-api-v1 1.0.36+fb8d95da77
	- fabric-keybindings-v0 0.2.34+df3654b377
	- fabric-language-kotlin 1.10.16+kotlin.1.9.21
	- fabric-lifecycle-events-v1 2.2.21+b3afc78b77
	- fabric-loot-api-v2 1.2.0+96dfa95977
	- fabric-loot-tables-v1 1.1.44+9e7660c677
	- fabric-message-api-v1 5.1.8+d7b148e077
	- fabric-mining-level-api-v1 2.1.49+b3afc78b77
	- fabric-model-loading-api-v1 1.0.2+709a987177
	- fabric-models-v0 0.4.1+9386d8a777
	- fabric-networking-api-v1 1.3.10+eeb8eb3677
	- fabric-networking-v0 0.3.50+df3654b377
	- fabric-object-builder-api-v1 11.1.2+4ee0bc6077
	- fabric-particles-v1 1.1.1+201a23a077
	- fabric-recipe-api-v1 1.0.20+b3afc78b77
	- fabric-registry-sync-v0 2.3.2+4df89eb277
	- fabric-renderer-api-v1 3.2.0+39a511ba77
	- fabric-renderer-indigo 1.5.0+39a511ba77
	- fabric-renderer-registries-v1 3.2.45+df3654b377
	- fabric-rendering-data-attachment-v1 0.3.36+92a0d36777
	- fabric-rendering-fluids-v1 3.0.27+b3afc78b77
	- fabric-rendering-v0 1.1.48+df3654b377
	- fabric-rendering-v1 3.0.7+b3afc78b77
	- fabric-resource-conditions-api-v1 2.3.6+d7b148e077
	- fabric-resource-loader-v0 0.11.9+132c48c177
	- fabric-screen-api-v1 2.0.7+b3afc78b77
	- fabric-screen-handler-api-v1 1.3.29+b3afc78b77
	- fabric-sound-api-v1 1.0.12+b3afc78b77
	- fabric-transfer-api-v1 3.3.2+1bc31aeb77
	- fabric-transitive-access-wideners-v1 4.3.0+6c31357e77
	- fabricloader 0.15.3
	- fwaystones 3.3.2+mc1.20.1
	- java 17
	- minecraft 1.20.1
	- mixinextras 0.3.2
	- modmenu 7.2.2
	- moonlight 1.20-2.8.68
	- owo 0.11.2+1.20
[00:05:17] [main/INFO] (FabricLoader/Mixin) SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/D:/Applications/Scoop/apps/gradle/current/.gradle/caches/modules-2/files-2.1/net.fabricmc/sponge-mixin/0.12.5+mixin.0.8.5/8d31fb97c3e0cd7c8dad3441851c523bcfae6d8e/sponge-mixin-0.12.5+mixin.0.8.5.jar Service=Knot/Fabric Env=CLIENT
[00:05:17] [main/INFO] (FabricLoader/Mixin) Loaded Fabric development mappings for mixin remapper!
[00:05:17] [main/INFO] (FabricLoader/Mixin) Compatibility level set to JAVA_16
[00:05:17] [main/INFO] (FabricLoader/Mixin) Compatibility level set to JAVA_17
[00:05:17] [main/WARN] (FabricLoader/Mixin) Reference map '${id}.refmap.json' for better-ui-textures.mixins.json could not be read. If this is a development environment you can ignore this message
[00:05:17] [main/WARN] (FabricLoader/Mixin) Reference map '${id}.client.refmap.json' for better-ui-textures.client.mixins.json could not be read. If this is a development environment you can ignore this message
[00:05:18] [main/WARN] (FabricLoader/Mixin) Error loading class: fr/catcore/server/translations/api/resource/language/SystemDelegatedLanguage (java.lang.ClassNotFoundException: fr/catcore/server/translations/api/resource/language/SystemDelegatedLanguage)
[00:05:18] [main/INFO] (FabricLoader/MixinExtras|Service) Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.3.2).
[00:05:22] [Datafixer Bootstrap/INFO] (Minecraft) 188 Datafixer optimizations took 162 milliseconds
[00:05:24] [Render thread/WARN] (FabricLoader/Mixin) Error loading class: org/quiltmc/loader/impl/game/minecraft/Hooks (java.lang.ClassNotFoundException: org/quiltmc/loader/impl/game/minecraft/Hooks)
[00:05:24] [Render thread/INFO] (Minecraft) Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[00:05:25] [Render thread/ERROR] (Minecraft) Failed to verify authentication
com.mojang.authlib.exceptions.AuthenticationException: com.mojang.authlib.exceptions.MinecraftClientException: Failed to read from https://api.minecraftservices.com/player/attributes due to PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.mojang.authlib.exceptions.MinecraftClientException.toAuthenticationException(MinecraftClientException.java:28) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:160) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.<init>(YggdrasilUserApiService.java:55) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.createUserApiService(YggdrasilAuthenticationService.java:124) ~[authlib-4.0.43.jar:?]
	at net.minecraft.client.MinecraftClient.createUserApiService(MinecraftClient.java:733) ~[minecraft-clientOnly-c94f85b33d-1.20.1-net.fabricmc.yarn.1_20_1.1.20.1+build.10-v2.jar:?]
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient.java:442) ~[minecraft-clientOnly-c94f85b33d-1.20.1-net.fabricmc.yarn.1_20_1.1.20.1+build.10-v2.jar:?]
	at net.minecraft.client.main.Main.main(Main.java:211) ~[minecraft-clientOnly-c94f85b33d-1.20.1-net.fabricmc.yarn.1_20_1.1.20.1+build.10-v2.jar:?]
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470) ~[fabric-loader-0.15.3.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.15.3.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.15.3.jar:?]
	at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) ~[dev-launch-injector-0.2.1+build.8.jar:?]
Caused by: com.mojang.authlib.exceptions.MinecraftClientException: Failed to read from https://api.minecraftservices.com/player/attributes due to PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:93) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:48) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:129) ~[authlib-4.0.43.jar:?]
	... 9 more
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:?]
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:378) ~[?:?]
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:321) ~[?:?]
	at sun.security.ssl.TransportContext.fatal(TransportContext.java:316) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175) ~[?:?]
	at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[?:?]
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[?:?]
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458) ~[?:?]
	at sun.security.ssl.TransportContext.dispatch(TransportContext.java:201) ~[?:?]
	at sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426) ~[?:?]
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:589) ~[?:?]
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?]
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529) ~[?:?]
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308) ~[?:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:72) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:48) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:129) ~[authlib-4.0.43.jar:?]
	... 9 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439) ~[?:?]
	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306) ~[?:?]
	at sun.security.validator.Validator.validate(Validator.java:264) ~[?:?]
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) ~[?:?]
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1341) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175) ~[?:?]
	at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[?:?]
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[?:?]
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458) ~[?:?]
	at sun.security.ssl.TransportContext.dispatch(TransportContext.java:201) ~[?:?]
	at sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426) ~[?:?]
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:589) ~[?:?]
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?]
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529) ~[?:?]
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308) ~[?:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:72) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:48) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:129) ~[authlib-4.0.43.jar:?]
	... 9 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:146) ~[?:?]
	at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:127) ~[?:?]
	at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297) ~[?:?]
	at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434) ~[?:?]
	at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306) ~[?:?]
	at sun.security.validator.Validator.validate(Validator.java:264) ~[?:?]
	at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231) ~[?:?]
	at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1341) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232) ~[?:?]
	at sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175) ~[?:?]
	at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[?:?]
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[?:?]
	at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:458) ~[?:?]
	at sun.security.ssl.TransportContext.dispatch(TransportContext.java:201) ~[?:?]
	at sun.security.ssl.SSLTransport.decode(SSLTransport.java:172) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455) ~[?:?]
	at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426) ~[?:?]
	at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:589) ~[?:?]
	at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1665) ~[?:?]
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1589) ~[?:?]
	at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:529) ~[?:?]
	at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:308) ~[?:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.readInputStream(MinecraftClient.java:72) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.minecraft.client.MinecraftClient.get(MinecraftClient.java:48) ~[authlib-4.0.43.jar:?]
	at com.mojang.authlib.yggdrasil.YggdrasilUserApiService.fetchProperties(YggdrasilUserApiService.java:129) ~[authlib-4.0.43.jar:?]
	... 9 more
[00:05:25] [Render thread/INFO] (Minecraft) Setting user: Player193
[00:05:26] [Render thread/INFO] (Moonlight) Loaded config moonlight-client.json
[00:05:27] [Render thread/INFO] (Fabric-Waystones) Is initializing.
[00:05:27] [Render thread/INFO] (Fabric-Waystones) Has successfully been initialized.
[00:05:27] [Render thread/INFO] (owo) I bet DeetHunter will never see this one!
[00:05:27] [Render thread/INFO] (Indigo) [Indigo] Registering Indigo renderer!
[00:05:27] [Render thread/INFO] (Moonlight) Initialized block sets in 9ms
[00:05:27] [Render thread/INFO] (Moonlight) Initialized color sets in 12ms
[00:05:27] [Worker-Main-1/INFO] (Mod Menu/Update Checker) Checking mod updates...
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-lifecycle-events-v1 2.2.21+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-rendering-data-attachment-v1 0.3.36+92a0d36777 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-command-api-v2 2.2.12+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-transfer-api-v1 3.3.2+1bc31aeb77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-object-builder-api-v1 11.1.2+4ee0bc6077 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-block-view-api-v2 1.0.0+92a0d36777 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-item-api-v1 2.1.27+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-screen-handler-api-v1 1.3.29+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-game-rule-api-v1 1.0.39+ae9f657a77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-events-interaction-v0 0.6.1+e91849a877 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for minecraft 1.20.1 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-resource-loader-v0 0.11.9+132c48c177 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-recipe-api-v1 1.0.20+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-containers-v0 0.1.63+df3654b377 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-message-api-v1 5.1.8+d7b148e077 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-registry-sync-v0 2.3.2+4df89eb277 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-particles-v1 1.1.1+201a23a077 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-data-generation-api-v1 12.3.2+d7b148e077 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-events-lifecycle-v0 0.2.62+df3654b377 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-item-group-api-v1 4.0.11+d7b148e077 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-networking-v0 0.3.50+df3654b377 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for better-ui-textures 0.0.1-SNAPSHOT+006.sha.9ace4dc with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-rendering-fluids-v1 3.0.27+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-networking-api-v1 1.3.10+eeb8eb3677 with multiple paths, returning only one which may incur unexpected behavior!
[00:05:27] [Render thread/WARN] (FabricLoader) getRootPath access for fabric-entity-events-v1 1.5.22+b3afc78b77 with multiple paths, returning only one which may incur unexpected behavior!
---- Minecraft Crash Report ----
// This doesn't make any sense!

Time: 2023-12-22 00:05:27
Description: Initializing game

java.lang.RuntimeException: Could not execute entrypoint stage 'client' due to errors, provided by 'better-ui-textures'!
	at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$2(FabricLoaderImpl.java:388)
	at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:386)
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:53)
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient.java:458)
	at net.minecraft.client.main.Main.main(Main.java:211)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)
Caused by: java.lang.AssertionError: Method has to be called during mod initialization phase
	at net.mehvahdjukaar.moonlight.core.Moonlight.assertInitPhase(Moonlight.java:106)
	at net.mehvahdjukaar.moonlight.api.platform.fabric.PlatHelperImpl.registerResourcePack(PlatHelperImpl.java:145)
	at net.mehvahdjukaar.moonlight.api.platform.PlatHelper.registerResourcePack(PlatHelper.java)
	at net.mehvahdjukaar.moonlight.api.resources.pack.DynamicResourcePack.registerPack(DynamicResourcePack.java:143)
	at net.mehvahdjukaar.moonlight.api.resources.pack.DynResourceGenerator.register(DynResourceGenerator.java:42)
	at net.mehvahdjukaar.moonlight.api.resources.pack.DynClientResourcesGenerator.register(DynClientResourcesGenerator.java:31)
	at settingdust.betteruitextures.client.EntrypointKt.init(Entrypoint.kt:11)
	at java.base/java.lang.invoke.MethodHandleProxies$1.invoke(MethodHandleProxies.java:198)
	at jdk.proxy3/com.sun.proxy.jdk.proxy3.$Proxy39.onInitializeClient(Unknown Source)
	at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:384)
	... 7 more


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Render thread
Stacktrace:
	at net.fabricmc.loader.impl.FabricLoaderImpl.lambda$invokeEntrypoints$2(FabricLoaderImpl.java:388)
	at net.fabricmc.loader.impl.util.ExceptionUtil.gatherExceptions(ExceptionUtil.java:33)
	at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(FabricLoaderImpl.java:386)
	at net.fabricmc.loader.impl.game.minecraft.Hooks.startClient(Hooks.java:53)
	at net.minecraft.client.MinecraftClient.<init>(MinecraftClient.java:458)

-- Initialization --
Details:
	Modules: 
		ADVAPI32.dll:高级 Windows 32 基本 API:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		COMCTL32.dll:用户体验控件库:6.10 (WinBuild.160101.0800):Microsoft Corporation
		CRYPT32.dll:加密 API32:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		CRYPTBASE.dll:Base cryptographic API DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		CRYPTSP.dll:Cryptographic Service Provider API:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		DBGHELP.DLL:Windows Image Helper:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		DNSAPI.dll:DNS 客户端 API DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		GDI32.dll:GDI Client DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		IMM32.DLL:Multi-User Windows IMM32 API Client DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		IPHLPAPI.DLL:IP 帮助程序 API:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		KERNEL32.DLL:Windows NT 基本 API 客户端 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		KERNELBASE.dll:Windows NT 基本 API 客户端 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		NLAapi.dll:Network Location Awareness 2:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		NSI.dll:NSI User-mode interface DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		NTASN1.dll:Microsoft ASN.1 API:10.0.19041.320 (WinBuild.160101.0800):Microsoft Corporation
		Ole32.dll:用于 Windows 的 Microsoft OLE:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		OleAut32.dll:OLEAUT32.DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		PSAPI.DLL:Process Status Helper:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		Pdh.dll:Windows 性能数据助手 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		RPCRT4.dll:远程过程调用运行时:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		SHCORE.dll:SHCORE:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		SHELL32.dll:Windows Shell 公用 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		USER32.dll:多用户 Windows 用户 API 客户端 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		USERENV.dll:Userenv:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		VCRUNTIME140.dll:Microsoft® C Runtime Library:14.31.31103.0:Microsoft Corporation
		VERSION.dll:Version Checking and File Installation Libraries:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		WINHTTP.dll:Windows HTTP 服务:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		WINMM.dll:MCI API DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		WS2_32.dll:Windows Socket 2.0 32 位 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		WSOCK32.dll:Windows Socket 32-Bit DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		Wldp.dll:Windows 锁定策略:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		amsi.dll:Anti-Malware Scan Interface:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		bcrypt.dll:Windows 加密基元库:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		bcryptPrimitives.dll:Windows Cryptographic Primitives Library:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		clbcatq.dll:COM+ Configuration Catalog:2001.12.10941.16384 (WinBuild.160101.0800):Microsoft Corporation
		combase.dll:用于 Windows 的 Microsoft COM:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		dbgcore.DLL:Windows Core Debugging Helpers:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		dhcpcsvc.DLL:DHCP 客户端服务:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		dhcpcsvc6.DLL:DHCPv6 客户端:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		dt_socket.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		fwpuclnt.dll:FWP/IPsec 用户模式 API:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		gdi32full.dll:GDI Client DLL:10.0.19041.3758 (WinBuild.160101.0800):Microsoft Corporation
		glfw.dll:GLFW 3.4.0 DLL:3.4.0:GLFW
		instrument.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		java.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		java.exe:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		jdwp.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		jemalloc.dll
		jimage.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		jli.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		jna5813899151982654050.dll:JNA native library:6.1.4:Java(TM) Native Access (JNA)
		jsvml.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		jvm.dll:Java HotSpot(TM) 64-Bit server VM:17.0.8.0:Oracle Corporation
		jvmcicompiler.dll
		kernel.appcore.dll:AppModel API Host:10.0.19041.3758 (WinBuild.160101.0800):Microsoft Corporation
		lwjgl.dll
		management.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		management_ext.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		msvcp140.dll:Microsoft® C Runtime Library:14.31.31103.0:Microsoft Corporation
		msvcp_win.dll:Microsoft® C Runtime Library:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		msvcrt.dll:Windows NT CRT DLL:7.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		mswsock.dll:Microsoft Windows Sockets 2.0 服务提供程序:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		napinsp.dll:电子邮件命名填充提供程序:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		ncrypt.dll:Windows NCrypt 路由器:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		net.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		nio.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		ntdll.dll:NT 层 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		perfos.dll:Windows 系统性能对象 DLL:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		pnrpnsp.dll:PNRP 命名空间提供程序:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		profapi.dll:User Profile Basic API:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		rasadhlp.dll:Remote Access AutoDial Helper:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		rsaenh.dll:Microsoft Enhanced Cryptographic Provider:10.0.19041.320 (WinBuild.160101.0800):Microsoft Corporation
		sechost.dll:Host for SCM/SDDL/LSA Lookup APIs:10.0.19041.320 (WinBuild.160101.0800):Microsoft Corporation
		shlwapi.dll:外壳简易实用工具库:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		sunmscapi.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		ucrtbase.dll:Microsoft® C Runtime Library:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		vcruntime140_1.dll:Microsoft® C Runtime Library:14.31.31103.0:Microsoft Corporation
		verify.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
		win32u.dll:Win32u:10.0.19041.3803 (WinBuild.160101.0800):Microsoft Corporation
		windows.storage.dll:Microsoft WinRT Storage API:10.0.19041.3691 (WinBuild.160101.0800):Microsoft Corporation
		winrnr.dll:LDAP RnR Provider DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		wshbth.dll:Windows Sockets Helper DLL:10.0.19041.3636 (WinBuild.160101.0800):Microsoft Corporation
		wshunix.dll:AF_UNIX Winsock2 Helper DLL:10.0.19041.1 (WinBuild.160101.0800):Microsoft Corporation
		zip.dll:Java(TM) Platform SE binary:17.0.8.0:Oracle Corporation
Stacktrace:
	at net.minecraft.client.main.Main.main(Main.java:211)
	at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:470)
	at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
	at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
	at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)

-- System Details --
Details:
	Minecraft Version: 1.20.1
	Minecraft Version ID: 1.20.1
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 17.0.8, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation
	Memory: 391261152 bytes (373 MiB) / 629145600 bytes (600 MiB) up to 8552185856 bytes (8156 MiB)
	CPUs: 16
	Processor Vendor: GenuineIntel
	Processor Name: 13th Gen Intel(R) Core(TM) i5-13490F
	Identifier: Intel64 Family 6 Model 191 Stepping 2
	Microarchitecture: unknown
	Frequency (GHz): 2.50
	Number of physical packages: 1
	Number of physical CPUs: 10
	Number of logical CPUs: 16
	Graphics card #0 name: NVIDIA GeForce RTX 4060
	Graphics card #0 vendor: NVIDIA (0x10de)
	Graphics card #0 VRAM (MB): 4095.00
	Graphics card #0 deviceId: 0x2882
	Graphics card #0 versionInfo: DriverVersion=31.0.15.4633
	Memory slot #0 capacity (MB): 16384.00
	Memory slot #0 clockSpeed (GHz): 2.67
	Memory slot #0 type: DDR4
	Memory slot #1 capacity (MB): 16384.00
	Memory slot #1 clockSpeed (GHz): 2.67
	Memory slot #1 type: DDR4
	Virtual memory max (MB): 67973.31
	Virtual memory used (MB): 46798.83
	Swap memory total (MB): 35362.55
	Swap memory used (MB): 6457.16
	JVM Flags: 5 total; -XX:ThreadPriorityPolicy=1 -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCIProduct -XX:JVMCIThreadsPerNativeLibraryRuntime=1 -XX:-UnlockExperimentalVMOptions
	Fabric Mods: 
		better-ui-textures: BetterUITextures 0.0.1-SNAPSHOT+006.sha.9ace4dc
		fabric-api: Fabric API 0.90.7+1.20.1
		fabric-api-base: Fabric API Base 0.4.30+7abfd51577
		fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.6.35+4d8536c977
		fabric-biome-api-v1: Fabric Biome API (v1) 13.0.12+215bbe9677
		fabric-block-api-v1: Fabric Block API (v1) 1.0.10+92a0d36777
		fabric-block-view-api-v2: Fabric BlockView API (v2) 1.0.0+92a0d36777
		fabric-blockrenderlayer-v1: Fabric BlockRenderLayer Registration (v1) 1.1.40+b3afc78b77
		fabric-client-tags-api-v1: Fabric Client Tags 1.1.1+97bb207577
		fabric-command-api-v1: Fabric Command API (v1) 1.2.33+f71b366f77
		fabric-command-api-v2: Fabric Command API (v2) 2.2.12+b3afc78b77
		fabric-commands-v0: Fabric Commands (v0) 0.2.50+df3654b377
		fabric-containers-v0: Fabric Containers (v0) 0.1.63+df3654b377
		fabric-content-registries-v0: Fabric Content Registries (v0) 4.0.10+57aed33f77
		fabric-convention-tags-v1: Fabric Convention Tags 1.5.4+a1a980da77
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.2.18+aeb40ebe77
		fabric-data-generation-api-v1: Fabric Data Generation API (v1) 12.3.2+d7b148e077
		fabric-dimensions-v1: Fabric Dimensions API (v1) 2.1.53+8536527b77
		fabric-entity-events-v1: Fabric Entity Events (v1) 1.5.22+b3afc78b77
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.6.1+e91849a877
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.62+df3654b377
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.39+ae9f657a77
		fabric-gametest-api-v1: Fabric Game Test API (v1) 1.2.12+b3afc78b77
		fabric-item-api-v1: Fabric Item API (v1) 2.1.27+b3afc78b77
		fabric-item-group-api-v1: Fabric Item Group API (v1) 4.0.11+d7b148e077
		fabric-key-binding-api-v1: Fabric Key Binding API (v1) 1.0.36+fb8d95da77
		fabric-keybindings-v0: Fabric Key Bindings (v0) 0.2.34+df3654b377
		fabric-language-kotlin: Fabric Language Kotlin 1.10.16+kotlin.1.9.21
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 2.2.21+b3afc78b77
		fabric-loot-api-v2: Fabric Loot API (v2) 1.2.0+96dfa95977
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.1.44+9e7660c677
		fabric-message-api-v1: Fabric Message API (v1) 5.1.8+d7b148e077
		fabric-mining-level-api-v1: Fabric Mining Level API (v1) 2.1.49+b3afc78b77
		fabric-model-loading-api-v1: Fabric Model Loading API (v1) 1.0.2+709a987177
		fabric-models-v0: Fabric Models (v0) 0.4.1+9386d8a777
		fabric-networking-api-v1: Fabric Networking API (v1) 1.3.10+eeb8eb3677
		fabric-networking-v0: Fabric Networking (v0) 0.3.50+df3654b377
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 11.1.2+4ee0bc6077
		fabric-particles-v1: Fabric Particles (v1) 1.1.1+201a23a077
		fabric-recipe-api-v1: Fabric Recipe API (v1) 1.0.20+b3afc78b77
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 2.3.2+4df89eb277
		fabric-renderer-api-v1: Fabric Renderer API (v1) 3.2.0+39a511ba77
		fabric-renderer-indigo: Fabric Renderer - Indigo 1.5.0+39a511ba77
		fabric-renderer-registries-v1: Fabric Renderer Registries (v1) 3.2.45+df3654b377
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.3.36+92a0d36777
		fabric-rendering-fluids-v1: Fabric Rendering Fluids (v1) 3.0.27+b3afc78b77
		fabric-rendering-v0: Fabric Rendering (v0) 1.1.48+df3654b377
		fabric-rendering-v1: Fabric Rendering (v1) 3.0.7+b3afc78b77
		fabric-resource-conditions-api-v1: Fabric Resource Conditions API (v1) 2.3.6+d7b148e077
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.11.9+132c48c177
		fabric-screen-api-v1: Fabric Screen API (v1) 2.0.7+b3afc78b77
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.3.29+b3afc78b77
		fabric-sound-api-v1: Fabric Sound API (v1) 1.0.12+b3afc78b77
		fabric-transfer-api-v1: Fabric Transfer API (v1) 3.3.2+1bc31aeb77
		fabric-transitive-access-wideners-v1: Fabric Transitive Access Wideners (v1) 4.3.0+6c31357e77
		fabricloader: Fabric Loader 0.15.3
		fwaystones: Fabric Waystones 3.3.2+mc1.20.1
		java: Java HotSpot(TM) 64-Bit Server VM 17
		minecraft: Minecraft 1.20.1
		mixinextras: MixinExtras 0.3.2
		modmenu: Mod Menu 7.2.2
		moonlight: Moonlight 1.20-2.8.68
		owo: o蠅o 0.11.2+1.20
	Launched Version: Fabric
	Backend library: LWJGL version 3.3.1 SNAPSHOT
	Backend API: Unknown
	Window size: <not initialized>
	GL Caps: Using framebuffer using OpenGL 3.2
	GL debug messages: <disabled>
	Using VBOs: Yes
	Is Modded: Definitely; Client brand changed to 'fabric'
	Type: Client (map_client.txt)
	CPU: <unknown>
commented

whats that better ui texture mod? tis somehow conflicting with it. i cant even find it around

commented

oh wait its your mod

commented

so i think my assert init code is a bit busted atm. What i usually do is skip fabric client entry point and just do if(PlatHelper.isGetEnv().isClient() ClientStuff.run() which is virtually identical to the initializer one as fabric itself runs one right after the other
I believe there was a reason why i opted for this but for many things it shouldnt matter. ill try to fix

commented

yeah so the mod allows to run stuff in steps and even after all other blockshave been registered. this is needed for dynamic registration with the block set system and deferred registration allows for easy shared code with forge. to do so i simply run all the deferreed and late work in client and server init phase instead of main. This means that when using this mod you should put all your init code in the main initializer and just check which dist you are if youwant to execute client one. fabric is very simple here and i dont think i cant mixin into its own classes to execute right after instead of in client and server entrypoints so we stuck with this.
image

commented

But I can't do client stuff with fabric loom splitEnvironmentSourceSets https://fabricmc.net/wiki/documentation:fabric_loom#split_client_and_common_code

EDIT:
Besides using a service loader to run service when on the client.

EDIT2:
I will add a callback like your example and listen to it in the client. As a workaround

commented

After thinking, I can't touch things in the client in the common source set.
The earliest point I can register is always client init.
Or do I have to use a service loader or Class.forName to load the client class?
That's a bit weird.