Skip to content

plugin.yml 参考 ​

每个插件 JAR 的根目录必须包含 plugin.yml,定义插件元信息。

字段一览 ​

字段必填类型说明
name✅string插件名称(唯一标识,不可重复)
version✅string插件版本号
main✅string主类全限定名(必须继承 JavaPlugin)
description❌string插件描述
author❌string作者
depend❌string[]硬依赖列表(这些插件必须存在,否则加载失败)
softdepend❌string[]软依赖列表(存在则先加载,不存在则跳过)

完整示例 ​

yaml
name: MyPlugin
version: "1.0.0"
main: com.example.myplugin.MyPlugin
description: "我的第一个 Bngeuit 插件"
author: "YourName"
depend:
  - RequiredLibrary       # 硬依赖:必须存在
softdepend:
  - OptionalFeature       # 软依赖:有则先加载
  - NiceToHave

依赖解析 ​

硬依赖(depend) ​

  • 必须存在于 plugins/ 目录中
  • 依赖的插件会先于当前插件启用
  • 如果依赖的插件不存在,当前插件加载失败并报错
yaml
depend:
  - DatabasePlugin
  - LoggingPlugin

软依赖(softdepend) ​

  • 可选:存在则先于当前插件加载,不存在则静默跳过
  • 适用于功能增强型依赖(如:有经济系统就对接,没有也能独立运行)
  • 加载顺序:硬依赖 → 软依赖 → 当前插件
yaml
softdepend:
  - EconomyPlugin   # 有就对接经济系统
  - Vault           # 有就用 Vault API

加载顺序示例 ​

假设有以下插件和依赖关系:

plugins/
├── Database.jar      (name: DatabasePlugin)
├── Economy.jar       (name: EconomyPlugin)
└── MyPlugin.jar      (depend: [DatabasePlugin], softdepend: [EconomyPlugin, MissingPlugin])

加载顺序:DatabasePlugin → EconomyPlugin → MyPlugin

  • DatabasePlugin 是硬依赖,必须存在 ✅
  • EconomyPlugin 是软依赖,存在所以先加载 ✅
  • MissingPlugin 是软依赖但不存在,静默跳过 ✅

循环依赖

当前版本不检测也不报错循环依赖。拓扑排序会对已访问节点直接跳过,因此循环依赖不会导致栈溢出,但其中各插件的加载顺序不确定。请确保依赖关系是有向无环图(DAG)。

name 即命令命名空间

插件 name(小写)会作为该插件命令的命名空间,可用 插件名:命令 精确调用,解决同名命令冲突。内置命令使用保留命名空间 bngeuit:。