莫斯图迪
本帖最后由 azbh111 于 2021-10-17 14:00 编辑

背景(SpringBootPlugin简称SBP)

    相信各位开发者或多或少遇到过以下情况(当然,腐竹也可以装这个插件使用汉化和DevTools功能)
    每写一个监听器,都要注册一次(不爽,就不能自动嘛,我要自动化。)
    每个新的指令,都要在plugin.yml中声明,然后在代码里一堆if-else解析指令,一个方法几百行。过段时间来看,都看不懂解析指令的代码了(简直抓狂。。。我要自动化)
    处理玩家指令,各种数字解析,异常判断,权限控制,异步,并发等等(OMG!我要自动化)
    总要去写一个配置文件,然后用代码一项一项的读取,还要保证配置文件和代码的一致性,还要考虑配置文件乱码问题(神烦有木有。。。我要自动化啊)
    需要用数据库时,手动创建连接,传递sql参数,解析sql结果,释放连接(简直原始人有木有。。能不能自动啊)
    在服务端内,读取不到物品的汉化名(比如以前大名鼎鼎的QS商店,牌子上的物品是英文名)
    想用NMS时,却苦于多版本兼容很困难,反射又很麻烦,望而却步
    当插件逐渐壮大起来后,主类越来越大,启动逻辑越来越多,维护起来越来越难
    当然,还有很多。。

以上这些问题,都是本人亲身经历
    于是在经历了PluginLoader到PluginBoot的迭代,最后本插件SpringBootPlugin诞生了。
    SpringBootPlugin基于SpringBoot(百度百科/中文索引),拥有其全部特性。在SpringBoot基础上,适配了Bukkit环境,对许多常用的NMS接口做了全版本封装,并提供了许多有助于开发的工具类,帮助腐竹进行快速开发,并构建可维护性强的插件!


基于SBP开发的插件



插件功能

1. 拥有SpringBoot全部特性,有兴百度自行了解

2. 自动测监听器
这里以GuiProtector的核心代码为例

3. 自动注册指令(无需再plugin.yml中声明)
这里展示一个只有服务端版>=1.9时,才会注的指令

4.强大的指令参数解析
这里以我自己服自用的rpg指令为例(手动解析我可能要疯)
/frpg rangeAttack fan <攻击者> <范围> <角度> <高度> <高度偏移> <伤害> [--sound=<声音>,<声音类别>,<音量>,<角度>] [--effect=<粒子特效>,<data>,<能见度>]

5. 配置文件注入(无需写配置文件,更无需手动读取配置文件)
展示一个完整的配置文件
除了截图内的东西,不需要在多谢任何代码或yml

6. 强大的定时任务

7. 服务端汉化功能 (汉化后许多会展示物品名字的插件,就会展示物品的中文名了,具体语言可在配置文件中修改)
服务端汉化说明
这里展示一份1.12的原版汉化文件 ->
本人收集的许多mod汉化文件 -> (你当然可以把它们全部放到plugins/SpringBootPlugin/lang 文件夹下)

8. 自带一个DevTools模块,方便腐竹和开发者对物品/方块/事件/ProtocolLib数据包等进行调试

8. 集成Druid连接池和Mybatis框架,操作数据库so easy!支持MysqlH2数据库
这里列举几个Taobao操作数据库的例子

9. 全版本兼容:基于SBP的插件,可直使用NMS和CB接口,SBP在运行时会将其兼容到当前服务端版本。
以SBP的ItemStackUtils中的toNBTTagCompound接口为例
此接口使用了1.7的nms,却可以在1.7-1.14所有版本中运行
跨版本原理(自定义ClassLoader,ASM,Remap)

10.封装大量常用好用的操作,其中不乏使用NMS实现的
11. JavaScript脚本支持

12. 太多了,说不完了。。。。


自带指令

devtools (需要op权限)
springboot (需要op权限)



安装

