Skidamek / AutoModpack

Enjoy a seamless modpack installation process and effortless updates with a user-friendly solution that simplifies management, making your gaming experience a breeze.
https://modrinth.com/mod/automodpack
GNU Lesser General Public License v3.0
115 stars 33 forks source link

Rewrite file hosting server #293

Open Boden-C opened 1 month ago

Boden-C commented 1 month ago

Motivation

Three reasons specifically:

  1. I'm using World Host so the HTTP server does not work but I can still just share the configs
  2. Sharing the configs can allow people to easily update a custom modpack without publishing it
  3. It can allow modpack developers to specifically define mods to download after installation (for example, downloading CurseForge mods on a Modrinth modpack that doesn't allow redistribution through the override folder)

Description

Have a "default" folder in the config or modpacks folder You can add a modpack (the metadata) into that default folder On startup, it will read the default modpack and check the current mods. If it is missing any or some mods needs updating, it will use the Modrinth and CurseForge API to download those mods and restart

Therefore

  1. I can share the modpack metadata and they can drag it into the default folder
  2. Whenever I want to update it, ill send them the new modpack metadata
  3. Modpack devs can define in the configs specific mods to be further downloaded without using override

I'm not sure if that is possible currently

Other information

No response

Skidamek commented 1 month ago

Oh wow you are genius! I have no idea why I didn't get that idea before. AutoModpack does it already to a little extend it does download mods from modrinth/curseforge apis. HTTP server is mostly used as a fallback and to server other files. I like the idea, I believe it could be quite easy to implement since literally there's code which as I said it downloads from those apis. But that solution makes you lose a bit of functionally, you no longer can share your private mods or any other files.

However I also thought about a different solution. To implement custom protocol for file transfer via injection to Minecraft networking I/o which would basically mean that we wouldn't sacrifice on anything, there would still be full functionality of automodpack no matters if we have access to http or not. So you could serve any files you need as you do right now. Therefore I would be more in favor for this solution.

So if you or someone readying this while this issue is still open, feel free to fork it and implement any of those fixes. I am planning on coding the second one by myself but that may take a little while due to lack of free time.

Boden-C commented 3 weeks ago

I was thinking about how it works when downloading like .mrpack, which is it has the main modlist but also has an override folder for any custom mods/configs, so the total folder size should still be "manageable"

You can bundle that together into your own .modpack for easy sharing if you want

Sending it through Minecraft networking is more user friendly, but I think defining it in configs is still a nice idea mostly because it allows modpack developers to add CurseForge mods when starting up (Prominence II on Modrinth has this issue currently)

Boden-C commented 3 weeks ago

Also I'll expand on this idea of config defined modpacks

While there is a default automodpack, each server and world can have it's own automodpack if it is different from default. You can have basically world-specific modpacks in the same profile, and when joining a world/server it'll swap to that modpack (maybe temporarily and give the user an option to set it as new default) and restart

(should probably cache mods to save on downloading)

Don't know if I should make a separate issue for this idea

Skidamek commented 3 weeks ago

i am felling like you dont understand how this mod works. it already does all of these things. it downloads what it can from modrinth or curseforge, to separate modpack specific folder, on launch it's loading all of the files from selected modpack. if you try to connect to different server it will download new modpack creating new folder for that specific modpack. and so these folders a cache as well.

Skidamek commented 3 weeks ago

for me the only reason this issue is still open is because you mentioned World Host, with which it won't work and we've got ideas for potential solutions.

Boden-C commented 3 weeks ago

i am felling like you dont understand how this mod works. it already does all of these things. it downloads what it can from modrinth or curseforge, to separate modpack specific folder, on launch it's loading all of the files from selected modpack. if you try to connect to different server it will download new modpack creating new folder for that specific modpack. and so these folders a cache as well.

I'm saying specifically being able to define required mods in the configs and it automatically installing them on launch

This is because for Modrinth modpack devs, they can define CurseForge mods in the config and it'll install them for the complete modpack

Right now in Prominence II, users have to manually download the mods and drag them in the folder. Since this mod already has the code to do that, it would be nice to let devs/users manage their mods through the config instead of joining servers only

Skidamek commented 3 weeks ago

Then I am not sure what you mean... Do you just want better .mrpack which can auto download curseforge mods or what?

Boden-C commented 3 weeks ago

No, I just want some way to define additional mods in configs and have it install/transfer on launch

What format to put the config is is up to you, I say it would be cool if you make it a specific file type to make it clear, but you can also just leave it as a plain config folder

As far as I understand how this works, this sends a json list as well as any custom mods to the client, which then installs them. I'm saying if you bundle that json list and custom mods into a single "thing", it can make for easier sharing.

Skidamek commented 3 weeks ago

Really man I have no idea what are you talking about. Explain it all in more detail. Hows that connected to automodpack? In automodpack you can add more mods without having them loaded on server if you want that then read this

Boden-C commented 3 weeks ago

Ok, so specifically this mod is really cool because it can automatically install mods

Basically, I want is to use that ability without it only installing when I join a server. For example, automatically install CurseForge mods when I launch.

A good way of doing that is having some list, defined in configs, that it will install from on launch. That can just be the automodpack-content.json

However, as you said, sharing automodpack-content.json won't include private mods

I "assume" when joining a server, the server takes it's mods, generates the automodpack-content.json and private mods, zips it together, and sends it to the client which unzips, reads, and installs them

Therefore, if you allow users to get and share that zip, and for them to put that zip in their configs, then automodpack will read and install that zip when launching, then users can also share private mods

What I described is basically a .mrpack, so I guess your description of a .mrpack that can also install CurseForge is sorta accurate

Skidamek commented 3 weeks ago

Ok I see now. Looks like packwiz is exactly what you are looking for.

AutoModpack has a different approach for sharing modpacks, as mentioned it is strictly connected with sharing it from servers to clients to easily join modded servers and automatically update server modpack.

Packwiz on the other hand is a tool which generates for you universal modpack file with links to the mods from modrinth and curseforge which can be easily imported to create new modded instance in e.g. prism launcher.

Skidamek commented 3 weeks ago

So I don't think that's something we want to have in automodpack since packwiz already fills out that niche.

Boden-C commented 3 weeks ago

That actually is what I'm looking for, but it would still be nicer if a mod could handle that so I don't need to have all my players install and learn a separate thing. This "sharing custom modpacks" is probably a niche thing though.

Do you have a solution to the other problem where modpack devs want to install external mods after launching? I feel like this is a pretty common issue, and I doubt modpack devs would all migrate over to packwiz

As I said, their current solution is to give users a link to manually download and drag the files in, this mod could solve that