All Projects → theRookieCoder → ferium

theRookieCoder / ferium

Licence: MPL-2.0 license
Fast and multi-source CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and GitHub Releases

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to ferium

Requiem
Revamps Minecraft's vanilla death experience and adds various related mechanics.
Stars: ✭ 88 (-86.61%)
Mutual labels:  minecraft-mod, curseforge
multifold
The next-generation cross-platform Minecraft Launcher.
Stars: ✭ 30 (-95.43%)
Mutual labels:  curseforge, modrinth
ForgeModdingSkeleton
Skeletons for building Forge mods
Stars: ✭ 21 (-96.8%)
Mutual labels:  minecraft-mod, curseforge
old-animations
Client-side modification for Fabric that allows users to restore animations from older versions.
Stars: ✭ 19 (-97.11%)
Mutual labels:  curseforge, modrinth
Mc2Discord
A simple minecraft mod, server side only, to link the chat with your Discord server
Stars: ✭ 18 (-97.26%)
Mutual labels:  minecraft-mod, curseforge
TabTPS
Minecraft server mod/plugin to monitor TPS, MSPT, and other information in the tab menu, boss bar, and action bar.
Stars: ✭ 151 (-77.02%)
Mutual labels:  minecraft-mod
The-Witcher-3-Mod-manager
Mod manager for The Witcher 3 🗃
Stars: ✭ 71 (-89.19%)
Mutual labels:  mod-manager
kibe
A miscellaneous mod for Minecraft that adds a bunch of random, and mostly unoriginal things.
Stars: ✭ 42 (-93.61%)
Mutual labels:  minecraft-mod
MythicMetals
Fabric based Minecraft mod that adds new materials into the game. Includes new tools, ores, anvils, and sets of armor.
Stars: ✭ 35 (-94.67%)
Mutual labels:  minecraft-mod
github-release
Github Action to create, update, or add files to Github Releases
Stars: ✭ 61 (-90.72%)
Mutual labels:  github-releases
fix4log4j
No description or website provided.
Stars: ✭ 21 (-96.8%)
Mutual labels:  minecraft-mod
Rats-Mischief
Rat's Mischief is a Minecraft mod that adds rats made by RAT and Arathain.
Stars: ✭ 31 (-95.28%)
Mutual labels:  minecraft-mod
ImmersivePortalsModForForge
No description or website provided.
Stars: ✭ 57 (-91.32%)
Mutual labels:  minecraft-mod
Wings
A Forge mod for Minecraft: Java Edition which adds wings for aerial travel.
Stars: ✭ 20 (-96.96%)
Mutual labels:  minecraft-mod
ShulkerBoxTooltip
What's in my shulker box?
Stars: ✭ 63 (-90.41%)
Mutual labels:  minecraft-mod
ExCompressum
Minecraft Mod. Ex Nihilo Addon. Adds a compressed hammer that can be used on compressed blocks from Extra Utilities.
Stars: ✭ 26 (-96.04%)
Mutual labels:  minecraft-mod
The-Undergarden
Repository for the Undergarden, a Minecraft dimension mod.
Stars: ✭ 83 (-87.37%)
Mutual labels:  minecraft-mod
ResearchTable
www.curseforge.com/minecraft/mc-mods/research-table
Stars: ✭ 12 (-98.17%)
Mutual labels:  minecraft-mod
SReplay
Server-side recording mod for ReplayMod
Stars: ✭ 44 (-93.3%)
Mutual labels:  minecraft-mod
OpenRadio
A Little OpenComputers addon which adds laser links and (planned) satellites with radios, antennas and other high frequency stuff :3
Stars: ✭ 17 (-97.41%)
Mutual labels:  minecraft-mod

Ferium

rust badge licence badge copyleft badge

Check out ferium's sister projects ferinth and furse. They are Rust wrappers for the official Modrinth and CurseForge APIs respectively

Ferium is a fast and feature rich CLI program for downloading and updating Minecraft mods from Modrinth, CurseForge, and GitHub Releases, and modpacks from Modrinth and CurseForge. Simply specify the mods or modpacks you use through the CLI, and in just one command you can download all the mods or the modpack you configured.

Features

  • Download mods from multiple sources, namely Modrinth, CurseForge, and GitHub Releases

  • Download modpacks from multiple sources, namely Modrinth and CurseForge

  • Pleasing and beautiful UI
    • Listing mods Listing Mods
    • Listing mods verbosely Listing Mods Verbosely
    • Upgrading mods/modpacks Upgrading Mods/Modpacks
  • It's super fast due to multithreading for network intensive tasks

    Your results may vary depending on your internet connection.

    It downloads my modpack Kupfur with 79 mods in 15 seconds:

    Ferium.Kupfur.Upgrade.mp4

    It downloads MMTP, the largest modpack with around 400 mods, in just under a minute:

    ferium_MMTP_install.mp4
  • Upgrade all your mods in one command, ferium upgrade

    • Ferium checks that the version being downloaded is the latest one compatible with the chosen mod loader and Minecraft version
    • You can configure overrides for mods that are not specified as compatible but still work
  • Download and install your modpack in one command, ferium modpack upgrade

  • Create multiple profiles and configure different mod loaders, Minecraft versions, output directories, and mods for each

