Admicos / minecraft-wayland

A better way of running Minecraft Without XWayland. Because I REALLY had nothing better to do with my life.
254 stars 14 forks source link

How to force using native libs? #36

Closed JosefLitos closed 1 year ago

JosefLitos commented 1 year ago

I tried many launchers, the one I used currently stopped working on Arch, so I tried to launch the game manually, succeeded, but nothing more.

I tried to point JVM to the /usr/lib/libglfw.so with -Dorg.lwjgl.librarypath=/usr/lib but even if I put absolute nonsense in there, nothing is affected. Is there a different parameter to be used with 1.19.2+?

JamiKettunen commented 1 year ago

Have you tried https://github.com/mindstorm38/portablemc? that is a CLI launcher (and API if you want to script it with Python and maybe even provide your own GUI etc.) which provides e.g. the following to use native GLFW:

portablemc start --lwjgl 3.3.1 --exclude-lib lwjgl-glfw::natives --include-bin /usr/lib/libglfw.so.3

I'm not sure if providing the --lwjgl arg is necessary in your case but I've personally had to use --lwjgl 3.2.3 to get it running on my Aarch64 (ARM64) hardware, and perhaps musl libc was involved too :p

Since you want to use /usr/lib/libglfw.so you can probably drop --include-bin /usr/lib/libglfw.so.3 as well as iirc it was only needed on distributions where -dev or -devel subpackages contain these development-oriented unversioned shared library symlinks, or in case you want to provide it from a custom path.

DimiDimit commented 1 year ago

The README suggests using

-Dorg.lwjgl.glfw.libname=/usr/lib/libglfw.so

instead of org.lwjgl.librarypath, and that works for me…

JosefLitos commented 1 year ago

using full libname has changed things, but only so that now it doesn't launch at all, AUR version of this package reports version 3.3.8, but MC still reports running 3.3.1 SNAPSHOT, whatever that would be and then crashes: (launched fabric with no mods)

[12:41:24] [main/INFO]: Loading Minecraft 1.19.2 with Fabric Loader 0.14.11
[12:41:24] [main/INFO]: Loading 3 mods:
    - fabricloader 0.14.11
    - java 17
    - minecraft 1.19.2
[12:41:24] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=file:/home/kepis/.minecraft/libraries/net/fabricmc/sponge-mixin/0.11.4+mixin.0.8.5/sponge-mixin-0.11.4+mixin.0.8.5.jar Service=Knot/Fabric Env=CLIENT
[12:41:24] [main/WARN]: Configuration conflict: there is more than one oshi.properties file on the classpath
[12:41:24] [main/WARN]: Configuration conflict: there is more than one oshi.architecture.properties file on the classpath
[12:41:26] [main/INFO]: Building optimized datafixer
[12:41:28] [Render thread/INFO]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
[12:41:29] [Render thread/INFO]: Setting user: Kepis_72
[12:41:30] [Render thread/INFO]: Backend library: LWJGL version 3.3.1 SNAPSHOT
[12:41:30] [Render thread/WARN]: Configuration conflict: there is more than one oshi.architecture.properties file on the classpath
---- Minecraft Crash Report ----
// I blame Dinnerbone.

Time: 2022-12-10 12:41:30
Description: Initializing game

java.lang.ExceptionInInitializerError
    at org.lwjgl.glfw.GLFW.nglfwGetError(GLFW.java:1219)
    at org.lwjgl.glfw.GLFW.glfwGetError(GLFW.java:1248)
    at net.minecraft.class_1041.method_4492(class_1041.java:140)
    at com.mojang.blaze3d.platform.GLX._initGlfw(GLX.java:59)
    at com.mojang.blaze3d.systems.RenderSystem.initBackendSystem(RenderSystem.java:826)
    at net.minecraft.class_310.<init>(class_310.java:481)
    at net.minecraft.client.main.Main.method_44604(Main.java:205)
    at net.minecraft.client.main.Main.main(Main.java:51)
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:461)
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
Caused by: java.lang.NullPointerException: A required function is missing: glfwInitAllocator
    at org.lwjgl.system.APIUtil.requiredFunctionMissing(APIUtil.java:129)
    at org.lwjgl.system.APIUtil.apiGetFunctionAddress(APIUtil.java:122)
    at org.lwjgl.glfw.GLFW$Functions.<clinit>(GLFW.java:42)
    ... 11 more

    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>
DimiDimit commented 1 year ago

You need the one-nineteen branch.

JamiKettunen commented 1 year ago

Ah, indeed something changed with newer MC versions, see #35 and #29. @JosefLitos Interestingly using --lwjgl 3.2.3 on my ARM64 device I'm able to play 1.19 just fine with system provided GLFW, though this was on X11 and not Wayland.

JosefLitos commented 1 year ago

didn't realize I have to compile from 1.19 branch. thanks, that fixed my issue.