{"id":18295246,"url":"https://github.com/prismlauncher/mcmeta","last_synced_at":"2025-04-05T12:31:27.793Z","repository":{"id":163376104,"uuid":"556388572","full_name":"PrismLauncher/mcmeta","owner":"PrismLauncher","description":"Work-in-progress metadata tool and server","archived":false,"fork":false,"pushed_at":"2023-12-15T14:53:43.000Z","size":255,"stargazers_count":12,"open_issues_count":2,"forks_count":1,"subscribers_count":7,"default_branch":"develop","last_synced_at":"2025-03-21T03:51:16.268Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PrismLauncher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"open_collective":"prismlauncher"}},"created_at":"2022-10-23T18:39:03.000Z","updated_at":"2023-12-11T16:01:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"dbfd9d5c-f301-4b8b-aa36-0df5812ee700","html_url":"https://github.com/PrismLauncher/mcmeta","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismLauncher%2Fmcmeta","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismLauncher%2Fmcmeta/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismLauncher%2Fmcmeta/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismLauncher%2Fmcmeta/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PrismLauncher","download_url":"https://codeload.github.com/PrismLauncher/mcmeta/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247338789,"owners_count":20922997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T14:34:09.926Z","updated_at":"2025-04-05T12:31:22.785Z","avatar_url":"https://github.com/PrismLauncher.png","language":"Rust","funding_links":["https://opencollective.com/prismlauncher"],"categories":[],"sub_categories":[],"readme":"# Minecraft Metadata Server\n\nA server software designed for fetching Minecraft and Minecraft-related\nmetadata (such as Forge, Fabric, Quilt and Liteloader) and serving them as a\ncentralized source for metadata.\n\nThe project is still at its early stages and will undergo drastic changes.\n\n## Project structure\n\nmetamc is split into 2 parts, both of which are written in Rust.\n\n### libmcmeta\n\nA library which contains the data models and shared functions for client and\nserver of mcmeta. It is licensed under LGPL-3.0-only.\n\n### mcmeta\n\nA tool/server for generating and serving metadata files. It will do this by\ndownloading existing metadata files (and in some cases, extract metadata from\nmodloader installers) and then either serving these metadata files or\ngenerating them for usage somewhere else (like GitHub Pages). It is licensed\nunder GPL-3.0-only.\n\n#### How to run this\n\nSince no binaries are released yet, you will have to clone and compile this\nrepository yourself. Make sure you have Rust installed and then run:\n\n```sh\ngit clone https://github.com/PrismLauncher/mcmeta.git\ncd mcmeta/mcmeta\n\nexport RUST_LOG=INFO\nexport MCMETA__BIND_ADDRESS=127.0.0.1:9988\nexport MCMETA__STORAGE_FORMAT__TYPE=json\nexport MCMETA__STORAGE_FORMAT__META_DIRECTORY=../meta\ncargo run\n```\n\n#### Endpoints\n\nThe following endpoints are currently implemented:\n\n- `GET /raw/mojang` for the Mojang version manifest, which contains all\nversions\n- `GET /raw/mojang/:version` for a specific Minecraft version, if it exists\n\n## Goals\n\nEventually, mcmeta should implement at least the following goals:\n\n- [ ] Fetching metadata\n  - [x] Minecraft\n  - [ ] Forge\n  - [ ] Liteloader\n  - [ ] Fabric\n  - [ ] Quilt\n- [ ] Storing metadata\n  - [x] JSON\n  - [ ] Database\n- [ ] Offering metadata\n  - [x] Minecraft\n  - [x] Forge\n  - [ ] Liteloader\n  - [ ] Fabric\n  - [ ] Quilt\n\nSome more ambitious goals that might or might not be implemented are:\n\n- [ ] MultiMC/Prism Launcher export\n  - [ ] Static generation (metadata for launchers is stored)\n  - [ ] Dynamic generation (metadata for launchers is generated on the fly)\n- [ ] Lazy-loading\n  - Metadata isn't fetched until it is actually requested\n  - Once fetched, metadata will stay in the database\n- [ ] FFI\n  - The ability of being able to load libmcmeta as a shared library into other\n    programming languages, like C++.\n\nDepending on the difficulty of the task, it might be implemented before others.\n\n## Why?\n\nCurrently metadata for Minecraft and modloaders is spread across multiple\nlocations and in differing formats, making it difficult for launchers\nto provide installers for loaders. It doesn't have to be like this though.\n\nLaunchers like MultiMC and Prism Launcher use scripts to generate metadata\nspecific to their launcher. While this works for the context of a single\nlauncher and its forks, it's not sustainable in the long run and doesn't\ninvite for innovation to happen. The current formats also might not be\nefficient for both storage and usage in a launcher.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprismlauncher%2Fmcmeta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprismlauncher%2Fmcmeta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprismlauncher%2Fmcmeta/lists"}