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.
- 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 usingwarbler
andJRuby
.
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, including feature/bug requests. Before implementing a (larger) feature, consider opening a ticket to discuss the implementation or feature.
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 try to follow the existing coding style as close as possible.
Some basic rules are specified in the .editorconfig
file, and Rubocop is also available to help.
Every commit should pass Rubocop’s inspection.