在建立或编辑词条前,请先阅读MineWiki方针与指引

LiteLoader:修订间差异

来自MineWiki
→‎版本历史:​ 加入参考文献链接
(完善部分内容)
 
(未显示2个用户的2个中间版本)
第7行: 第7行:
* 动态符号查找:实现了自动适配[[Bedrock Dedicated Server]]的小版本更新而无需重新编译插件,换句话说,只要[[Mojang]]没有大量删改函数,那么部分插件即使不更新也能实现插件在新版本的Bedrock Dedicated Server上运行
* 动态符号查找:实现了自动适配[[Bedrock Dedicated Server]]的小版本更新而无需重新编译插件,换句话说,只要[[Mojang]]没有大量删改函数,那么部分插件即使不更新也能实现插件在新版本的Bedrock Dedicated Server上运行
* 完善的Api:LiteLoader内置相对完善的Api,内置的Bedrock Dedicated Server中的常用Api,使开发者无需手动在IDA内寻找函数就能编写简单的插件,减轻了插件开发者的时间花费
* 完善的Api:LiteLoader内置相对完善的Api,内置的Bedrock Dedicated Server中的常用Api,使开发者无需手动在IDA内寻找函数就能编写简单的插件,减轻了插件开发者的时间花费
* 强大的社区:有大量来自社区的插件,涵盖大部分实用功能
<big>快捷导航</big>
官网:  https://www.litebds.com/
文档: https://docs.litebds.com/zh-Hans/
minebbs发布贴: https://www.minebbs.com/liteloader/
GitHub: https://github.com/LiteLDev/LiteLoaderBDS


== 实现原理 ==
== 实现原理 ==
第22行: 第32行:
!适配的BDS版本
!适配的BDS版本
|-
|-
!2.3.0
!2.7.0
!2022/6/10
!2022/9/25
!兼容1.19.1,协议版本527
!
[新内容]
=== LiteLoader Release Note ===
* 支持BDS1.19.0
适配BDS-1.19.30 | 协议版本 554
* 配置文件新添经济核心(LLMoney)开关
 
* LLMoney远程调用支持
=== Bug Fixes ===
[改变]
 
