Project

mmi

0.0
No release in over a year
Program to install minecraft modloaders, mods and other assets through a single config file.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 13.0
~> 0.13
~> 3.10
~> 2.0

Runtime

~> 1.5.0
~> 1.11
~> 4.22
 Project Readme

MMI

MMI is some Ruby code that should make downloading and installing modloaders, mods, resource packs and other files for Minecraft easier. Configuring the downloads/installs is done by reading a YAML file.

Ideally, a user would not need to know or write any YAML to create a configuration file. This is still work in progress.

The application is currently CLI-only, but should work on Linux, MacOS and Windows.

Table of Contents
  • Installation
    • Prerequisites
    • Steps
  • Basic usage
  • Example configs
  • TODOs
  • Versioning
  • Contributing

Installation

Prerequisites

It is recommended to use MMI with Ruby 3.0 or higher. While lower versions might work, further development is expected to ignore any specifics that may render those versions unusable.

Steps

Installation through rubygems.org

Disclaimer: While MMI releases are published on rubygems.org, they might not reflect current development. If something does not work, try the manual installation.

$ gem install mmi

Manual installation

Clone the repository and navigate into its root directory.

$ git clone https://github.com/expeehaa/mmi.git
# or
$ hg clone https://github.com/expeehaa/mmi.git

$ cd mmi

Install gem dependencies using bundler

$ bundle install

If you get an error saying the lockfile requires bundler version 2.0+, install it first.

$ gem install bundler

Install the gem.

$ rake install

Basic usage

Syntax: mmi <config file> [action=install]

	where action is one of
		install  - Install the modloader and assets as specified in the config file.
		validate - Validate the config file.
		update   - Update the config file interactively.

The script currently does not support any arguments besides the ones listed above. Trying to get help by running mmi --help or similar will not work.

Example configs

Example configuration files can be found in examples/. They can be parsed by the MMI version they come with. Example configurations download and install files into tmp/ so that your .minecraft folder will stay unharmed.

The files are intended to provide an overview of the different features of MMI. They are not intended to create a working modded Minecraft environment and will therefore not be updated for each new Minecraft version.

TODOs

  • Improve argument parsing.

  • Write tests.

  • Add command to interactively create a config file.

  • Be able to update/change modloader interactively.

  • Be able to remove assets interactively.

  • Think about advising users to use another file extension than .yaml (e.g. .mmi, .mmiconf).

  • Try to make a Java-executable .jar file using warbler and JRuby.

Versioning

MMI uses semantic versioning with major, minor and patch versions.

Versions are coupled to the configuration file specification. This means, within the same major version, every release must be backwards-compatible regarding config file interpreting and MMI releases with a lower minor version must still be able to interpret a config file with a higher minor version (although they are allowed and expected to not support some configurations).

An exception to this rule are all releases with the major version 0. There, within the same minor version, backwards compatibility can be expected, but different minor versions will (most likely) not be compatible.

Contributing

Contributions are very welcome, as well as feature/bug requests.

In case you want to implement a feature, it would be best to create an issue beforehand so that we can discuss it. This reduces the chance of a pull request being rejected.

If you intend to create a pull request, please choose a branch name describing its changes (i.e. not some generic term like master or fix, but e.g. fix_typo or add_interactive_update_command).

Please be aware that I have a very specific code style and am interested in keeping it in this repository. Some basic rules are specified in the .editorconfig file, which your editor should support. Additionally, Rubocop has been configured using the existing code and every commit should pass Rubocop’s inspection. There most likely are a lot of Rubocop rules that are currently not triggered and therefore not configured. In such a case, either try to derive a style from existing code or feel free to ask.