Coder Social home page Coder Social logo

gorilla-devs / ferium Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 43.0 14.66 MB

Fast and multi-source CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and GitHub Releases

License: Mozilla Public License 2.0

Rust 99.50% Just 0.50%
curseforge github-releases minecraft minecraft-mod mod-manager modrinth rust

ferium's People

Contributors

a-noximous avatar biel675 avatar ember-ruby avatar eskaan avatar justsimplykyle avatar mistrk7 avatar nikoandpiko avatar obj-obj avatar sidit77 avatar solidtux avatar therookiecoder 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  avatar

ferium's Issues

Support for parallel upgrade checking

Currently it takes a while to check all of the mods. I wonder would it be possible to seperate them into different threads.
Although would this hit the api limit more easily? Or does this not matter

Enhancement for the `remove` command

In the current verison you have to use the --mod-names flag to straight up delete the mod from cli without using the interface.
I hope that an auto detect could be implemented.
What I mean is:
If i just type ferium remove, do what is currently implemented
But if I type ferium remove Iris, directly remove iris from the profile
This would save time in big modpacks

Permission to add ferium to the AUR

I already made a working PKGBUILD and desktop file.(Downloaded from the Github release)
I think it's more appropriate to first ask and then upload mine to the AUR.
PKGBUILD

# Maintainer: Kyle Shiue <[email protected]>
pkgname=ferium-bin
pkgver=3.20.1
pkgrel=1
pkgdesc="Ferium is an easy to use CLI program for downloading and updating Minecraft mods from Modrinth, CurseForge, and GitHub Releases."
arch=("x86_64")
url="https://github.com/theRookieCoder/ferium"
license=('MPL')
source=("https://github.com/theRookieCoder/ferium/releases/download/v$pkgver/ferium-linux-gnu.zip"
	"ferium.desktop")
md5sums=('SKIP'
	'SKIP')

package() {
	cd "$srcdir"
	install -Dm755 "ferium" "$pkgdir/usr/bin/ferium" 

	install -Dm644 -t "$pkgdir/usr/share/applications" ferium.desktop
}

Desktop file

[Desktop Entry]
Type=Application
Name=ferium
Comment=Ferium is an easy to use CLI program for downloading and updating Minecraft mods from Modrinth, CurseForge, and GitHub Releases.
Exec=/usr/bin/ferium

Getting rate limited by github

no, using a github token doesn't work
Unless I've not given enough scope permission?
Also github rate limit seems to be very tight, anyways to get around that?

Only use Fabric backward compatibility when a Quilt version can not be found

Such as blur(fabric). The newest does support fabric and quilt in the same jar, but ferium says its a fabric mod.
But mods such as qsl and ok Zoomer, which both states that the only loader allows, ferium does determine it as a quilt mod successfully.
Iris on the other hand has another problem
1.2.3 does support quilt, but the newest 1.2.4 only supports fabric(But works in quilt)
Ferium currently downloads 1.2.4, but technically it should download 1.2.3 instead
(The iris problem is fixed, IMS updated that iris supports quilt too, but this still could be a problem)

Sources JARs should not be downloaded

Hi Ilesh!

I found your program very useful and really enjoy using it!
But today I encountered a problem that I want to report.

Problem

I have this mod added in config:

        {
          "name": "Plant-In-A-Jar",
          "identifier": {
            "GitHubRepository": [
              "PTOM76",
              "Plant-In-A-Jar"
            ]
          },
          "check_game_version": false,
          "check_mod_loader": false
        },

And after executing ./ferium upgrade command my "mods" folder contains "plantinajar-2.2.3-sources.jar" which is a sources file and they will not work.

Possible solution

I propose to add the ability to specify a file name or regex pattern in "GitHubRepository" section of config.

A few issues & Improvements

One question.. Where are the mods stored?
Apparently, no matter what location i choose for my profile.. they're not located in the given folder. And even if i move the .exe file, it keeps the config (i.e; that how many and what profiles exist) Therefore, it must be saving the config file as well as the mods elsewhere, even after i delete the custom folder for mods it still says the profile and mods exist.

Some GitHub Releases mods still fail to match

Here are a few mods I tried to download from github repositories which are not available on CurseForge. They all have 1.18.2 versions available but none of these were found by ferium. In each case, the version 1.18.2 appears in the title of the release, the filename of a jar file, or both.

Sort command improvement

Currently the sort command sorts the mods using the alphabitcal order, but it sorts Captical letters first. E.g.
https://modrinth.com/mod/badpackets always get sorted last(unless there are other mods with not Capitcal letters in the first letter) even though it has b in the first letter.
I think this in intended, but I just think that just simply based on alphabetical order would be better for the user experience.

Implement filtering for GitHub releases.

Maybe it is not a best idea (because it breaks backward compatibility) but I propose to modify config structure for GitHub mods.
From this:

