Minexa说明书
基础服务端基础

核心、插件、模组、代理端:一次讲清

核心是发动机,插件是外挂工具箱,模组是改游戏本身;用类比和兼容表,一次说明白谁配谁。

你在下载页看到一整片胶囊,听人说 Paper 最好就下了 Paper;接着照一篇教程,把下载来的 Forge 模组丢进 mods/ 文件夹,重启,结果什么都没发生——既没报错,也没多出任何东西。

问题不在操作,在搭配:选了什么核心,就决定了你能装什么。 这四个名字天天混着出现,但它们的层级完全不同;装错了通常不会报错,只会静默失效,让人以为“下载的包是坏的”。

这一页用一组类比加一张兼容表,把核心、插件、模组、代理端的关系一次理清,也说明在 Minexa 里每种核心的入口开在哪里、文件该放哪个目录。

本页要点
  • 核心是发动机,插件是不改发动机的外设,模组是改游戏本身,代理端是前台分诊台。

  • 插件只在服务端装,模组通常两边都要装,这是两者最根本的区别。

  • 兼容是单向的:Bukkit 插件进不了模组服,反过来也一样。

  • 放错目录不会报错,只会静默不加载;装完必须重启(先停止再启动)。

  • 18 个核心里有 7 个能装插件、4 个能装模组,代理端两个都不提供入口。

四个词,四句话#

  • 核心(服务端程序本体):可以理解成发动机。它决定游戏版本、性能上限,以及“允不允许外挂东西”。没有核心就没有服务端。

  • 插件(plugin,挂在服务端上、玩家不用装的小程序):不改发动机的外设。它通过核心提供的接口加功能——传送、地皮、经济、权限——玩家不用装任何东西就能享受。

  • 模组(mod,直接改游戏内容的程序):改游戏本身。新增方块、生物、机器、合成表,通常客户端也要装同样的模组,否则进不去,或者画面错乱。

  • 代理端(proxy,玩家先连它、它再转发给后面子服的程序):前台和分诊台。玩家连的是它,它把连接转给后面的子服;它自己不生成世界,只做转发。

一句话记忆:插件只在服务端加东西,模组要两边一起改,核心选错就全都装不上,代理端用来把多个服收成一个入口。

插件为什么只能在 Bukkit 系跑#

Bukkit 是一套接口标准:核心把“玩家加入”“方块被破坏”“有人发消息”这些事件暴露出来,插件监听事件、再调用接口改变游戏状态。Spigot、Paper、Purpur、Leaves、Leaf 都建立在这套接口上,所以:

  • CraftBukkit → Spigot → Paper → Purpur / Leaves / Leaf 是同源的一家人,六个核心的亲戚关系见 Paper 系六个核心;

  • 一个为 Bukkit 写的老插件,通常能在这六个核心上直接跑;

  • 但反过来,为 Paper 新接口写的插件,在很老的 CraftBukkit 上可能跑不了:接口向下兼容,不向上兼容。

Fabric、Forge、NeoForge、Quilt 走的是另一条路:它们不实现 Bukkit 接口,而是在启动时改写游戏自身的类。所以 Bukkit 插件放进模组服,连加载的机会都没有——没有那套接口可以调用。

这也是为什么“装个插件实现某功能”的教程只对一半核心有效。看到教程第一句就该确认:它说的是 Paper 系还是 Fabric 系。两者怎么选,见 18 个核心选项总览。

模组为什么通常两边都要装#

模组加载器在启动时改字节码:客户端加了新方块、新界面,服务端也加同样的注册表。如果只有一边有:

  • 客户端缺模组 → 连接时版本握手失败,或者进服后看到紫黑方块、物品变成“未知”;

  • 服务端缺模组 → 客户端发来的方块 ID 服务端不认识,直接断开。

有少数模组是“只装服务端”的(偏优化、偏管理的那种),但这是例外,不能当默认。判断方法看模组发布页有没有写“client required / 仅服务端”,拿不准就两边都装。

模组还有三条版本线要对齐,缺一条就崩:

对齐项说明不对齐的表现
游戏版本模组为哪个 MC 版本编译,就只能用在哪个版本加载阶段直接报错,或模组不生效
加载器版本Forge 的 loader、Fabric 的 loader 要与模组声明匹配提示依赖不满足,启动中止
前置依赖很多模组要先装 Fabric API 或其它库日志明确写缺少某个 mod id

一张表:谁能装什么#

这是 Minexa 里 18 个核心的实际支持情况,装之前对一眼:

核心插件模组文件放哪
Paper / Purpur / Leaves / Leaf / Spigot / CraftBukkit✅❌plugins/
Fabric / Forge / NeoForge / Quilt❌✅mods/
Vanilla❌❌—
Velocity / BungeeCord应用内不提供应用内不提供—
PowerNukkitX✅(PNX 插件)❌plugins/
PocketMine-MP应用内不提供入口❌自己放 plugins/
Allay❌❌—
BDS❌❌不能装插件/模组,但服务端本身可以跑(转译)

