MCPM —— Minecraft Plugin Package Manager
还在手动下载插件、丢进
plugins/、找依赖、替换旧版本?MCPM 想做的事情很简单:
让 Minecraft 服务器也拥有一套像 Linux Package Manager 一样的插件管理体验。
安装、卸载、更新、回滚、依赖解析,甚至服务器核心更新,都可以直接通过
/mcpm 完成。
代码:
/mcpm install residence
/mcpm search economy
/mcpm update --all
/mcpm rollback worldedit
/mcpm core update
它到底能干什么?
MCPM 不只是一个“插件下载器”。它更接近一个真正的 Package Manager。
安装一个插件时,它会处理插件来源、版本、平台兼容性、依赖关系以及文件校验。
例如:
代码:
/mcpm install SomePlugin
→ Resolving dependencies...
• Vault v1.7
• ProtocolLib v5.1
• SomePlugin v2.3
→ Installing 3 packages...
安装插件
代码:
/mcpm install residence
代码:
/mcpm install EssentialsX --source modrinth
搜索插件
代码:
/mcpm search economy
更新插件
代码:
/mcpm update worldedit
代码:
/mcpm update --all
回滚版本
新版本出了问题?
代码:
/mcpm rollback worldedit
锁定版本
如果某个插件的当前版本已经稳定得不能再稳定,不想让它被自动更新:
代码:
/mcpm lock worldedit
代码:
/mcpm unlock worldedit
自动处理依赖
插件管理最烦人的事情之一,就是:MCPM 会自动解析依赖关系。
安装插件时,如果它依赖其他插件,MCPM 会先分析依赖关系,再按照正确的顺序安装。
底层使用 Kahn 拓扑排序算法处理依赖图,并且能够检测:
- 必需依赖
- 可选依赖
- 版本要求
- 插件冲突
- 循环依赖
Folia 兼容性检查
Folia 的插件生态一直比较特殊。一个插件能不能跑在 Folia 上,不是看它名字里有没有写个“Folia”这么简单。
所以 MCPM 会识别当前服务器平台,并在安装插件时进行兼容性检查。
运行在 Folia:
只允许安装标记为 Folia-compatible 的插件。
运行在 Paper / Spigot / Purpur / Leaf / Leaves:
会过滤掉 Folia-exclusive 插件。
默认开启。
如果你非常清楚自己在干什么,也可以在配置文件里关闭:
代码:
compatibility:
enforce-platform: false
插件来源
MCPM 目前支持多个常见插件来源:| 来源 | API | 认证 |
|---|---|---|
| SpigotMC | Spiget API | 无需 |
| Modrinth | Official API v2 | 无需 |
| CurseForge | CurseForge Core API | 免费 API Key |
| GitHub | GitHub REST API | Token 可选 |
| Custom | MCPM Repo Protocol v1 | 可选 |
想从 Modrinth 装,就从 Modrinth 装。
想从 GitHub Release 获取,就从 GitHub 获取。
甚至可以自己搭一个插件仓库。
自定义插件仓库
MCPM 提供了一套简单的 Custom Repository Protocol v1。你只需要提供一个
index.json:
代码:
GET https://plugins.example.com/index.json
代码:
{
"protocol": 1,
"name": "My Server Plugins",
"plugins": [
{
"id": "myplugin",
"name": "MyPlugin",
"description": "Does cool stuff",
"author": "Dev",
"versions": [
{
"version": "1.2.0",
"download_url": "https://example.com/myplugin-1.2.0.jar",
"checksum": "sha256:abc123...",
"size": 204800,
"mc_versions": ["1.21"],
"platforms": ["paper", "spigot"],
"dependencies": ["vault@1.7"],
"conflicts": [],
"published_at": 1712345678,
"changelog": "Fixed lag on startup"
}
]
}
]
}
config.yml 注册:
代码:
repositories:
custom:
myserver:
url: "https://plugins.example.com"
name: "My Server Plugins"
auth-header: ""
trusted: true
某种意义上,它已经不只是“插件下载器”了。
安全
下载 JAR 最怕什么?文件被替换了。
MCPM 支持 SHA-256 校验:
代码:
security:
verify-checksums: true
require-trusted-repos: false
trusted-repos:
- spigotmc
- modrinth
- github
- curseforge
verify-checksums 后,每次下载都会根据仓库提供的 SHA-256 对文件进行校验。如果校验失败:
代码:
Checksum mismatch!
Installation failed.
另外还可以启用可信仓库限制,只允许从指定仓库安装插件。
支持的服务端
目前支持:| 服务端 |
|---|
| Paper |
| Folia |
| Spigot |
| Purpur |
| Leaf |
| Leaves |
[th]
插件安装
[/th][th]
核心更新
[/th]
[td]

