Giter Site home page Giter Site logo

froehlicha / pax Goto Github PK

View Code? Open in Web Editor NEW
155.0 6.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%
minecraft modpack fabric forge modding modding-tools modded-minecraft modded-minecraft-modpack curseforge fabric-modpacks

pax's Introduction

$$ {}^|_|| \ ๐š๐š›๐š˜๐šŽ๐š‘๐š•๐š’๐šŒ๐š‘๐™ฐ \ |{}^|_| $$


$$ {}^{{}^{{}^{{}^{{}^{{}^{|}}}}}}{}^{{}^{{}^{{}^{{}^{|}}}}}{}^{{}^{{}^{{}^{|}}}}{}^{{}^{{}^{|}}}{}^{{}^{|}}{}^{|}|{}^{|}{}^{{}^{|}}{}^{{}^{{}^{|}}}{}^{{}^{{}^{{}^{|}}}}{}^{{}^{{}^{{}^{{}^{|}}}}}{}^{{}^{{}^{{}^{{}^{{}^{|}}}}}} $$

I wrestle computers into doing what I want.

I've got expertise in design, web development, and have developed numerous applications and libraries - some of them are also used by other people ;)

Current Projects

  • BlinkDB, an in-memory DB optimized for offline web apps
  • daily driver OS, completely declarative, hosted here
  • more listed below

Take a look at my webpage for more info.

$$ {}_{{}_{{}_{{}_{{}_{{}_{|}}}}}}{}_{{}_{{}_{{}_{{}_{|}}}}}{}_{{}_{{}_{{}_{|}}}}{}_{{}_{{}_{|}}}{}_{{}_{|}}{}_{|}|{}_{|}{}_{{}_{|}}{}_{{}_{{}_{|}}}{}_{{}_{{}_{{}_{|}}}}{}_{{}_{{}_{{}_{{}_{|}}}}}{}_{{}_{{}_{{}_{{}_{{}_{|}}}}}} $$

pax's People

Contributors

egelja avatar froehlicha avatar huantianad avatar jqshuv 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  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  avatar

pax's Issues

no-color output

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

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.

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.

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

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.

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.

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

`--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).

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)

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.

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?

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.

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.

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.

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

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.

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.

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.

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.

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

Sync with MultiMC

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

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...

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.

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.

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.

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.

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

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.