Whenever I play a game that utilizes the OpenAL sound system, I like to make use of my copy of Rapture3D. Rapture3D is a vastly superior OpenAL implementation that supports (amongst other things) 3D surround sound over stereo headphones via the use of psychoacoustic techniques based on head-related transfer functions (HRTF).
With the introduction of the new Minecraft launcher, the directory structure and start-up process of Minecraft seems to have changed quite a bit.
Previously, swapping out the OpenAL driver was simple. You just had to replace the OpenAL32.dll and/or OpenAL64.dll files in %APPDATA%\.minecraft\bin\natives\ with your preferred libraries. Now things don't seem so simple and I haven't had any success yet.
I worked out that JAR files can be opened with WinRAR and I've discovered that OpenAL32.dll and OpenAL64.dll are now stored inside %APPDATA%\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar.
When the game is launched, it extracts these files and a bunch of other libraries into a new directory that it creates: %APPDATA%\.minecraft\versions\1.6.2\1.6.2-natives-XXXXXXXXXXXXXX (where the Xs are a string of numbers that are different for each launch). When the game is closed, it deletes this directory.
Unsurprisingly, replacing the OpenAL libraries in this temporary directory while the game is running doesn't work. I've also tried overwriting the OpenAL libraries in lwjgl-platform-2.9.0-natives-windows.jar using WinRAR but Minecraft just reverts it before launching.
Does anyone know of a way that I might be able to use a different OpenAL driver to the one distributed with Minecraft? I realize this is a probably a fairly niche problem and so, if nobody can provide any solutions, I'd also be interested to know the best channel for reliably communicating this issue with one of Minecraft's programmers.
Set the version for the profile to whatever version you want, instead of latest.
It doesn't check to see if the LWJGL JARs are correct that way, so it will keep modifications to them instead of redownloading them.
I'm afraid this didn't work for me. I changed the "Use version" drop-down list from "Use Latest Version" to "release 1.6.2" and it still re-downloaded the LWJGL platform file.
I also tried using "release 1.6.1" and "release 1.5.2" but to no avail. With the launcher visibility set to keep the launcher open, I can see the line where it reverts lwjgl-platform-2.9.0-natives-windows.jar every time.
Finished downloading C:\Users\user\AppData\Roaming\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar for job 'Version & Libraries': Downloaded successfully and etag matched
For all the other libraries, it says "Used own copy as it matched etag".
I found a solution: sp614x's MagicLauncher, which does not re-download the LWJGL .jar if it is changed!
Workaround steps to get Rapture3D working again:
Get MagicLauncher - http://www.minecraft...st&pid=11909386 and familiarize yourself with it. You will need to create a profile for it with the 1.6 "environment" selected.
Open .minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar in a zip editor.
Insert Rapture3D's OpenAL32.dll and OpenAL64.dll, overwriting the two already in the .jar.
Replace all instances of OpenAL32.dll and OpenAL64.dll in the .minecraft\versions\ directory with Rapture3D's.
Use MagicLauncher to run the game instead of the Mojang one.
Hope this works for you as well as it worked for me!
Before discovering the MagicLauncher workaround, I tried making the LWJGL jar file Read Only to stop the Mojang Launcher from overwriting my changes, but then it refused to launch (no write access to file). Making the OpenAL files only accessible by Admin did not work, either. What did work was copying the Rapture3D OpenAL files into the appropriate versions directory, right whenthe Minecraft render window appeared, and before/during the Mojang Logo screen. Requiring good timing, that was not a really workable solution.
Thanks GBFM. That MagicLauncher did the trick. Soon after I resumed playing with Rapture3D in place, I was treated to a lightning storm and I spent a Minecraft afternoon and night fighting baddies in the rain. The rain in Minecraft sounds amazing with Rapture3D! It's good to have that back.
However, having to use a third-party mod launcher just to avoid having the LWJGL library overwritten is a bit unfortunate. I'd prefer to be using the standard launcher because I'm not using any mods with Minecraft (unless you count Rapture3D as a mod). It'd be great if Mojang could implement one of these solutions:
Program the launcher to look for the OpenAL files in another directory before looking in the LWJGL jar file. If they exist, use them instead of extracting the ones in the jar.
Add a check-box option to the launcher: "Don't do consistency check of LWJGL." or something like that.
Create functionality for resource packs to include mods to LWJGL.
Add a line to options.txt called something like "openALDeviceName" with default value of "Generic Software" (or perhaps "0" to represent the default device stored in the LWJGL jar file). Changing the value to something else like "Rapture3D" would cause the game to look for a system OpenAL device by that name (ie: one located in System32 or SysWOW64).
-------------------------------
EDIT - The above solutions are nice but not really the ideal. The best solution would actually be to provide the player with the option to change the OpenAL device in the game's options menu. The way I see it, it would look something like this...
There would be a button called "OpenAL audio device..." in the options menu. When you click it, it would open a new screen that looks similar to the language selection screen.
The first item in the list would be the default and it would be called something like "Use the OpenAL device provided by Minecraft (recommended)". This option would be for using the OpenAL library contained within the lwjgl-platform-2.9.0-natives-windows.jar file.
The rest of the items in the list would be the names of other OpenAL devices that are available on the user's system (if any). On Windows, these libraries can be found in System32 and SysWOW64. As far as I know, the OpenAL API provides the ability for a programmer to get a list of devices available on the system, so hopefully this wouldn't be too hard. Also many other games that use OpenAL provide this sort of selection box in their options menus.
I found another way of doing this without having to use MagicLauncher. I came across the solution while browsing around other issues in Mojira - specifically this one: MCL-169. So, here goes:
Navigate to %APPDATA%\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\
Make a copy of the folder called 2.9.0 and rename the copy to 2.9.0-sound.
Go into the 2.9.0-sound folder and rename lwjgl-platform-2.9.0-natives-windows.jar to lwjgl-platform-2.9.0-sound-natives-windows.jar.
Open the renamed jar file with an archiving tool like WinRAR and overwrite the existing OpenAL64.dll and/or OpenAL32.dll with the Rapture3D OpenAL libraries (obviously having already renamed them from rapture3d64_oal.dll and rapture3d_oal.dll respectively).
Navigate to %APPDATA%\.minecraft\versions\
Make a copy of the folder containing the latest version of the game and rename the folder to something else. (For example, make a copy of the 1.6.2 folder and rename it to 1.6.2-sound.)
Go into the renamed folder and rename the jar file and the json file to be the same as the folder name. (For example, rename 1.6.2.jar to 1.6.2-sound.jar and rename 1.6.2.json to 1.6.2-sound.json.)
Open the json file in a text editor such as Notepad++.
Where it says "id": "1.6.2", change it to say "id": "1.6.2-sound",
Where it says "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0", change it to say "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0-sound",
Save and close the json file.
Run the Minecraft launcher
Click the Edit Profile button.
In the Profile Editor, drop down the Use version list and select "release 1.6.2-sound" (or whatever you called it in the previous steps) and then click Save Profile.
You can also create a new profile for this if you want.
Play Minecraft.
Given the framework that Mojang have created with this new launcher, this seems like the most "correct" way of achieving this. However, there's no doubt it's rather complicated and also has the downside that you would need to re-do many of these steps when a new version of Minecraft is released.
With the introduction of the new Minecraft launcher, the directory structure and start-up process of Minecraft seems to have changed quite a bit.
Previously, swapping out the OpenAL driver was simple. You just had to replace the OpenAL32.dll and/or OpenAL64.dll files in %APPDATA%\.minecraft\bin\natives\ with your preferred libraries. Now things don't seem so simple and I haven't had any success yet.
I worked out that JAR files can be opened with WinRAR and I've discovered that OpenAL32.dll and OpenAL64.dll are now stored inside %APPDATA%\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar.
When the game is launched, it extracts these files and a bunch of other libraries into a new directory that it creates: %APPDATA%\.minecraft\versions\1.6.2\1.6.2-natives-XXXXXXXXXXXXXX (where the Xs are a string of numbers that are different for each launch). When the game is closed, it deletes this directory.
Unsurprisingly, replacing the OpenAL libraries in this temporary directory while the game is running doesn't work. I've also tried overwriting the OpenAL libraries in lwjgl-platform-2.9.0-natives-windows.jar using WinRAR but Minecraft just reverts it before launching.
Does anyone know of a way that I might be able to use a different OpenAL driver to the one distributed with Minecraft? I realize this is a probably a fairly niche problem and so, if nobody can provide any solutions, I'd also be interested to know the best channel for reliably communicating this issue with one of Minecraft's programmers.
-
View User Profile
-
View Posts
-
Send Message
Retired StaffIt doesn't check to see if the LWJGL JARs are correct that way, so it will keep modifications to them instead of redownloading them.
Need your server status on your website? Check out mcapi.us!
@Syfaro
I'm afraid this didn't work for me. I changed the "Use version" drop-down list from "Use Latest Version" to "release 1.6.2" and it still re-downloaded the LWJGL platform file.
I also tried using "release 1.6.1" and "release 1.5.2" but to no avail. With the launcher visibility set to keep the launcher open, I can see the line where it reverts lwjgl-platform-2.9.0-natives-windows.jar every time.
For all the other libraries, it says "Used own copy as it matched etag".
I found a solution: sp614x's MagicLauncher, which does not re-download the LWJGL .jar if it is changed!
Workaround steps to get Rapture3D working again:
- Get MagicLauncher - http://www.minecraft...st&pid=11909386 and familiarize yourself with it. You will need to create a profile for it with the 1.6 "environment" selected.
- Open .minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\2.9.0\lwjgl-platform-2.9.0-natives-windows.jar in a zip editor.
- Insert Rapture3D's OpenAL32.dll and OpenAL64.dll, overwriting the two already in the .jar.
- Replace all instances of OpenAL32.dll and OpenAL64.dll in the .minecraft\versions\ directory with Rapture3D's.
- Use MagicLauncher to run the game instead of the Mojang one.
Hope this works for you as well as it worked for me!I also posted in sp614x's MagicLauncher thread here http://www.minecraft...st&pid=23486806 about the MagicLauncher's benefits to custom OpenAL users.
Before discovering the MagicLauncher workaround, I tried making the LWJGL jar file Read Only to stop the Mojang Launcher from overwriting my changes, but then it refused to launch (no write access to file). Making the OpenAL files only accessible by Admin did not work, either. What did work was copying the Rapture3D OpenAL files into the appropriate versions directory, right when the Minecraft render window appeared, and before/during the Mojang Logo screen. Requiring good timing, that was not a really workable solution.
However, having to use a third-party mod launcher just to avoid having the LWJGL library overwritten is a bit unfortunate. I'd prefer to be using the standard launcher because I'm not using any mods with Minecraft (unless you count Rapture3D as a mod). It'd be great if Mojang could implement one of these solutions:
- Program the launcher to look for the OpenAL files in another directory before looking in the LWJGL jar file. If they exist, use them instead of extracting the ones in the jar.
- Add a check-box option to the launcher: "Don't do consistency check of LWJGL." or something like that.
- Create functionality for resource packs to include mods to LWJGL.
- Add a line to options.txt called something like "openALDeviceName" with default value of "Generic Software" (or perhaps "0" to represent the default device stored in the LWJGL jar file). Changing the value to something else like "Rapture3D" would cause the game to look for a system OpenAL device by that name (ie: one located in System32 or SysWOW64).
-------------------------------EDIT - The above solutions are nice but not really the ideal. The best solution would actually be to provide the player with the option to change the OpenAL device in the game's options menu. The way I see it, it would look something like this...
There would be a button called "OpenAL audio device..." in the options menu. When you click it, it would open a new screen that looks similar to the language selection screen.
The first item in the list would be the default and it would be called something like "Use the OpenAL device provided by Minecraft (recommended)". This option would be for using the OpenAL library contained within the lwjgl-platform-2.9.0-natives-windows.jar file.
The rest of the items in the list would be the names of other OpenAL devices that are available on the user's system (if any). On Windows, these libraries can be found in System32 and SysWOW64. As far as I know, the OpenAL API provides the ability for a programmer to get a list of devices available on the system, so hopefully this wouldn't be too hard. Also many other games that use OpenAL provide this sort of selection box in their options menus.
Enumeration with OpenAL on Windows
Navigate to %APPDATA%\.minecraft\libraries\org\lwjgl\lwjgl\lwjgl-platform\
- Make a copy of the folder called 2.9.0 and rename the copy to 2.9.0-sound.
- Go into the 2.9.0-sound folder and rename lwjgl-platform-2.9.0-natives-windows.jar to lwjgl-platform-2.9.0-sound-natives-windows.jar.
- Open the renamed jar file with an archiving tool like WinRAR and overwrite the existing OpenAL64.dll and/or OpenAL32.dll with the Rapture3D OpenAL libraries (obviously having already renamed them from rapture3d64_oal.dll and rapture3d_oal.dll respectively).
Navigate to %APPDATA%\.minecraft\versions\- Make a copy of the folder containing the latest version of the game and rename the folder to something else. (For example, make a copy of the 1.6.2 folder and rename it to 1.6.2-sound.)
- Go into the renamed folder and rename the jar file and the json file to be the same as the folder name. (For example, rename 1.6.2.jar to 1.6.2-sound.jar and rename 1.6.2.json to 1.6.2-sound.json.)
- Open the json file in a text editor such as Notepad++.
- Where it says "id": "1.6.2", change it to say "id": "1.6.2-sound",
- Where it says "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0", change it to say "name": "org.lwjgl.lwjgl:lwjgl-platform:2.9.0-sound",
- Save and close the json file.
Run the Minecraft launcher- Click the Edit Profile button.
- In the Profile Editor, drop down the Use version list and select "release 1.6.2-sound" (or whatever you called it in the previous steps) and then click Save Profile.
- You can also create a new profile for this if you want.
- Play Minecraft.
Given the framework that Mojang have created with this new launcher, this seems like the most "correct" way of achieving this. However, there's no doubt it's rather complicated and also has the downside that you would need to re-do many of these steps when a new version of Minecraft is released.Very old thread, but this isn't possible in newer versions.
True self is without form.