MCPM - 针对Bukkit服务器的插件包管理器

原创 开源 工具 其他 MCPM - 针对Bukkit服务器的插件包管理器 0.3.0

完成注册/登录后下载
版权类型
原创
插件中文名称
MCPM
插件英文名称
MCPM
原帖地址
#
支持的核心(服务端)
  1. 其他核心
语言支持
多语言
前置组件
无
适配版本(Java)
  1. 最新版本
  2. 26.x
  3. 1.21
  4. 1.20

MCPM —— Minecraft Plugin Package Manager​

给 Minecraft 服务器装一个 apt。
还在手动下载插件、丢进 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 你想装什么,剩下的事情交给它。

安装插件​

代码:
/mcpm install residence
也可以指定插件来源:
代码:
/mcpm install EssentialsX --source modrinth

搜索插件​

代码:
/mcpm search economy
MCPM 可以同时从多个插件源中搜索。

更新插件​

代码:
/mcpm update worldedit
或者直接:
代码:
/mcpm update --all
一次检查并更新所有可以更新的插件。

回滚版本​

新版本出了问题?
代码:
/mcpm rollback worldedit
MCPM 会保留旧版本备份,可以直接恢复。

锁定版本​

如果某个插件的当前版本已经稳定得不能再稳定,不想让它被自动更新:
代码:
/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认证
SpigotMCSpiget API无需
ModrinthOfficial API v2无需
CurseForgeCurseForge Core API免费 API Key
GitHubGitHub REST APIToken 可选
CustomMCPM 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
这意味着服主、服务器团队,甚至插件开发者,都可以拥有自己的 MCPM 软件源。
某种意义上,它已经不只是“插件下载器”了。

🔐 安全​

下载 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]​


💻 命令​

代码:
/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
默认会读取玩家客户端的 Locale。
解析顺序为:
代码:
玩家客户端语言
      ↓
config.yml 指定语言
      ↓
English
如果你想自己加语言,也不需要重新编译 MCPM。
只需要添加:
代码:
messages_<code>.properties
然后重新加载语言文件即可。

🧱 核心更新​

除了插件,MCPM 还可以管理部分服务器核心。
例如:
代码:
/mcpm core info
/mcpm core update
目前支持:
  • Paper
  • Folia
  • Purpur
  • Leaf
  • Leaves
因此 MCPM 的管理范围并不局限于 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
把生成的 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 想把它变成:
代码:
/mcpm install xxx
Minecraft 服务器,也该有自己的 Package Manager
📦
作者
mahiyo
下载
2
查看
79
首次发布
最后更新

评分

0.00 星 0 次评分

mahiyo 的其他资源

后退
顶部 底部