MultiMC / Launcher

A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once
https://multimc.org/
Other
4.32k stars 882 forks source link

Custom LWJGL version shows incorrectly #3938

Closed tresf closed 3 years ago

tresf commented 3 years ago

Operating System

macOS

Description of bug

When adding a custom LWGL JSON file, it DOES list in the Version table properly but it does NOT appear in the "Change version" dialog, instead it shows the last item selected.

Similar to #1153, I've taken the opportunity to attempt a custom JSON file to side-load the nightly lwjgl into MultiMC. Quoting:

Well, this is technically in place, but you either have to package new versions yourself, or they need to be added to the metadata server and hosted somewhere.

Steps to reproduce

I just hosted some of the nightly files on GitHub to see if I could get it working. To edit the JSON file I did the following:

This opens the JSON in a text editor. I pasted the following contents:

Here's my file: (warning, this is intended for an ARM64 Mac only)

Click to see json file ```json { "formatVersion": 1, "libraries": [ { "downloads": { "artifact": { "sha1": "0c41e6dff8c44fc7dcacda7c39c9297e7d100548", "size": 117915, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-glfw.jar" } }, "name": "org.lwjgl:lwjgl-glfw:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "0c41e6dff8c44fc7dcacda7c39c9297e7d100548", "size": 117915, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-glfw.jar" }, "classifiers": { "natives-macos": { "sha1": "4eb4f03413ff2adaca0ff689202e2a715dd16687", "size": 67274, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-glfw-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl-glfw:3.3.0-RC.11", "natives": { "osx": "natives-macos" } }, { "downloads": { "artifact": { "sha1": "8b756cd284b4f7ba9706069725b90ad393a65599", "size": 36676, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-jemalloc.jar" } }, "name": "org.lwjgl:lwjgl-jemalloc:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "8b756cd284b4f7ba9706069725b90ad393a65599", "size": 36676, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-jemalloc.jar" }, "classifiers": { "natives-macos": { "sha1": "24b6962f71ce035515c5dabbd0898456f31ce852", "size": 102277, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-jemalloc-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl-jemalloc:3.3.0-RC.11", "natives": { "osx": "natives-macos" } }, { "downloads": { "artifact": { "sha1": "6e8e9d7ae6d64c96f35618354401788a848d9748", "size": 88053, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-openal.jar" } }, "name": "org.lwjgl:lwjgl-openal:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "6e8e9d7ae6d64c96f35618354401788a848d9748", "size": 88053, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-openal.jar" }, "classifiers": { "natives-macos": { "sha1": "c727c17c2372af6d9a4c6ae84d8c5511b58e45de", "size": 346115, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-openal-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl-openal:3.3.0-RC.11", "natives": { "osx": "natives-macos" } }, { "downloads": { "artifact": { "sha1": "3aed63a7a8e158fd3e9d3e0a17358f38fe506a8c", "size": 916567, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-opengl.jar" } }, "name": "org.lwjgl:lwjgl-opengl:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "3aed63a7a8e158fd3e9d3e0a17358f38fe506a8c", "size": 916567, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-opengl.jar" }, "classifiers": { "natives-macos": { "sha1": "e2c4108fbfb4da6f2f4f39234dacdcbafaf13007", "size": 41512, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-opengl-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl-opengl:3.3.0-RC.11", "natives": { "osx": "natives-macos" } }, { "downloads": { "artifact": { "sha1": "e7a20f5ef01143f621131670c10cfee343968b82", "size": 111375, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-stb.jar" } }, "name": "org.lwjgl:lwjgl-stb:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "e7a20f5ef01143f621131670c10cfee343968b82", "size": 111375, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-stb.jar" }, "classifiers": { "natives-macos": { "sha1": "7c772308a04797df7039be4418d7d6bef781c6f6", "size": 172848, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-stb-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl-stb:3.3.0-RC.11", "natives": { "osx": "natives-macos" } }, { "downloads": { "artifact": { "sha1": "a6b8fb51fac7b53101fcc1dce380766d76635b33", "size": 6758, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-tinyfd.jar" } }, "name": "org.lwjgl:lwjgl-tinyfd:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "a6b8fb51fac7b53101fcc1dce380766d76635b33", "size": 6758, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-tinyfd.jar" }, "classifiers": { "natives-macos": { "sha1": "67f20cba2f6d61eb8e657e2d47807078d7a98cb5", "size": 40827, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-tinyfd-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl-tinyfd:3.3.0-RC.11", "natives": { "osx": "natives-macos" } }, { "downloads": { "artifact": { "sha1": "58af756828308c0e6a2e481457de166a3d126c5a", "size": 567426, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl.jar" } }, "name": "org.lwjgl:lwjgl:3.3.0-RC.11" }, { "downloads": { "artifact": { "sha1": "58af756828308c0e6a2e481457de166a3d126c5a", "size": 567426, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl.jar" }, "classifiers": { "natives-macos": { "sha1": "3725be8f1b0556fce59b12fc8caced7495468290", "size": 40802, "url": "https://github.com/tresf/lwjgl3/releases/download/v3.3.0-RC.11/lwjgl-natives-macos-arm64.jar" } } }, "name": "org.lwjgl:lwjgl:3.3.0-RC.11", "natives": { "osx": "natives-macos" } } ], "name": "LWJGL 3", "releaseTime": "2021-05-25T22:24:00+00:00", "type": "release", "uid": "org.lwjgl3", "version": "3.3.0-RC.11", "volatile": true } ```

