--- sidebarDepth: 1 --- # 玩家对象PlayerObject ## 概述 - 继承关系 ```mermaid classDiagram EntityObject <|-- PlayerObject link EntityObject "../../../../mcdocs/3-PresetAPI/%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%B1%A1/%E9%A2%84%E8%AE%BE/%E5%AE%9E%E4%BD%93%E5%AF%B9%E8%B1%A1EntityObject.html" SdkInterface <|-- EntityObject link SdkInterface "../../../../mcdocs/3-PresetAPI/%E9%A2%84%E8%AE%BE%E5%AF%B9%E8%B1%A1/%E9%80%9A%E7%94%A8/SDK%E6%8E%A5%E5%8F%A3%E5%B0%81%E8%A3%85SdkInterface.html" PlayerObject: 玩家对象 SdkInterface: SDK接口封装 SdkInterface: (点击跳转) EntityObject: 实体对象 EntityObject: (点击跳转) ``` - 描述 PlayerObject(玩家对象)是对玩家对象封装的基类,它为实体提供了面向对象的使用方式。 - 成员变量 无 ## 索引 | 接口 |
| 描述 | | --- | --- | --- | | [GetPlayerId](#getplayerid) | 客户端/服务端 | 获取玩家预设的玩家ID | | [IsLocalPlayer](#islocalplayer) | 客户端/服务端 | 判断当前玩家对象是否本地玩家 | | [IsSneaking](#issneaking) | 服务端 | 是否潜行 | | [GetHunger](#gethunger) | 服务端 | 获取玩家饥饿度,展示在UI饥饿度进度条上,初始值为20,即每一个鸡腿代表2个饥饿度。 **饱和度(saturation)** :玩家当前饱和度,初始值为5,最大值始终为玩家当前饥饿度(hunger),该值直接影响玩家**饥饿度(hunger)**。
1)增加方法:吃食物。
2)减少方法:每触发一次**消耗事件**,该值减少1,如果该值不大于0,直接把玩家 **饥饿度(hunger)** 减少1。 | | [SetHunger](#sethunger) | 服务端 | 设置玩家饥饿度。 | | [SetStepHeight](#setstepheight) | 服务端 | 设置玩家前进非跳跃状态下能上的最大台阶高度, 默认值为0.5625,1的话表示能上一个台阶 | | [GetStepHeight](#getstepheight) | 服务端 | 返回玩家前进非跳跃状态下能上的最大台阶高度 | | [ResetStepHeight](#resetstepheight) | 服务端 | 恢复引擎默认玩家前进非跳跃状态下能上的最大台阶高度 | | [GetExp](#getexp) | 服务端 | 获取玩家当前等级下的经验值 | | [AddExp](#addexp) | 服务端 | 增加玩家经验值 | | [GetTotalExp](#gettotalexp) | 服务端 | 获取玩家的总经验值 | | [SetTotalExp](#settotalexp) | 服务端 | 设置玩家的总经验值 | | [IsFlying](#isflying) | 服务端 | 获取玩家是否在飞行 | | [ChangeFlyState](#changeflystate) | 服务端 | 给予/取消飞行能力,并且进入飞行/非飞行状态 | | [GetLevel](#getlevel) | 服务端 | 获取玩家等级 | | [AddLevel](#addlevel) | 服务端 | 修改玩家等级 | | [SetPrefixAndSuffixName](#setprefixandsuffixname) | 服务端 | 设置玩家前缀和后缀名字 | | [EnableKeepInventory](#enablekeepinventory) | 服务端 | 设置玩家死亡不掉落物品 | | [AddAnimation](#addanimation) | 客户端 | 增加玩家渲染动画 | | [SetHealthLevel](#sethealthlevel) | 服务端 | 设置玩家健康临界值,当饥饿值大于等于健康临界值时会自动恢复血量,开启饥饿值且开启自然恢复时有效.原版默认值为18 | | [SetStarveLevel](#setstarvelevel) | 服务端 | 设置玩家饥饿临界值,当饥饿值小于饥饿临界值时会自动扣除血量,开启饥饿值且开启饥饿掉血时有效。原版默认值为1 | | [SetNaturalStarve](#setnaturalstarve) | 服务端 | 设置是否开启玩家饥饿掉血,当饥饿值小于饥饿临界值时会自动扣除血量,开启饥饿值且开启饥饿掉血时有效.原版默认开启 | | [SetStarveTick](#setstarvetick) | 服务端 | 设置玩家饥饿掉血速度,当饥饿值小于饥饿临界值时会自动扣除血量,开启饥饿值且开启饥饿掉血时有效 | | [SetNaturalRegen](#setnaturalregen) | 服务端 | 设置是否开启玩家自然恢复 | | [SetHealthTick](#sethealthtick) | 服务端 | 设置玩家自然恢复速度 | | [SetMaxExhaustionValue](#setmaxexhaustionvalue) | 服务端 | 设置玩家最大消耗度(maxExhaustion) | | [SetPickUpArea](#setpickuparea) | 服务端 | 设置玩家的拾取物品范围 | | [SetJumpable](#setjumpable) | 服务端 | 设置玩家是否可跳跃 | | [SetMovable](#setmovable) | 服务端 | 设置玩家是否可移动 | | [AddAnimationController](#addanimationcontroller) | 客户端 | 增加玩家渲染动画控制器 | | [AddAnimationIntoState](#addanimationintostate) | 客户端 | 在玩家的动画控制器中的状态添加动画 | | [AddGeometry](#addgeometry) | 客户端 | 增加玩家渲染几何体 | | [AddParticleEffect](#addparticleeffect) | 客户端 | 增加玩家特效资源 | | [AddRenderController](#addrendercontroller) | 客户端 | 增加玩家渲染控制器 | | [AddRenderMaterial](#addrendermaterial) | 客户端 | 增加玩家渲染需要的材质 | | [AddSoundEffect](#addsoundeffect) | 客户端 | 增加玩家音效资源 | | [AddTexture](#addtexture) | 客户端 | 增加玩家渲染贴图 | | [SetSkin](#setskin) | 客户端 | 更换原版自定义皮肤 | ## GetPlayerId 客户端/服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 获取玩家预设的玩家ID - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | str | 玩家ID | ## IsLocalPlayer 客户端/服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 判断当前玩家对象是否本地玩家 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是本地玩家则返回True,否则返回False,服务端也返回False | ## IsSneaking 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 是否潜行 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否潜行 | - 示例 ```python self.IsSneaking() ``` ## GetHunger 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 获取玩家饥饿度,展示在UI饥饿度进度条上,初始值为20,即每一个鸡腿代表2个饥饿度。 **饱和度(saturation)** :玩家当前饱和度,初始值为5,最大值始终为玩家当前饥饿度(hunger),该值直接影响玩家**饥饿度(hunger)**。
1)增加方法:吃食物。
2)减少方法:每触发一次**消耗事件**,该值减少1,如果该值不大于0,直接把玩家 **饥饿度(hunger)** 减少1。 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | float | 玩家饥饿度 | - 示例 ```python self.GetPlayerHunger(playerId) ``` ## SetHunger 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家饥饿度。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | value | float | 饥饿度 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetPlayerHunger(playerId, 10) ``` ## SetStepHeight 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家前进非跳跃状态下能上的最大台阶高度, 默认值为0.5625,1的话表示能上一个台阶 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | stepHeight | float | 最大高度,需要大于0 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 备注 - 为了避免因浮点数误差导致错误,设置的时候通常会增加1/16个方块大小,即0.0625。所以此处我们设置2.0625。游戏中默认值是0.5625,即半格高度。 - 只对玩家生效,无法修改其它实体该属性 - 修改后不影响跳跃逻辑及跳跃高度,并不会因此而跳到更高,因此在某些特定情况下,你可以走上方块但跳不上去。 - 示例 ```python #如果前面放置有两格高的方块,玩家按前进能直接上去,无须跳跃 self.SetPlayerStepHeight(playerId, 2.0625) ``` ## GetStepHeight 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 返回玩家前进非跳跃状态下能上的最大台阶高度 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | float | 台阶高度 | ## ResetStepHeight 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 恢复引擎默认玩家前进非跳跃状态下能上的最大台阶高度 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | ## GetExp 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 获取玩家当前等级下的经验值 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | isPercent | bool | 是否为百分比 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | float | 玩家经验值 | - 备注 - 如果设置返回百分比为False,则返回玩家当前等级下经验的绝对值(非当前玩家总经验值)。 - 示例 ```python print(self.GetExp(False)) ``` ## AddExp 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家经验值 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | exp | int | 玩家经验值,可设置负数 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 设置是否成功 | - 备注 - 如果设置的exp值为负数,且超过当前等级已有的经验值,调用接口后,该玩家等级不会下降但是经验值会置为最小值 - 示例 ```python self.AddExp(25) ``` ## GetTotalExp 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 获取玩家的总经验值 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | int | 总经验值,正整数。获取失败的情况下返回-1。 | - 示例 ```python print(self.GetTotalExp()) ``` ## SetTotalExp 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家的总经验值 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | exp | int | 总经验值,正整数 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 设置是否成功 | - 备注 - 根据总经验值会重新计算等级,该接口可引起等级的变化 - 内部运算采用浮点数,数值较大时会出现误差 - 示例 ```python self.SetTotalExp(25) ``` ## IsFlying 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 获取玩家是否在飞行 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | True:是 False:否 | ## ChangeFlyState 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 给予/取消飞行能力,并且进入飞行/非飞行状态 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | isFly | bool | 飞行状态,True:飞行模式,False:正常行走模式 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | True:是 False:否 | - 示例 ```python self.ChangeFlyState(True) ``` ## GetLevel 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 获取玩家等级 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | int | 玩家等级 | ## AddLevel 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 修改玩家等级 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | level | int | 玩家等级,可设置负数 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 设置是否成功 | - 示例 ```python self.AddLevel(2) ``` ## SetPrefixAndSuffixName 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家前缀和后缀名字 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | prefix | str | 前缀内容 | | prefixColor | str | 前缀内容颜色描述,如 'RED' | | suffix | str | 后缀内容 | | suffixColor | str | 后缀内容颜色描述,如 'RED' | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 设置是否成功 | - 示例 ```python self.SetPrefixAndSuffixName(playerId, "红队", 'RED', '肉盾', 'RED') ``` ## EnableKeepInventory 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家死亡不掉落物品 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | enable | bool | 是否开启“保留物品栏” | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.EnableKeepInventory(True) ``` ## AddAnimation 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家渲染动画 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | animationKey | str | 动画键 | | animationName | str | 动画名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.AddAnimation("move.arms", "animation.player.move.arms_custom") ``` ## SetHealthLevel 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家健康临界值,当饥饿值大于等于健康临界值时会自动恢复血量,开启饥饿值且开启自然恢复时有效.原版默认值为18 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | healthLevel | int | 健康临界值 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetHealthLevel(16) ``` ## SetStarveLevel 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家饥饿临界值,当饥饿值小于饥饿临界值时会自动扣除血量,开启饥饿值且开启饥饿掉血时有效。原版默认值为1 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | starveLevel | int | 饥饿临界值 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetStarveLevel(2)# 饥饿值小于等于2就会进入饥饿掉血状态,默认每隔4秒掉1点血量 ``` ## SetNaturalStarve 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置是否开启玩家饥饿掉血,当饥饿值小于饥饿临界值时会自动扣除血量,开启饥饿值且开启饥饿掉血时有效.原版默认开启 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | value | bool | True开启,False关闭 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetNaturalStarve(False)# # 关闭饥饿掉血,即使饥饿值小于饥饿临界值时也不会扣除血量 ``` ## SetStarveTick 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家饥饿掉血速度,当饥饿值小于饥饿临界值时会自动扣除血量,开启饥饿值且开启饥饿掉血时有效 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | starveTick | int | 饥饿掉血速度 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetStarveTick(40) # 饥饿掉血状态下每隔2(40/20)秒扣除1点血量 ``` ## SetNaturalRegen 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置是否开启玩家自然恢复 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | value | bool | True开启,False关闭 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetNaturalRegen(False) # 关闭自然恢复,即使饥饿值大于健康临界值时也不会恢复血量 ``` ## SetHealthTick 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家自然恢复速度 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | healthTick | int | 自然恢复速度 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetHealthTick(40) # 自然恢复状态下每隔2(40/20)秒恢复1点血量 ``` ## SetMaxExhaustionValue 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家最大消耗度(maxExhaustion) - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | value | float | 最大消耗度(maxExhaustion) | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetMaxExhaustionValue(10.0) ``` ## SetPickUpArea 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家的拾取物品范围 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | area | tuple(float,float,float) | 拾取物品范围,传入(0, 0, 0)时视作取消设置 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetPickUpArea((5, 0, 3)) ``` ## SetJumpable 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家是否可跳跃 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | isJumpable | bool | 是否可跳跃,True允许跳跃,False禁止跳跃 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetJumpable(False) ``` ## SetMovable 服务端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 设置玩家是否可移动 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | isMovable | bool | 是否可移动,True允许移动,False禁止移动 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetMovable(False) ``` ## AddAnimationController 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家渲染动画控制器 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | animationControllerKey | str | 动画控制器键 | | animationControllerName | str | 动画控制器名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.AddAnimationController("root", "controller.animation.player.root_custom") ``` ## AddAnimationIntoState 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 在玩家的动画控制器中的状态添加动画 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | animationControllerName | str | 动画控制器名称 | | stateName | str | 动画控制器名称 | | animationName | str | 添加的动画名称或动画控制器名称 | | condition | str | 动画控制表达式 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python self.AddAnimationIntoState("root", "first_person", "first_person_attack_controller_new", "query.mod.index > 0") ``` ## AddGeometry 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家渲染几何体 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | geometryKey | str | 渲染几何体键 | | geometryName | str | 渲染几何体名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python self.AddGeometry("default", "geometry.player.custom") ``` ## AddParticleEffect 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家特效资源 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | effectKey | str | 特效资源Key | | effectName | str | 特效资源名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python self.AddParticleEffect("nectar_dripping", "minecraft:nectar_drip_particle") ``` ## AddRenderController 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家渲染控制器 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | renderControllerName | str | 渲染控制器名称 | | condition | str | 渲染控制器条件 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python self.AddRenderController('custom_render_controller_name', 'query.mod.condition') ``` ## AddRenderMaterial 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家渲染需要的材质 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | materialKey | str | 材质key | | materialName | str | 材质名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python self.AddRenderMaterial('custom_material_key', 'custom_material_name') ``` ## AddSoundEffect 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家音效资源 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | soundKey | str | 音效资源Key | | soundName | str | 音效资源名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python self.AddSoundEffect("sound_thunder", "ambient.weather.thunder") ``` ## AddTexture 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 增加玩家渲染贴图 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | geometryKey | str | 贴图键 | | geometryName | str | 贴图路径 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - 调用该接口后需要调用RebuildPlayerRender才会生效 - 示例 ```python self.AddTexture("default", "textures/misc/missing_texture") ``` ## SetSkin 客户端 method in Preset.Model.Player.PlayerObject.PlayerObject - 描述 更换原版自定义皮肤 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | skin | str | 贴图路径,以textures\models为当前路径的相对路径 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置成功 | - 示例 ```python self.SetSkin("kagura") ```