gorilla-devs / GDLauncher

GDLauncher is a simple, yet powerful Minecraft custom launcher with a strong focus on the user experience
https://gdevs.io
GNU General Public License v3.0
1.22k stars 246 forks source link

Instance Download Failed, The url argument must be of type string #1342

Closed oitsjustjose closed 2 years ago

oitsjustjose commented 2 years ago

Describe the bug When installing this modpack, I receive the error:

TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received null

To Reproduce Steps to reproduce the behavior:

  1. Download the modpack export from above, and import it
  2. After the Forge install succeeds, wait for the failure popup

Expected behavior The pack update works fine

Possible solutions No ideas honestly, I'm dumbfounded

Screenshots If applicable, add screenshots to help explain your problem.

Operating System:

Additional context

GDLauncher Version 1.1.23.

You can also install from CurseForge to receive the same failure -- this version of the modpack installed just fine on Tuesday 5/17, and today won't install.

Littlejth commented 2 years ago

I'm also receiving this issue with a completely different modpack so maybe it's to do with the 'CurseForge API issues' that are warned about on the main screen potentially?

oitsjustjose commented 2 years ago

Yeah that was my first thought as well, but the CurseForge launcher has no issues so I'm not really certain.

Eskaan commented 2 years ago

Yeah the mod has disabled the public api so the downloadurl is null

oitsjustjose commented 2 years ago

Oh shoot, I completely forgot about that part of the change.

Eskaan commented 2 years ago

Yeah we expect more of those issues

PerryPeak commented 2 years ago

Yeah the mod has disabled the public api so the downloadurl is null

Shouldn't the launcher still be able to import zips?

sjhuang26 commented 2 years ago

I just attempted to import a zip and got the same error.

Eskaan commented 2 years ago

The fix is in process. Its because of Mods that are taken off the API for third party programs

papuSpartan commented 2 years ago

The fix is in process. Its because of Mods that are taken off the API for third party programs

I saw the curseforge api update note on this and it's genuinely stupid.

jk1895 commented 2 years ago

After a very long break, I wanted to install a modpack again, but I also get this error message. How do I get around this? Please help.

noncom commented 2 years ago

After a very long break, I wanted to install a modpack again, but I also get this error message. How do I get around this? Please help.

Use the original CurseForge launcher meanwhile? This issue is kinda marked as priority so it kinda should mean that it's going to be fixed ASAP, but that was said 2 days ago already, so who knows. Welcome back, btw, these days CurseForge loves to break things for you, so get ready.

derrickmehaffy commented 2 years ago

After a very long break, I wanted to install a modpack again, but I also get this error message. How do I get around this? Please help.

Use the original CurseForge launcher meanwhile? This issue is kinda marked as priority so it kinda should mean that it's going to be fixed ASAP, but that was said 2 days ago already, so who knows. Welcome back, btw, these days CurseForge loves to break things for you, so get ready.

That's fantastic for Windows users, those of us on Linux don't have a choice. It's kinda why these 3rd party launchers exist....

noncom commented 2 years ago

That's fantastic for Windows users, those of us on Linux don't have a choice. It's kinda why these 3rd party launchers exist....

Yeah, I totally understand. Well, all this just seems to be the CurseForge's idea of a good service.

PiscesdanAT commented 2 years ago

I had the same issue and my instance got deleted.

noncom commented 2 years ago

I had the same issue and my instance got deleted.

I can confirm that in addition to mods update failure the instance itself gets deleted. Tried that on several instances that I had for testing. That is probably worth a separate issue in its own right..

kibels commented 2 years ago

Is there a way to at least see which mod failed so I can download it manually?

sehnryr commented 2 years ago

The workaround I found was using https://github.com/gorilla-devs/ferium to purposefully fail downloading the modpack. The mods that will fail to download will be shown as such in the terminal: image

And the great thing about this method is that the download links are displayed directly for the user to download manually.

CandiceJoy commented 2 years ago

The workaround I found was using https://github.com/gorilla-devs/ferium to purposefully fail downloading the modpack. The mods that will fail to download will be shown as such in the terminal: image

And the great thing about this method is that the download links are displayed directly for the user to download manually.

As someone who normally plays packs with 100+ mods, I'd use a different launcher before I manually downloaded every single mod XD

oitsjustjose commented 2 years ago

The workaround I found was using https://github.com/gorilla-devs/ferium to purposefully fail downloading the modpack. The mods that will fail to download will be shown as such in the terminal: image

And the great thing about this method is that the download links are displayed directly for the user to download manually.

