本帖最后由 Guang_Chen_ 于 2023-1-8 14:25 编辑
如题,最近在开发一个API插件
但是几乎每个版本都需要单独打包成一个jar文件
对于像NBT-API这样的单个文件支持多个版本的插件是如何开发并构建的呢

如题,最近在开发一个API插件
但是几乎每个版本都需要单独打包成一个jar文件
对于像NBT-API这样的单个文件支持多个版本的插件是如何开发并构建的呢

本帖最后由 烂柯人beta 于 2023-1-8 01:55 编辑
一个插件中并不是所有功能都需要根据版本来调整
只是一部分涉及到版本变更的api 和 nms的内容需要根据版本不同而调整
这部分内容可以在调用他的地方对服务端版本进行判断 然后调用相关内容
比如我插件设计更改实体AI 那么这就涉及到nms的内容
那么我先针对不同版本的不同nms写多个AdjustAi_1_xx_xx.java
于是我在生物生成事件时就可以判断当前服务器版本 然后调用相应的比如AdjustAi_1_17_r1.java中的方法来实现一个jar针对多个版本
同理可得 1.18版本就是要调用AdjustAi_1_18_r2.java
* x_xx_r2中的后缀是根据服务端版本进行细分
这需要先研究你所要适配的服务端核心来确定
燃鹅 在你没有利用到相关api时 只要导出一个jar也可以适配多个版本
一个插件中并不是所有功能都需要根据版本来调整
只是一部分涉及到版本变更的api 和 nms的内容需要根据版本不同而调整
这部分内容可以在调用他的地方对服务端版本进行判断 然后调用相关内容
比如我插件设计更改实体AI 那么这就涉及到nms的内容
那么我先针对不同版本的不同nms写多个AdjustAi_1_xx_xx.java
于是我在生物生成事件时就可以判断当前服务器版本 然后调用相应的比如AdjustAi_1_17_r1.java中的方法来实现一个jar针对多个版本
同理可得 1.18版本就是要调用AdjustAi_1_18_r2.java
* x_xx_r2中的后缀是根据服务端版本进行细分
这需要先研究你所要适配的服务端核心来确定
燃鹅 在你没有利用到相关api时 只要导出一个jar也可以适配多个版本