Libium is the backend of Ferium. It helps manage Minecraft mods from Modrinth, CurseForge, and Github Releases

Overview

Libium

Libium is the backend of Ferium. It helps manage Minecraft mods from Modrinth, CurseForge, and Github Releases

There are 3 main components in Libium;

  • config is (surprise, surprise) the config for Ferium. It defines the config struct and some methods to get the config file, deserialise it, etc
  • launchermeta is an api-binding to Mojang's version manifest REST API
  • misc contains a few convenience functions
  • file_picker contains functions to show a file picker
  • add contains functions to verify and add a mod to a profile
Comments
  • Non-Mod files are installed as user-provided mods

    Non-Mod files are installed as user-provided mods

    If there is a .DS_Store (or some other non-jar) file in the .../mods/user folder, then it is also copied into the mods folder during upgrading even though it should be ignored. Generally .DS_Store, and maybe also other dot files, should probably be ignored.

    opened by douira 2
  • Upgrade dependency `size` to 0.4

    Upgrade dependency `size` to 0.4

    This upgrades to the latest version of size and uses the recommended replacement for the deprecated (but still valid) Size::Bytes.

    size 0.4 has no dependencies, so its transitive dependencies will be removed as part of this patch.

    opened by mqudsi 2
  • Fix macOS application support directory

    Fix macOS application support directory

    Closes https://github.com/theRookieCoder/ferium/issues/40

    Testing if the existence of a space in the path breaks something is probably a good idea but I haven't done so.

    opened by douira 1
  • Support xdg-desktop-portal gui on Linux

    Support xdg-desktop-portal gui on Linux

    While the rfd crate provides both GTK3 and xdg-desktop-portal backends, Ferium only uses the GTK3 backend, causing non-Gnome users to see this mess of a filechooser that likely doesn't conform to their desktop environment: GTK filechooser

    Programs that do support the specification(e.g. Firefox+derivatives) instead provide a file chooser provided by their desktop environment. For example, Plasma provides this: Plasma filechooser

    opened by ImperatorStorm 0
  • Expand libium's heuristic for github to use release name if only one jar is associated with the release

    Expand libium's heuristic for github to use release name if only one jar is associated with the release

    Untested implementation that expands libium's heuristic for github releases to capture the common pattern of mod version in the release name with a single associated jar. For an example see Cow's odd widgets.

    The heuristic implemented is:

    • If there are multiple .jar assets, check for a version in the asset name.
    • If there is a single .jar asset, check version in the asset name and fallback to the release name.

    This code compiles, but I'm looking for guidance on testing pattern for libium as I'm not seeing tests in the repository and ran into some issues when trying to build ferium with a local copy.

    opened by garethgeorge 1
Owner
Ilesh Thiada
Hobby student developer, currently using Rust and Java. Has experience with Flutter/Dart and Python
Ilesh Thiada
Femtorinth is a library to interact with a sub-set of the Modrinth API.

Femtorinth Femtorinth is a rust library to interact with a sub-set of the Modrinth api, it only includes the api calls that don't need auth (a.k.a onl

Vivian 2 May 6, 2022
"putzen" is German and means cleaning. It helps keeping your disk clean of build and dependency artifacts safely.

Putzen "putzen" is German and means cleaning. It helps keeping your disk clean of build and dependency artifacts safely. About In short, putzen solves

Sven Assmann 2 Jul 4, 2022
egui-tetra is a library that helps integrate egui

egui-tetra is a library that helps integrate egui, an immediate mode GUI library, with Tetra, a 2D game framework.

null 19 Jan 5, 2023
This is the core library with the full abstraction and implementation of the Minecraft protocol and logic. (Currently WIP)

MineRust (WIP) This is the core library with the full abstraction and implementation of the Minecraft protocol and logic. This project is currently WI

MineRust Project Suite 2 Nov 20, 2022
A Bevy plugin to easily create and manage windows that remember where they were.

bevy-persistent-windows A Bevy plugin to easily create and manage windows that remember where they were. Background When you're developing a game, thu

Umut 4 Aug 12, 2023
A Rust library for reading asset files and resource packs for any version of Minecraft

minecraft-assets A Rust library for reading asset files and resource packs for any version of Minecraft. Example use minecraft_assets::api::AssetPack;

Ben Reeves 7 Aug 14, 2022
This is a Minecraft Classic server written in Rust powered by tokio and classicl.

classicl_server Introduction This is a Minecraft Classic server written in Rust powered by tokio and classicl. Installation Cargo The project can be i

null 3 Nov 3, 2022
Rust library to download and run Minecraft instances.

Rust library to download and run Minecraft instances. Build the code To build the library, the do the following command: carbo build Run the example Y

Louis Bailleau 3 Oct 19, 2022
Minecraft using Bevy and Bevy-Meshem

minecraft_bevy Minecraft_bevy was built to showcase bevy_meshem. After a week of developing it has: Chunk loading / unloading each chunk's mesh is bei

Adam 7 Oct 4, 2023
A CLI tool to manage your godot-rust projects

ftw A CLI tool to manage your godot-rust project! Table of contents General Information Setup Usage Contact General Information This is a tool to help

Michael Angelo Calimlim 77 Dec 13, 2022
Manage light-weight sandbox environments for development

Cubicle development container manager Cubicle is a program to manage containers or sandbox environments. It is intended for isolating development envi

Diego Ongaro 8 Nov 29, 2022
A Bevy helper to easily manage resources that need to persist across game sessions.

bevy-persistent A Bevy helper to easily manage resources that need to persist across game sessions. Background In games, there are a lot of resources

Umut 5 Mar 25, 2023
Rust-based replacement for the default Minecraft renderer

wgpu-mc ?? A blazing fast alternative renderer for Minecraft Intro WebGPU is a new web specification designed to provide modern graphics and compute c

Birb 1 Jun 28, 2022
Rustcraft is a simple Minecraft engine written in rust using wgpu.

Rustcraft is a simple Minecraft engine written in rust using wgpu.

Raphael Van Hoffelen 110 Dec 22, 2022
A Minecraft Java Edition to Bedrock Edition resource pack convertor in Rust

j2be A Minecraft Java Edition to Bedrock Edition resource pack convertor in Rust How to use Note: This project is still in development Run cargo build

Cqdet 11 Sep 15, 2021
Minecraft Protocol Library

Protocol Minecraft Protocol Library This branch is dedicated to the Minecraft Bedrock Edition Protocol. If you have any concerns or questions you can

Netrex 5 Mar 19, 2022
Bell is a work in progress programming language that compiles to MCfunction (Minecraft's language for creating datapacks).

Bell is a work in progress programming language that compiles to MCfunction (Minecraft's language for creating datapacks). It provides a higher level,

Yoav 17 Aug 25, 2022
💤 Put your Minecraft server to rest when idle.

?? Put your Minecraft server to rest when idle.

Tim Visée 285 Jan 4, 2023
Minecraft-esque voxel engine prototype made with the bevy game engine. Pending bevy 0.6 release to undergo a full rewrite.

vx_bevy A voxel engine prototype made using the Bevy game engine. Goals and features Very basic worldgen Animated chunk loading (ala cube world) Optim

Lucas Arriesse 125 Dec 31, 2022