Next, I downloaded the new LWJGL version and launched Minecraft.

Suspected cause

The quote "have to package new versions yourself" suggests this may be intended behavior however, I am uncertain as to the procedure for this and if the above steps are doing it correctly or not.

This issue is unique

phit commented 3 years ago

When adding a custom LWGL JSON file, it DOES list in the Version table properly but it does NOT appear in the "Change version" dialog, instead it shows the last item selected.

I'm confused as to what the issue is, the version dialog shows versions available from the meta server. The table lists active components that can be edited and created via JSON in that list.

See also https://github.com/MultiMC/MultiMC5/wiki/JSON-Patches

At no point has editing the JSONs affected the officially available versions.

tresf commented 3 years ago

I'm confused as to what the issue is, the version dialog shows versions available from the meta server. The table lists active components that can be edited and created via JSON in that list.

The interface provides no indication -- other than in the version table -- which version is loaded. It also provides no way for switching between an official version and one which was just created.

The only way one would know if this is loaded is by reading the launch console and observing the jar names have changed.

At no point has editing the JSONs affected the officially available versions.

If the actions should have no relation, graying out the table until the custom JSON edits were undone may provide less confusion. Another proposal is to actually add it to the table for quick switching. Based on how the patches folder works, I understand if the latter may be unreasonably complex to implement, but (correct me if I'm wrong) this JSON format seems to be the preferred technique for testing alternately LWJGL versions, so using a button labeled "Change version" is exactly where any user looking to do this, would first look.

peterix commented 3 years ago

No. There is no way to add versions. You only ever see versions provided from the MultiMC meta server in that list and this is entirely intentional.

peterix commented 3 years ago

The purpose of this is to strongly encourage people to not use custom versions and instead fix the real issues they are facing

peterix commented 3 years ago

So. Why are you messing with LWJGL?

bagong commented 3 years ago

I don't know the OT's reason, but one would be to get it run on the Raspberry Pi.

On Sat, 17 Jul 2021, 01:47 Petr Mrázek, @.***> wrote:

So. Why are you messing with LWJGL?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/MultiMC/MultiMC5/issues/3938#issuecomment-881774398, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALOW2NAG5UVFIS6NLMGTLDTYDAIZANCNFSM5AO27IKQ .

peterix commented 3 years ago

Well, the real fix to that would be to have ARM linux builds of MultiMC and the game dependencies.

bagong commented 3 years ago

Sure, but for the time being it is helpful. My understanding was that you don't support custom builds, but don't hinder them either - which I find a nice attitude.

On Sun, 18 Jul 2021, 03:19 Petr Mrázek, @.***> wrote:

Well, the real fix to that would be to have ARM linux builds of MultiMC and the game dependencies.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MultiMC/MultiMC5/issues/3938#issuecomment-881982137, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALOW2K2MUT6RC5D77ISW4LTYIT2ZANCNFSM5AO27IKQ .

tresf commented 3 years ago

The purpose of this is to strongly encourage people to not use custom versions and instead fix the real issues they are facing

Understood and based on the ~4,000 bug reports (this is bug report ticks in at #3938), I can't imagine the number of "support requests" mislabeled as bug reports that flood through this tracker. That said, I think the interface is slightly unobvious as to what's being described, intentional or not.

Quoting myself:

If the actions should have no relation, graying out the table until the custom JSON edits were undone may provide less confusion.

I'm sure this line is reserved for the number of versions available (not necessarily whether it's been changed by the Edit button), but it seems like displaying to the user that the version is not editable would clarify that these components are mutually exclusive to each other.

https://github.com/MultiMC/MultiMC5/blob/5f8d07c0092b6cc44f81104a3d7f9e7e49d9df5d/application/pages/instance/VersionPage.cpp#L232

So. Why are you messing with LWJGL?

When searching for running Minecraft natively on an M1, the first result is a Python script added to MultiMC but comes with its own, 5-month old version of LWJGL.

Since MultiMC offers the ability to customize LWJGL without scripting in the dependencies, I decided to use the built-in functionality for editing LWJGL using the Edit button.

Since this Edit functionality encourages:

... I find it superior to the Python approach, which is self-admittedly a hack.

Last, there are some issues with some shaders and the Python version, so changing LWJGL allows early native M1 adopters to experiment with the various 3rd-party library before Microsoft releases an officially supported version.

I've found some tutorials which do not involve MultiMC at all, but they do not provide an easy, usable stacktrace like MultiMC does, nor the quick user interface for adding customizations so MultiMC was chosen for that reason.

So I was messing with LWJGL to in hopes to provide an cleaner technique to early M1 adopters.

tresf commented 3 years ago

I don't know the OT's reason, but one would be to get it run on the Raspberry Pi.

Well, yes but more broadly, on historically unsupported hardware.

For example, the Surface Pro X falls into a similar category as the M1, it ships x86 emulation capable of starting either the official Minecraft client or MultiMC, but runs the entire JVM in emulation and suffers as similar LWJGL issues as the M1 if a native JVM is chosen.

ghost commented 2 years ago

https://docs.microsoft.com/en-us/java/openjdk/download

The JVM runs native on Windows/Arm64