指南

如何把插件更新到新的 Minecraft 版本

更新于 2026年10月18日

当你的服务器升级到新的 Minecraft 版本时,很多插件不用改就能继续工作,因为 Bukkit API 很稳定。另一些则会无法加载,或者在细节上出问题。如果作者没有更新某个插件,而你有它的源代码,就可以自己更新:下面介绍需要改什么,以及按什么顺序改。

按照它在新版本上应该如何工作来描述。

用 Codexe 生成这个

分步说明

  1. 1.先试试旧的 .jar

    把它放到新版本的测试服务器上,查看控制台。如果能加载并正常工作,你可能什么都不用改。

  2. 2.修改 API 依赖

    在 pom.xml 或 build.gradle 中,把 paper-api 或 spigot-api 改为新版本。

  3. 3.更新 api-version 和 Java

    在 plugin.yml 中设置 api-version(例如 '1.21'),并针对新版本所需的 Java 编译:1.20.5 之前是 Java 17,从 1.20.5 起是 Java 21,26.x 是 Java 25。

  4. 4.修复无法编译的部分

    构建并逐一处理错误:改了名的材料、被移除的方法、变化的事件类。编译器会列出它们,并附上文件和行号。

  5. 5.更新依赖

    你的插件使用的其他插件(Vault、PlaceholderAPI、ProtocolLib、WorldGuard)也需要支持新 Minecraft 版本的版本,构建文件和服务器上都要更新。

  6. 6.在新版本上测试

    把它加载到装有相同插件的新版本服务器上,试一遍每个命令和功能,而不只是看能否启动。

通常会出问题的地方

  • 材料和枚举名称:1.13 更新把大多数物品和方块改了名;之后的版本又增加、改名或移除了一些。使用旧名称或数字 id 的代码会出错。
  • 被移除的弃用方法:被标记为弃用好几个版本的方法,最终会消失。
  • 物品数据:从 1.20.5 起,物品 NBT 被数据组件取代。直接编辑物品 NBT 的插件需要重写这部分;常规的 ItemMeta API 依然可用。
  • NMS 和反射:使用服务器内部类的代码几乎每个版本都会坏。尽可能用 API 替代,或者用 ProtocolLib 之类的库。
  • 库的版本:为旧版 Java 构建的被打包的库,在新版 Java 上可能会失败。

跨越多个版本更新

从 1.8 或 1.12 升到 1.21,与其说是更新,不如说是重写涉及物品、方块和粒子的部分。一次性针对新 API 完成,不要一个版本一个版本地升,而且配置文件很可能也需要换成新的材料名称。

如果插件必须同时支持多个版本,就针对你支持的最旧版本编译,并避免使用之后才加入的 API,或者为每个版本分别构建。

用 Codexe

在 Pro 及以上套餐中,你可以以 ZIP 形式导入插件源代码,然后提出要求,例如“这是我的 Paper 1.20.4 插件。把它更新到 Paper 1.21.4”。Codexe 会从构建文件中读取 Minecraft 版本,用该版本所需的 Java 构建,并根据所构建 API 的真实签名修复编译错误。如果是你在 Codexe 上制作的插件,直接在项目聊天中要求新版本即可。

编译通过证明插件能在新 API 上构建。之后还要在测试服务器上试用,因为版本之间的行为变化不会以编译错误的形式出现。

常见问题

没有源代码能更新插件吗?

不太可靠。反编译 .jar 得到的代码很难维护,而且可能违反作者的许可协议。先找找有没有更新版本或仍在维护的分支。

1.21.1 的插件能在 1.21.4 上用吗?

通常可以,只要是同一个大版本,并且没有使用 NMS 或发生变化的 API。依赖它之前先测试一下。

为什么服务器提示“Unsupported API version”?

这是相反的情况:插件针对的 API 比服务器更新。为你的服务器版本构建它,或者升级服务器。

为你的版本重新构建插件

这条提示词打开后即可直接发送:

“我的 Spigot 1.12.2 插件 TreeFeller 的 Paper 1.21.4 版本:用斧头砍掉树最底部的原木,整棵树都会倒下,每根原木消耗一点耐久,适用于 1.21 的所有木材类型,包括樱花木和红树木,用 /treefeller 开关,设置在 config.yml 中。”

用 Codexe 生成这个
如何把 Minecraft 插件更新到新版本 | Codexe