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

Ability to import a modpack to a profile #94

Open
Brittank88 opened this issue May 25, 2022 · 22 comments
Open

Ability to import a modpack to a profile #94

Brittank88 opened this issue May 25, 2022 · 22 comments
Labels
enhancement Improvements to the project

Comments

@Brittank88
Copy link

Currently, installing modpacks does not create profiles for them, so you cannot switch to a profile in order to start adding or removing mods from that modpack.

Modpacks such as Fabulously Optimized are designed with some intent of acting as a 'base pack' for modpack creators to extend from. I see no way currently to do this with Ferium.

@theRookieCoder
Copy link
Collaborator

So basically specify a list of version IDs to additionally download?

@theRookieCoder theRookieCoder added the enhancement Improvements to the project label May 26, 2022
@theRookieCoder theRookieCoder changed the title Ability To Edit Modpacks Ability to Add Mods to Modpacks May 26, 2022
@Brittank88
Copy link
Author

So basically specify a list of version IDs to additionally download?

Well... I am not sure this will preserve pre-configuration performed by the modpack creator. It's more than just the mods themselves.

It would be better if there was some way to tell Ferium that the modpack it is adding should have a profile created for it.

@theRookieCoder theRookieCoder changed the title Ability to Add Mods to Modpacks Ability to add additional mods to modpacks May 26, 2022
@theRookieCoder
Copy link
Collaborator

I am not sure this will preserve pre-configuration performed by the modpack creator

I don't really understand what you mean? Do you think there should be more user customisability than just adding mods?

@Brittank88
Copy link
Author

I don't really understand what you mean? Do you think there should be more user customisability than just adding mods?

I'll try to elucidate this with an example. If I were using Fabulously Optimized as a base pack and extending from it, I would download it in GDLauncher, then edit the pack and start adding my own mods.

If you just specify mods to additionally download, what happens if you want to add or remove some more later on?

I guess the best way to describe what I'm asking for is the ability to modify the set of mods used by a modpack at any point in time via Ferium, akin to how most GUI-based launchers would allow you to.

@Brittank88 Brittank88 changed the title Ability to add additional mods to modpacks Ability To Modify Modpack's Mod Set May 26, 2022
@JustSimplyKyle
Copy link
Contributor

So smth like ferium modpack edit add-modrinth iris
(There should be a better syntax than this)

@JustSimplyKyle
Copy link
Contributor

JustSimplyKyle commented May 26, 2022

It would be better if there was some way to tell Ferium that the modpack it is adding should have a profile created for it.

Maybe ferium profile --import --curse-modpack id could work?
This will only import the mods tho.
Any "pre-config" would be lost if you want to turn modpacks into profile

@Brittank88
Copy link
Author

It would be better if there was some way to tell Ferium that the modpack it is adding should have a profile created for it.

Maybe ferium profile --import --curse-modpack id could work? This will only import the mods tho. Any "pre-config" would be lost if you want to turn modpacks into profile

Well you'd specifically want to keep any other configurations that the modpack author has created. If Ferium supports downloading a modpack why is it so difficult to just say "hey this should be a profile btw!!"?

I think in general when you install a modpack it should automatically be assigned a profile so you can manipulate it just the same as anything you setup yourself. The separation it has now feels very restricting.

@theRookieCoder
Copy link
Collaborator

theRookieCoder commented May 27, 2022

This would require a fundamentally different method of dealing with modpacks. What about we keep the existing modpacks, and if you're a tinkerer, you can import a modpack's mods into a profile. This would require #82 though

What do you guys think?

@Brittank88
Copy link
Author

That would be good - would it be possible to also transfer any other configuration files? The copy of the modpack potentially wouldn't work at all without it.

At the very least it should advise that you will manually need to copy over any other files, however automating that would be preferable.

@theRookieCoder
Copy link
Collaborator

theRookieCoder commented May 27, 2022

would it be possible to also transfer any other configuration files? The copy of the modpack potentially wouldn't work at all without it.

Yeah, that's one of the downfalls of this method. I guess it should download and install the overrides to a folder when you first create the profile so that the user can deal with it. This 'mode' is more for more advanced users so that's better right?

@Brittank88
Copy link
Author

That does sound better!

@theRookieCoder theRookieCoder changed the title Ability To Modify Modpack's Mod Set Ability to import a modpack to a profile Jun 1, 2022
@abhemanyus
Copy link

Has this been implemented?

@theRookieCoder
Copy link
Collaborator

