Skip to content

Repository files navigation

Minecraft Modrinth — GameAP plugin

English | Русский

Browse, install, update and manage Minecraft mods and plugins from Modrinth directly from the GameAP. The plugin adds a Modrinth tab to the game server page for Minecraft servers.

The backend is a single wasm32-wasip1 module written in AssemblyScript; the frontend is a Vue 3 bundle embedded inside that module. The whole plugin ships as one signed .wasm file.

Features

  • Catalogue search across Modrinth, filtered to the server's mod loader and Minecraft version, with an optional content-category filter, pagination and sort (relevance / downloads / followers / updated).
  • Project details — a project page with description, categories, license, author, download and follower counts, and an image gallery, linking out to Modrinth.
  • Install the latest or a specific version, with the version list showing changelog and declared dependencies.
  • Dependencies — required dependencies are resolved and, after a confirmation that shows the full set and total download size, installed automatically.
  • Update an installed mod to a newer compatible version (state-preserving replace).
  • Enable / disable a mod without deleting it (name.jarname.jar.disabled).
  • Uninstall, with orphaned-dependency reporting.
  • Reconciliation — the installed list is cross-checked against the real files on the server, flagging missing files and listing unmanaged jars. Unmanaged jars are identified against Modrinth by content hash and, when recognised, adopted into the managed list — so mods installed out-of-band still show up as managed.

The tab is shown only for Minecraft servers (via the slot's checkGame) and requires the plugin:dshdabjp2l73a:manage server ability.

How the loader and version are detected

The plugin does not guess the server platform. It reads the server's mod and version variables (the ones set on the Minecraft game mod) and maps mod to a Modrinth loader and target folder:

mod variable Modrinth loaders Folder
fabric fabric mods/
quilt quilt, fabric mods/
forge, cauldron forge mods/
neoforge neoforge mods/
paper paper, spigot, bukkit plugins/
purpur purpur, paper, spigot, … plugins/
spigot spigot, bukkit plugins/
craftbukkit bukkit plugins/
folia / bungeecord / velocity / waterfall (respective) plugins/
vanilla — (unsupported)

Vanilla servers show a notice instead of the catalogue. The install folder is always chosen by the backend from this table, never taken from the request.

Requirements

Mod files larger than 64 MB are rejected with a clear message (upload them via the file manager instead). Every download is verified against the size and sha1 Modrinth publishes; because the host caps each fetch at 10 MB, files larger than 8 MB are pulled in 8 MB chunks with HTTP Range requests and reassembled.

Installation

Build the .wasm (see below) or download it from a release, then either:

  • upload it in the panel under Admin → Plugins → Upload, or
  • drop it into the panel's plugins/ directory and list its filename in PLUGINS_AUTOLOAD.

Development

The repository is laid out as two halves:

  • assembly/ — the AssemblyScript backend (ABI, host wrappers, router, handlers, Modrinth client, JSON, storage).
  • frontend/ — the Vue 3 + Naive UI frontend, built to frontend/dist/plugin.js and embedded into the wasm at build time.

It expects two sibling checkouts, matching the file: dependencies:

workspace/
├── plugin-minecraft-modrinth/   (this repo)
├── gameap-api/                  (gameap/gameap — provides web/plugin-sdk)
└── gameap-proto/                (gameap/gameap-proto — provides the proto packages)

Build everything:

make build        # builds the frontend, then embeds it and compiles the wasm

Or step by step:

cd frontend && npm ci && npm run build      # -> frontend/dist/plugin.js
cd .. && npm ci && npm run build            # -> minecraft-modrinth.wasm

Test and lint:

make test         # backend wasm harness tests + frontend unit tests
make check        # asc type-check

The backend tests instantiate the built wasm with mocked gameap-* host modules and drive it through the real protobuf ABI (see tests/harness/).

Releasing

Publishing is handled by .github/workflows/release.yml on a published GitHub release: it bakes the tag into the version, builds and GPG-signs the wasm, and uploads it to plugins.gameap.dev and the release. It needs the GPG_SIGNING_KEY and GAMEAP_DEPLOY_TOKEN secrets and the GAMEAP_PLUGIN_ID repository variable.

License

MIT

About

Manage minecraft mods from modrinth.com in GameAP

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages