Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add full support for downloading versions of Minecraft from Omniarchive's collection #101

Open
1 task done
TheMCNerd2017 opened this issue Oct 19, 2022 · 22 comments
Open
1 task done
Labels
enhancement New feature or request legacy minecraft Issues and PRs relating to legacy versions of Minecraft

Comments

@TheMCNerd2017
Copy link

TheMCNerd2017 commented Oct 19, 2022

Goal

Allow players to download versions of Minecraft from Omniarchive's collection within the launcher, as well as 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 a checkbox on the main Vanilla versions page. The checkbox would have 'Show additional versions from Omniarchive. (?)' with the question mark leading to a wiki page explaining the new functionality. Additional filters would also be added upon ticking the checkbox (Infdev, Indev, Classic and Pre-classic) that would make it easier to find versions from those development points. Additionally, display names of existing versions from Mojang/Microsoft would also be changed to be more accurate when Omniarchive versions are enabled, so users can tell all the versions apart far easier.

For the version picker menu when changing the game version, it would be more simplistic, with a checkbox that toggles the display of Omniarchive versions in the list. If it's preferable to rework the UI of the version picker menu instead, 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 additional metadata for alternative display names of Mojang/Microsoft versions that have incorrect/inaccurate display names.

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. No longer necessary; see below.
  • 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. Omniarchive no longer uses Internet Archive for storing their collection, meaning archive.org account integration and Internet Archive error handling is no longer necessary.
  • There is a very 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. While currently the Mojang IP enforcement team are OK with Omniarchive and even present in the community, Microsoft could change their mind about OmniArchive in the future for any reason.

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? This will almost certainly not make it in, since the China edition of Minecraft has lots of spyware embedded within it.
  • 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? Tweaks section would not be required once all fixes listed in this comment are implemented into the launcher.
  • Are the Omniarchive folk OK with allowing their collection to be accessed through Prism Launcher? The Omniarchive folk are OK with their collection being accessible through the 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

  • 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.

@HyperSoop
Copy link
Contributor

Actually, how does one import a .jar into Prism?

@TheMCNerd2017
Copy link
Author

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.

@Scrumplex
Copy link
Member

A lot of them were added in PrismLauncher/meta#5 already

@TheKodeToad
Copy link
Member

TheKodeToad commented Nov 28, 2022

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).

@forkiesassds
Copy link
Contributor

A good idea for one of the client fixes is to un-applet the whole game to fix issues with HiDPI and M1 iirc.

@TheKodeToad
Copy link
Member

TheKodeToad commented Dec 1, 2022

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.

@forkiesassds
Copy link
Contributor

forkiesassds commented Dec 2, 2022

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...

@TheKodeToad
Copy link
Member

TheKodeToad commented Dec 3, 2022

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.

@forkiesassds
Copy link
Contributor

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.

@MisterSheeple
Copy link

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.

@MisterSheeple
Copy link

MisterSheeple commented Dec 6, 2022

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!

@MisterSheeple
Copy link

MisterSheeple commented Dec 6, 2022

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:

Only those last two are "required" for things to work at all, so consider most of these low priority for the time being.

@MisterSheeple
Copy link

MisterSheeple commented Dec 7, 2022

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.

@jopejoe1
Copy link
Contributor

jopejoe1 commented Dec 7, 2022

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 PrismLauncher/meta#5

@MisterSheeple
Copy link

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

@jopejoe1
Copy link
Contributor

jopejoe1 commented Dec 7, 2022

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.

@MisterSheeple
Copy link

MisterSheeple commented Dec 7, 2022

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.

@MisterSheeple
Copy link

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.

@TheMCNerd2017
Copy link
Author

  • 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.

@MisterSheeple
Copy link

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!

@MisterSheeple
Copy link

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.

@TheMCNerd2017
Copy link
Author

TheMCNerd2017 commented Jan 18, 2023

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.

@TheKodeToad TheKodeToad added enhancement New feature or request legacy minecraft Issues and PRs relating to legacy versions of Minecraft labels Aug 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request legacy minecraft Issues and PRs relating to legacy versions of Minecraft
Projects
None yet
Development

No branches or pull requests

7 participants