Code Monkey home page Code Monkey logo

modpackdownloader's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar nincodedo avatar undeadzeratul avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

modpackdownloader's Issues

Clearing cache..

Am I doing it wrong or is it broken?

21:24:32.285 [main] INFO  com.nincraft.modpackdownloader.ModPackDownloader:25 -
Starting ModPackDownloader with arguments: [-manifest, manifest.json, -folder, m
ods, -clearCache]
Exception in thread "main" java.lang.NullPointerException
        at java.io.File.<init>(Unknown Source)
        at com.nincraft.modpackdownloader.util.FileSystemHelper.clearCache(FileS
ystemHelper.java:82)
        at com.nincraft.modpackdownloader.ModPackDownloader.main(ModPackDownload
er.java:37)

If I am simply missing something, sorry to bother you. :p

Version is ModPackDownloader-0.3.3.225

Curse modpacks not removing old mods during update

Unless you write a script to delete the mods prior to Curse modpack updating, the old mods will still be there. They should be moved to a temp directory and deleted upon successful update. Otherwise moved back.

Individual release type overrides

Adding a release type tag to an individual Curse mod to override the release type passed in via command line could be useful. For example, Psi has not been released and is still in beta so the updater won't update to the latest beta for it.

Add validation

Add validation to directory and file parameters to make sure they are valid.

Add help command

Help command needs to be added. Descriptions for each parameter needs to be added it so it shows up.

Modpack updating

A json of modpack details can be accessed through the widget api like so.

https://widget.mcf.li/modpacks/minecraft/225550-agrarian-skies-2.json

This feature would store the slug, 225550-agrarian-skies-2, in a file in the minecraft folder. The application could then be run with a command line argument of the minecraft folder, or simply stored in that folder and run without location specific arguments, and update the pack to the current recommended version.

In theory this could be combined with MultiMC's ability to run programs before instance launch to update packs on the fly.

Fix multithreading

Our current setup can very easily break and hang forever. Switching over to some sort of thread manager on the main thread would hopefully cause less issues.

Add tests

Also our current jsons in main resources should move to test resources.

Separate Processing Logic

So basically instead of one mod list manager handling downloads and updates to a single manifest, I'm thinking we can have processors for each, well, process. Updating can take in a list of manifest file locations, build out the manifests given the files at those locations, and update them. Downloading can take in its own list of manifest file locations, compile them to a singular list of mods to download, and download them to the output location provided in the arguments. Modpack Updating will eventually just be split out into its own processor (I personally am not planning on changing its logic, just where it happens with this feature). The new feature that will come with this is merging manifest files, which will take in a list of manifest file locations, convert them all into their own manifests, pull out all distinct curse mods found within them into a single mod list, then dump that back into a new manifest, which will be written to the output folder given in the arguments. This will allow us to pull in all of our individual manifests into one cohesive Curse Manifest for automatically deploying modpacks to CurseForge.

Weird download issues due to cache structure and Curse missing files

http://play.nincraft.com:8080/job/There%20Will%20Be%20Blood/231/console

16:39:11.368 [pool-2-thread-16] ERROR com.nincraft.modpackdownloader.util.DownloadHelper:53 - Could not download Chameleon Creepers.jar.
java.io.FileNotFoundException: http://minecraft.curseforge.com/projects/chameleon-creepers/files/2285921/download?cookieTest=1

This file is no longer on Curse, however it was in the cache. We shouldn't need a connection to Curse to pull something from the cache. We should change the Curse cache structure to include the name and file ID from the JSON. This way you can determine if the mod is the correct one in the cache without needing to go to Curse.

Forge rename still broken

gj

FileSystemHelper, copyFromLocalRepo. Doesn't rename the file being downloaded. It renames the file in the local repo and does nothing with downloaded file.

Github release downloader

This handler will have mod name, repo name, and release tag. This will only work with github repos that utilize the releases tab and actually tag their builds.

Log summary of downloaded mods

A short log message at the end of updating/downloading just summarizing what happened. 5 updated out of 10 mods or 33 out of 35 downloaded successfully

