diff --git a/go.mod b/go.mod index ab0cba1..38ad6ae 100644 --- a/go.mod +++ b/go.mod @@ -2,17 +2,19 @@ module minecraft go 1.23.2 +require github.com/jaypipes/ghw v0.13.0 + require ( github.com/go-gl/mathgl v1.1.0 // indirect github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/jaypipes/ghw v0.13.0 github.com/klauspost/compress v1.17.11 // indirect github.com/muhammadmuzzammil1998/jsonc v1.0.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/sandertv/go-raknet v1.14.2 // indirect github.com/sandertv/gophertunnel v1.41.1 // indirect + github.com/zhyee/zipstream v0.0.0-20230625125559-133d8d1afaa0 // indirect golang.org/x/crypto v0.28.0 // indirect golang.org/x/image v0.21.0 // indirect golang.org/x/net v0.30.0 // indirect diff --git a/go.sum b/go.sum index 6a41f48..2082902 100644 --- a/go.sum +++ b/go.sum @@ -24,6 +24,8 @@ github.com/sandertv/gophertunnel v1.41.1/go.mod h1:krvLSeRUNQ2iEYJNEgzrKtWO8W5yb github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zhyee/zipstream v0.0.0-20230625125559-133d8d1afaa0 h1:BcjUUYzMORs7sJtOCWLXaelG7woHMN1QEs4yCB1QZ48= +github.com/zhyee/zipstream v0.0.0-20230625125559-133d8d1afaa0/go.mod h1:aaGtAo3dTqYtHjcliPNlyXMIIodvGm8y6uK2KMTYHrk= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= diff --git a/logs/2024-10-29-1.log.gz b/logs/2024-10-29-1.log.gz new file mode 100644 index 0000000..4bcb67b Binary files /dev/null and b/logs/2024-10-29-1.log.gz differ diff --git a/logs/2024-10-29-2.log.gz b/logs/2024-10-29-2.log.gz new file mode 100644 index 0000000..497a88f Binary files /dev/null and b/logs/2024-10-29-2.log.gz differ diff --git a/logs/2024-10-29-3.log.gz b/logs/2024-10-29-3.log.gz new file mode 100644 index 0000000..8bf33d7 Binary files /dev/null and b/logs/2024-10-29-3.log.gz differ diff --git a/logs/2024-10-29-4.log.gz b/logs/2024-10-29-4.log.gz new file mode 100644 index 0000000..381538f Binary files /dev/null and b/logs/2024-10-29-4.log.gz differ diff --git a/logs/2024-10-29-5.log.gz b/logs/2024-10-29-5.log.gz new file mode 100644 index 0000000..c9f7699 Binary files /dev/null and b/logs/2024-10-29-5.log.gz differ diff --git a/logs/2024-10-29-6.log.gz b/logs/2024-10-29-6.log.gz new file mode 100644 index 0000000..a7b86b0 Binary files /dev/null and b/logs/2024-10-29-6.log.gz differ diff --git a/logs/2024-10-29-7.log.gz b/logs/2024-10-29-7.log.gz new file mode 100644 index 0000000..6dbb1f5 Binary files /dev/null and b/logs/2024-10-29-7.log.gz differ diff --git a/logs/latest.log b/logs/latest.log new file mode 100644 index 0000000..86d44a2 --- /dev/null +++ b/logs/latest.log @@ -0,0 +1,226 @@ +[16:53:06] [Datafixer Bootstrap/INFO]: 237 Datafixer optimizations took 344 milliseconds +[16:53:10] [main/INFO]: Completely ignored arguments: [, , , , , ] +[16:53:10] [Render thread/INFO]: Environment: Environment[sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] +[16:53:10] [Render thread/INFO]: Setting user: PiWalker +[16:53:10] [Render thread/INFO]: Backend library: LWJGL version 3.3.3+5 +[16:53:11] [Render thread/ERROR]: Error while loading the narrator +com.mojang.text2speech.Narrator$InitializeException: Failed to load library flite + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:69) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) [text2speech-1.17.9.jar:?] + at flx.(SourceFile:19) [client.jar:?] + at fmg.(SourceFile:700) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:248) [client.jar:?] +Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'flite': +libflite.so: cannot open shared object file: No such file or directory +libflite.so: cannot open shared object file: No such file or directory +Native library (linux-x86-64/libflite.so) not found in resource path (/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-annotations/2.13.4/jackson-annotations-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-core/2.13.4/jackson-core-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-databind/2.13.4.2/jackson-databind-2.13.4.2.jar:/home/piwalker/.config/minecraft_test/lib/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar:/home/piwalker/.config/minecraft_test/lib/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar:/home/piwalker/.config/minecraft_test/lib/com/ibm/icu/icu4j/73.2/icu4j-73.2.jar:/home/piwalker/.config/minecraft_test/lib/com/microsoft/azure/msal4j/1.15.0/msal4j-1.15.0.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/authlib/6.0.55/authlib-6.0.55.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/brigadier/1.3.10/brigadier-1.3.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/datafixerupper/8.0.16/datafixerupper-8.0.16.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/logging/1.4.9/logging-1.4.9.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/patchy/2.2.10/patchy-2.2.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/text2speech/1.17.9/text2speech-1.17.9.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/content-type/2.3/content-type-2.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/lang-tag/1.7/lang-tag-1.7.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/nimbus-jose-jwt/9.37.3/nimbus-jose-jwt-9.37.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/oauth2-oidc-sdk/11.9.1/oauth2-oidc-sdk-11.9.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/home/piwalker/.config/minecraft_test/lib/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-buffer/4.1.97.Final/netty-buffer-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-codec/4.1.97.Final/netty-codec-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-common/4.1.97.Final/netty-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-handler/4.1.97.Final/netty-handler-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-resolver/4.1.97.Final/netty-resolver-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-classes-epoll/4.1.97.Final/netty-transport-classes-epoll-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-aarch_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-x86_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-unix-common/4.1.97.Final/netty-transport-native-unix-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport/4.1.97.Final/netty-transport-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna-platform/5.14.0/jna-platform-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/accessors-smart/2.5.0/accessors-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/json-smart/2.5.0/json-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-compress/1.26.0/commons-compress-1.26.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-api/2.22.1/log4j-api-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-core/2.22.1/log4j-core-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-slf4j2-impl/2.22.1/log4j-slf4j2-impl-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/jcraft/jorbis/0.0.17/jorbis-0.0.17.jar:/home/piwalker/.config/minecraft_test/lib/org/joml/joml/1.10.5/joml-1.10.5.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/home/piwalker/.config/minecraft_test/lib/org/ow2/asm/asm/9.3/asm-9.3.jar:/home/piwalker/.config/minecraft_test/lib/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar:/home/piwalker/.config/minecraft_test/bin/1.21.3/client.jar) + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:325) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + ... 5 more + Suppressed: java.lang.UnsatisfiedLinkError: libflite.so: cannot open shared object file: No such file or directory + at com.sun.jna.Native.open(Native Method) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:213) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) [text2speech-1.17.9.jar:?] + at flx.(SourceFile:19) [client.jar:?] + at fmg.(SourceFile:700) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:248) [client.jar:?] + Suppressed: java.lang.UnsatisfiedLinkError: libflite.so: cannot open shared object file: No such file or directory + at com.sun.jna.Native.open(Native Method) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:226) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) [text2speech-1.17.9.jar:?] + at flx.(SourceFile:19) [client.jar:?] + at fmg.(SourceFile:700) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:248) [client.jar:?] + Suppressed: java.io.IOException: Native library (linux-x86-64/libflite.so) not found in resource path (/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-annotations/2.13.4/jackson-annotations-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-core/2.13.4/jackson-core-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-databind/2.13.4.2/jackson-databind-2.13.4.2.jar:/home/piwalker/.config/minecraft_test/lib/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar:/home/piwalker/.config/minecraft_test/lib/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar:/home/piwalker/.config/minecraft_test/lib/com/ibm/icu/icu4j/73.2/icu4j-73.2.jar:/home/piwalker/.config/minecraft_test/lib/com/microsoft/azure/msal4j/1.15.0/msal4j-1.15.0.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/authlib/6.0.55/authlib-6.0.55.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/brigadier/1.3.10/brigadier-1.3.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/datafixerupper/8.0.16/datafixerupper-8.0.16.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/logging/1.4.9/logging-1.4.9.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/patchy/2.2.10/patchy-2.2.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/text2speech/1.17.9/text2speech-1.17.9.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/content-type/2.3/content-type-2.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/lang-tag/1.7/lang-tag-1.7.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/nimbus-jose-jwt/9.37.3/nimbus-jose-jwt-9.37.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/oauth2-oidc-sdk/11.9.1/oauth2-oidc-sdk-11.9.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/home/piwalker/.config/minecraft_test/lib/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-buffer/4.1.97.Final/netty-buffer-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-codec/4.1.97.Final/netty-codec-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-common/4.1.97.Final/netty-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-handler/4.1.97.Final/netty-handler-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-resolver/4.1.97.Final/netty-resolver-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-classes-epoll/4.1.97.Final/netty-transport-classes-epoll-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-aarch_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-x86_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-unix-common/4.1.97.Final/netty-transport-native-unix-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport/4.1.97.Final/netty-transport-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna-platform/5.14.0/jna-platform-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/accessors-smart/2.5.0/accessors-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/json-smart/2.5.0/json-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-compress/1.26.0/commons-compress-1.26.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-api/2.22.1/log4j-api-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-core/2.22.1/log4j-core-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-slf4j2-impl/2.22.1/log4j-slf4j2-impl-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/jcraft/jorbis/0.0.17/jorbis-0.0.17.jar:/home/piwalker/.config/minecraft_test/lib/org/joml/joml/1.10.5/joml-1.10.5.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/home/piwalker/.config/minecraft_test/lib/org/ow2/asm/asm/9.3/asm-9.3.jar:/home/piwalker/.config/minecraft_test/lib/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar:/home/piwalker/.config/minecraft_test/bin/1.21.3/client.jar) + at com.sun.jna.Native.extractFromResourcePath(Native.java:1141) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:297) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) [text2speech-1.17.9.jar:?] + at flx.(SourceFile:19) [client.jar:?] + at fmg.(SourceFile:700) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:248) [client.jar:?] +[16:53:11] [Render thread/INFO]: Reloading ResourceManager: vanilla +[16:53:12] [Worker-Main-3/INFO]: Found unifont_all_no_pua-15.1.05.hex, loading +[16:53:12] [Worker-Main-3/INFO]: Found unifont_jp_patch-15.1.05.hex, loading +[16:53:13] [Render thread/WARN]: Missing sound for event: minecraft:block.spawner.fall +[16:53:13] [Render thread/INFO]: OpenAL initialized on device Built-in Audio Analog Stereo +[16:53:13] [Render thread/INFO]: Sound engine started +[16:53:14] [Render thread/INFO]: Created: 1024x512x4 minecraft:textures/atlas/blocks.png-atlas +[16:53:14] [Render thread/INFO]: Created: 256x256x4 minecraft:textures/atlas/signs.png-atlas +[16:53:14] [Render thread/INFO]: Created: 512x512x4 minecraft:textures/atlas/banner_patterns.png-atlas +[16:53:14] [Render thread/INFO]: Created: 512x512x4 minecraft:textures/atlas/shield_patterns.png-atlas +[16:53:14] [Render thread/INFO]: Created: 1024x1024x4 minecraft:textures/atlas/armor_trims.png-atlas +[16:53:14] [Render thread/INFO]: Created: 256x256x4 minecraft:textures/atlas/chest.png-atlas +[16:53:14] [Render thread/INFO]: Created: 128x64x4 minecraft:textures/atlas/decorated_pot.png-atlas +[16:53:14] [Render thread/INFO]: Created: 512x256x4 minecraft:textures/atlas/shulker_boxes.png-atlas +[16:53:14] [Render thread/INFO]: Created: 512x256x4 minecraft:textures/atlas/beds.png-atlas +[16:53:14] [Render thread/INFO]: Created: 64x64x0 minecraft:textures/atlas/map_decorations.png-atlas +[16:53:14] [Render thread/INFO]: Created: 512x256x0 minecraft:textures/atlas/particles.png-atlas +[16:53:14] [Render thread/INFO]: Created: 512x256x0 minecraft:textures/atlas/paintings.png-atlas +[16:53:14] [Render thread/INFO]: Created: 256x128x0 minecraft:textures/atlas/mob_effects.png-atlas +[16:53:14] [Render thread/INFO]: Created: 1024x512x0 minecraft:textures/atlas/gui.png-atlas +[16:53:21] [Render thread/ERROR]: Error while loading the narrator +com.mojang.text2speech.Narrator$InitializeException: Failed to load library flite + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:69) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) ~[text2speech-1.17.9.jar:?] + at fsq.a(SourceFile:106) ~[client.jar:?] + at fsq.aP_(SourceFile:95) ~[client.jar:?] + at fsq.a(SourceFile:66) ~[client.jar:?] + at fof.b(SourceFile:96) ~[client.jar:?] + at fnw.a(SourceFile:43) ~[client.jar:?] + at fod.a(SourceFile:141) ~[client.jar:?] + at fqc.a(SourceFile:38) ~[client.jar:?] + at fmh.a(SourceFile:114) ~[client.jar:?] + at fmh.c(SourceFile:215) ~[client.jar:?] + at bry.execute(SourceFile:110) ~[client.jar:?] + at fmh.b(SourceFile:215) ~[client.jar:?] + at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) [lwjgl-glfw-3.3.3.jar:build 5] + at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.3.jar:build 5] + at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509) [lwjgl-glfw-3.3.3.jar:build 5] + at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:186) [client.jar:?] + at fmg.c(SourceFile:1373) [client.jar:?] + at fmg.f(SourceFile:933) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:265) [client.jar:?] +Caused by: java.lang.UnsatisfiedLinkError: Unable to load library 'flite': +libflite.so: cannot open shared object file: No such file or directory +libflite.so: cannot open shared object file: No such file or directory +Native library (linux-x86-64/libflite.so) not found in resource path (/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-annotations/2.13.4/jackson-annotations-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-core/2.13.4/jackson-core-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-databind/2.13.4.2/jackson-databind-2.13.4.2.jar:/home/piwalker/.config/minecraft_test/lib/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar:/home/piwalker/.config/minecraft_test/lib/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar:/home/piwalker/.config/minecraft_test/lib/com/ibm/icu/icu4j/73.2/icu4j-73.2.jar:/home/piwalker/.config/minecraft_test/lib/com/microsoft/azure/msal4j/1.15.0/msal4j-1.15.0.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/authlib/6.0.55/authlib-6.0.55.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/brigadier/1.3.10/brigadier-1.3.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/datafixerupper/8.0.16/datafixerupper-8.0.16.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/logging/1.4.9/logging-1.4.9.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/patchy/2.2.10/patchy-2.2.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/text2speech/1.17.9/text2speech-1.17.9.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/content-type/2.3/content-type-2.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/lang-tag/1.7/lang-tag-1.7.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/nimbus-jose-jwt/9.37.3/nimbus-jose-jwt-9.37.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/oauth2-oidc-sdk/11.9.1/oauth2-oidc-sdk-11.9.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/home/piwalker/.config/minecraft_test/lib/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-buffer/4.1.97.Final/netty-buffer-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-codec/4.1.97.Final/netty-codec-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-common/4.1.97.Final/netty-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-handler/4.1.97.Final/netty-handler-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-resolver/4.1.97.Final/netty-resolver-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-classes-epoll/4.1.97.Final/netty-transport-classes-epoll-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-aarch_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-x86_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-unix-common/4.1.97.Final/netty-transport-native-unix-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport/4.1.97.Final/netty-transport-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna-platform/5.14.0/jna-platform-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/accessors-smart/2.5.0/accessors-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/json-smart/2.5.0/json-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-compress/1.26.0/commons-compress-1.26.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-api/2.22.1/log4j-api-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-core/2.22.1/log4j-core-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-slf4j2-impl/2.22.1/log4j-slf4j2-impl-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/jcraft/jorbis/0.0.17/jorbis-0.0.17.jar:/home/piwalker/.config/minecraft_test/lib/org/joml/joml/1.10.5/joml-1.10.5.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/home/piwalker/.config/minecraft_test/lib/org/ow2/asm/asm/9.3/asm-9.3.jar:/home/piwalker/.config/minecraft_test/lib/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar:/home/piwalker/.config/minecraft_test/bin/1.21.3/client.jar) + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:325) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + ... 20 more + Suppressed: java.lang.UnsatisfiedLinkError: libflite.so: cannot open shared object file: No such file or directory + at com.sun.jna.Native.open(Native Method) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:213) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) ~[text2speech-1.17.9.jar:?] + at fsq.a(SourceFile:106) ~[client.jar:?] + at fsq.aP_(SourceFile:95) ~[client.jar:?] + at fsq.a(SourceFile:66) ~[client.jar:?] + at fof.b(SourceFile:96) ~[client.jar:?] + at fnw.a(SourceFile:43) ~[client.jar:?] + at fod.a(SourceFile:141) ~[client.jar:?] + at fqc.a(SourceFile:38) ~[client.jar:?] + at fmh.a(SourceFile:114) ~[client.jar:?] + at fmh.c(SourceFile:215) ~[client.jar:?] + at bry.execute(SourceFile:110) ~[client.jar:?] + at fmh.b(SourceFile:215) ~[client.jar:?] + at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) [lwjgl-glfw-3.3.3.jar:build 5] + at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.3.jar:build 5] + at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509) [lwjgl-glfw-3.3.3.jar:build 5] + at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:186) [client.jar:?] + at fmg.c(SourceFile:1373) [client.jar:?] + at fmg.f(SourceFile:933) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:265) [client.jar:?] + Suppressed: java.lang.UnsatisfiedLinkError: libflite.so: cannot open shared object file: No such file or directory + at com.sun.jna.Native.open(Native Method) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:226) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) ~[text2speech-1.17.9.jar:?] + at fsq.a(SourceFile:106) ~[client.jar:?] + at fsq.aP_(SourceFile:95) ~[client.jar:?] + at fsq.a(SourceFile:66) ~[client.jar:?] + at fof.b(SourceFile:96) ~[client.jar:?] + at fnw.a(SourceFile:43) ~[client.jar:?] + at fod.a(SourceFile:141) ~[client.jar:?] + at fqc.a(SourceFile:38) ~[client.jar:?] + at fmh.a(SourceFile:114) ~[client.jar:?] + at fmh.c(SourceFile:215) ~[client.jar:?] + at bry.execute(SourceFile:110) ~[client.jar:?] + at fmh.b(SourceFile:215) ~[client.jar:?] + at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) [lwjgl-glfw-3.3.3.jar:build 5] + at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.3.jar:build 5] + at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509) [lwjgl-glfw-3.3.3.jar:build 5] + at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:186) [client.jar:?] + at fmg.c(SourceFile:1373) [client.jar:?] + at fmg.f(SourceFile:933) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:265) [client.jar:?] + Suppressed: java.io.IOException: Native library (linux-x86-64/libflite.so) not found in resource path (/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-annotations/2.13.4/jackson-annotations-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-core/2.13.4/jackson-core-2.13.4.jar:/home/piwalker/.config/minecraft_test/lib/com/fasterxml/jackson/core/jackson-databind/2.13.4.2/jackson-databind-2.13.4.2.jar:/home/piwalker/.config/minecraft_test/lib/com/github/oshi/oshi-core/6.4.10/oshi-core-6.4.10.jar:/home/piwalker/.config/minecraft_test/lib/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:/home/piwalker/.config/minecraft_test/lib/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar:/home/piwalker/.config/minecraft_test/lib/com/ibm/icu/icu4j/73.2/icu4j-73.2.jar:/home/piwalker/.config/minecraft_test/lib/com/microsoft/azure/msal4j/1.15.0/msal4j-1.15.0.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/authlib/6.0.55/authlib-6.0.55.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/blocklist/1.0.10/blocklist-1.0.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/brigadier/1.3.10/brigadier-1.3.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/datafixerupper/8.0.16/datafixerupper-8.0.16.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/jtracy/1.0.29/jtracy-1.0.29-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/logging/1.4.9/logging-1.4.9.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/patchy/2.2.10/patchy-2.2.10.jar:/home/piwalker/.config/minecraft_test/lib/com/mojang/text2speech/1.17.9/text2speech-1.17.9.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/content-type/2.3/content-type-2.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/lang-tag/1.7/lang-tag-1.7.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/nimbus-jose-jwt/9.37.3/nimbus-jose-jwt-9.37.3.jar:/home/piwalker/.config/minecraft_test/lib/com/nimbusds/oauth2-oidc-sdk/11.9.1/oauth2-oidc-sdk-11.9.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-codec/commons-codec/1.16.0/commons-codec-1.16.0.jar:/home/piwalker/.config/minecraft_test/lib/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar:/home/piwalker/.config/minecraft_test/lib/commons-logging/commons-logging/1.2/commons-logging-1.2.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-buffer/4.1.97.Final/netty-buffer-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-codec/4.1.97.Final/netty-codec-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-common/4.1.97.Final/netty-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-handler/4.1.97.Final/netty-handler-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-resolver/4.1.97.Final/netty-resolver-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-classes-epoll/4.1.97.Final/netty-transport-classes-epoll-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-aarch_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-epoll/4.1.97.Final/netty-transport-native-epoll-4.1.97.Final-linux-x86_64.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport-native-unix-common/4.1.97.Final/netty-transport-native-unix-common-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/io/netty/netty-transport/4.1.97.Final/netty-transport-4.1.97.Final.jar:/home/piwalker/.config/minecraft_test/lib/it/unimi/dsi/fastutil/8.5.12/fastutil-8.5.12.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna-platform/5.14.0/jna-platform-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/java/dev/jna/jna/5.14.0/jna-5.14.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/accessors-smart/2.5.0/accessors-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/minidev/json-smart/2.5.0/json-smart-2.5.0.jar:/home/piwalker/.config/minecraft_test/lib/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-compress/1.26.0/commons-compress-1.26.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpclient/4.5.13/httpclient-4.5.13.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-api/2.22.1/log4j-api-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-core/2.22.1/log4j-core-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/apache/logging/log4j/log4j-slf4j2-impl/2.22.1/log4j-slf4j2-impl-2.22.1.jar:/home/piwalker/.config/minecraft_test/lib/org/jcraft/jorbis/0.0.17/jorbis-0.0.17.jar:/home/piwalker/.config/minecraft_test/lib/org/joml/joml/1.10.5/joml-1.10.5.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-freetype/3.3.3/lwjgl-freetype-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-glfw/3.3.3/lwjgl-glfw-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-jemalloc/3.3.3/lwjgl-jemalloc-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-openal/3.3.3/lwjgl-openal-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-opengl/3.3.3/lwjgl-opengl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-stb/3.3.3/lwjgl-stb-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl-tinyfd/3.3.3/lwjgl-tinyfd-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3.jar:/home/piwalker/.config/minecraft_test/lib/org/lwjgl/lwjgl/3.3.3/lwjgl-3.3.3-natives-linux.jar:/home/piwalker/.config/minecraft_test/lib/org/lz4/lz4-java/1.8.0/lz4-java-1.8.0.jar:/home/piwalker/.config/minecraft_test/lib/org/ow2/asm/asm/9.3/asm-9.3.jar:/home/piwalker/.config/minecraft_test/lib/org/slf4j/slf4j-api/2.0.9/slf4j-api-2.0.9.jar:/home/piwalker/.config/minecraft_test/bin/1.21.3/client.jar) + at com.sun.jna.Native.extractFromResourcePath(Native.java:1141) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:297) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:481) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:423) ~[jna-5.14.0.jar:5.14.0 (b0)] + at com.mojang.text2speech.NarratorLinux$FliteLibrary.loadNative(NarratorLinux.java:67) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.NarratorLinux.(NarratorLinux.java:18) ~[text2speech-1.17.9.jar:?] + at com.mojang.text2speech.Narrator.getNarrator(Narrator.java:41) ~[text2speech-1.17.9.jar:?] + at fsq.a(SourceFile:106) ~[client.jar:?] + at fsq.aP_(SourceFile:95) ~[client.jar:?] + at fsq.a(SourceFile:66) ~[client.jar:?] + at fof.b(SourceFile:96) ~[client.jar:?] + at fnw.a(SourceFile:43) ~[client.jar:?] + at fod.a(SourceFile:141) ~[client.jar:?] + at fqc.a(SourceFile:38) ~[client.jar:?] + at fmh.a(SourceFile:114) ~[client.jar:?] + at fmh.c(SourceFile:215) ~[client.jar:?] + at bry.execute(SourceFile:110) ~[client.jar:?] + at fmh.b(SourceFile:215) ~[client.jar:?] + at org.lwjgl.glfw.GLFWMouseButtonCallbackI.callback(GLFWMouseButtonCallbackI.java:43) [lwjgl-glfw-3.3.3.jar:build 5] + at org.lwjgl.system.JNI.invokeV(Native Method) ~[lwjgl-3.3.3.jar:build 5] + at org.lwjgl.glfw.GLFW.glfwWaitEventsTimeout(GLFW.java:3509) [lwjgl-glfw-3.3.3.jar:build 5] + at com.mojang.blaze3d.systems.RenderSystem.limitDisplayFPS(SourceFile:186) [client.jar:?] + at fmg.c(SourceFile:1373) [client.jar:?] + at fmg.f(SourceFile:933) [client.jar:?] + at net.minecraft.client.main.Main.main(SourceFile:265) [client.jar:?] +[16:53:24] [Render thread/INFO]: Loaded 1337 recipes +[16:53:24] [Render thread/INFO]: Loaded 1448 advancements +[16:53:25] [Server thread/INFO]: Starting integrated minecraft server version 1.21.3 +[16:53:25] [Server thread/INFO]: Generating keypair +[16:53:30] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld +[16:53:31] [Render thread/INFO]: Preparing spawn area: 2% +[16:53:31] [Render thread/INFO]: Preparing spawn area: 2% +[16:53:31] [Render thread/INFO]: Preparing spawn area: 2% +[16:53:32] [Render thread/INFO]: Preparing spawn area: 2% +[16:53:32] [Render thread/INFO]: Preparing spawn area: 18% +[16:53:33] [Render thread/INFO]: Preparing spawn area: 18% +[16:53:34] [Render thread/INFO]: Preparing spawn area: 51% +[16:53:34] [Render thread/INFO]: Preparing spawn area: 51% +[16:53:34] [Render thread/INFO]: Preparing spawn area: 73% +[16:53:35] [Render thread/INFO]: Time elapsed: 4029 ms +[16:53:35] [Server thread/INFO]: Changing view distance to 12, from 10 +[16:53:35] [Server thread/INFO]: Changing simulation distance to 12, from 0 +[16:53:35] [Server thread/INFO]: PiWalker[local:E:eb5d5575] logged in with entity id 52 at (-6.5, 75.0, 10.5) +[16:53:35] [Server thread/INFO]: PiWalker joined the game +[16:53:36] [Render thread/INFO]: Loaded 2 advancements +[16:53:43] [Server thread/INFO]: [Not Secure] hi +[16:53:43] [Render thread/INFO]: [CHAT] hi +[16:53:51] [Render thread/INFO]: Loaded 5 advancements +[16:53:58] [Server thread/INFO]: Saving and pausing game... +[16:53:58] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:overworld +[16:53:58] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:the_nether +[16:53:58] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:the_end +[16:53:59] [Server thread/INFO]: PiWalker lost connection: Disconnected +[16:53:59] [Server thread/INFO]: PiWalker left the game +[16:53:59] [Server thread/INFO]: Stopping singleplayer server as player logged out +[16:53:59] [Server thread/INFO]: Stopping server +[16:53:59] [Server thread/INFO]: Saving players +[16:53:59] [Server thread/INFO]: Saving worlds +[16:53:59] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:overworld +[16:54:00] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:the_nether +[16:54:00] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:the_end +[16:54:00] [Server thread/INFO]: ThreadedAnvilChunkStorage (New World): All chunks are saved +[16:54:00] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved +[16:54:00] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved +[16:54:00] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved +[16:54:01] [Render thread/INFO]: Stopping! diff --git a/main.go b/main.go index edccfb3..9849252 100644 --- a/main.go +++ b/main.go @@ -10,19 +10,28 @@ import ( "net/http" "net/url" "os" + "os/exec" "path/filepath" + "runtime" "strings" "time" + ) const client_id string = "9305aeb8-5ecb-4e7a-b28f-c33aefcfbd8d" +type McProfile struct { + Id string + Name string +} + type Authentication struct { Access authenticationResp XboxAuth xboxAuthResponse XboxAPI xboxAuthResponse McAPI xboxAuthResponse McAuth McAuthResponse + Profile McProfile } type devCodeResp struct { @@ -120,8 +129,8 @@ type McVersionManifest struct { } type McArguments struct { - Game interface{} - Jvm interface{} + Game []string + Jvm []string } type McAssetIndex struct { @@ -139,10 +148,10 @@ type McDownload struct { } type McDownloads struct { - Client []McDownload - Client_mappings []McDownload - Server []McDownload - Server_mappings []McDownload + Client McDownload + Client_mappings McDownload + Server McDownload + Server_mappings McDownload } @@ -162,10 +171,22 @@ type McLibraryDownload struct { Artifact McLibraryArtifact } +type McRuleOs struct { + Name string + Version string + Arch string +} + +type McRule struct { + Action string + Features map[string]bool + Os McRuleOs +} + type McLibrary struct { Downloads McLibraryDownload Name string - Rules interface{} + Rules []McRule } type McMetadata struct { @@ -326,6 +347,17 @@ func main() { } d, _ = io.ReadAll(resp.Body) json.Unmarshal(d, &auth.McAuth) + httpReq, err = http.NewRequest("GET", "https://api.minecraftservices.com/minecraft/profile", new(bytes.Buffer)) + httpReq.Header.Add("Content-Type", "application/json") + httpReq.Header.Add("Accept", "application/json") + httpReq.Header.Add("Authorization", "Bearer "+auth.McAuth.Access_token) + resp, _ = client.Do(httpReq) + if err != nil { + fmt.Printf("Error obtaining mc profile information: %s\n", err) + } + defer resp.Body.Close() + data, _ = io.ReadAll(resp.Body) + json.Unmarshal(data, &auth.Profile) resp, err = http.Get("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json") if err != nil { fmt.Printf("manifest error") @@ -342,24 +374,44 @@ func main() { data, _ = io.ReadAll(resp.Body) var metadata McMetadata json.Unmarshal(data, &metadata) - resp, err = http.Get(metadata.AssetIndex.Url) - if err != nil { - fmt.Printf("asset index error") + os.MkdirAll(filepath.Join(dir, "minecraft_test", "assets", "indexes"), 0755) + os.MkdirAll(filepath.Join(dir, "minecraft_test", "assets", "objects"), 0755) + download_index := false + if _, err := os.Stat(filepath.Join(dir, "minecraft_test", "assets", "indexes", metadata.Assets+".json")); err == nil { + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "assets", "indexes", metadata.Assets+".json"), os.O_RDONLY, 0755) + defer f.Close() + data, _ = io.ReadAll(f) + sha := sha1.Sum(data) + if hex.EncodeToString(sha[:20]) != metadata.AssetIndex.Sha1 { + download_index = true + } + } else { + download_index = true } - defer resp.Body.Close() - data, _ = io.ReadAll(resp.Body) - sha := sha1.Sum(data) - if hex.EncodeToString(sha[:20]) != metadata.AssetIndex.Sha1 { - fmt.Printf("Error downloading asset index") - return + if download_index { + resp, err = http.Get(metadata.AssetIndex.Url) + if err != nil { + fmt.Printf("asset index error") + } + defer resp.Body.Close() + data, _ = io.ReadAll(resp.Body) + sha := sha1.Sum(data) + if hex.EncodeToString(sha[:20]) != metadata.AssetIndex.Sha1 { + fmt.Printf("Error downloading asset index") + return + } + f, _ = os.OpenFile(filepath.Join(dir, "minecraft_test", "assets", "indexes", metadata.Assets + ".json"), os.O_CREATE|os.O_RDWR, 0755) + defer f.Close() + f.Write(data) } var index map[string]interface{} json.Unmarshal(data, &index) index = index["objects"].(map[string]interface{}) - for name, asset := range index { + for name, asset := range index { asset_map := asset.(map[string]interface{}) - if _, err = os.Stat(filepath.Join(dir, "minecraft_test", "assets", metadata.Assets, name)); err == nil { - f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "assets", metadata.Assets, name), os.O_RDONLY, 0755) + path := asset_map["hash"].(string)[:2] + "/" + asset_map["hash"].(string) + if _, err = os.Stat(filepath.Join(dir, "minecraft_test", "assets", "objects", path)); err == nil { + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "assets", "objects", path), os.O_RDONLY, 0755) data, _ := io.ReadAll(f) sha := sha1.Sum(data) if hex.EncodeToString(sha[:20]) == asset_map["hash"].(string) { @@ -374,26 +426,28 @@ func main() { } defer resp.Body.Close() data, _ = io.ReadAll(resp.Body) - sha = sha1.Sum(data) + sha := sha1.Sum(data) if hex.EncodeToString(sha[:20]) != asset_map["hash"].(string) { fmt.Printf("Sha1 Mismatch\n") return } fmt.Printf("Ok\n") - path := "" - tokens := strings.Split(name, "/") - for ind, token := range tokens { - if ind != len(tokens)-1 { - path = filepath.Join(path, token) - } - } - os.MkdirAll(filepath.Join(dir, "minecraft_test", "assets", metadata.Assets, path), 0755) - f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "assets", metadata.Assets, name), os.O_CREATE|os.O_RDWR, 0755) + os.MkdirAll(filepath.Join(dir, "minecraft_test", "assets", "objects", asset_map["hash"].(string)[:2]), 0755) + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "assets", "objects", path), os.O_CREATE|os.O_RDWR, 0755) defer f.Close() f.Write(data) } for _, lib := range metadata.Libraries { + if _, err = os.Stat(filepath.Join(dir, "minecraft_test", "lib", lib.Downloads.Artifact.Path)); err == nil { + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "lib", lib.Downloads.Artifact.Path), os.O_RDONLY, 0755) + defer f.Close() + data, _ := io.ReadAll(f) + sha := sha1.Sum(data) + if hex.EncodeToString(sha[:20]) == lib.Downloads.Artifact.Sha1 { + continue + } + } fmt.Printf("Downloading %s: ", lib.Name) resp, err = http.Get(lib.Downloads.Artifact.Url) if err != nil { @@ -402,13 +456,121 @@ func main() { } defer resp.Body.Close() data, _ = io.ReadAll(resp.Body) - sha = sha1.Sum(data) + sha := sha1.Sum(data) if hex.EncodeToString(sha[:20]) != lib.Downloads.Artifact.Sha1 { fmt.Printf("Sha1 Mismatch\n") return } + path := "" + tokens := strings.Split(lib.Downloads.Artifact.Path, "/") + for ind, token := range tokens { + if ind != len(tokens)-1 { + path = filepath.Join(path, token) + } + } + os.MkdirAll(filepath.Join(dir, "minecraft_test", "lib", path), 0755) + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "lib", lib.Downloads.Artifact.Path), os.O_CREATE|os.O_RDWR, 0755) + defer f.Close() + f.Write(data) fmt.Printf("OK\n") } + download := false + if os.Stat(filepath.Join(dir, "minecraft_test", "bin", metadata.Id, "client.jar")); err == nil { + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "bin", metadata.Id, "client.jar"), os.O_RDONLY, 0755) + defer f.Close() + data, _ := io.ReadAll(f) + sha := sha1.Sum(data) + if hex.EncodeToString(sha[:20]) != metadata.Downloads.Client.Sha1 { + download = true + } + } else { + download = true + } + + if download { + fmt.Printf("Downloading minecraft.jar: ") + req, err := http.Get(metadata.Downloads.Client.Url) + if err != nil { + fmt.Printf("ERROR\n") + return + } + defer req.Body.Close() + data, _ := io.ReadAll(req.Body) + sha := sha1.Sum(data) + if hex.EncodeToString(sha[:20]) != metadata.Downloads.Client.Sha1 { + fmt.Printf("Sha Mismatch\n") + return + } + fmt.Printf("OK\n") + os.MkdirAll(filepath.Join(dir, "minecraft_test", "bin", metadata.Id), 0755) + f, _ := os.OpenFile(filepath.Join(dir, "minecraft_test", "bin", metadata.Id, "client.jar"), os.O_CREATE|os.O_RDWR, 0755) + defer f.Close() + f.Write(data) + } + os.MkdirAll(filepath.Join(dir, "minecraft_test", "minecraft"), 0755) + args := []string{} + args = append(args, "-Xms512m") + args = append(args, "-Xmx1024m") + for _, val := range metadata.Arguments.Jvm { + val = strings.ReplaceAll(val, "${natives_directory}", filepath.Join(dir, "minecraft_test", "minecraft", "natives")) + switch val { + case "-cp": + args = append(args, val) + case "${classpath}": + arg := "" + for _, lib := range metadata.Libraries { + if lib.Rules != nil && lib.Rules[0].Os.Name != runtime.GOOS { + continue + } + arg += filepath.Join(dir, "minecraft_test", "lib", lib.Downloads.Artifact.Path) + ":" + } + arg += filepath.Join(dir, "minecraft_test", "bin", metadata.Id, "client.jar") + args = append(args, arg) + default: + //args = append(args, val) + } + } + + args = append(args, "net.minecraft.client.main.Main") + + for _, val := range metadata.Arguments.Game { + switch val{ + case "${auth_player_name}": + args = append(args, auth.Profile.Name) + case "${version_name}": + args = append(args, metadata.Id) + case "${game_directory}": + args = append(args, filepath.Join(dir, "minecraft_test", "minecraft")) + case "${assets_root}": + args = append(args, filepath.Join(dir, "minecraft_test", "assets")) + case "${auth_uuid}": + args = append(args, auth.Profile.Id) + case "${auth_access_token}": + args = append(args, auth.McAuth.Access_token) + case "${clientid}": + args = append(args, client_id) + case "${auth_xuid}": + args = append(args, auth.Profile.Id) + case "${version_type}": + args = append(args, "release") + case "${user_type}": + args = append(args, "mojang") + case "${assets_index_name}": + args = append(args, metadata.Assets) + + default: + args = append(args, val) + } + } + + fmt.Printf("Args: %+v", args) + + cmd := exec.Command("/usr/lib/jvm/java-21-openjdk/bin/java", args...) + out, err := cmd.CombinedOutput() + if err != nil { + fmt.Printf("Error: %s\n", err) + } + fmt.Printf("Output: %s\n", out) /* diff --git a/minecraft b/minecraft index cb9ef3e..fe42806 100755 Binary files a/minecraft and b/minecraft differ