Installation

Ferium builds from GitHub Releases do not require any external dependencies at runtime.
If you compile from source, using GCC to build will result in a binary that requires GCC to be available a runtime.
On Linux, the regular version requires some sort of desktop environment that offers an XDG Desktop Portal. The nogui versions do not need this, but there will not be any GUI file picker. So, you will have to manually enter in paths.

Ferium is coming to more package managers soon!

Packages

Arch User Repository for Arch Linux
AUR

Installation method GUI file dialogue No GUI
Install pre-built binaries from GitHub Releases ferium-gui-bin ferium-bin
Build from source at the latest tag ferium-gui ferium
Build from source using the latest commit ferium-gui-git ferium-git

From source builds will install the Rust toolchain and GCC.

Homebrew for macOS or Linux
Homebrew
brew install ferium

Scoop for Windows
Scoop
scoop bucket add games && scoop install ferium

Pacstall for Ubuntu
pacstall
pacstall -I ferium-bin

Nix for NixOS or Linux
nixpkgs stable-22.11
See package page for installation instructions

Cargo Install (Cross Platform)

If you have the Rust toolchain installed, you can compile and install ferium from source by running cargo install ferium.

Remember to use an add-on like cargo-update to keep ferium updated to the latest version!

GitHub Releases (Manual - Cross Platform)

  1. Download the asset suitable for your operating system from the latest release
  2. Unzip the file and move it to a folder in your path, e.g. ~/bin
  3. Remember to check the releases page for any updates!

Overview / Help Page

Note! A lot of ferium's backend is in a separate project libium. It deals with things such as the config, adding mod(pack)s, upgrading, file pickers, etc

Ferium stores profile and modpack information in its config file. By default it is located at ~/.config/ferium/config.json, but you can change this in 2 ways. You can set the FERIUM_CONFIG_FILE environment variable or set the --config-file global command flag, the flag always takes precedence.

You can also set a custom CurseForge API key or GitHub personal access token using the CURSEFORGE_API_KEY and GITHUB_TOKEN environment variables or the --curseforge_api_key and --github-token flags respectively. Again, the flags take precedence.

First Startup

You can either have your own set of mods in what is called a 'profile', or install a modpack.

  • Create a new profile by running ferium profile create and entering the details for your profile
    • Then, add your mods using ferium add
    • Finally, download your mods using ferium upgrade
  • Add a modpack by running ferium modpack add <project_id>
    • After which, run ferium modpack upgrade to download and install the modpack

Adding Mods

  • Modrinth Mods
    • ferium add project_id
    • Where project_id is the slug or project id of the mod
      • For example, Sodium has the slug sodium and a project id AANobbMI
      • You can find the slug in the website url (modrinth.com/mod/<slug>), and the project id at the bottom of the left sidebar under 'Technical information'
    • So to add Sodium, you should run ferium add sodium or ferium add AANobbMI
  • CurseForge Mods
    • ferium add project_id
    • Where project_id is the project id of the mod
      • For example, Terralith has a project id 513688
      • You can find the project id at the top of the right sidebar under 'About Project'
    • So to add Terralith, you should run ferium add 513688
  • GitHub 'Mods'
    • ferium add owner/name
    • Where owner is the username of the owner of the repository and name is the name of the repository (both case-insensitive)
      • For example Sodium's repository has the id CaffeineMC/sodium-fabric
      • You can find these at the top left part of the repository's page as a big 'owner / name'
    • So to add Sodium, you should run ferium add CaffeineMC/sodium-fabric (again, case-insensitive)
    • Note: The GitHub repository has to release JAR files in their Releases for ferium to download, or else it will refuse to be added
  • External mods
    • If you want to use files that are not downloadable by ferium, place them in the user folder in the output directory. Files here will be copied to the output directory when upgrading

Adding Modpacks

  • Modrinth Modpacks
    • ferium modpack add project_id
    • Where project_id is the slug or project id of the modpack
      • For example, Better Minecraft has the slug better-minecraft and a project id shFhR8Vx
      • You can find the slug in the website url (modrinth.com/modpack/<slug>), and the project id at the bottom of the left sidebar under 'Technical information'
    • So to add Better Minecraft, you should run ferium modpack add better-minecraft or ferium modpack add shFhR8Vx
  • CurseForge Mods
    • ferium modpack add project_id
    • Where project_id is the project id of the modpack
      • For example, RLCraft has a project id 285109
      • You can find the project id at the top of the right sidebar under 'About Project'
    • So to add RLCraft, you should run ferium modpack add 285109