Nope. If something has been implemented, the issue will be closed :)

@arlyon
Copy link

arlyon commented Sep 25, 2022

The way this currently works feels odd to me. As it currently stands, if I import a modpack and upgrade it, the mods will replace my current mod profile rather than augment it. I feels odd that there are separate commands for upgrading your current profile and the modpack, as the concept of a profile is not respected at all by the modpack. It really makes modpacks feel like an after thought. Add on top of this that I can switch modpacks without impacting the profile, and vice versa makes it clear that modpacks and profiles should be treated as the same thing, with a modpack acting as a profile base or equivalent which can be extended.

As it stands, here is what happens when I try to install the 'fabulously optimised' modpack and add some mods on top, and here is what I'd expect:

> ferium profile create --name default --mod-loader fabric --game-version 1.19.2
> ferium modpack add 396246 # this adds fabulously optimised
> ferium modpack upgrade # ok, it's installing something, but the user mods are not included...
> # source the missing mods and place them in the user folder, but how do I install them?
> ferium list # empty? I'd assume the modpack mod list to be included here with some metadata
> ferium upgrade # does nothing, ok thats odd, I need to copy the user mods over!
> ferium add 32274 # this adds journeymap
> ferium list # ok, one mod added, maybe it will copy over my user mods now?
> ferium upgrade # wait, where are my mods? let me check which modpack I have installed
> ferium modpack # hm, this doesn't tell me anything, maybe list?
> ferium modpack list # ok, so its selected but not tied to my profile or installed. odd

I would expect a modpack to be the base layer, with additional mods optionally being installed on top, and it seems odd you can simultaneously be using a profile but not have the mods for that profile installed, or have your modpack selection updated.

@theRookieCoder
Copy link
Collaborator

theRookieCoder commented Sep 25, 2022

ferium list # empty? I'd assume the modpack mod list to be included here with some metadata

This just lists the mods in the current profile. To list the modpack you have, you should run ferium modpack list

ferium upgrade # does nothing

Again, this downloads mods in your current profile. To download a modpack, you need to run ferium modpack upgrade

ferium add 32274 # this adds journeymap

Again, this adds the mod to your current profile. You have to realise that the mods profile and modpack is completely different and function independent of each other.

I would expect a modpack to be the base layer, with additional mods optionally being installed on top

That's what this issue aims to (at least partially) solve.

I think the rest of your doubts can be resolved if you understand this

@theRookieCoder
Copy link
Collaborator

I recommend that you read the documentation on adding a modpack, installing it, and managing it.

@arlyon
Copy link

arlyon commented Sep 27, 2022

I think the rest of your doubts can be resolved if you understand this

I do understand, I am just leaving a user story / context to why new users may be confused by these two concepts (profiles and modpacks) given that they are semantically very similar. At the very least, a warning message to notify the user when they exit 'profile mode' and enter 'modpack mode' would go a long way (happy to write a PR for it! 😄 ). I will also note that (unless I am missing it) that it states nowhere in the docs you linked that these features are completely incompatible even going so far as to call modpacks 'profiles' (https://github.com/gorilla-devs/ferium/blame/main/README.md#L198) (also happy to open a PR :) ).

@theRookieCoder
Copy link
Collaborator

happy to write a PR for it!

I'd appreciate that! I'm currently not really sure how to clarify something like this, a PR would be of great help!

even going so far as to call modpacks 'profiles'

Sorry that's my mistake, will fix ASAP!

@lucaszischka
Copy link

Hello, first of all I would like to thank every collaborator. Second of all, I would like to give a quick opinion on this topic ;).

Description

Before I start writing about my opinion I will to summarise the goal, because there have been misunderstandings:

Ability to add/remove mods to/from a modpack.
Optional addition: Ability to combine modpack's.

Possible Solutions

I looked a some modpack's and realised, that a modpack is often more than just a list of mods with their versions, but also can have pre-configurations, texture packs and a couple of other things in form of overrides. Also really important is, that any part of it can be changed with a new version of the pack.
Let's have a look on how these parts of a modpack would perform with the proposed solutions (who solve the issue as described in the description) and other ones I can think of and make sense.

Solution 1

Allowing a modpack to be edited (eg. ferium modpack mod remove).

a) The modpack would be added as usual.

  • No mixing of modpack's will be possible.
    • There is probably a way to do this, according to the concepts form Solution 2.

b) The modpack would be upgrade as usual.

  • The user needs to fix incompatibles between custom added/removed mods with newer version of the modpack itself.