Forge download doesn't always work

The url/file changes between MCVersion-ForgeVersion and MCVersion-ForgeVersion-MCVersion. I'm not entirely sure why or how to determine which one it should be. Could just check both.

Downloader crash

19:48:01.733 [Thread-10] INFO com.nincraft.modpackdownloader.ModPackDownloader - Downloading Buildcraft. Mod 2 of 32
Exception in thread "Thread-10" java.lang.NullPointerException
at com.nincraft.modpackdownloader.util.URLHelper.decodeSpaces(URLHelper.java:12)
at com.nincraft.modpackdownloader.ModPackDownloader.downloadFile(ModPackDownloader.java:238)
at com.nincraft.modpackdownloader.ModPackDownloader.lambda$downloadThirdPartyMod$2(ModPackDownloader.java:208)
at com.nincraft.modpackdownloader.ModPackDownloader$$Lambda$3/961419791.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)

http://play.nincraft.com:8080/job/NEB3/49/console

Combo packs - Curse + custom

The ability to keep a Curse pack up to date and also add your own mods on top of it is something I've seen a few people in the community do. We should be able to add support for that fairly easily.

All downloads fail - possible Curse URL change?

Log on pastebin

Valid URL would be
https://minecraft.curseforge.com/projects/storage-drawers/files/2350060/download?cookieTest=1
but Downloader tries to get
https://minecraft.curseforge.com/projects/223852-storage-drawers/files/2350060/download?cookieTest=1

Notice the missing project-id in the URL. I'm guessing this must be a recent change on their side.
I tried the manifest from In The Sea and SkyExchange.

Additional logging

Log an error saying the Forge version of the pack is different than the currently installed one for this instance when updating a modpack in MultiMC. Maybe also stop the pack from starting? @Watchful1

From #28

Add checkMCUpdate

checkMCUpdate would check the mods in your listed manifest to see if they are available for the Minecraft version given with the parameter. At the end it would spit out a summary of how many mods are and aren't updated and list the ones that aren't.

Curse download process changed?

When trying to download a modpack today from Curse, the downloader only saved one ".jar" file, minecraft.curseforge.com.jar

It appears that Curse may have changed how the files are accessed on their system.

Should the default downloads folder be /overrides/mods ?

By default, CurseForge pack downloads have manifest.json next to an overrides folder. Inside overrides is a mods folder, containing all of the non-Curse mods.

If I place ModPackDownloader next to manifest.json and run it, it creates a separate mods folder outside of the overrides folder, and I have to manually merge MPD's mods folder with Curse's mods folder.

It would be nice if the default mods directory was overrides/mods, so all the mods end up in the same place.

Github release updater

Only will work with repos that use the releases tab. Main issue will be lack of knowing which Minecraft version the releases are set for. Still need to work that out.

Some multi-threads fail to connect.

Having trouble downloading packs fully (Trying with Skyfactory3).

My internet connection isn't always wonderfull, but as you will notice from the logs the most of multiple threads timeout or loses connection to curse/nincraft. The result is that only 4-10 mods is being verified each run and I have to run the app many times.

Also, when running with the [-updateCurseModPack] parameter it fails to download the latest .zip file.
If I manually download and place it in the folder it works.

manifest.zip
modPackDownloader.zip

Major Refactor

I've discussed this with @UndeadZeratul but just wanted to get this written down.

Downloading is currently a mess and not consistent. All downloaded files should go through the Download Helper and files should be downloaded directly to the local cache. If a file is already in the cache, then obviously this part will be skipped. After, the file should be copied from the local cache to the folder designated by the DownloadableFile. Renaming will take place after copying. This will hopefully resolve our cache and renaming issues.

Things to fix

34c8e4e#diff-3896c42b28c940f0a8f7659ce3ea9f98R28

Change updateCurseModpack to a String

Instead of a boolean, change it to String which would be the modpack slug. Therefore no need to look up a file. This would be a major parameter change so 1 release giving out a log message saying this will be changed in future releases is required.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.