Yikes - ClothConfig API is used by MANY mods. This one API just cock-blocked the rest of those mods from working on third party launchers.

I really hope enough uproar causes OW to swallow their pride and revert this change.

sehnryr commented 2 years ago

I found that the issue was from the curseforge API.

When trying to get the infos from the ClothConfig API mod, I would get nothing in the downloadUrl field of any file.

curl -X GET https://api.curseforge.com/v1/mods/348521 -H 'Accept: application/json' -H 'x-api-key: API_KEY'

And that is further confirmed when calling the download-url endpoint, the request will throw a 403 Forbidden error.

curl -X GET https://api.curseforge.com/v1/mods/348521/files/3782783/download-url -H 'Accept: application/json' -H 'x-api-key: API_KEY'

But I also found an alternative way to download the mods bypassing the issue using media.forgecdn.net. The download url for ClothConfig API as a user will be this: https://media.forgecdn.net/files/3782/784/cloth-config-4.14.64-forge.jar

This url can be rebuild with the data from the API, "cloth-config-4.14.64-forge.jar" is the fileName got with /v1/mods/{modId}/files/{fileId} and "3782/784" is just the fileId with a / in-between.

Scrumplex commented 2 years ago

@sehnryr this is a "feature" of the CurseForge API. Mods can opt out of "third-party distribution", which will then remove that download URL.

I can tell you from experience that it is against CurseForge's ToS to rebuild that URL manually. See this commit from another launcher as an example.

If GDLauncher were to implement this workaround, CurseForge would probably revoke the apikey.

sehnryr commented 2 years ago

@Scrumplex I also thought my workaround was against their ToS but I didn't had the time to read it, thanks for telling me.

If mods can opt out of "third-party distribution", is there really a way to fix this issue?

Scrumplex commented 2 years ago

If mods can opt out of "third-party distribution", is there really a way to fix this issue?

ATLauncher has a cool solution IMO. It will ask you to download the mods manually and provide the indirect download link. So with your example above, ATLauncher would give you a button that would open https://www.curseforge.com/minecraft/mc-mods/cloth-config/download/3782784

While the launcher is waiting for you to download that file, it already looks for that file in your Downloads folder. So once the download completes it will probably auto-detect the file and continue with the next missing mod.

noncom commented 2 years ago

Another solution for Linux users meanwhile: https://www.reddit.com/r/feedthebeast/comments/uswnhe/psa_curseforge_has_started_enforcing_restrictions/i98qzvl/?utm_source=reddit&utm_medium=web2x&context=3

Which leads to this repo: https://git.sakamoto.pl/domi/curseme

CandiceJoy commented 2 years ago

Another solution for Linux users meanwhile: https://www.reddit.com/r/feedthebeast/comments/uswnhe/psa_curseforge_has_started_enforcing_restrictions/i98qzvl/?utm_source=reddit&utm_medium=web2x&context=3

Which leads to this repo: https://git.sakamoto.pl/domi/curseme

Executing random code maybe isn't the best idea.

noncom commented 2 years ago

Executing random code maybe isn't the best idea.

It's just 3 little scripts that you can open and read? How can this be not the best idea?

CandiceJoy commented 2 years ago

Executing random code maybe isn't the best idea.

It's just 3 little scripts that you can open and read? How can this be not the best idea?

Because a lot of people who see this might not know what of it means even after reading it, or might be too lazy to read it. It's just a bad precedent to go "here's some random code, go run it to fix your issue".

noncom commented 2 years ago

Because a lot of people who see this might not know what of it means even after reading it, or might be too lazy to read it. It's just a bad precedent to go "here's some random code, go run it to fix your issue".

Are you sure that Linux users have such habit of just executing random bash scripts?

CandiceJoy commented 2 years ago

Because a lot of people who see this might not know what of it means even after reading it, or might be too lazy to read it. It's just a bad precedent to go "here's some random code, go run it to fix your issue".

Are you sure that Linux users have such habit of just executing random bash scripts?

Well, either they are in which case they need the warning, or they aren't in which case the scripts won't get used and there was no point posting them :P

noncom commented 2 years ago

Well, either they are in which case they need the warning, or they aren't in which case the scripts won't get used and there was no point posting them :P

Now you are assuming that sharing bash scripts is inherently pointless. Well, good luck.

SetOfAllSets commented 2 years ago

After a very long break, I wanted to install a modpack again, but I also get this error message. How do I get around this? Please help.