"GitHubRepository": [
    "someGithubUser",
    "someRepoName"
]

To this:

"GitHubRepository": {
    "author": "someGithubUser",
    "repo": "someRepoName",
    "file_mask": ".*-release.jar$" // This parameter is a regular expression.
}

Add support for PrismMC's `.disabled` mods

Currently I'm using ferium witn polymc, and when I'm debugging mods I will often disable mods via polymc. When a mod is disabled, it will add .disabled at the end of the mod name. But when I do ferium upgrade, it will automatically "enable" the mod again. I want ferium to not touch .disabled mods.

Add pre-installed mods to profile via reverse finding the project_id through mod file name

So I was wondering if it is possible in the Curseforge API to get the file names of downloadable mods on their website so you can get the project id from that mod.

With that you could make it so that with a command like ferium reload you scan through the mods folder, add these mods to the profile.
Then you can simply continue on with using ferium using your pre-installed mods without the use of the user folder.

Some CurseForge mods have null icons

I can't add this Curseforge mod: https://www.curseforge.com/minecraft/mc-mods/status-effect-bars to a profile. Instead, it responds with the following:

% ferium add-curseforge 615459
Adding mod... error decoding response body: invalid type: null, expected struct ModAsset at line 1 column 553

This doesn't happen with any other Curseforge mods or Modrinth mods. Is this an issue with how the resources of this mod are structured or is Curseforge denying me access to this mod's metadata?

Add a log file and log actions

  1. Logging.
  2. Support for Packs (Modpacks, ResourcePacks, TexturePacks, ShaderPacks, DataPacks) especially Modpacks.
  3. Remove Duplicates from an existing Mod Folder.
  4. Scan Directory Feature, meaning that it would scan each file, if their name is understandable (Not like 'MmmMmmMmm.jar' for 'Test Dummys' Mod), use the old .jar Mod File Names to look for newer versions and upgrade them? but i guess you'll need a database for that though.. to find IDs out of Mod/File Names
  5. Scan List Feature, this would simply scan Names or IDs listed in a .txt or .xlsx file, and iterate through each and every one.. And all issues shall be logged into a .txt file. That will help find conflicts, Version issues etc.

Unable to delete a mod

When I try to remove a mod using the command "ferium remove", I get an error that says "invalid argument"
For example, if you try to remove a mod using the command "ferium remove Sodium" or "ferium remove "sodium-fabric-mc1.18.2-0.4.1+build.15.jar" (I don't know which one to use), you get the error "error: Found argument 'Sodium' which wasn't expected, or isn't valid in this context"

Improve compatibility checking for CurseForge mods

JEI fails to install for version 1.12.2, despite having several versions of the mod for that version.

error:
Downloading Just Enough Items (JEI) [1] Getting file information... × No version of Just Enough Items (JEI) is compatible for Forge 1.12.2

Cosmetic Armor failed in the same way. For comparison Botania downloaded fine, and LootTweaker downloaded with the "old parser."

The only difference I can see is that Botania explicitly has forge as a supported modloader, and LootTweaker has 1.12 as a supported version tag. Maybe a bug in the "old parser?"

Add duplication of profiles

Currently I have a profile for vanilla features
And I want to make a more create focused one.
So I created a new profile called "Tech"
One problem I found is that it seems to have no way of copying mods to another profile, so I have to painstakingly add every single mod hand by hand from the vanilla profile
Or you could copy the profile mods in config manually which is difficult for another reason. Because of all the profiles are in the same file, it's hard to copy mods with correct {}(I'm tempted to open another feature request of separating different versions of config into different file, but I'm not sure to open it in libium, or ferium)
So maybe add a command that can copy mods automatically?(including the ignore mod check in config to copy too)

Add dependencies when adding a mod

As described in the title.
Also, it might be good to ask the user whether to download "optional" dependencies, which is the "suggest" field in fabric.mod.json and the forge and quilt equivalent

Wrong default mods directory on macOS

Ferium uses /Users/<user>/Library/ApplicationSupport/minecraft/mods as the default mods directory as far as I can tell from my usage. This is wrong because the correct application support directory is Application Support (with a space). By default, the mod folder created by ferium isn't used since Minecraft lives in /Users/<user>/Library/Application Support/minecraft instead.

Allow user added mods

In commit ca6bcb7
"If there are files that are not the latest compatible version of a mod, then they are deleted. So effectively the output directory is emptied"
I want to have an option to not empty the directory. Ex.
There are four mods

  1. sodium
  2. iris
  3. c2me-fabric
  4. resounding
    Currently resounding is not a part of the profile therefore it deletes it.
    I want it to keep resounding intact.
    This is sorta-similar-but-not-very-similar to #12. I want to "overwrite the check"

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.