# 2.8
2023.08.15:版本号(V2.8 BE1.18.30)
包括Mod PC包,手机测试版启动器,和服务器引擎。
示例Demo:前往此处下载
## 一、更新时间表
1. 在8月15日上线2.8第一个Beta版。
2. 在8月29日上线2.8第二个Beta版。
3. 在9月07日上线2.8稳定版。
4. 在9月15日,全渠道将更新2.8版本玩家包体,玩家将陆续更新到2.8版本,请开发者合理安排更新节奏。
## 二、重要功能更新
### 模型与材质
1. 骨骼模型支持多材质,新增支持隐藏指定的骨骼的接口,详情参考模型使用多材质和贴图
> 图中演示了模型头部单独设置材质,隐藏了一只翅膀。

2. 骨骼模型支持多pass材质,详情参考骨骼模型配置多pass。
> 图片演示了多pass的基础描边效果。

3. 新增自定义老电视后处理效果、自定义扫描效果,新增设置自定义后处理接口[SetEnableByName](../接口/后处理/自定义.md#setenablebyname),详情参考文档自定义后处理。
> 老电视机滤镜效果

> 扫描效果

4. 更新了材质使用相关的教学文档,详情参考材质介绍与着色器入门教程。
5. 优化了官方已有材质、shader的结构和格式。
### 粒子特效
1. 粒子特效支持自定义材质,详见中国版特效属性详细说明。

2. 中国版粒子的发射路径支持旋转,详见中国版特效属性详细说明。

### UI
1. 图片控件支持旋转,详情参考属性动画。

2. UI动画管理系列接口,可动态注册、添加、移除、播放UI动画,详情参考
属性动画。
### 玩家摄像机
1. 新增交互球心、交互距离接口,可自由控制玩家的交互中心和可交互长度,详情参考[SetPickCenterOffset](../接口/玩家/行为.md#setpickcenteroffset)等接口。
> 下图演示了交互中心向后偏移的效果。

2. 支持关闭相机弹簧功能,可动态关闭[SetCameraDistanceFixed](../接口/玩家/摄像机.md#setcameradistancefixed)接口。

### 方块
1. 支持colormap对指定维度生效,详情参考自定义方块群系颜色。
> 下图演示了同一方块不同群系的颜色不同。

### 游戏控制与管理
1. 修复了手柄模式下无法正常点击自定义UI按钮的问题。
2. 新增手柄按键、扳机、摇杆事件,详见[OnGamepadKeyPressClientEvent](../事件/控制.md#ongamepadkeypressclientevent)等接口。
3. 新增获取键盘、手柄的按键映射关系的接口,详见[GetControllerLayout](../接口/游戏设置.md#getcontrollerlayout)接口。
4. 新增锁定玩家修改游戏模式与规则权限的接口,详见[LockGameRulesInfo](../接口/世界/游戏规则.md#lockgamerulesinfo)和[IsLockGameRulesInfo](../接口/世界/游戏规则.md#islockgamerulesinfo)接口。
5. 新增射线检测实体与方块接口,详见[getEntitiesOrBlockFromRay](../接口/世界/实体管理.md#getentitiesorblockfromray)接口。
## 三、API更新
- 新增
1. 新增[getEntitiesOrBlockFromRay](../接口/世界/实体管理.md#getentitiesorblockfromray)(服务端), 从指定位置发射一条射线,获取与射线相交的实体和方块
1. 新增[RegisterUIAnimations](../接口/自定义UI/通用.md#registeruianimations)(客户端), 注册UI动画
1. 新增[UnregisterUIAnimation](../接口/自定义UI/通用.md#unregisteruianimation)(客户端), 取消UI动画的注册
1. 新增[ImportModule](../接口/通用/工具.md#importmodule)(服务端), 使用字符串的绝对路径导入模块
1. 新增[ImportModule](../接口/通用/工具.md#importmodule)(客户端), 使用字符串的绝对路径导入模块
1. 新增[Enable](../接口/实体/魔法指令.md#enable)(服务端), 启用官方魔法指令功能
1. 新增[Disable](../接口/实体/魔法指令.md#disable)(服务端), 关闭官方魔法指令功能
1. 新增[OpenWorkBench](../接口/玩家/行为.md#openworkbench)(服务端), 新增打开工作台ui接口,不依赖于工作台方块
1. 新增[SetChestLootTable](../接口/方块/属性.md#setchestloottable)(服务端), 设置箱子战利品表
1. 新增[AddActorComponentGroup](../接口/实体/行为.md#addactorcomponentgroup)(服务端), 给指定实体添加实体json中配置的ComponentGroup
1. 新增[RemoveActorComponentGroup](../接口/实体/行为.md#removeactorcomponentgroup)(服务端), 移除指定实体在实体json中配置的ComponentGroup
1. 新增[LockGameType](../接口/世界/游戏规则.md#lockgametype)(服务端), 锁定当前世界游戏类型接口
1. 新增[IsLockGameType](../接口/世界/游戏规则.md#islockgametype)(服务端), 获取当前世界的游戏类型是否锁定接口
1. 新增[LockGameRulesInfo](../接口/世界/游戏规则.md#lockgamerulesinfo)(服务端), 锁定当前世界游戏规则接口
1. 新增[IsLockGameRulesInfo](../接口/世界/游戏规则.md#islockgamerulesinfo)(服务端), 获取当前世界的游戏规则是否锁定接口
1. 新增[GetLootItems](../接口/世界/实体管理.md#getlootitems)(服务端), 指定战利品表获取一次战利品
1. 新增[SetInteracteCenterOffset](../接口/玩家/行为.md#setinteractecenteroffset)(服务端), 设置玩家服务端交互中心的偏移
1. 新增[GetInteracteCenterOffset](../接口/玩家/行为.md#getinteractecenteroffset)(服务端), 获取玩家服务端交互中心的偏移
1. 新增[GetPlayerInteracteRange](../接口/玩家/行为.md#getplayerinteracterange)(服务端), 获取玩家服务端的交互距离
1. 新增[SetPlayerInteracteRange](../接口/玩家/行为.md#setplayerinteracterange)(服务端), 设置玩家服务端的交互距离
1. 新增[SetBanPlayerFishing](../接口/玩家/行为.md#setbanplayerfishing)(服务端), 设置是否屏蔽玩家钓鱼功能
1. 新增[SetEntityRenderDistance](../接口/实体/渲染.md#setentityrenderdistance)(客户端), 新增设置玩家周围的实体的可渲染距离接口
1. 新增[GetEntityRenderDistance](../接口/实体/渲染.md#getentityrenderdistance)(客户端), 新增获取玩家周围的实体可渲染距离接口
1. 新增[SetCameraDistanceFixed](../接口/玩家/摄像机.md#setcameradistancefixed)(客户端), 设置相机弹簧臂固定,即设置当相机遇到阻挡时是否压缩与人物之间的距离
1. 新增[SetCameraRotation](../接口/玩家/摄像机.md#setcamerarotation)(客户端), 设定摄像机的朝向,并且数值与GetCameraRot一致
1. 新增[SetPopupState](../接口/世界/消息.md#setpopupstate)(客户端), 设置Popup消息栏状态
1. 新增[BindItemToBone](../接口/模型.md#binditemtobone)(客户端), 将使用了骨骼模型的玩家的手持物绑定到指定的骨骼上
1. 新增[SetModelPartVisible](../接口/模型.md#setmodelpartvisible)(客户端), 新增屏蔽骨骼模型中指定骨骼渲染的接口
1. 新增[SetPickCenterOffset](../接口/玩家/行为.md#setpickcenteroffset)(客户端), 设置第三人称下,玩家客户端交互中心的偏移
1. 新增[GetPickCenterOffset](../接口/玩家/行为.md#getpickcenteroffset)(客户端), 获取玩家设置的第三人称下客户端交互中心的偏移
1. 新增[SetPickRange](../接口/玩家/行为.md#setpickrange)(客户端), 设置玩家客户端的交互距离
1. 新增[GetPickRange](../接口/玩家/行为.md#getpickrange)(客户端), 获取玩家客户端的交互距离
1. 新增[GetControllerLayout](../接口/游戏设置.md#getcontrollerlayout)(客户端), 获取玩家控制器绑定映射
1. 新增[SetEnableByName](../接口/后处理/自定义.md#setenablebyname)(客户端), 开关自定义后处理效果
1. 新增[SetParameter](../接口/后处理/自定义.md#setparameter)(客户端), 设置自定义后处理参数
1. 新增[GetGlobalPosition](../接口/自定义UI/UI控件.md#getglobalposition)(客户端), 获取控件全局坐标
1. 新增[PauseAnimation](../接口/自定义UI/UI控件.md#pauseanimation)(客户端), 暂停动画,暂停后的动画会停在当前的状态
1. 新增[PlayAnimation](../接口/自定义UI/UI控件.md#playanimation)(客户端), 继续播放动画,从动画当前状态开始播放
1. 新增[StopAnimation](../接口/自定义UI/UI控件.md#stopanimation)(客户端), 停止动画,动画将恢复到第一段动画片段的from状态
1. 新增[SetAnimation](../接口/自定义UI/UI控件.md#setanimation)(客户端), 给单一属性设置动画,每次设置都会覆盖上一次的设置
1. 新增[RemoveAnimation](../接口/自定义UI/UI控件.md#removeanimation)(客户端), 删除单一属性的动画,删除后的值与当前状态有关,建议删除后重新设置该属性值
1. 新增[SetAnimEndCallback](../接口/自定义UI/UI控件.md#setanimendcallback)(客户端), 设置动画播放结束后的回调,每次设置都会覆盖上一次的设置
1. 新增[RemoveAnimEndCallback](../接口/自定义UI/UI控件.md#removeanimendcallback)(客户端), 移除动画播放结束后的回调
1. 新增[IsAnimEndCallbackRegistered](../接口/自定义UI/UI控件.md#isanimendcallbackregistered)(客户端), 控件是否对名称为animName的动画进行了注册回调
1. 新增[Rotate](../接口/自定义UI/UI控件.md#rotate)(客户端), 图片相对自身的旋转锚点进行旋转
1. 新增[RotateAround](../接口/自定义UI/UI控件.md#rotatearound)(客户端), 图片相对全局坐标系中某个固定的点进行旋转
1. 新增[SetRotatePivot](../接口/自定义UI/UI控件.md#setrotatepivot)(客户端), 图片相对全局坐标系中某个固定的点进行旋转
1. 新增[GetRotatePivot](../接口/自定义UI/UI控件.md#getrotatepivot)(客户端), 获取图片相对自身的旋转锚点
1. 新增[GetRotateAngle](../接口/自定义UI/UI控件.md#getrotateangle)(客户端), 获取图片相对自身的旋转锚点旋转的角度
1. 新增[GetGlobalRotateAngle](../接口/自定义UI/UI控件.md#getglobalrotateangle)(客户端), 获取图片通过RotateAround函数设置进去的角度值
1. 新增[GetGlobalRotatePoint](../接口/自定义UI/UI控件.md#getglobalrotatepoint)(客户端), 获取图片通过RotateAround函数设置进去的point值
1. 新增[GetRotateRect](../接口/自定义UI/UI控件.md#getrotaterect)(客户端), 获取图片当前的四个边角点
1. 新增[OnGamepadKeyPressClientEvent](../事件/控制.md#ongamepadkeypressclientevent)(客户端), 游戏手柄按键事件
1. 新增[OnGamepadStickClientEvent](../事件/控制.md#ongamepadstickclientevent)(客户端), 游戏手柄摇杆事件
1. 新增[OnGamepadTriggerClientEvent](../事件/控制.md#ongamepadtriggerclientevent)(客户端), 游戏手柄扳机事件
1. 新增[OnGamepadControllerLayoutChangeClientEvent](../事件/控制.md#ongamepadcontrollerlayoutchangeclientevent)(客户端), 游戏手柄按键映射改变事件
1. 新增[OnKeyboardControllerLayoutChangeClientEvent](../事件/控制.md#onkeyboardcontrollerlayoutchangeclientevent)(客户端), 键盘按键映射改变事件
1. 新增[ModBlockEntityLoadedClientEvent](../事件/方块.md#modblockentityloadedclientevent)(客户端), 客户端自定义方块实体加载完成后第一次出现在玩家视野中时触发的事件
1. 新增[RayFilterType](../枚举值/RayFilterType.md), 射线检测类型
- 调整
1. 调整[CreateUI](../接口/自定义UI/通用.md#createui)(客户端), 配置了bindWorldPosition参数时,开放autoScale参数(2.7版本固定为1),设置自动缩放需要将UI写为百分比形式,设置为固定尺寸将无法缩放,超过一定距离时不可见。
1. 调整[HideChatGUI](../接口/原生UI.md#hidechatgui)(客户端), 新增关于新版聊天的说明
1. 调整[HideEmoteGUI](../接口/原生UI.md#hideemotegui)(客户端), 增加新版聊天相关说明
1. 调整[HideVoiceGUI](../接口/原生UI.md#hidevoicegui)(客户端), 增加新版聊天相关说明
1. 调整[HideNeteaseStoreGui](../接口/原生UI.md#hideneteasestoregui)(客户端), 增加UI堆栈说明
1. 调整[OpenPauseGui](../接口/原生UI.md#openpausegui)(客户端), 增加isForce字段
1. 调整[OpenChatGui](../接口/原生UI.md#openchatgui)(客户端), 增加isForce字段
1. 调整[OpenInventoryGui](../接口/原生UI.md#openinventorygui)(客户端), 增加isForce字段
1. 调整[SetBlockTileEntityCustomData](../接口/方块/方块实体.md#setblocktileentitycustomdata)(服务端), 新增dimensionId参数,默认为-1
1. 调整[GetBlockTileEntityCustomData](../接口/方块/方块实体.md#getblocktileentitycustomdata)(服务端), 新增dimensionId参数,默认为-1
1. 调整[GetBlockTileEntityWholeCustomData](../接口/方块/方块实体.md#getblocktileentitywholecustomdata)(服务端), 新增dimensionId参数,默认为-1
1. 调整[CleanBlockTileEntityCustomData](../接口/方块/方块实体.md#cleanblocktileentitycustomdata)(服务端), 新增dimensionId参数,默认为-1
1. 调整[GetChestPairedPosition](../接口/方块/容器.md#getchestpairedposition)(服务端), 新增dimensionId参数,默认为-1
1. 调整[GetBedColor](../接口/方块/床.md#getbedcolor)(服务端), 新增dimensionId参数,默认为-1
1. 调整[SetBedColor](../接口/方块/床.md#setbedcolor)(服务端), 新增dimensionId参数,默认为-1
1. 调整[GetSignBlockText](../接口/方块/告示牌.md#getsignblocktext)(服务端), 新增dimensionId参数,默认为-1
1. 调整[SetSignBlockText](../接口/方块/告示牌.md#setsignblocktext)(服务端), 新增dimensionId参数,默认为-1
1. 调整[GetItemBasicInfo](../接口/物品.md#getitembasicinfo)(服务端), 物品类型添加food、block、armor,新增customItemType、armorToughness、armorknockbackResistance字段
1. 调整[PlayCustomMusic](../接口/音效.md#playcustommusic)(客户端), 添加使用stream的音频无法同时播放两个音效实例的描述
1. 调整[GetItemBasicInfo](../接口/物品.md#getitembasicinfo)(客户端), 物品类型添加food、block、armor,新增customItemType、armorToughness、armorknockbackResistance字段
1. 调整[ServerBlockUseEvent](../事件/方块.md#serverblockuseevent)(服务端), 新增itemDict, face参数
1. 调整[OnNewArmorExchangeServerEvent](../事件/物品.md#onnewarmorexchangeserverevent)(服务端), 新增避免在该事件内调用修改盔甲接口的说明
1. 调整[ItemReleaseUsingServerEvent](../事件/物品.md#itemreleaseusingserverevent)(服务端), 新增changeItem参数,如果要在该事件的回调中修改当前使用槽位的物品,需设置这个参数为True,否则将修改物品失败
1. 调整[ChunkLoadedServerEvent](../事件/世界.md#chunkloadedserverevent)(服务端), 添加blockEntities字段
- 修复
1. 修复[GetMotion](../接口/实体/行为.md#getmotion)(客户端), 修复了不能获取非玩家实体的问题
- 废弃(将在未来不可用)
1. 废弃SetCameraRot,请使用SetCameraRotation接口