MineWiki LiteLoader

LiteLoader

来自MineWiki

本页面LiteLoader指LiteLoaderBDS

LiteLoaderBDS是一个基于BedrockX的开源插件加载器[1],以GPLv3 with extra restrictions&exceptions许可证发行,兼容加载为梦故加载器编写的插件

继承了BedrockX的优点:

  • 动态符号查找:实现了自动适配Bedrock Dedicated Server的小版本更新而无需重新编译插件,换句话说,只要Mojang没有大量删改函数,那么部分插件即使不更新也能实现插件在新版本的Bedrock Dedicated Server上运行
  • 完善的Api:LiteLoader内置相对完善的Api,内置的Bedrock Dedicated Server中的常用Api,使开发者无需手动在IDA内寻找函数就能编写简单的插件,减轻了插件开发者的时间花费

实现原理

通过劫持Chakra.dll库实现注入LiteLoader.dll,使用微软的Detours开源库Hook Bedrock Dedicated Server主程序,从而实现各种对Bedrock Dedicated Server的修改

动态符号查找

LiteLoader使用了Sysca11BedrockX编写的动态符号数据库,实现了对pdb文件内符号的解析

版本历史[2]

版本号 发布日期 更新内容 适配的BDS版本
2.3.0 2022/6/10 兼容1.19.1,协议版本527

[新内容]

  • 支持BDS1.19.0
  • 配置文件新添经济核心(LLMoney)开关
  • LLMoney远程调用支持

[改变]

  • 更新远程调用API
  • LLSE的改变
    • bl.setNbt

[BUG修复]

  • 修复LL Bugs
    • Actor::isPlayer()
  • 修复LLSE Bugs
    • pl.getRespawnPosition
1.19.1
2.2.7 2022/6/9 [改变]
  • 移除 MCVAPI

[BUG修复]

  • BDS bugs
    • 装备带荆棘附魔的两个玩家相互攻击使服务端崩溃
  • LL bugs
    • SimulatedPlayer::simulateDestory 异常行为
  • LLSE bugs
    • en.isPlayer 总是返回 false
    • en.toPlayer 总是失败
    • sp.simulateWorldMove
    • sp.simulateWorldMove
  • LLMoney bugs
    • LLMoney 指令崩服
1.18.33
2.2.6 2022/6/7 [改变]
  • 忽略PlayerDB中的模拟玩家
  • 更改BossBar API,#416
  • 当LLSE加载脚本内容时设置文件名
    • 友好的错误输出
  • 显示插件版本在Event和Schedule错误中
  • 当LLSE中出现错误,现在会输出脚本栈和插件信息,#430
  • 删除了一个不稳定的BUG修复

[新内容]

  • 添加自动初始化dlsym函数API在cpp20上
  • 添加CompoundTag APIs
    • CompoundTag::nbtListToBinary
    • CompoundTag::nbtListFromBinary
    • CompoundTag::nbtListFromNetwork
    • CompoundTag::nbtListToNetwork
  • 添加 BoundingBox APIs
    • BoundingBox::forEachBlockInBox
    • BoundingBox::mergeBoundingBox
  • 增加BlockPos和Vec3中的API
  • 增加远程调用API的无效返回类型的支持
  • 增加LLSE APIs
    • pl.langCode property
    • en.getBlockFromViewVector
    • en.getEntityFromViewVector
    • pl.getBlockFromViewVector
    • pl.getEntityFromViewVector
    • sp.simulateWorldMove
    • sp.simulateMoveTo
  • 现在可以通过dlsym或MCVAPI调用虚函数
  • 更新LibraryBuilder

[BUG修复]

  • BDS bugs
    • 异常移动时崩溃的错误
    • 钓鱼钩在折跃门时传送造成的崩溃
    • 服务器关闭时造成的概率性崩溃#428
  • LL bugs
    • 处理LoadLibrary错误
    • 当目录"./plugins "不存在时造成PreLoader崩溃
    • CompoundTag::fromNetworkNBT
    • PlayerLeftEvent包含模拟玩家离开
    • 模拟玩家的PlayerAPI
  • DB bugs
    • DB::MyStmt::bind 的bug
    • DB::MyStmt复制数据的bug
  • LLSE bugs
    • mc.spwnSimulatedPlayer的位置错误问题
    • File API的返回值错误的问题,#429
    • file.read内存泄漏
    • file.WriteMode和writeSync的错误,#431
    • logger堆栈溢出
    • WebSocket崩溃
    • "在空全局上获取 "或其他错误
    • simulateAttack参数
    • simulateDestory错误输出
    • simulateNavigateTo位置参数
    • 远程调用API位置类型错误
    • simulateLocalMove错误
    • simulateLookAt错误
1.18.33
2.2.5 2022/5/21 [主要]
  • 性能提升

[新内容]

  • 新添LLSE ll.hasExported API

[BUG修复]

  • 修复BlockActor::refreshData
1.18
1.1.0 2021/7/14 兼容1.17.10 1.17.10
1.0.2 2021/6/8 兼容1.17.0 1.17.0
1.0.0 2021/4/10 兼容1.16.220
修复WActor::teleport
更新插件预加载功能
支持自动将BDSNetRunner列入预加载名单
1.16.220
0.2.3 2021/4/5 移除插件预加载文件夹
新增插件预加载配置文件
修复liteloader::runcmdEx
修复部分bug
1.16.210
0.2.2 2021/3/14 修复生物死亡事件
修复部分bug
1.16.210
0.2.1 2021/3/12 兼容1.16.210
添加玩家预加入事件
1.16.210
0.1.9 2021/3/6 文件夹结构改动 1.16.200
0.1.8 2021/3/4 添加sendtext
添加一些事件
修复中文文件夹导致的显示问题
1.16.200
0.1.7 2021/2/20 添加GUI相关Api
修复teleport
添加getallplayer
添加playermap
1.16.200
0.1.6 2021/2/16 添加xuid数据库 1.16.200
0.1.5 2021/2/15 添加指令注册
add CommandBlockExecute Event
add PlayerDeathEV
add offPlayer::getXUID
add ServerStarted Event
add PlayerUseCmd Event
1.16.200
0.1.4 2021/2/11 添加基本的事件系统 1.16.200
0.1.3 2021/2/8 添加runcmd和runcmdEx 1.16.200
0.1.2 2021/2/7 添加插件预加载功能 1.16.200
0.1.1 2021/2/6 修复Chakra存在的bug 1.16.200
0.1.1 2021/1/28 首个版本 1.16.200

参考