Solution 2

Getting the modpack's mod list and overrides, then adding it to an existing profile, which then can be edited as usual.

a) The mod list would be added.

b) The overrides would be added.

  • Overrides between different modpacks could conflict.
    • A priority ranking system could help.

c) The mod list and overrides would be updated on upgrade.

  • The user needs to fix incompatibles between custom added/removed mods with newer version of the modpack itself.

d) The mods would be upgraded individually to their latest version.

  • This could be problematic if mods are not compatible on their newest versions. This could be fixed by Lock a mod/modpack to a specific version #82.
    • However the user would be forced to figure out incompatibilities, and resolving them, on its own (especially if they appear not on creation).

Solution 3

Merging profiles and modpack's (which both 1 and 2 more or less already do; in other words: if 1 and 2 would both be implemented, they would be indistinguishable from the end user perspective, except for missing multi-modpack support. in 1).

  • Would clear up unusual confusion from an end user perspective.
  • Changing the basis of how you currently deal with modpack's and profiles will be much work, as well as either braking backwards compatibility or make your live even harder if you decide on adding backwards compatibility.

Personal Conclusion

I think Solution 3 would be the best and I personally don't understand where the split came from in the first place, as other mod(pack) tools and launchers don't have this split and limitation. However im also not a rust, nor Minecraft modding programmer and therefore don't have the expertise to judge. But if it is be possible and the goal of ferium is to get a full fleged cli alternative to other Minecraft launchers this will be sooner or later a must have feature. So I think even if the structure of profiles and modpack's is currently fundamental different, it would be worth the work.

On the other side if this is not possible in rust at all or you want to preserve the split, because you are a different opinion (which is of course fine :)), I would settle on Solution 2, because it makes multi modpack support possible and is essential Solution 3 without removing the split.

Last but not least, if solution 2 is also not possible (could likely be the same reason as for 3, because both solution are so similar) or you decide against it, solution 1 will work for many people as well.

I would love you to get back on my suggestions and opinions, and will answer as soon as possible any questions you may have regarding my explanations or ideas.

Greetings Lucas

@Brittank88
Copy link
Author

personally don't understand where the split came from in the first place, as other mod(pack) tools and launchers don't have this split and limitation

I totally agree - this seems to be a deep design flaw (unless there's a good reason for it - not that I can think of any but maybe implementation detail?) posing severe limitations in some cases.

A very good write-up by the way!

But if it is be possible and the goal of ferium is to get a full fleged cli alternative to other Minecraft launchers this will be sooner or later a must have feature.

I totally agree. The ability to pull down a modpack and then modify it (and then export that as something new, potentially) is present in any other modpack launcher I can think of. For them, it's a lot simpler because things haven't been split in the manner they are in Ferium.

I really love Ferium and want it to succeed, it just seems like the devs shot themselves in the foot with this strange modpack/profile split, but I have an open mind and would love to learn about why exactly that has been done.

@theRookieCoder
Copy link
Collaborator

theRookieCoder commented Dec 7, 2022

Well to be honest, ferium wasn't really meant to be a modpack 'manager'. The initial goal was to just download a list of mods (which it does a mediocre job at atm). For some reason, modpack support was very widely requested that I just tacked it onto the existing system. So, the current implementation actually downloads and installs modpacks rather than 'managing' anything.

I'm honestly still in a confusion/dilemma about how to implement modpack management, and it doesn't help that I've got basically no time nowadays. I've currently settled on the 'import into a profile' implementation which I've described in this issue, but I'm free to any other suggestions, like @lucaszischka 's (thanks for the suggestions!)

@Brittank88
Copy link
Author

It's funny to me how the GDLauncher rewrite is using Ferium, but in some ways, it seems Ferium itself needs a rewrite given these new conditions!

Not that there's anything wrong with that, but I am a strong believer in doing it the right way the first time around. I can see a lot of complications coming up given this relationship between Ferium and GDLauncher and the expectations that it has regarding features. Instead of using tacked-on features, I feel like it needs to be properly rebuilt ground-up to do what it needs to, but I understand you have little time.

Feels like a conversation to be had with the GDLauncher guys though - the unavoidable truth is that they're planning to use a backend that currently doesn't have the launcher's required features as its main goal/capability.

Please let me know if I got anything wrong - I want to keep an open mind and understand what's going on, because I care about these sorts of projects succeeding!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improvements to the project
Development

No branches or pull requests

6 participants