表格之外还有两条要说明:

  • PocketMine-MP 其实有插件生态,用的是 .phar 格式的插件,但应用的插件管理页不提供它的入口。想装只能自己用文件管理把文件放进 plugins/ 目录,应用不负责识别和启停,详见 基岩版核心。

  • BDS 既不能装插件也不能装模组(官方就没有这两套机制,不是应用不提供入口)。它能跑,但靠 PRoot + box64 转译,要先初始化专用环境、性能约为原生一半,见 官方基岩版(BDS)开服。

一个服只能有一种核心

不存在“Paper + Forge 双核心”,也没有“装个桥接就能混装”。换核心 = 换掉核心那一层,世界通常能沿用(同版本、同类型的前提下),但插件和模组必须重新配:Paper 的插件在 Fabric 上一个都不会加载。

换核心前先备份世界,具体见 备份策略与恢复演练。

代理端什么时候才需要#

代理端不是“更高级的核心”,它解决的是一个特定问题:你想在一台机器上跑多个子服,但希望玩家只记一个地址。

典型场景:一个生存服 + 一个小游戏服。玩家连代理端的 25565,代理端按规则把他送到对应的子服,换服时不用退出重连。

代价也很实在:

  • 代理端本身不生成世界、不跑游戏逻辑,但会占一份内存和 CPU;

  • 子服要单独配置、单独占端口,手机上的内存和 CPU 会成倍吃紧;

  • 在 Minexa 里,Velocity 和 BungeeCord 都不提供插件/模组入口,也就没有图形化的转发规则配置,需要自己在配置文件里写。

所以:只有一个服,就不需要代理端。 手机上多开一层代理,往往得不偿失。等你有“必须把两个服合成一个入口”的需求,再考虑它。

代理端和「基岩版/Java 版」是两件事

Velocity、BungeeCord 是 Java 版的代理端,只能转发 Java 客户端。基岩版没有对应的内置方案,别把它们当成“把基岩玩家接进来”的工具。

文件放哪:plugins/ 与 mods/#

两个目录都在服务端目录里,名字固定,位置不能改:

文本
/storage/emulated/0/Minexa/Minecraftserver/<目录名>/
├── plugins/          # Bukkit 系核心的插件(.jar)
│   └── 某插件.jar
└── mods/             # Fabric / Forge / NeoForge / Quilt 的模组(.jar)
    └── 某模组.jar
  • 放错目录 = 静默不加载。丢错目录不会报错,只会当它不存在。

  • 装完必须重启(先「停止」再「启动」)。运行中往目录里加文件,大多数核心不会热加载。

  • 不要解压。插件和模组都是 .jar 文件本身,解压出来的文件夹不会被读。

  • 有的模组会自己生成 config/ 目录放配置,那是正常的,不要删。

在 Minexa 里

「服务器管理」下的插件/模组入口只对支持的核心显示。如果你用的是 Vanilla 或 Allay,看不到这个入口不是 bug,是它本来就不支持。要放文件,用「文件」页上传或新建文件夹,路径就是上面那个真实目录,完整结构见 服务端目录结构与文件说明。

三个最容易混的说法#

“插件就是服务端”——不是。插件不能单独启动,必须挂在某个核心上。删掉核心,插件目录里躺着多少 jar 都没用。

“模组装服务端就行”——多数情况不行。模组改的是游戏内容,客户端没有同样的内容就没法同步。只有明确标了“仅服务端”的模组才可以。

“装了没反应就是文件坏了”——先按四步查,别急着重下:

  1. 目录对不对(plugins/ 还是 mods/);

  2. 版本对不对(插件/模组支持的游戏版本是否与你服务端一致);

  3. 加载器对不对(Bukkit 插件配 Bukkit 系核心,模组配模组核心);

  4. 前置依赖装了吗(缺库会在日志里抛 NoClassDefFoundError 或 Missing dependency)。

四步都对还不行,重启一次并看终端里有没有加载日志——正常加载会打印插件名和版本号。具体排错见 插件安装、启停与排错 和 模组安装、依赖与排错。

上机自查
  • 能说出自己的核心属于「插件系 / 模组系 / 代理 / 原版」里的哪一种。

  • 打开服务端目录,能看到 plugins/ 或 mods/ 中的一个,且里面只有 .jar,没有解压出来的文件夹。

  • 装完东西后是停服再启动的,不是运行中直接丢文件。

  • 终端里能看到插件名/模组名被加载的记录,不是一片安静。

  • 知道换核心后插件和模组必须重配,不是自动继承。

下一步#

读到这儿了,给你点个赞。如果这页内容帮你解决了问题,说明说明书的方向是对的;如果发现错误、过时信息或看不懂的地方,欢迎到 GitHub Issues 告诉我们。

⚡ 回到极速开服 📖 查术语表