Up to Minecraft 1.17.X I used yusefnapora/m1-multimc-hack, but this stopped working for me starting in Minecraft 1.18. Grabbing random jarfiles from a git repository is a little suspicious, so let's do it safely by getting the libraries from the official LWJGL website!
If you don't have Homebrew installed already, install Homebrew by following the instructions at brew.sh. Then, just open a Terminal and type...
brew install java
Install the latest version of MultiMC from the MultiMC website. Unfortunately, the launcher will have to run with Rosetta. This won't affect game performance.
Create a Minecraft 1.18 instance, right click, edit instance, and go to the versions tab on the left. Click on LWJGL in the list, then click customize on the right. Click edit to open the LWJGL configuration file. Replace the content of the file that opens up with the contents of the file called org.lwjgl3.json
that is attached to this gist (see below).
Have fun!
Credits: An older version of this guide required you to manually download jar files. The updated version uses @mjwells2002's gist that automatically downloads the jar files for you!
When I try to launch I get the following error:
12:35:52] [Render thread/INFO]: [STDERR]: [LWJGL] Failed to load a library. Possible solutions:
a) Add the directory that contains the shared library to -Djava.library.path or -Dorg.lwjgl.librarypath.
b) Add the JAR that contains the shared library to the classpath.
[12:35:52] [Render thread/INFO]: [STDERR]: [LWJGL] Enable debug mode with -Dorg.lwjgl.util.Debug=true for better diagnostics.
[12:35:52] [Render thread/INFO]: [STDERR]: [LWJGL] Enable the SharedLibraryLoader debug mode with -Dorg.lwjgl.util.DebugLoader=true for better diagnostics.
[12:35:53] [Render thread/INFO]: [STDERR]: Failed to start Minecraft:
[12:35:53] [Render thread/INFO]: [STDERR]: java.lang.reflect.InvocationTargetException
[12:35:53] [Render thread/INFO]: [STDERR]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[12:35:53] [Render thread/INFO]: [STDERR]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[12:35:53] [Render thread/INFO]: [STDERR]: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[12:35:53] [Render thread/INFO]: [STDERR]: at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[12:35:53] [Render thread/INFO]: [STDERR]: at org.multimc.onesix.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:210)
[12:35:53] [Render thread/INFO]: [STDERR]: at org.multimc.onesix.OneSixLauncher.launch(OneSixLauncher.java:245)
[12:35:53] [Render thread/INFO]: [STDERR]: at org.multimc.EntryPoint.listen(EntryPoint.java:143)
[12:35:53] [Render thread/INFO]: [STDERR]: at org.multimc.EntryPoint.main(EntryPoint.java:34)
[12:35:53] [Render thread/INFO]: [STDERR]: Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.mojang.blaze3d.systems.RenderSystem
[12:35:53] [Render thread/INFO]: [STDERR]: at ac.a(SourceFile:65)
[12:35:53] [Render thread/INFO]: [STDERR]: at dyr.a(SourceFile:2394)
[12:35:53] [Render thread/INFO]: [STDERR]: at dyr.a(SourceFile:2389)
[12:35:53] [Render thread/INFO]: [STDERR]: at net.minecraft.client.main.Main.main(SourceFile:206)
[12:35:53] [Render thread/INFO]: [STDERR]: ... 8 more
[12:35:53] [Render thread/INFO]: [STDOUT]: Exiting with -1
Process exited with code 255.