Use the original CurseForge launcher meanwhile? This issue is kinda marked as priority so it kinda should mean that it's going to be fixed ASAP, but that was said 2 days ago already, so who knows. Welcome back, btw, these days CurseForge loves to break things for you, so get ready.

That's fantastic for Windows users, those of us on Linux don't have a choice. It's kinda why these 3rd party launchers exist....

What about running it in lutris and changing the directory to the Z drive (idk if this works on your distro put it works on Pop_os!.)

theRookieCoder commented 2 years ago

The workaround I found was using https://github.com/gorilla-devs/ferium to purposefully fail downloading the modpack. The mods that will fail to download will be shown as such in the terminal: image And the great thing about this method is that the download links are displayed directly for the user to download manually.

As someone who normally plays packs with 100+ mods, I'd use a different launcher before I manually downloaded every single mod XD

Well, that happens to be exactly what CF wants you to do. It's called monopoly and it's really awful

CandiceJoy commented 2 years ago

The workaround I found was using https://github.com/gorilla-devs/ferium to purposefully fail downloading the modpack. The mods that will fail to download will be shown as such in the terminal: image And the great thing about this method is that the download links are displayed directly for the user to download manually.

As someone who normally plays packs with 100+ mods, I'd use a different launcher before I manually downloaded every single mod XD

Well, that happens to be exactly what CF wants you to do. It's called monopoly and it's really awful

Couldn't agree more. :P

Pillgar commented 2 years ago

My workaround, as mentioned higher up, was to use the curseforge launcher, via Lutris, to install ATM6 1.8.24. Copied everything to the failed GDLauncher folder, and started the game from there. It didn't try to download anything after that.

sarim commented 2 years ago

Is gdlauncher devs thought about a solution? I have a crude idea. Maybe show a browser window inside gdlauncher and open the mod page. Then user downloads it, as the browser (webview) is inside gdlauncher, it can grab the downloaded file automatically.

jk1895 commented 2 years ago

Or let's start a fundraiser and use the money to sue CurseForge/Overwolf.

kibels commented 2 years ago

Or let's start a fundraiser and use the money to sue CurseForge/Overwolf.

For what? They're under no obligation to let anyone use their API. And technically it is the mod authors who have chosen not to let you download their mod through the API.

Maybe try asking the mod authors nicely to turn it on?

jk1895 commented 2 years ago

For what? For being greedy. All the trouble they keep making is just to force people to use their inferior shit software. Mojang should put a stop to them.

noncom commented 2 years ago

For what? They're under no obligation to let anyone use their API. And technically it is the mod authors who have chosen not to let you download their mod through the API.

Maybe try asking the mod authors nicely to turn it on?

That's exactly how monopolies work and attempt to justify themselves.

OneSleeve commented 2 years ago

Have you found out what the problem is? I really want to play ATM6...

noncom commented 2 years ago

Have you found out what the problem is? I really want to play ATM6...

Yes, the problem is that CurseForge only wants that you play ATM6 through their launcher.

sarim commented 2 years ago

@LucasEngel2 You can use ferium for now. In gdlauncher create a new instance. + -> Vanilla -> Forge -> 1.16.5 -> 36.2.34, name it ATM6. Now a ATM6 instance folder will be created.

Now using ferium add ATM6 modpack, use the instance folder from gdlauncher as the folder here. ferium will download and install the modpack, then give you a list of mods it couldn't download. Downloads those manually by clicking the links. Then copy paste those jar files in the instance folder -> mods folder. Now you can run the instance from gdlauncher.

junkheadog commented 2 years ago

this seems to be a common issue with all modpacks on gdlauncher actually, even with unofficial packs like for example epoch runner by sbeev.

ranenvious commented 2 years ago

For what? They're under no obligation to let anyone use their API. And technically it is the mod authors who have chosen not to let you download their mod through the API. Maybe try asking the mod authors nicely to turn it on?

That's exactly how monopolies work and attempt to justify themselves.

Curseforge literally isn't a monopoly and this is on mod devs from what I understand. Modrinth exists, the only reason it isn't available to use in GDlauncher is by the choice of GDlauncher, that's not an issue on Curseforge, that's an issue on GDlauncher. Stop trying to spin blame on parties that don't deserve it just because you don't like them. Curseforge does some stupid crap but this isn't on them.

