Giter Site home page Giter Site logo

froehlicha / pax Goto Github PK

View Code? Open in Web Editor NEW
156.0 156.0 4.0 445 KB

๐Ÿ“ฆ The MC modpack manager for professionals.

Home Page: https://github.com/froehlichA/pax/releases/latest

License: MIT License

Nim 100.00%
curseforge fabric fabric-modpacks forge minecraft modded-minecraft modded-minecraft-modpack modding modding-tools modpack modpack-manager

pax's Issues

Cannot add mods in latest version.

Used pax to create a simple test modpack a few days ago, have since updated the version of pax (from version 1.2.1 to 1.4.0 or 1.3.0) and I can no longer add mods to any modpack.

Tried redownloading the latest versions, and making new modpacks to no avail (forge, fabric, 1.16.5, 1.17...)

This is the response I get when trying to add a mod with the new versions:

$ ./pax add lithium
[:] Loading data from manifest..
[:] Searching for mod..
httpclient.nim(1080) responseContentIter
asyncfutures.nim(390) read
asyncfutures.nim(390) read
asyncfutures.nim(390) read
asyncfutures.nim(390) read
Error: unhandled exception: 400 Bad Request [HttpRequestError]

When I roll back to the 1.2.1 release the command works as expected.

Export server files

Exporting a jar for the server files would be pretty nice too.
Requires mods to be able to be marked as client- or server-only first, so issue #22 is a dependency of this.

rework version & loader check

Pax is still getting stuck on some specific mods.

For example, if a mod is in the "Fabric" category, but files of the mods itself aren't marked as being compatible with "Fabric", should Pax recognize them as Fabric?

Really depends on the mod.

support for forge & fabric modpacks

mainly two things:

  • show whether an installed mod in ./pax ls is forge or fabric compatible.
  • when installing/updating/upgrading, add a --loader option to restrict mods to that specific loader.

Implement `mark` command

Both #23 and #27 require some amount of stored metadata that will indicate if they should be downloaded. Once the download command is implemented (See #40 ), we should be able to easily filter the download command based on the marks.

Add `-y` option to commands.

Would be nice to add a -y to commands which turns off interactive prompts.
Needed for more CI interoperability.

Use CurseForge Fabric support instead of Jumploader

CurseForge added native Fabric support recently, so Jumploader is no longer needed for CurseForge packs.

Proposed changes:

  • --loader fabric uses a Fabric instance rather than Jumploader
  • Possibly an option to upgrade existing packs using Jumploader to native Fabric

Load times when importing increased dramatically

Since we're now retrieving metadata like dependencies, every time a mod is written two the manifest, two sequential http requests are made, which increases load times in big modpacks (like ATM) dramatically.

Look into reducing this by retrieving mod information upfront.

Remove duplicates when installing

When installing with selectors such as projectid#fileid or the Curseforge URL, a mod may be installed multiple times. Just remove exixting versions when installing, that will solve the issue.

Sync with MultiMC

MultiMC/
โ””โ”€โ”€ instances/
    โ””โ”€โ”€ yourcreatedfolder/
        โ””โ”€โ”€ minecraft/
            โ””โ”€โ”€ mods/

Support for curseforge resource packs

To be able to release modpack on the CurseForge, resource pack files should be referenced in the manifest.json.
Otherwise, the modpack will be rejected.

Better git diffs

When making changes to mods, the manifest.json updates. When trying to commit specific changes, it is really hard to see which projectID and fileIDs correspond to which mod and what changes have been done exactly. Maybe add a __pax field into manifest.json to better see changes?

`--fabric` switch for `/pax init`

While users can still create a fabric modpack by installing Jumploader with /pax add jumploader, it would be neat if the init command already had a toggle for that (or possibly asks for it).

Cache mod information

Currently, every time a command like ./pax ls is executed, the entire list of mod information is downloaded again. Look into caching some of that, it'll greatly reduce execution time.

Implement `download` command

It seems like both #30 and #28 will require mods to be downloaded directly from curseforge. I propose we implement a download command that will be able to download mods for either the client or server.

