Go to file
2023-08-20 09:29:20 +02:00
src/mpm model: rewrite to use hardlinks instead of janky symlinks 2023-08-20 09:29:20 +02:00
.gitignore gitignore: update with build artifacts 2023-08-20 09:28:50 +02:00
COPYING Initial commit 2022-03-27 21:01:39 +02:00
Pipfile cli: switch to click 2023-07-01 13:39:46 +02:00
pyproject.toml cli: switch to click 2023-07-01 13:39:46 +02:00
README.md move src to src/, make packagable 2022-09-03 15:04:44 +02:00

Minecraft Plugin Manager

mpm is a tool used to maintain the various servers and their plugins on play.malloc.gg.

Malloc runs a heterogenous environment of server versions, depending on what gamemodes folks are playing and how recently the latest major Minecraft update was published. Many of these servers need to share common infrastructure, such as universal network-wide chat, discord interfaces, player statistics, voice chat, and more. Managing them got to be such a pain in the ass that I wrote this tool to help out the workload.

Use cases

mpm is highly specialized for the purposes of malloc.gg, but it should be able to work in other systems where:

  • You have multiple servers in a network
  • They each need to share common plugin versions
  • Some sub-groups of servers share plugins amongst themselves, but not with every other server on the network
  • You're trying to upgrade a network to a new minecraft release but can't bring all the servers and their plugins along at the same time

Installation

# pip install .

Usage

  • Create a new plugin repository: mpm repo add

  • List repositories: mpm repo list

  • Import a package to a repository: mpm repo import

  • Add a server to mpm: mpm server add

  • List your servers: mpm server list

  • Add a plugin to a server: mpm server add-plugin

  • Commit your changes: mpm server sync

Documentation is scarce. Sorry about that. Pull requests and wiki editors appreciated.

Versions are managed using simple symlinks, and they require that the actual .jar files use Semver naming. Any deviation from Semver can result in some really goofy behavior, but for the most part, the majority of plugins available on spigot.org include a compatible string in the downloaded filename.

Compatible version ranges are specified in plugins.yml for each plugin and follow Python semantics. If a version field isn't listed, it defaults to * aka =>0.0.0. Be careful when specifying incomplete or unusual version numbers, as sometimes YAML might interpret your 1.0 as a numeric 1. Throw some quotes around for good measure if you run into this.

Known Bugs

  • Bad documentation
  • 'mpm' is not an uncommon name

Maybe you'll find this useful too. Batteries not included.