Upgrading Mods

If your output directory is not empty when setting it, ferium will offer to create a backup. Please do so if it contains any files you would like to keep

Now after adding all your mods, run ferium upgrade to download all of them to your output directory. This defaults to .minecraft/mods, where .minecraft is the default Minecraft resources directory. You don't need to worry about this if you play with Mojang's launcher (unless you changed the resources directory). You can choose to pick a custom output directory during profile creation or change it later.

If ferium fails to download a mod, it will print its name in red and give the reason. It will continue downloading the rest of the mods and will exit with an error.

WARNING: When upgrading, any files not downloaded by ferium will be moved to the .old folder in the output directory

Upgrading Modpacks

If your output directory's mods and resourcepacks are not empty when setting it, ferium will offer to create a backup. Please do so if it contains any files you would like to keep

Now after adding all your mods, run ferium modpack upgrade to download the modpack to your output directory. This defaults to .minecraft, which is the default Minecraft resources directory. You don't need to worry about this if you play with Mojang's launcher (unless you changed the resources directory). You can choose to pick a custom output directory when adding modpacks or change it later.

If ferium fails to download a mod, it will print its name in red and give the reason. It will continue downloading the rest of the mods and will exit with an error.

WARNING: If you choose to install modpack overrides, your existing configs may be overwritten

Managing Mods

You can see all the mods in your current profile by running ferium list. If you want to see more information about them, you can run ferium list -v or ferium list --verbose.

You can remove any of your mods by running ferium remove, selecting the ones you would like to remove by using the space key, and pressing enter once you're done. You can also provide the names of the mods to remove as arguments. Mod names with spaces have to be given in quotes (ferium remove "ok zoomer") or the spaces should be escaped (ferium remove ok\ zoomer).

Check Overrides

If some mod is compatible with your profile but ferium does not download it, create an issue if you think it's a bug. You can disable the game version or mod loader checks by using the --dont-check-game-version and/or --dont-check-mod-loader flags when adding the mod, or manually setting check_game_version or check_mod_loader to false for the specific mod in the config.

For example, Just Enough Items does not specify the mod loader for older minecraft versions such as 1.12.2. In this case, you would add JEI by running ferium add 238222 --dont-check-mod-loader so that the mod loader check is disabled. You can also manually disable the mod loader (and/or game version) check(s) in the config like so

{
    "name": "Just Enough Items (JEI)",
    "identifier": {
        "CurseForgeProject": 238222
    },
    "check_mod_loader": false
}

Managing Modpacks

Add

When adding a modpack, you will configure the following:

  • Output directory
    • This defaults to .minecraft, which is the default Minecraft resources directory. You don't need to worry about this if you play with Mojang's launcher (unless you changed the resources directory)
  • Whether to install modpack overrides

You can also provide these settings as flags. Ferium will automatically switch to the newly added modpack.

Configure

You can configure these same settings afterwards by running ferium modpack configure. Again, you can provide these settings as flags.

Manage

You can see all the modpack you have configured by running ferium modpack list. Switch between your modpacks using ferium modpack switch. Delete a profile by running ferium modpack delete and selecting the modpack you want to delete.

Profiles

Create

You can create a profile by running ferium profile create and configuring the following:

  • Output directory
    • This defaults to .minecraft/mods where .minecraft is the default Minecraft resources directory. You don't need to worry about this if you play with Mojang's launcher (unless you changed the resources directory)
  • Name of the profile
  • Minecraft version
  • Mod loader

You can also provide these settings as flags. If you want to copy the mods from another profile, provide the --import flag. You can also directly provide a profile name to the flag if you don't want a profile picker to be shown. Ferium will automatically switch to the newly created profile.

Configure

You can configure those same settings afterwards by running ferium profile configure. Again, you can provide these settings as flags.

Manage

You can see all the profiles you have by running ferium profile list. Switch between your profiles using ferium profile switch. Delete a profile by running ferium profile delete and selecting the profile you want to delete.

Feature Requests

If you would like to make a feature request, check the issues to see if the feature has already been added or is planned. If not, create a new issue.

Building from Source or Working on ferium

Firstly, you need the Rust toolchain which includes cargo, rustup, etc. You can install these from the Rust website. You can manually run cargo commands, but I recommend just, a command runner that's basically a much better version of make.

To build the project and install it to your Cargo binary directory, clone the project and run just install. If you want to install it for testing purposes run just (alias to just install-dev), which builds in debug mode.

You can run clippy lints using just lint, integration tests using cargo test, and delete all build and test artefacts using just clean.

If you would like to see instructions for building for specific targets (e.g. Linux ARM), head over to the workflow file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].