Command for generating `modlist.html`

would be nice if a list of all mods used in a pack could be generated, either when exporting so that a modlist.md or modlist.html exists in the output .zip, or as a standalone command.

Automatically distribute SSL certificate

On Windows, Nim needs the CA certificate to run with SSL enabled. I've added information on how to add it in the docs, but of course a automatic solution would be far better.

CI Integration

While pax can already be automated pretty heavily, I'd like to provide a preset for the github ci so modpack makers don't have to look up how to make them themselves.
Ties in with #15

index out of bounds

When doing: pax add https://www.curseforge.com/minecraft/mc-mods/dtbop i get an error which is
fatal.nim(49) sysFatal
asyncfutures.nim(390) read
Error: unhandled exception: index out of bounds, the container is empty [IndexDefect]

When i try and add any other mod i do not get this error. This is happening for Version 1.7.1
I am also getting the exact same error when doing: pax add https://www.curseforge.com/minecraft/mc-mods/dtphc

I am only getting this error when adding the mod with the url. If i install it the normal way without the url i do not get this error

fix windows tests

testament (The nim test runner) cannot run the tests on Windows apparently, because the regex doesnt work (?)

This is gonna get fixed once I have access to my Windows machine again.

Originally posted by @froehlichA in #45 (comment)

Allow pax executable to be placed in a different folder.

Currently the pax executable along with extra libraries for windows, needs to be placed in the same directory as the modpack. However it would be nice if I could place it elsewhere, add it to the PATH, and simply use it in any folder I wish. This would be especially helpful when working on different modpacks at the same time (avoids the need for multiple installations).

If I try running the pax executable from a different folder it just hangs at the moment.

better version select

To select how pax installs a mod, the user currently has to pass the -s Parameter to select an InstallStrategy. Perhaps it would be better if the user could select either "recommended" or "newest" in the CLI after selecting his mod.

Export directly to `*.jar`s

PAX is currently only able to export Curseforge-compatible modpacks with the manifest.json. Exporting to a .zip that contains the *.jars directly would also be very nice.

Git Stuff is not initialized when importing

Git Stuff is only initialized when creating a new project with init, but not with import.
When importing other modpacks, the CI file and the other github stuff should be automatically initialized too.

better selectors for `pax add`

For the pax add command, the format currently allowed is:

  • pax add <name>

It would be nice if people could also add mods with:

  • pax add <curseforge-url>, for example pax add https://www.curseforge.com/minecraft/mc-mods/jei or pax add https://www.curseforge.com/minecraft/mc-mods/jei/files/3335737
  • pax add <mod-id>, for example pax add 238222
  • pax add <mod-id>#<file-id>, for example pax add 238222#3335737

Show mod version when updating/adding mods

Also, notifying if the mod version is the latest or the recommended. Like: <VERSION> (Recommended).
I have run into some confusion when updating the mods, so I was thinking would be neat.

[:] Loading data from manifest..
[:] Loading mods..
[:] Searching for mod..

[ฮ”] SELECTED MOD
 โ””โ”€ MAtmos - https://www.curseforge.com/minecraft/mc-mods/matmos
    โ””โ”€ Description: MAtmos is a sound atmosphere generator for Minecraft.
    โ””โ”€ Downloads: 30.360
    โ””โ”€ Version: <VERSION>

Are you sure you want to update this mod? (y/n - default y):
[:] Retrieving mod versions..
[-] Updating MAtmos <VERSION>..
[:] Writing to manifest...

more init stuff

pax init should generate some other stuff beside the modpack too, maybe including:

  • a git project
  • a github workflow for automatically deploying the modpack to github releases / curseforge
  • a .gitignore

no-color output

For CLIs and people that cannot afford terminals with color support ;)

Rewrite in Go

Pax will be rewritten in Go because of two main reasons:

  1. While Nim is a really good language, its ecosystem of is still relatively small and in-the-works. I've tried three different zip libraries, two of those fail completely, the third doesn't work on Windows. (Or maybe I'm just too dumb?)
  2. Cornstone, written in Go, will eventually be integrated into this project.

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.