[/td][td]
PaperMC API
[/td]
[td]
Folia 插件
[/td][td]
PaperMC API
[/td]
[td]

[/td][td]
BuildTools
[/td]
[td]

[/td][td]
PurpurMC API
[/td]
[td]

[/td][td]
GitHub Releases
[/td]
[td]

[/td][td]
GitHub Releases
[/td]
插件安装
[/th][th]
核心更新
[/th]
[td]
[/td][td]
[/td]
[td]
[/td][td]
[/td]
[td]
[/td][td]
[/td]
[td]
[/td][td]
[/td]
[td]
[/td][td]
[/td]
[td]
[/td][td]
[/td]
命令
代码:
/mcpm install <n> [--source ...] 安装插件
/mcpm remove <n> 卸载插件并保留备份
/mcpm search <query> [--source ...] 搜索插件
/mcpm update [<n>|--all] 更新插件
/mcpm list 查看已安装插件
/mcpm info <n> 查看插件信息
/mcpm lock <n> 锁定插件版本
/mcpm unlock <n> 解除版本锁定
/mcpm rollback <n> 回滚插件
/mcpm repo list 查看仓库
/mcpm repo update 更新仓库索引
/mcpm repo trust <id> 信任仓库
/mcpm core info 查看服务器核心信息
/mcpm core update 更新服务器核心
/mcpm help [cmd] 查看帮助
多语言
MCPM 自带四种语言:
简体中文
English
日本語
Deutsch
解析顺序为:
代码:
玩家客户端语言
↓
config.yml 指定语言
↓
English
只需要添加:
代码:
messages_<code>.properties
核心更新
除了插件,MCPM 还可以管理部分服务器核心。例如:
代码:
/mcpm core info
/mcpm core update
- Paper
- Folia
- Purpur
- Leaf
- Leaves
plugins/ 目录。
技术架构
MCPM 内部按照几个相对独立的模块组织:
代码:
dev.mcpm/
├── model/
│ ├── ServerPlatform
│ ├── PluginPlatform
│ ├── PluginEntry
│ ├── PluginVersion
│ ├── Dependency
│ ├── InstallRecord
│ └── RepoIndex
│
├── source/
│ ├── PluginRepository
│ ├── AbstractRepository
│ ├── SpigotMCRepository
│ ├── ModrinthRepository
│ ├── CurseForgeRepository
│ ├── GitHubRepository
│ ├── CustomRepository
│ └── RepositoryManager
│
├── resolver/
│ └── DependencyResolver
│
├── security/
│ └── TrustManager
│
├── core/
│ └── CoreUpdater
│
├── command/
│ ├── McpmCommand
│ ├── McpmCommandDispatcher
│ ├── InstallCommand
│ ├── RemoveCommand
│ ├── SearchCommand
│ ├── UpdateCommand
│ ├── RollbackCommand
│ ├── RepoCommand
│ └── CoreCommand
│
└── util/
├── HttpClient
├── ChecksumUtil
├── JsonUtil
└── FileUtils
构建
需要:- Java 17+
- Maven 3.8+
代码:
mvn package -DskipTests
代码:
target/mcpm-<yyyyMMdd-HHmm>.jar
代码:
plugins/
Rolling Release
MCPM 不采用传统的语义化版本号。不会有:
代码:
v1.0.0
v1.1.0
v1.2.0
GitHub 上的
rolling Release Tag 始终指向 main 分支的最新构建。因此如果你想体验最新功能,直接使用
rolling 即可。
下载 / 源码
还是希望您能支持一下我捏...如果实在想白嫖的话,git clone下来之后mvn clean package之后进target里找到MCPM的jar文件哦
项目地址:
MCPM — Minecraft Plugin Package Manager
License
MCPM 使用 GNU GPLv3 开源。最后
MCPM 的想法其实非常直接。传统的 Minecraft 插件管理:
代码:
找插件
↓
下载
↓
扔进 plugins
↓
发现缺依赖
↓
继续找
↓
发现版本不兼容
↓
换版本
↓
服务器炸了
↓
翻备份
代码:
/mcpm install xxx