-
-
Notifications
You must be signed in to change notification settings - Fork 884
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
Multiple issues with local libraries and optifine #2475
Comments
And why is that a good idea? From my point of view, the use of something like this reduces quality of instances, leads to the |
Good point actually, the principle of self contained instance will not be exists if those libraries are scattered around.
The ability to de-dupe file(s), having a single location rather than scattered around instances. Is introducing The same issue can be apply to per-instance libraries (random non-replicable/untracked files) Currently, local instance does not follow maven structure, per-instance library will become messy if there is a lot of files. |
I am not interested in following the maven structure. It is very anti-user, and stupidly hard to work with if you need to monitor the whole maven tree for unmanaged changes. I don't think sharing or deduplicating anything that cannot be trivially recovered by downloading from remote repositories is ever a good idea. A The user can -- and will -- mess with the files directly. When they do, they will be left with broken instances and/or dead leftover files. The policies I enforce in MultiMC are there to prevent accidents. Think of it as the guard rail on top of a deep ravine. I see this as the equivalent of you asking for the removal of that. Storage is cheap, and is getting cheaper every year. Duplication is the only way to preserve data in a noisy and chaotic environment. I wish people would repost all the mods ever on all the websites. That way, we would still have some of the older ones and could play them. I don't see any benefit to using the maven directory tree at all, aside from it being a java developer convention. Techically, it does not make sense. Usability-wise, it's a disaster. Considering the above, is there any other reason for this? |
TL;DR: why do you actually want this? How does it benefit the user in any way? |
Agreed on what you have said and I think is it not a good idea anyway.
EDIT: Since this change is intended, it is possible to fail-fast instead of only logging it |
I'd really like to know why you need this. |
So, I have this feeling that you came here with a problem, and a solution. You described the solution you would like to have, but never described the problem. I suspect you are doing something like this: Is that true? Please describe what you are doing, and why are you doing it. There could be better ways of achieving whatever goal you have. |
Hmmm.... where do those come from? It's possible I missed something and they need to be auto-migrated. Can you show me an example? |
Sort of. Reason:
Before: {
"libraries": [
{
"name": "io.netty:netty-all:4.1.29.Final",
"MMC-hint": "local"
}
],
"name": "Netty",
"uid": "io.netty",
"version": "4.1.29.Final"
} Having it locally because it doesn't need to download/check with the remote server. After: {
"formatVersion": 1,
"libraries": [
{
"downloads": {
"artifact": {
"sha1": "efce189397bfce0a561b25512696de8d241070b5",
"size": 3861743,
"url": "<artifact URL path>"
}
},
"name": "io.netty:netty-all:4.1.29.Final"
}
],
"name": "Netty",
"uid": "io.netty",
"version": "4.1.29.Final"
}
Instances that are created with this patch: https://gist.github.com/peterix/5c8b655ffafb866ccb2519f421dab671 |
I don't know if it is related, is |
Yes, that is intentional. Nothing outside MultiMC is supposed to mess with the metadata files. |
Alright, that should fix the broken reporting of missing local libraries. |
This appears to break launching older FTB packs This affects the jar mods specifically as it is reporting the jarmods as 'missing' {
"cachedName": "liteloader (jar mod)",
"uid": "org.multimc.jarmod.b1b79bb7-b9ad-410e-b756-6676eb0c119c"
},
{
"cachedName": "MinecraftForge (jar mod)",
"uid": "org.multimc.jarmod.364d242c-90d5-44f9-be12-4b9daea5c89f"
} |
Fixed by creating a 'libraries' directory within the instance folder and copying the files within 'jarmods' into it. I suggest fixing this as importing packs from ftb in launcher creates a broken instance by default |
As you have said "There could be better ways of achieving whatever goal you have.". Side note, is modifying the title suitable instead of creating new issue that reference it because it does not make sense when user find this issue. |
Well, the root cause is that people are using a random old gist with outdated information. The correct place to look at is this: https://github.com/MultiMC/MultiMC5/wiki/MultiMC-and-OptiFine I guess it would be nice to extend the check for libraries and make it copy the global 'local' libraries in if they are present in Then again, the few people that found and followed that gist could just as well move the file themselves. It will tell them what is missing now. I should also remove the gist, or somehow make it redirect to the official documentation. |
That's reasonable, and I think I have edited the post above. |
In any case, this is a real issue. I just don't want to keep weird traps for people to fall into. Some bad examples of those traps:
The reason for the libraries folder in the instance not having a maven structure is that it is simply too hard for most people to create the exact correct folder structure. I want people to be able to easily add or override libraries. I guess I could make some UI for it and 'automate out' the complexity of maven, but it is still more complex than necessary on the code side. For example for mods (which ARE libraries), everyone is used to the If we go with maven and make it user-facing, I have to write a ton of ugly code to make the user experience not horrible. And it doesn't make anything better. |
Problems:
|
Instead of relying on implicit behavior that is changed on commit 17e09a2,
consider adding option to
"MMC-hint"
to explicitly load from the global libraries.The text was updated successfully, but these errors were encountered: