gorilla-devs / ferium Goto Github PK
View Code? Open in Web Editor NEWFast and multi-source CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and GitHub Releases
License: Mozilla Public License 2.0
Fast and multi-source CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and GitHub Releases
License: Mozilla Public License 2.0
The CurseForge API doesn't mention modpacks anywhere so we'll have to implement the modpack format, which is just a json file I believe. This might be why GDLauncher/MultiMC doesn't support modpacks, they aren't in the API
For example, I have three mods downloaded:
But only DashLoader needs to be updated. Ferium should only update dashloader and keep other mods intact.
Algorithm:https://github.com/AndrewToaster/ForgedCurse/blob/main/ForgedCurse/Utility/MurmurrHash2.cs
Usage:https://github.com/baka-gourd/MinecraftModWatcher/blob/main/MinecraftModWatcher/Watcher.cs#L296
This can be done through the documentation to get the project information.
As title. It only checks for github and modrinth mods, resulting in EmptyConfigFile error when upgrading profiles with curseforge mods added.
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
QSL acts as a Quilt version of Fabric API. This would have to be hardcoded though, it can be considered as part of Ferium's Quilt support
ferium doesnt use the proxies specified in the environment variables
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
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
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?
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)
Hi Ilesh!
I found your program very useful and really enjoy using it!
But today I encountered a problem that I want to report.
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.
I propose to add the ability to specify a file name or regex pattern in "GitHubRepository" section of config.
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.
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.
senseiwells/ChunkDebug
chunk-debug-1.18.2-1.0.2.jar
Earthcomputer/clientcommands
clientcommands-2.6.6.jar
Coow/Cows-Odd-Widgets
cows-odd-widgets-1.0.4.jar
senseiwells/EssentialClient
essential-client-1.18.2-1.1.6.jar
Fallen-Breath/pca-protocol
pca-protocol-1.18.2-0.2.5.jar
End-Tech/syncmatica
syncmatica-1.18.2-0.3.2.jar
For example, the latest release of resolution control+ which is marked to be only 1.17 and hasn't updated in about a year still works on the latest version
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.
Ex. https://modrinth.com/mod/eating-animation/versions
This only has 1.17.1 listed on modrinth, and when I try to add it to ferium, it spits out this error
I know there is a check_game_version
option, but it's not possible to add that if ferium doesn't have the mod stored in config.
A follow up to #17 (comment) where a user got his previous mods wiped after using Ferium for the first time (F
s in chat)
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.
}
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.
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.
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?
This is a problem when I try to add
https://modrinth.com/mod/smooth-swapping
Suggestion for better behavior: print the error, but continue downloading the rest of the files
If you disable both modloader and version check, it still doesn't work.
It seems like it downloads the wrong file.
https://github.com/Chocohead/Crafty-Crashes
As on the can. This would allow people to build Ferium into other tools.
Ignoring errors was a pretty bad idea
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"
yeah, this will be helpful.
Also, would it be possible to NOT do this on first download, because that would certainly print out a lot of unreadable stuff.
Instead, print it when upgrading 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?"
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)
We would ideally want to publish to the most common package managers so that updating to the latest version is easy and convenient. These are the ones I have in mind;
Preferably, these packages should use the existing Releases builds rather than compiling separately.
Their packages should also be updated automatically in the release
Actions workflow.
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
ferium upgrade
gives profile is empty error if all your mods are sourced from CurseForge if you add a mod from modrinth it recognizes every mod
Make a GitHub Action to compile and release for the different platforms and features
I tried to upgrade the top 100 mods on Modrinth and most failed with this error.
This would be possible since if the ID
how do I install this? (Windows 10, x64)
Modrinth has the functionality to find out which Version
a local file belongs to (https://docs.modrinth.com/api-spec/#operation/versionFromHash)
CurseForge seems to have this functionality through 'fingerprints' but I haven't figured it out yet
Functionality for this in GitHub Releases is not possible
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.
I'm still being rate limited by the GitHub API in build workflows https://github.com/theRookieCoder/ferium/runs/6339503397?check_suite_focus=true.
I've encountered this a couple of times before on macOS only for some reason. I think Ferium might not be using the GitHub token
As Modrinth has started to support Quilt, I would love to see Quilt support in ferium as it at the moment downloads "the wrong version" of certain mods, like https://modrinth.com/mod/ok-zoomer
It can't find this mod either: https://modrinth.com/mod/qsl
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.