And yes, reading more of this thread, Scrumplex confirmed this very thing, it is a thing that mod makers can opt into. You can't blame Curseforge for being a big bad monopoly for giving mod makers choice, that is the OPPOSITE of the issue with monopolies. It causing issues or us not liking it doesn't make it a monopolistic problem. The issue with monopolies is that they deprive people of choice, mod makers simply not letting their mods be downloaded by other launchers is not an issue of monopolistic control it's just an issue from people choosing to have their things put where they want them and nowhere else. Now I would probably argue that Curseforge being able to put a URL reconstruction clause in their TOS fringing on monopolistic, but it's certainly not illegal or tortious as there are far more restrictive TOS out there that are totally legitimate. Personally I don't think it should be valid, but it is as far as the law is concerned and in this case it's not technically being used monopolistically.

I think GDlauncher should just make a workaround, and then leave the code easily tweakable by the user with a few file changes or something. That way, GDlauncher isn't encouraging users to break the TOS or directly breaking it themselves but if users happened to discover a way to hook into GDlauncher and make it auto-grab URLs, well that would just be a shame wouldn't it? Not encouraging anything illicit, I'm just saying that a more modular launcher would be better for the end user, for no particular reason of course.

oitsjustjose commented 2 years ago

Curseforge literally isn't a monopoly ... Modrinth exists, the only reason it isn't available to use in GDlauncher is by the choice of GDlauncher

Might I bring your attention to this.

This is some Nintendo(n't) level of power shit move.

ranenvious commented 2 years ago

Curseforge literally isn't a monopoly ... Modrinth exists, the only reason it isn't available to use in GDlauncher is by the choice of GDlauncher

Might I bring your attention to this.

This is some Nintendo(n't) level of power ~shit~ move.

That's still not being monopolistic. If modrinth self hosted those mods no issue would come to them, if I'm understanding that post right, modrinth was using things hosted on Curseforge servers. So, it wasn't Curseforge leveraging their size against competition, it was them just not actively helping their competition. I agree its a shit move to even add this option to disabled third party launcher support since people will inevitably use it and it will create a schism in the community but people are actively spinning it ways it isn't.

I think Fabric shattered the community and was a net loss for the modding scene, even if does provide innumerable technical benefits, but I recognize those benefits, my issue is with implementation, not concept. Same thing here, in concept it's giving more choice to mod devs but in implementation that choice is hurting the community by causing a schism. It's an exact retread of old ground, except with Fabric people are still simping and trying to act like it never happened, and with Curseforge people are threatening lawsuits. The greatest irony here is that what Curseforge did is LESS harmful to the community than what Fabric did, since at least players CAN still get the mods that aren't automatically downloadable via API, it just takes more work whereas Fabric split the modding scene and players now have to pick between one set of mods and another, even if they want mods from both sets.

People are spinning the exact same thing in an entirely different way just because they don't like the people doing it. Curseforge factually offered more choice to mod developers, exactly the same thing as Fabric, so unless you have the same exact issues with Fabric, its just hypocrisy. Whether you want to call Curseforge monopolistic or not (and once again, if there are available alternatives that people actively use and are valid competitors it's not) what they did here was not a monopolistic action. And frankly, this entire phrasing scheme is quite redundant because the concept of monopolies applies primarily to commerce based economies, ad fueled sub-markets such as free mod hosting doesn't even really fit what the term was designed for.

I by no means think this was good, and I do disagree with the decision, but trying to spin this blame on Curseforge is just asinine since the people who opted into the system are the mod developers themselves. If this was an opt-out system, definitely, that would be leveraging control in an attempt to stifle competition, but it's not. This is something that, from what I have seen, mod developers actively opt into, ergo if you want to blame anyone you have to blame the people who chose to use it. Blind hatred is just as damning as blind admiration.

mellamokb commented 2 years ago

If an organization can single-handedly undermine the entire competitive market with a small change, they are currently in a monopoly position. It's not that hard to understand. This is also not a moral claim, simply a factual one. The monopoly didn't matter one bit until the moment CurseForge decided to leverage their position to make all alternative launchers unusable.

That's not to say there isn't blame all around, as you say CurseForge has every right to do what they did, and all the alternative launchers could consider self-hosting mods. They all put themselves into this risky position by being too willing to rely on CurseForge as a central host. That is ironically how monopolies end up happening in the real world - everyone becomes too trusting of a single agent, who accrues super-majority control of a single asset.

I'm a casual gamer. From my perspective I just want to download the latest cool modpack and start playing (in this case DireWolf20 1.18 pack). Now I can't, because of a change that CurseForge made (unless I use their bloated crap). That's why the outrage is currently directed at them, even though there is plenty of blame to share and legitimate reasons for the change. Please don't mistake outrage for lack of nuance.

Yeti2137 commented 2 years ago

Just tried to update a modpack, got the same error. Tried retrying download a dozen or so times to no avail. Clicked the other option of cancelling download and it deleted my entire instance along with my world with over 100 hours.

Mostly my fault for not keeping my world backed up more often, but there's still no need to recursively delete the entire instance folder when the mod downloads fail.

noncom commented 2 years ago

... it is a thing that mod makers can opt into. You can't blame Curseforge for being a big bad monopoly for giving mod makers choice, that is the OPPOSITE of the issue with monopolies.

It might surprise you but every monopoly pays its workers. And it's always the free "choice" of the worker to work there. And of course there are always "alternatives". I could go hiking instead of playing Minecraft.

ranenvious commented 2 years ago

... it is a thing that mod makers can opt into. You can't blame Curseforge for being a big bad monopoly for giving mod makers choice, that is the OPPOSITE of the issue with monopolies.

It might surprise you but every monopoly pays its workers. And it's always the free "choice" of the worker to work there. And of course there are always "alternatives". I could go hiking instead of playing Minecraft.

that would be relevant, if we were referring to mod maker pay, which we aren't. That is a relevant issue and discussion to be had, but it's not the discussion that is being had. Your trying desperately to make this a 1:1 parallel to the economy while simultaneously ignoring or intentionally lying about the nature of the issue. As an example, yeah you're right, hiking IS an absurd alternative, because it isn't one. Alternatives in this context (namely an economic context since those are the terms we are using here) would refer to alternative mod hosting platforms, of which, once again, Modrinth exists, and many modmakers actively prefer, ergo, valid alternative. It is not only present and capable, but offers features that many mod makers have specifically said they prefer, you cannot get a more text book example of a market alternative. A thing simply having wide adoption does not make it a monopoly in any meaningful sense of the word. I mean you could say linux has a monopoly over server infrastructure then and technically be right but if you defined it that loosely it wouldn't (functionally speaking) mean anything.

Monopolistic practices involve leveraging your size against the market itself, for instance how Apple gets part exclusivity deals with manufacturers making it impossible to source those parts for other projects or repairs. Curseforge does its fair share of crap but this ain't it chief, this is giving mod makers extra choice, if you don't like the choice they made that's on you. And, I say again, this is factually not stopping anyone from playing with CF mods. Download them all in GDlauncher, see which .jars are missing, go and get them manually. (and several semi-automated solutions have already been suggested in this very thread, so it's basically just 5 extra minutes of work if that) Should it be solved? Yes, ease of use is a valid factor that should carry weight in considerations. (Hell I'm working on a modpack with GDlauncher right now and it is causing me issues, I know it's an inconvenience) But your just trying to pin the blame on CF here when they factually aren't to blame; they offered a new feature that people chose to use to the detriment of others, that's not a monopolistic practice, shitty move maybe, but not monopolistic. You can say that they pulled an Apple and gave people that choice with the knowledge people would use it to the detriment of others, but that would be an entirely different issue that I'm not retorting here. (and frankly I'd say thats probably true) I'm not saying CF didn't screw up, I'm not saying they're good, I'm saying that people are lying about the situation, be it to themselves or others. All CF did was offer content makers a choice, if you use mods from mod makers that made that choice that's on them, not CF.

