LiteLDev / LiteXLoader

This project has been merged into LiteLoaderBDS 👇 click below to new project 本项目已经合并到 LiteLoaderBDS 项目中 👇 点击前往 https://github.com/LiteLDev/LiteLoaderBDS

Home Page:https://github.com/LiteLDev/LiteLoaderBDS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Major Update Notice

From BDS 1.18.11, the LiteXLoader project has been merged into LiteLoaderBDS project
LXL becomes a sub-component of LL, and we will name the whole project as LiteLoaderBDS (LL)

Thereafter, LiteLoaderBDS will continue to be updated as a generic & strong BDS plugin loader for C++, Go, Js, Lua and other languages
All previous LXL plugins will continue to function normally under this new LiteLoaderBDS, and all existing APIs will remain unchanged

Starting with the merged version, LXL will no longer need to be installed separately. LL will carry a complete LXL engine when it is released

👉Click here to LiteLoaderBDS Project 👈


重大更新提示

从BDS 1.18.11开始,LiteXLoader加载器项目 合并至 LiteLoaderBDS 项目之中
LXL成为LL的一个子组件,我们将项目统称为 LiteLoaderBDS 加载器(LL

此后,LL加载器将作为C++、Go、Js、Lua 等语言的通用加载器继续更新
所有先前的LXL插件在新版LL下继续正常运行,现有所有API不变

从合并版本开始,LXL将 不再需要单独安装。LL发行时将自动携带LXL引擎

👉点击前往 LiteLoaderBDS 项目 👈



























LiteXLoader - 划时代 x 跨语言BDS脚本插件框架

GitHub license Build GitHub release (latest by date including pre-releases)

简体中文 | English

LiteXLoader

🎨 简介

LiteXLoader是一个基岩版官方服务端Bedrock Dedicated Server(以下简称BDS)的脚本插件框架,提供强大的跨语言脚本插件支持能力和稳定的开发API支持。

目前,基于注入技术的C++插件开发框架LiteLoader的使用十分广泛。它为拓展基岩版BDS的更多玩法和功能提供了坚实的基础,弥补了官方行为包系统长期以来存在的一些不足。

而脚本插件开发框架 LiteXLoader 的到来,进一步降低了开发门槛,为更多开发者参与社区发展提供了很好的支持。

使用脚本开发BDS插件具有上手容易、代码简洁、便于维护的优点。同时脚本插件不需要随着BDS版本更新而修改代码,仅需本项目在底层适配更新即可,给插件开发与维护带来了很大的便利。

作为先进的脚本插件支持引擎,LiteXLoader支持使用多种不同的脚本语言编写插件,拥有完善的API系统、事件系统和大量的开发基础设施,为开发者提供了最大程度的便利。

🎁 优势

“为什么我要选择LiteXLoader?”

📝 封装,易用,简洁

便于学习,快速编写

对众多接口和事件进行了 封装,使用各种脚本语言作为基础,代码简短易上手,学习周期短

这里用一个简易的游戏内停服插件作为参考示例:

let _VER = '1.1.1'
let _HasConfirmed = 1;

//加载器版本检查
if(!lxl.checkVersion(0,3,0))
    throw new Error("【加载失败】\nLXL版本过旧!请升级你的LXL版本到0.3.0及以上再使用此插件");

//注册关服命令
mc.regPlayerCmd("stop","关闭服务器", (pl,args) => {
    //鉴权
    if(!pl.isOP())
        return true;
    pl.tell("停服命令执行成功",1);
    mc.broadcast("玩家" + pl.realName + "执行停服命令。服务器将在5秒之后关闭");
    
    //执行关服命令
    setTimeout(() => {
        mc.runcmd("stop");
    },5000);
},1);
多种脚本语言支持 📚

LXL 的插件可以使用 多种 不同的脚本语言开发。自由选择你的最爱!
同时,保证面向各种语言的接口统一

目前已支持的插件开发语言 JavaScriptLua
即将支持的插件开发语言 PythonRubyC#TypeScript
开发文档内容详细,解释深入 📕

LXL 拥有 极其详尽 的文档说明和示例,帮助你从零开始学习,快速上手
欢迎 👉移步 LXL 文档站👈 查看更多

大量开发辅助工具 🧰

多语言补全库,强大的VSCode插件,热加载系统 ...... 体验 前所未有 的开发体验
众多辅助工具,帮你更有效地写好每一行代码

更多详情,请见下面的具体介绍

🔨 功能强大,设施完备

众多的游戏API支持 🎈
  • 玩家,实体,方块,物品,容器,NBT,服务器系统。。。。给你自由掌控世界的能力
  • 多达 五十多种 游戏事件监听,不管什么事情发生,都可以第一时间响应
方便的 开发基础设施 🧪
  • 统一配置文件接口
  • 统一日志接口
  • 文件系统接口
  • 关系型、非关系型数据库接口
  • 系统调用接口
  • 网络功能接口
  • 脚本引擎辅助接口
  • 脚本层底层调用接口
  • 热加载、热卸载、热重载插件

完善,严谨,成体系的 面向对象 api架构,符合编程逻辑的接口设计。
让你专注于业务代码实现,而非在各种琐碎的技术细节上磕磕绊绊

🎨 架构设计充分

兼容性强 🏆
  • LXL支持通过Wine在Linux、MacOS平台运行,给Linux平台也带来自由的插件体验
    一次编写,多平台共享
  • 仅依赖 LiteLoader 加载器和标准的C/C++运行时库,没有其他的额外依赖,兼容性极强
  • 兼容绝大多数其他主流插件加载器(CSR PYR等)
  • 后续版本更新时将保证 API 向后兼容,脚本插件不需要随版本更新而修改代码,一次编写,全版本适配
模块化,高性能 🎯
  • 使用 C++ 开发,底层 性能优越 。借助 ScriptX 的高效率通用接口,让脚本插件也可以做到高效运行。
  • 底层仅有一套统一的 C++ API,维护和适配都比较方便,新版本适配速度快;LiteLoader系列独有符号查找技术,跨版本 自动适配 不再是梦想

💎 应用生态健全

海量现有插件,成熟发布平台
  • 即刻 👉前往MineBBS👈 查找并下载你喜欢的LXL插件
  • 同样,欢迎每一位开发者前往对应平台进行插件发布,技术交流与学习
开源 & 永久免费 💡
  • 项目采用 GPL-3.0 开源许可证,永远不会 收费或者推出商业版。
  • 设计**采取 去中心化 设计,你可以放心享受 自由 的插件加载框架!

希望社区多多贡献力量,共同维护和建设这个项目💕



💻 安装

在安装 LiteXLoader 之前,你需要先配置好其依赖的 LiteLoader 加载器环境。
LiteLoader是知名的BDS C++插件加载器,提供了强大的底层API支持。LXL使用其提供的接口,并进行了很多拓展。

  1. 点击此处 前往MineBBS下载对应版本的 LiteLoader ,按要求解压之后运行SymDB2.exe生成相关数据
  2. 完成上述操作,并确认成功
  3. 点击此处 前往MineBBS下载对应版本的LiteXLoader,解压
  4. 把全部内容复制到 BDSplugins目录中。如果复制时提示文件有冲突,选择覆盖即可。

安装完毕!接下来,你就可以安装你想要的 LXL 插件了

📥自动更新

从版本0.3.2开始,LXL加入了自动更新的功能。
在同一个BDS版本内,加载器的更新将 自动推送,在下一次启动服务端时 自动安装
最新特性,第一时间获得!免去反复手动升级的麻烦
做一回真正的甩手掌柜😆

🎯 加载插件

LXL插件主要发布于MineBBS,请 点击这里 前往MineBBS 查找并下载你喜欢的LXL插件

  1. 如果下载得到的是压缩包,请解压
  2. 将得到的所有内容直接放置到plugins目录中
  3. 开服

没错,就这么简单 o( ̄▽ ̄)ブ

关于具体的安装与使用指南 ,请👉移步LXL文档站👈查看

📡 实时调试

在BDS后台控制台执行

  • jsdebug
    进入Js实时调试模式
  • luadebug
    进入Lua实时调试模式

实时调试模式下,标准输入会被当做对应类型的脚本语言执行,并实时输出结果。
如果发生错误,引擎将输出错误信息与堆栈跟踪信息。
再次输入对应的jsdebugluadebug将退出实时调试模式。

🔌 插件热管理

不用关闭服务端,就可以对LXL装载的脚本插件进行热管理。LXL提供了下面这些后台控制台命令

  • lxl list
  • lxl load ./plugins/xxxx.js
  • lxl unload xxxx.lua
  • lxl reload xxxx.js
  • lxl reload

关于他们的具体介绍和相关使用方法,请👉移步 LXL 文档站👈查看



📕 LXL插件开发

开发文档与教程

👉移步 LXL 文档站👈查看详细的API文档插件开发教程
如果有修订需求或者有新增API的需要,欢迎联系作者或者发布Issue

点击这里 查看更多开源的LXL插件,作为示例插件。
你可以直接在生产环境中使用它们 也可以在这里学习插件开发的方法和技巧


VSCode 开发辅助插件 & 补全库

使用 Moxicat 开发的 LiteXLoader 开发辅助插件 帮助你更好地完成LXL插件的开发
代码提示、自动补全、自动文档、错误提醒、运行时调试。。。。 只有你想不到,没有他做不到
用过绝不后悔的顶级插件开发体验!

LXLDevHelper

点击这里 查看扩展说明与介绍
VSCode扩展商店搜索LXL,安装LXLDevHelper,即刻体验


Blockly-LXL 图形化开发套件

没有编程基础?对复杂的语言规则感到厌烦?
你有没有想过,BDS插件开发可以像拼图一样容易?

看这里!pa733的 Blockly-LXL 图形化开发套件,将插件开发体验提升到了新的高度

Blockly-LXL

点击这里 查看相关安装与使用说明


CommonJs for LXL

CJS.JS作者是callstackexceed,这个插件为在LXL下使用Js开发插件提供了大家熟知的CommonJS接口,方便Js插件的模块化设计

CommonJs

点击这里 前往GitHub查看使用说明,并下载使用

项目作者callstackexceed,也是MC addon NormaConstructor的一个开发者。
NormaConstructor是一个开源的快速建造(类WorldEdit)插件,目前运行在Scripting API和LXL上。
NC不仅需要用户,也需要开发人员。欢迎大家在 MineBBS 和 mcpedl 关注 NormaConstructor 的相关进展



🔨 编译项目

前往LiteXLoader项目的GitHub Actions页面获取最新的自动构建结果

当然,如果你愿意自己编译项目,也可以按照如下说明自行编译
VS项目采用多目标构建,构建的每种配置对应一种脚本语言

  1. Install newest Microsoft Visual Studio with standard C++ building suite
  2. Install the newest version of Windows SDK
  3. 打开 LiteXLoader 目录下的 LiteXLoader.sln 项目文件,点击 生成 菜单中的 批生成
  4. 弹出批生成对话框,选中每种语言配置对应的 x64 平台右侧的生成复选框
  5. 选择完毕之后,点击对话框中的 生成 按钮,进行批生成
  6. 编译生成成功之后,返回到项目根目录,执行根目录中的 MakeRelease.cmd,执行完之后根目录 RELEASE 文件夹内的内容即为完整的LiteXLoader及所有的依赖库

🎬 参与贡献

你可以通过下面这些方法来LiteXLoader项目出一份力

  1. 贡献代码,维护项目和符号
  2. 帮助修改和优化开发文档
  3. 按格式编写你想要的新API并提交PR,或者提出好的建议
  4. 帮助我们宣传LXL,对我们的开发给予支持

我们欢迎你对LiteXLoader做出自己的贡献!
如果你有意为LXL贡献代码,欢迎👉移步 LXL 文档站👈查看 项目维护与支持文档

有你们,LiteXLoader将变得更好~



📍 许可协议声明

在使用我们的产品的时候,我们默认您已经承认并遵守了Mojang Studios EULA协议。
这意味着你不能对本项目进行任何违反EULA的商业性使用。违反EULA协议造成的一切后果由违反者自行承担。
另外,您需要遵守本项目的GPL-3.0开源许可证条款,以及下列提到的各关联项目的开源许可证条款

LiteLoader GPLv3 with extra restrictions&exceptions
ScriptX Apache License Version 2.0
BedrockX GPLv3 with extra restrictions&exceptions
ElementZero GPL v3
ChakraCore MIT License
OpenSSL Apache License Version 2.0
SimpleIni MIT License
Nlohmann-Json MIT License
Hash GPL v3
ThreadPool Zlib License
nbt-cpp MIT License
LightWebSocketClient MIT License

Extra Restrictions & Exceptions

If you provides a server hosting service,you can use this framework for free, but you SHOULD NOT make PRIVATE changes to this framework as a selling point. If you fixed or tweaked the code, please pull request, instead of making it private for commercial use.

Do not do evil.

Although we expected to build an open-source community, but forcing everything open-source will ruin this community. So you can write plugins based on LiteXLoader with ANY open-source license or even dont publish your source code. but if you modified the framework, or write a new framework based on this framework, you MUST open-source it.

🏆 鸣谢

  • 开源 ScriptX 项目提供的跨语言引擎支持
  • ScriptX开发者 @LanderlYoung 在开发过程中给予的很多帮助
  • LiteLDev 开发组 LiteLoader 项目提供的加载服务与基础API
  • LiteLuaLoader 项目 和 BDSPyRunner 项目 提供的很多底层接口实现
  • 感谢整个BDS开源社区对项目做出的大大小小的贡献。感谢他们! 💖💖

重要贡献者

yqs112358 wzy twoone-3 dreamguxiang Sysca11 RedbeanW littlegao233 JasonZYT
@yqs112358 @wzy @twoone-3 @dreamguxiang @Sysca11 @RedbeanW @gxh @JasonZYT

📞 联系我们

LiteXLoader QQ交流群:850517473 点击加入
LiteLoader QQ交流群:656669024 点击加入
Discord 频道:#LiteLoaderBDS & LXL 点击加入
Telegram 频道:#LiteLoader 点击加入

欢迎反馈崩溃和版本适配问题,以及参与相关技术讨论与交流。

💕赞助作者💕

项目已接入爱发电 点击此处
Patreon Sponser Click Here

给我们不断继续下去的动力!

About

This project has been merged into LiteLoaderBDS 👇 click below to new project 本项目已经合并到 LiteLoaderBDS 项目中 👇 点击前往 https://github.com/LiteLDev/LiteLoaderBDS

https://github.com/LiteLDev/LiteLoaderBDS

License:GNU General Public License v3.0


Languages

Language:C++ 72.3%Language:C 26.8%Language:CMake 0.3%Language:JavaScript 0.3%Language:HTML 0.0%Language:Shell 0.0%Language:Batchfile 0.0%Language:Objective-C++ 0.0%Language:Meson 0.0%Language:Python 0.0%Language:Lua 0.0%