朋友发来两个 .jar:一个 EssentialsX,一个圈地插件,说“丢进 plugins 就行”。你下载到手机里却卡住了:文件管理器没法直接放进服务端目录,就算放进去了,你也不知道服务端认没认。
「插件管理」这一页就是干这个的:它直接读写当前核心的 plugins/ 或 mods/ 目录,负责扫描、启停、删除、上传,还能从 Modrinth 搜索安装。入口在「服务器管理」里的「插件」。
先弄清它认什么、不认什么,比急着点按钮重要。装错目录最常见的后果不是报错,而是你装完什么变化都没有,然后在游戏里反复找原因。
先看核心:Paper 系装插件,Fabric 系装模组,放错目录等于没装。
页面只扫
plugins/和mods/,其他位置的 jar 不会出现在列表里。启停是改文件名,不删文件;删除插件默认连数据目录一起删。
应用不会自动装依赖,缺依赖只能在启动日志里暴露。
装完必须重启;
/reload只适合临时试试配置改动。
先确认你的核心认哪一种#
插件(plugin)和模组(mod)是两套完全不同的扩展机制,文件后缀都可能是 .jar,但内容不通用。装错地方,轻则毫无反应,重则启动报错。
| 核心 | 支持插件 | 支持模组 | 页面表现 |
|---|---|---|---|
| Paper、Purpur、Leaves、Leaf、Spigot、CraftBukkit | 是 | 否 | 只出现「插件」分段 |
| Fabric、Forge、NeoForge、Quilt | 否 | 是 | 只出现「模组」分段 |
| PowerNukkitX | 是(PNX 插件) | 否 | 只出现「插件」分段 |
| Vanilla、Velocity、BungeeCord、PocketMine-MP、Allay、BDS | 否 | 否 | 提示当前核心不支持插件与模组 |
页面顶部会显示当前核心名、类型、版本、插件目录、已安装数量和已禁用数量,并用两枚徽标告诉你“支持插件/支持模组”。分段只渲染当前核心支持的那一类,所以Paper 上根本不会出现模组页签,这不是功能缺失,是核心不支持。
想换扩展类型,只能换核心,页面里没有开关能救。核心选型见 核心、插件、模组、代理端。
Velocity、BungeeCord 是代理端,本身不加载 Bukkit 插件;PocketMine-MP 用 .phar 插件,Allay 用自己的格式,都不在这个页面的扫描范围里。PowerNukkitX 管的是它自己的 PNX 插件,Java 版模组对它不适用。
它只看两个目录#
插件目录是服务端下的 plugins/,模组目录是 mods/。扫描规则很朴素:
插件:只看扩展名为
.jar的文件(不区分大小写),会尝试读paper-plugin.yml或plugin.yml拿名称、版本、主类、作者、依赖;读不出来也照样列出来,只是详情里没有元信息。模组:认
.jar、.jar.disabled、.disabled、以-开头的文件,以及没有后缀但文件头是PK的压缩包。模组不解析内部元信息,列表按文件名排序。已启用的排在前面,其余按修改时间倒序。改完文件点右上角刷新。
列表上方还有筛选标签(全部 / 启用 / 禁用 / 本地),每个标签带数量;搜索框匹配文件名和插件声明的名称,两者都能命中。插件多的时候先用「禁用」筛一遍,比在长列表里翻快。
放进去没出现,先点刷新,再确认文件位置和扩展名对不对。插件只认 .jar 扩展名,把 .jar.zip 或手机下载器改名成 .jar.bak 都不会被列出来。文件在但列表空,多半是位置或权限问题。
启停不是卸载:改的是文件名#
这是 Bukkit 系和模组加载器的通用约定,Minexa 只是把它做成了开关:
插件“禁用”是在文件名前加一个
-,启用时再去掉;模组“禁用”是把
.jar改名为.jar.disabled,启用时改回来;开关只改文件名,不删文件,也不改插件自己的配置。
所以“先关掉试试”是安全的:禁用不丢配置,重新启用后数据和设置都还在。这一点和删除有本质区别。
运行中不能启停。页面会红字提示“服务端运行中,需先停止服务器才能启用/禁用或删除插件与模组”,底层的写操作也会被拦。服务端正在读这些文件,中途改名行为不可预测。
删除要分清两件事:
删除插件 jar,默认还会勾选「同时删除插件数据目录」,也就是
plugins/<插件名>/下的配置和数据。这个勾选默认是打开的,删之前先想清楚:你要的是“先禁用看看”,还是“彻底清掉配置”。只想临时停用,用开关,不要删。删除模组是简单确认,没有数据目录那一项。
带数据目录删除不可撤销。领地、经济、权限类插件的数据都在插件自己的文件夹里,删了 jar 再装回来,数据不会自己回来。动手前备份整个服务端,或至少导出 plugins/<插件名>/。
三种装法:上传、URL、Modrinth#
页面给了三条安装路径,适用场景不同:
| 方式 | 你需要准备 | 适合 | 注意 |
|---|---|---|---|
| 上传 | 手机上已有 .jar 文件 | 朋友发你的、自己下载的 | 通过系统文件选择器选文件,复制进当前核心目录 |
| URL 安装 | 一个能直接下载 jar 的链接 + 文件名 | 知道直链、想省一次下载 | 链接失效或返回网页时会失败 |
| Modrinth 搜索 | 关键词 | 不知道去哪下、想按版本筛选 | 仍需自己确认版本与加载器匹配 |
上传走系统的文件选择器(SAF),选完后文件会被复制到当前核心的 plugins/ 或 mods/。小于 1 KB 的文件会判失败并删掉,因为那通常是错误页面或者被截断的下载。
URL 安装要填两个东西:下载地址和保存文件名(带不带 .jar 都行,缺了会自动补)。它会显示进度和速度,失败会回滚同名旧文件。这个功能适合你已经拿到确切直链的情况,不适合把浏览器里的下载页地址粘进去。
Modrinth 搜索是页面里最像“应用商店”的部分:
排序可以按下载量、相关性、最新;
游戏版本下拉只列正式版,过滤掉 rc、pre、snapshot,默认选中当前核心版本;
加载器可以多选,插件池和模组池是分开的:插件按 Bukkit 系筛,模组按 Fabric/Forge 等筛;
一次返回 20 条,可以「加载更多」;
版本或加载器不匹配时会红字警告,但不会阻止你安装。
红字警告只是提醒,不是保险:版本不对的插件安装时不会被拒绝,只会在下次启动时加载失败。看到“与当前服务器版本不匹配”还继续装,等于给自己埋一个启动报错。
安装落点:插件是 plugins/<项目名>.jar,模组是 mods/<项目名>.jar。同名文件会被覆盖,所以别在同一目录里放两个版本。
先停服:回概览页点「停止」,等终端不再滚动。运行中不能改插件文件。
确认目录:看页面顶部的核心卡片,插件目录是不是
plugins/,徽标是不是「支持插件」。放文件:用「上传」选手机里的 jar,或用 Modrinth 搜索后点安装。装完在列表里能看到这一行。
检查冲突:如果出现红色「检测到插件冲突」,先删掉重复的那一个再继续。
启动并看日志:概览页启动,盯住终端里插件加载的几行;进游戏用插件的命令验证。
装完要重启,reload 只是应急#
上传页自己写得很清楚:需要 reload 或重启服务器后生效。页面底部还有一个「插件热重载」入口,服务端运行时可以发一次 reload,提示“已发送 reload 指令”;没运行的时候按钮是灰的。
但 reload 不是万能的:
它只是向控制台发一条重载命令,具体重载哪些内容由核心和插件决定,很多插件不会完整地重新初始化;
换 jar、改插件依赖、增删模组这类改动,换 jar 这类改动必须重启,reload 救不回来;
reload 过程中出现短暂报错、玩家被踢也不奇怪。
把 reload 当“改个小配置试试”的快捷方式,别当免重启的捷径。真正稳妥的流程永远是:停服 → 放文件 → 启动 → 看终端有没有加载成功。
依赖不会自动装#
Modrinth 上的插件经常写着“需要 Vault”“需要 ProtocolLib”。Minexa 不会自动解析和安装依赖,depend 和 softdepend 只在插件详情里作为“依赖/软依赖”两行展示,装不装、装哪个版本,仍然要你自己判断。
缺依赖的典型表现是:服务端启动时插件加载失败,日志里出现 Unknown dependency、ClassNotFoundException,或者插件被自动禁用。这时不要反复删了重装同一个 jar,先去插件详情看它依赖谁,把依赖按同样的 MC 版本装进去。
软依赖缺失通常只是功能不启用,硬依赖缺失则可能让插件直接不工作。装之前先看依赖那两行,能省掉一半的启动报错。
冲突检测:同名或同主类#
页面会检查两类冲突:
插件名重复:两个 jar 声明了同一个插件名(忽略大小写);
主类重复:两个 jar 指向同一个主类。
命中时会出现红色的「检测到插件冲突(可能导致加载失败)」盒子,并列出具体是哪个名字、哪个主类。最常见的来源是“旧版本没删,又传了新版本”,或者同一个插件的不同分支同时存在。处理办法只有一个:同一插件只留一个 jar,别指望服务端自己选。
模组不做主类解析,冲突主要靠你自己控制版本;启动时报 Mixin 注入失败或模组重复,先按“同一模组只留一个版本”排查,再看 模组冲突与插件报错。
插件就是能执行代码的程序#
插件运行在服务端进程里,权限和服主一样。一个来路不明的 jar 可以读你的配置、改世界、对外发请求,甚至在你不知情时执行别的东西。只装可信来源的 jar,这句话不是客套。
优先从 Modrinth、Hangar、SpigotMC 的项目页下载,别用来路不明的网盘包、群文件、“破解版”;
一次只加一个插件,启动看日志,确认没问题再加下一个;
大版本升级前先备份,插件和核心的版本要一起看。
具体到每个插件的命令和配置,属于插件自己的文档,不在 Minexa 的范围内;Minexa 只负责把文件放对位置、把启停做成一键。每天的启停、改名、看日志都在 终端与控制台 里完成,插件更细的用法见 插件安装、启停与排错。
核心卡片上「支持插件」或「支持模组」徽标是勾,不是叉。
刚放进去的 jar 出现在列表里,没出现就先点一次刷新。
列表里没有红色「检测到插件冲突」盒子。
终端里那几行插件加载没有
ClassNotFoundException。进游戏用插件自带的命令能正常响应。
知道哪个开关是“禁用”、哪个按钮是“删除并清数据”,没有混用。
下一步#
日常怎么加、怎么停、怎么排错:插件安装、启停与排错
模组版本与依赖怎么对:模组安装、依赖与排错