插件¶
插件(Plugin)是Minecraft基岩版服务端中用于扩展和修改服务端行为的程序。与附加包不同,插件运行在服务端软件上,通过调用服务端提供的API来实现游戏逻辑的修改和扩展。
概述¶
基岩版的附加包系统提供了数据驱动和脚本API两种官方扩展机制,但它们的能力受限于官方公开的接口范围。服务端插件则通过接入服务端软件的内部接口,可以实现更深层次的修改,包括自定义命令、权限管理、反作弊、经济系统、领地保护、跨服传送等功能。
插件的开发语言和形式取决于所使用的插件加载器(Plugin Loader)。不同的服务端软件和插件加载器支持不同的编程语言和API体系。
原生插件¶
原生插件(Native Plugin)是使用C/C++等编译型语言编写,直接调用底层接口的插件类型。原生插件具有最高的执行效率和最广泛的接口访问能力,但开发门槛较高,且与服务端版本的耦合度很强。
LeviLamina是目前基岩版原生插件生态中最为活跃的插件加载器,它基于Bedrock Dedicated Server运行,通过hook技术拦截和扩展游戏的原生函数。LeviLamina的原生插件使用C++编写。
脚本插件¶
许多插件加载器支持使用脚本语言编写插件,以降低开发门槛。常见的脚本语言支持包括:
- JavaScript/TypeScript:LeviLamina(通过QuickJS或Node.js运行时)、Endstone等支持。
- Python:Endstone等支持。
- Lua:部分旧版加载器支持。
- Java:Nukkit系列及Allay等使用Java实现的服务端软件原生支持Java插件。
与附加包的关系¶
插件和附加包是两种不同层面的扩展机制,但它们可以协同工作。服务端插件可以加载和管理附加包,也可以通过脚本API与附加包中的脚本进行交互。在实际的服务器部署中,通常会同时使用附加包和插件来实现完整的游戏内容和管理功能。
分发¶
插件的分发方式因加载器而异。大多数插件通过GitHub、论坛或专用的插件市场进行分发。LeviLamina提供了lip包管理器用于插件的安装和版本管理。