安装SBP
SpringBootPlugin-x.x.x.x.jar复制到服务端 plugins 目录下
启动服务器,将自动生成插件配置文件: plugins/SpringBootPlugin/config.conf
---------------------------------------------------------------------------------------------------------------------------------------------
安装SBP插件(基于SBP开发的插件,我称之为SBP插件)
将SBP插件复制到 plugins/SpringBootPlugin/plugins 端目录下
启动服务器,将自动生成插件的配置文件
---------------------------------------------------------------------------------------------------------------------------------------------
SBP目录结构
plugins/SpringBootPlugin/config.conf: SBP的配置文件
plugins/SpringBootPlugin/plugins: 放置SBP插件
plugins/SpringBootPlugin/data: 放置/springboot item 指令的数据文件
plugins/SpringBootPlugin/javascript: 放置js脚本,可用JSUtils加载
plugins/SpringBootPlugin/lang: 放置汉化文件
data/SpringBoot: 若使用h2作为数据库,数据库文件会存放于此



兼容性

兼容的核心有:Cauldron/KCauldron/Thermos/Uranium/Spigot/CatServer/Paper/Mohist
兼容的版本跨度为:1.7-1.14

Cauldron 、KCauldron、Thermos这几个端不支持java8
需要更换SpecialSourc才能使用本插件
戳:

注:若SBP启动失败,会主动关闭服务器,防止发生不必要的损失
后续将计划将是否关闭服务器改为可配置


更新日志






链接: https://www.aliyundrive.com/s/ktFbhdnRkxv

开发教程  

开源地址

QQ群:628496236

本插件所用代码部分来自spring-boot开源项目

来自群组: PluginsCDTribe

wshycaa
首发前排支持!之前用的PluginBoot就很好评!

kevinss
很好啊!很方便、实用

HaoZai
支持一下 (来自群员的鼓励

莫斯图迪
2019-05-18
增加RawMessage的构造和发送API
增加NBTTagCompound和NBTTagList的json序列化和反序列化
ItemStack用nbt序列化时,使用TypeName作为ID
同指令多定义时,使用优先级来获取最佳定义
指令系统:帮助分页
指令系统:tab补全
指令解析支持枚举类型

莫斯图迪
2019-05-19
PlayerUtils增加大量接口
新增TileEntity的序列化
新增Location的序列化
支持判断流体Block和InventoryBlock
增加Block的序列化
增加一个类扫描工具
@Command可以指令Tab补全的实现类

Seuyon
SpringBoot????????????????????
确定这个名字不会有版权问题????????

浮生忆若梦
支持一下,很方便~

莫斯图迪
sa1402189438 发表于 2019-5-22 09:48
SpringBoot????????????????????
确定这个名字不会有版权问题???????? ...

我也不知道有没有
你知道么

柿子shizi
支持一下,大佬膜拜

神楽咕咕
能帮我看看为什么不生成配置文件夹么
最新核心的paperspigot和1.14.2的spigot都不生成

莫斯图迪
弑雪酱 发表于 2019-6-1 11:04
能帮我看看为什么不生成配置文件夹么
最新核心的paperspigot和1.14.2的spigot都不生成
...

请按说明装
要装3个jar

神楽咕咕
azbh111 发表于 2019-6-1 22:08
请按说明装
要装3个jar

不应该是先装plugin的jar的然后生成文件夹,再把那两个放进去吗
(反正我的那个plugin.jar的不生成文件夹)
(可能是我理解错了)

是全部丢进plugin
还是要打开plugin的那个jar把其他两个放进去?

莫斯图迪
弑雪酱 发表于 2019-6-1 23:04
不应该是先装plugin的jar的然后生成文件夹,再把那两个放进去吗
(反正我的那个plugin.jar的不生成文件夹 ...

我刚看了下
确实会自动生成SpringBootPlugin文件夹
你这没有生成么?

进群讨论把

BlueHalo
百度网盘密码错误?

下一页 最后一页