packwiz / packwiz-installer

An installer for packwiz modpacks, with automatic auto-updating and optional mods! Works well with MultiMC and on servers.
https://packwiz.infra.link/
MIT License
46 stars 21 forks source link

Packwiz not identifying server properly #62

Closed JordanPlayz158 closed 1 year ago

JordanPlayz158 commented 1 year ago

I am running packwiz-installer-bootstrap via java -jar packwiz-installer-bootstrap.jar -g https://path/to/pack.toml and I have client mods side = "client" and both sides mods but yet, I see the server is downloading the client side mods as well, is this expected behavior (if so what is the point of settings the side)? And if not, what determines if the machine is a server or a client? If it is unreliable perhaps there should be a flag added to manually identify the machine as a server or a client? I am running packwiz inside a docker container and am running it through pterodactyl panel (Java 8 image ghcr.io/pterodactyl/yolks:java_8).

comp500 commented 1 year ago

-g only disables the GUI. You want the -s server flag, to tell packwiz-installer that you're using a server (it defaults to client).

JordanPlayz158 commented 1 year ago

Ah, I didn't see the -s setting in the --help, will it be added to the --help in the future or maybe already has but not made it into a release yet, or perhaps a wiki entry could be made for how to get packwiz working for server and mention the -s setting, but although it does work and does recognize a size change, I still see it is downloading the client side mods?

comp500 commented 1 year ago

The bootstrap isn't what handles installing the pack, it just updates packwiz-installer. That error is just telling you it's missing the server part - you need both -s and server after each other (-s server). It is in the docs, though there definitely ought to be a reference page for it: https://packwiz.infra.link/tutorials/installing/packwiz-installer/#using-a-modpack-with-a-server.

The --help command is broken at the moment, I'm working on fixing it 😅

JordanPlayz158 commented 1 year ago

The bootstrap isn't what handles installing the pack, it just updates packwiz-installer. That error is just telling you it's missing the server part - you need both -s and server after each other (-s server).

Yeah, sorry, noticed my error and deleted the first message

It is in the docs, though there definitely ought to be a reference page for it: https://packwiz.infra.link/tutorials/installing/packwiz-installer/#using-a-modpack-with-a-server.

I can't believe I missed that, I went through all the pages, guess I skimmed too fast and missed it, sorry about that

The --help command is broken at the moment, I'm working on fixing it sweat_smile

Thank you for your work :)

Also for this

although it does work and does recognize a size change, I still see it is downloading the client side mods?

As you said

The bootstrap isn't what handles installing the pack, it just updates packwiz-installer.

I should actually be reporting this to the packwiz-installer repo rather than the bootstrap repo?

comp500 commented 1 year ago

I should actually be reporting this to the packwiz-installer repo rather than the bootstrap repo?

Yeah, I'll transfer it now.

although it does work and does recognize a size change, I still see it is downloading the client side mods?

Hmmm, could you send the .pw.toml of one of the files that doesn't work? Also try deleting packwiz.json.

JordanPlayz158 commented 1 year ago

Hmmm, could you send the .pw.toml of one of the files that doesn't work? Also try deleting packwiz.json.

I just did a fresh run and apparently it did not download the client side mods but due to an unrelated network error, it is throwing an error but this could be a bug, packwiz does try to download every mod even if labeled as client side which to me sounds like a bug (no reason to download a mod you are not going to save) but maybe it is an intentional design decision?

Here is the .pw.toml file of a file that is attempted to be downloaded (but not saved) while being labeled a client mod

name = "OptiFine"
filename = "OptiFine_1.12.2_HD_U_G5_MOD.jar"
side = "client"

[download]
url = "https//path/to/OptiFine_1.12.2_HD_U_G5_MOD.jar"

# A number of tools can generate the hash for you, including 7-zip and sha256sum
# packwiz supports a number of hashes, including sha256, sha512, sha1 and md5
hash-format = "sha256"
hash = "350875bddc6ea39dad4e949f1f636d1d3a6e5fb16d4612a0bd1a953b40abafbf"

Edit: actually I can't tell if it is a network error? It downloads fine in my browser. The client has the same issue (probably is a network issue), it says INTERNAL_ERROR but gives the additional info that the Socket closed

(67/67) Failed to download OptiFine_1.12.2_HD_U_G5_MOD.jar: stream was reset: INTERNAL_ERROR
Failed to download modpack, the following errors were encountered:
OptiFine_1.12.2_HD_U_G5_MOD.jar: okhttp3.internal.http2.StreamResetException: stream was reset: INTERNAL_ERROR
        at okhttp3.internal.http2.Http2Stream$FramingSource.read(SourceFile:355)
        at okhttp3.internal.connection.Exchange$ResponseBodySource.read(SourceFile:276)
        at okio.RealBufferedSource.read(SourceFile:189)
        at okio.ForwardingSource.read(SourceFile:27)
        at okio.HashingSource.read(SourceFile:70)
        at okio.ForwardingSource.read(SourceFile:27)
        at okio.RealBufferedSource.readAll(SourceFile:284)
        at link.infra.packwiz.installer.DownloadTask.download(SourceFile:226)
        at link.infra.packwiz.installer.UpdateManager.processIndex$lambda-14$lambda-13(SourceFile:372)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Update cancelled by user!
comp500 commented 1 year ago

Hmm... are you definitely passing the -s server flag? It should be after java -jar packwiz-installer-bootstrap.jar since arguments before -jar are read by Java and not passed to the launched flag. What's the exact URL you're trying to download from that fails?

JordanPlayz158 commented 1 year ago

Hmm... are you definitely passing the -s server flag? It should be after java -jar packwiz-installer-bootstrap.jar since arguments before -jar are read by Java and not passed to the launched flag.

I did pass the -s server flag properly, and I am happy and sad to report that it was user error and not a bug (or maybe you may deem it as a bug), I was using a bashism to run packwiz then run the server which apparently specifically messed up the last download (it may still be considered the bug because it doesn't flat out fail but strangely fails at the last download

java -jar packwiz-installer-bootstrap.jar -s server -g https://path/to/pack.toml; java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s "-jar server.jar" || printf %s "@unix_args.txt" )

What's the exact URL you're trying to download from that fails?

https://jordanplayz158.xyz/JordanPlayz158/23smp/-/raw/master/mods/optifine.pw.toml

comp500 commented 1 year ago

Hmm... the problem seems to be with your server: https://jordanplayz158.xyz/JordanPlayz158/23smp/-/raw/master/nonDistributedMods/OptiFine_1.12.2_HD_U_G5_MOD.jar doesn't download for me in Firefox or curl. The reason it is also downloaded on the server side is because any files you put in a packwiz modpack are included, even if they don't have .pw.toml files, so all your nonDistributedMods files are downloaded to a folder with the same name - you'll want to add a .packwizignore file excluding the nonDistributedMods folder.

JordanPlayz158 commented 1 year ago

Very fascinating, so my assumption that it is a network issue was correct, wonder what the cause is because ChickenASM has not reported an error once and it is downloaded from the same source. (And I'm not doing anything fancy to my knowledge, if you are on IPv4, the GitLab instance is proxy passed through nginx but if you are on IPv6 you get a direct line to the GitLab) Also thank you for talking about .packwizignore forgot about that and will fix that. But as it sounds like a network error i.e user error on my end, it is my fault and thus, I am sorry for wasting your time without performing (thorough enough) due dilligence and thank you for all the help and guidance