Add full support for downloading versions of Minecraft from Omniarchive's collection
Goal
Allow players to download versions of Minecraft from Omniarchive's collection within the launcher, as well as downloading tweaks fixing bugs/issues in old classic versions caused by new hardware and software.
Motivation
Omniarchive has archived a lot of versions of Java Minecraft that Mojang/Microsoft do not officially host. Currently to play them through the launcher you have to download the version you want from their collection manually, create a new instance with a similar enough version to the one you want to play, then set the game version to custom and select the JAR file you've downloaded. You can also use Betacraft to play all the versions from Omniarchive's collection, but it requires installing another program on your device and creates possible fragmentation of where and how your Minecraft game data is stored.
If Prism Launcher were to support downloading versions of Minecraft from Omniarchive, more users of Minecraft could easily try out older versions of Minecraft not available from Mojang/Microsoft without having to manually download JAR files or install extra launcher and mods.
Specification
A decent place to put the functionality would be in both the instance creation menu as well as the version picker that comes up when changing the Minecraft version an instance uses.
For the instance creation menu, it would be an option on the left right below Vanilla. The option would be called 'Omniarchive' and the logo would be their current logo but downscaled to fit. Clicking it would populate the game version selector with all versions currently available from Omniarchive's selection, with filters available if the user would want to look for a specific version faster. The star icon would also be absent since it would serve no purpose here. Mod loaders section would be replaced with an essential tweaks section containing basic tweaks and mods to fix issues (like Betacraft proxy and RetroWrapper). While having mod loaders section would be nice, it would not be available at all in the Omniarchive section due to compatibility with the available versions being uncertain. You could still try to install a mod loader in the edit instance menu if you really want to.
For the version picker menu when changing the game version, it would be more simplistic, with two buttons above the version selector: a Vanilla button and an Omniarchive button. Clicking either button would populate the list with versions from which button you clicked. Only one would be clicked at a time, and the default one clicked would depend on whether you picked a version from Vanilla or from Omniarchive in the instance creation menu. If it's preferable to rework the UI of the version picker menu, then it could be modified to have a similar layout to the instance creation menu, omitting any features not related to changing the game version (like modpack stuff, instance name, instance group, etc).
Additionally the metadata server would have to include metadata allowing the launcher to see and download the versions from Omniarchive's collection as well as the essential tweaks that fix bugs/issues due to old versions not being fully compatible with newer hardware and software.
Drawbacks
- Omniarchive's collection is hosted on the Internet Archive, which means that downloads may be slow and files could be unavailable if Internet Archive goes under maintenance. Error handling for Internet Archive errors would have to be added.
- Internet Archive restricts downloading of certain files to people that have archive.org accounts if they become too popular, so support for signing in to and using archive.org accounts would need to be added as well.
- There is a slim chance that Microsoft/Mojang files a DMCA claim against the hosted files, resulting in them becoming unavailable to the public. If this were to happen the functionality would be broken until mirrors are found and used.
Unresolved Questions
- Omniarchive has also archived certain versions of the China edition of Minecraft built off of the Java Edition codebase. Should those also be made available for download if support for Omniarchive's collection is added?
- For the tweaks section: Should all of the Betacraft fixes and tweaks be added, or should it be kept only to things launcher-independent (like RetroWrapper and Betacraft proxy)? Additionally are the people behind the tweaks and fixes OK with Prism Launcher being able to download and use them?
- Are the Omniarchive folk OK with allowing their collection to be accessed through Prism Launcher?
Alternatives Considered
If it's too difficult to implement full Omniarchive support, then maybe another metadata server could be set up which replaces the normal Vanilla version list with versions available from Omniarchive? Though users would have to switch back and forth between the normal metadata server and one meant for the Omniarchive versions.
This suggestion is unique
- [X] I have searched the issue tracker and did not find an issue describing my suggestion, especially not one that has been rejected.
You may use the editor below to elaborate further.
The original idea (Omniarchive support) was suggested multiple times in the old repository alongside someone else suggesting Betacraft support, so I decided to suggest it here since I thing having full Omniarchive support would be great for the launcher.
Additionally the end result of the suggestion is not meant to replace or harm Betacraft in any way, it's only meant to make it easier to access old versions of Minecraft without having to manually download JAR files or install extra launchers and mods.
Actually, how does one import a .jar into Prism?
Actually, how does one import a .jar into Prism?
I think you click on the 'Replace minecraft.jar' button. You can then choose a JAR file of the game. You also have to make sure to choose a version of the game (when initially creating the instance) that is closest to the JAR file you're going to use.
A lot of them were added in PrismLauncher/meta#5 already
Some of the suggestions here seem to relate to the actual launcher, but maybe it would make more sense being moved to the meta repo?
Some of the legacy version fixes could be implemented in a similar way to #443 - although more intrusive patches would need to be implemented in an agent which is probably out of scope for NewLaunch (the Java component of Prism).
A good idea for one of the client fixes is to un-applet the whole game to fix issues with HiDPI and M1 iirc.
A good idea for one of the client fixes is to un-applet the whole game to fix issues with HiDPI and M1 iirc.
This can already be done with the noapplet trait. This does, however, ignore the window dimension settings. It also doesn't work on all versions.
A good idea for one of the client fixes is to un-applet the whole game to fix issues with HiDPI and M1 iirc.
This can already be done with the noapplet trait. This does, however, ignore the window dimension settings. It also doesn't work on all versions.
Which versions does it not work on? Also by that I actually meant making the game not use AWT and Canvas...
Which versions does it not work on? Also by that I actually meant making the game not use AWT and Canvas...
On some versions such as classic and infdev there is no main class. What are the specific issues on M1 macs, btw? I'm interested.
Which versions does it not work on? Also by that I actually meant making the game not use AWT and Canvas...
On some versions such as classic and infdev there is no main class. What are the specific issues on M1 macs, btw? I'm interested.
IIRC the main issue on M1 is the inverted color issue which is caused by Canvas and AWT.
Hi there, I'm one of the admins of Omniarchive.
We'd love to see our collection integrated into Prism. Not a lot of launchers support legacy MC versions, and we proposed a similar feature for MultiMC close to 5 years ago, so it'd be nice to see things come full circle.
A few things I'll add to this:
- Archive.org no longer houses our main version repository. We haven't had access to the archive.org item pages for over a year, so they're missing some things. We've since switched to using our own bucket.
- Instead of the Vanilla and Omniarchive buttons in the version picker, I'd like to suggest a more intuitive option like a checkbox that shows Omniarchive versions alongside other versions in the list when toggled.
- It's true that we archive Minecraft China, but we do not suggest any use of it by anyone, as it's got spyware galore.
- In the 5 years that we've been operating, we have never received a DMCA takedown from Mojang for the Java versions. Mojang's IP enforcement team is even present in our Discord, and they've never given us any trouble.
Feel free to let me know if any of you have questions about anything and I'll be happy to help!
Once our collection of binaries is made available, here's a list of things that will need to be fixed for legacy versions to be fully operational:
- [ ] Online mode (alpha/beta auth)
- [ ] Verify names (classic auth)
- [x] Fix skins (#443)
- [ ] Fix sounds
- [ ] Fix crashing on Java 8
- [ ] Implement antipiracy workaround for indev/infdev
Only those last two are "required" for things to work at all, so consider most of these low priority for the time being.
I've created a bit of a concept sketch to show what I think Omniarchive integration could look like during instance creation. The image is here. Feedback would be greatly appreciated.
Wrong data of versions could be corrected here https://github.com/PrismLauncher/meta/blob/master/static/mojang/minecraft-legacy-override.json and the versions from Omniarchive not provided by Mojang could be similar added like I did for the old_snapshots here https://github.com/PrismLauncher/meta/blob/master/static/mojang/minecraft-old-snapshots.json in https://github.com/PrismLauncher/meta/pull/5
Wrong data of versions could be corrected here https://github.com/PrismLauncher/meta/blob/master/static/mojang/minecraft-legacy-override.json
The incorrect data is a Mojang issue that's gone unfixed for close to a decade. Would it be okay to replace that with our own sources, even when toggled off? I think it might raise some questions.
and the versions from Omniarchive not provided by Mojang could be similar added like I did for the old_snapshots here https://github.com/PrismLauncher/meta/blob/master/static/mojang/minecraft-old-snapshots.json
Sounds good to me
The incorrect data is a Mojang issue that's gone unfixed for close to a decade. Would it be okay to replace that with our own sources, even when toggled off? I think it might raise some questions.
I don't see a reason as to why we should not apply data that is known to be more accurate, but would need to wait and see what the maintainers are thinking about that.
It seems like it might require changing data anyway, because the more I look at it, the more it seems we'd have to do it across the board to make it more accurate. For instance, some versions, despite being different, share the same version number visually. The way we typically differentiate this in version names is with shortened timestamps such as a1.0.13_01-1038 and a1.0.13_01-1444. And for versions where the original version differs from the launcher version, we append -launcher to the end of the launcher version. For instance, c0.0.13a_03 and c0.0.13a_03-launcher. If you'd like to see more examples of this naming scheme, you can refer to our version index here.
If everyone's okay with the naming convention I've mentioned in the previous comment, then I'll push a PR to the meta repo later today to get further feedback.
- Archive.org no longer houses our main version repository. We haven't had access to the archive.org item pages for over a year, so they're missing some things. We've since switched to using our own bucket.
I didn't know that the main version repository is no longer on archive.org (the main site still points there). I'm guessing that the site is going to be updated at some point to point to the new location?
- Instead of the Vanilla and Omniarchive buttons in the version picker, I'd like to suggest a more intuitive option like a checkbox that shows Omniarchive versions alongside other versions in the list when toggled.
I agree that a checkbox would be better than two buttons. The reason I thought of two buttons was because the version picker for already existing instances is more limited (does not have filter functions) than the one for creating an instance.
- It's true that we archive Minecraft China, but we do not suggest any use of it by anyone, as it's got spyware galore.
I'm not surprised that it has a bunch of spyware, and it's OK if it's never available from within a launcher for that reason. I actually was unsure about even including in the RFC hence why I included it in the unresolved questions section.
- In the 5 years that we've been operating, we have never received a DMCA takedown from Mojang for the Java versions. Mojang's IP enforcement team is even present in our Discord, and they've never given us any trouble.
That's good that Mojang's IP enforcement team has not given you any trouble, however Microsoft could see the project differently in the future depending on various circumstances.
Feel free to let me know if any of you have questions about anything and I'll be happy to help!
Should I add the updated information to the RFC or should I leave it alone? Also thanks for commenting on the RFC by the way.
I'm guessing that the site is going to be updated at some point to point to the new location?
Yes, very soon.
Should I add the updated information to the RFC or should I leave it alone?
Yeah, feel free. Thanks!
Some concerns were brought up in the Prism Launcher Discord server regarding changing the names of existing versions, so how about this:
What if we add a new tag to metadata files that modifies the display names of existing versions only when Omniarchive is toggled on? Without having these display names, it gets confusing to tell these versions apart from the ones we have, so I think this is a fair middle ground.
Some concerns were brought up in the Prism Launcher Discord server regarding changing the names of existing versions, so how about this:
What if we add a new tag to metadata files that modifies the display names of existing versions only when Omniarchive is toggled on? Without having these display names, it gets confusing to tell these versions apart from the ones we have, so I think this is a fair middle ground.
Hello, and sorry for the very late response (my PC had a power supply issue which I finally got fixed). I went and updated the RFC with the new information.
As for the new tag to metadata files that only takes affect when Omniarchive is enabled, that is a good and fair middle ground that allows users to still see the version names that Microsoft/Mojang provides while also seeing the accurate version names.