* 更新远程调用API
* 修复LLSE中的ParticleSpawner bugs (#780) @OEOTYAN
* LLSE的改变
* 修复在玩家加入服务器时客户端卡顿的问题 (#825) @dreamguxiang
** bl.setNbt
* 修复在玩家加入服务器时服务端崩溃的问题 (#825,#827,#828,#829,#832) @dreamguxiang
[BUG修复]
* 修复PlayerInfo玩家改名后的历史遗留问题 @ShrBox
* 修复LL Bugs
* 修复PlayerClass::getScore错误 (#791) @Redbeanw44602
** Actor::isPlayer()
 
* 修复LLSE Bugs
=== New Features ===
** pl.getRespawnPosition
 
!1.19.1
* 支持BDS 1.19.30 (#819) @dreamguxiang
* 为LLSE添加setScale API (#762) @shishkevichd
* 添加PlayerUseBucket事件 (#746) @quizhizhe
* 为LLSE添加ItemAPI::setDisplayName API (#766) @shishkevichd
* 为LLSE添加DeviceAPI::getInputMode API (#772) @shishkevichd
* 为LLSE添加distanceToPos API在PlayerAPI & EntityAPI中 (#775) @shishkevichd
* 添加PlayerOpenInventory事件 (#767) @Jasonzyt
* 添加LL settings指令 @RimuruChan
* 添加PlayerSwingEvent (#797) @OEOTYAN
* 为LLSE添加stopFire API在PlayerAPI & EntityAPI中 (#801) @shishkevichd
* 为LLSE的BlockAPI添加更多属性 (#816) @shishkevichd
* 为LLSE的layerAPI和EntityAPI添加更多属性 (#837) @shishkevichd
* mc.getPlayer()支持通过UniqueID获取玩家 @Redbeanw44602
* 在LLSE中添加player.setTitle() @Redbeanw44602
* 添加API trans-money和money-history @Redbeanw44602
 
=== APIs / ABIs重大更改列表(为开发者) ===
请注意,标记为已弃用的 API 将在接下来的几个版本中删除。
{| class="wikitable"
!位置
!更改
!描述
|-
|''llapi/LLAPI.h''
|All item with namespace LL.
|Move to namespace ll. You should recompile your plugin with latest SDK as soon as possible due to the removal of deprecated API and ABI in the future.
|-
|''llapi/mc/''
|All enum defined in ''llapi/mc''
|Use enum class instead of enum. You should recompile your plugin with latest SDK as soon as possible due to the removal of deprecated API.
|}
**
!1.19.30
|-
|-
!2.2.7
!2.2.7
!
!2022/6/9
![改变]
![改变]
* 移除 MCVAPI
* 移除 MCVAPI
第57行: 第99行:
** LLMoney 指令崩服
** LLMoney 指令崩服
!1.18.33
!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
!1.1.0

2022年9月26日 (一) 13:35的最新版本

本页面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内寻找函数就能编写简单的插件,减轻了插件开发者的时间花费
  • 强大的社区:有大量来自社区的插件,涵盖大部分实用功能

快捷导航

官网: https://www.litebds.com/

文档: https://docs.litebds.com/zh-Hans/

minebbs发布贴: https://www.minebbs.com/liteloader/

GitHub: https://github.com/LiteLDev/LiteLoaderBDS

实现原理

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

动态符号查找

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

版本历史[2]

版本号 发布日期 更新内容 适配的BDS版本
2.7.0 2022/9/25

LiteLoader Release Note

适配BDS-1.19.30 | 协议版本 554

Bug Fixes

  • 修复LLSE中的ParticleSpawner bugs (#780) @OEOTYAN
  • 修复在玩家加入服务器时客户端卡顿的问题 (#825) @dreamguxiang
  • 修复在玩家加入服务器时服务端崩溃的问题 (#825,#827,#828,#829,#832) @dreamguxiang
  • 修复PlayerInfo玩家改名后的历史遗留问题 @ShrBox
  • 修复PlayerClass::getScore错误 (#791) @Redbeanw44602

New Features

  • 支持BDS 1.19.30 (#819) @dreamguxiang
  • 为LLSE添加setScale API (#762) @shishkevichd
  • 添加PlayerUseBucket事件 (#746) @quizhizhe
  • 为LLSE添加ItemAPI::setDisplayName API (#766) @shishkevichd
  • 为LLSE添加DeviceAPI::getInputMode API (#772) @shishkevichd
  • 为LLSE添加distanceToPos API在PlayerAPI & EntityAPI中 (#775) @shishkevichd
  • 添加PlayerOpenInventory事件 (#767) @Jasonzyt
  • 添加LL settings指令 @RimuruChan
  • 添加PlayerSwingEvent (#797) @OEOTYAN
  • 为LLSE添加stopFire API在PlayerAPI & EntityAPI中 (#801) @shishkevichd
  • 为LLSE的BlockAPI添加更多属性 (#816) @shishkevichd
  • 为LLSE的layerAPI和EntityAPI添加更多属性 (#837) @shishkevichd
  • mc.getPlayer()支持通过UniqueID获取玩家 @Redbeanw44602
  • 在LLSE中添加player.setTitle() @Redbeanw44602
  • 添加API trans-money和money-history @Redbeanw44602

APIs / ABIs重大更改列表(为开发者)

请注意,标记为已弃用的 API 将在接下来的几个版本中删除。

位置 更改 描述
llapi/LLAPI.h All item with namespace LL. Move to namespace ll. You should recompile your plugin with latest SDK as soon as possible due to the removal of deprecated API and ABI in the future.
llapi/mc/ All enum defined in llapi/mc Use enum class instead of enum. You should recompile your plugin with latest SDK as soon as possible due to the removal of deprecated API.
1.19.30
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

参考