If I were to really put on my business hat, I'd say CF kinda screwed themselves out of any monopoly they may have had here. Now that (by their TOS) this is the new reality, (since alternative launchers cannot reconstruct download URLS according to their TOS) basically everyone who uses an alternative mod manager like GDlauncher won't want to use them due to the inconvenience they present. In turn this action is going to create a lot more people who want Modrinth support in more places, ergo that support will inevitably be provided in one form or another, ergo CF will lose more marketshare relative to Modrinth. It would be like Adobe adding more DRM, it makes sense at a first glance, but CF relies on alternative modloaders for their front end like Adobe relies on pirated copies being used to strengthen the community around their software. (no statement on the ethics of pirating or anything here, not getting into that, but factually Adobe does rely on pirated copies of their software to flesh out the community while still being able to charge businesses a lot. If you don't believe me you can look it up yourself, it's pretty widely accepted information)

Eitherway no matter how much I write here or how in depth I go we all know no-one is actually going to read this far or listen to anything I've said (despite backing up every claim with clear logical progression and real world examples) all the while continuing to recite the same "CF bad tho" replies so I'm done responding here. I'm not your economics teacher, and I have better things to do than explain what a monopoly is and isn't. CF made a bad choice sure, and I have no sympathy for them, but lying about what they did or who is to blame is never excusable no matter how much you may dislike them as a company.