# 客户端组件
# 存储
# config
以配置文件的方式进行数据的存储与读取,区别于组件extraData使用leveldb进行存储
# GetConfigData
描述
获取本地配置文件中存储的数据
参数
参数名 数据类型 说明 configName str 配置名称,只能包含字母、数字和下划线字符,另外为了避免addon之间的冲突,建议加上addon前缀 isGlobal bool 存档配置or全局配置,默认为False 返回值
数据类型 说明 dict 返回本地存储数据 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateConfigClient(clientApi.GetLevelId())
configDict = comp.GetConfigData("global_config_name", True)
# SetConfigData
描述
以本地配置文件的方式存储数据
参数
参数名 数据类型 说明 configName str 配置名称,只能包含字母、数字和下划线字符,另外为了避免addon之间的冲突,建议加上addon前缀 value dict 数据 isGlobal bool 为True时是全局配置,否则为存档配置,默认为False 返回值
数据类型 说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateConfigClient(clientApi.GetLevelId())
data = {}
data["key"] = "value"
comp.SetConfigData("global_config_name", data, True)
# 方块
# blockInfo
# ChangeBlockTextures
描述
替换方块贴图
参数
参数名 数据类型 说明 blockName str 方块标识符,格式[namespace:name:auxvalue],auxvalue默认为0; 只支持普通的没有特殊渲染逻辑的方形方块,否则可能会显示异常 tileName str 原贴图在图集中对应的名字,对应terrain_texture.json中的配置 texturePath str 打算替换成的贴图的路径 返回值
数据类型 说明 bool 是否设置成功(因为采用延迟加载,此处返回成功不代表贴图路径正确,路径错误会导致渲染时贴图丢失显示异常) 备注
- 对纹理会动态变化的方块无效
- 调用此接口后tileName不会发生变化,后续如果想恢复设置,依旧需要用这个tileName
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
#设置朝上的面的贴图为work_block_other
print(comp.ChangeBlockTextures("myblock:work_block:0", "myblock:work_block_faceup", "textures/blocks/work_block_other"))
#恢复朝上的面的贴图
#print(comp.ChangeBlockTextures("myblock:work_block:0", "myblock:work_block_faceup", "textures/blocks/work_block_faceup"))
# GetBlock
描述
获取某一位置的block
参数
参数名 数据类型 说明 pos tuple(float,float,float) 方块位置 返回值
数据类型 说明 tuple(str,int) 参数1:方块的名称,参数2:方块的附加值AuxValue 备注
- 已经加载的地形才设置、获取方块信息
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.GetBlock((x,y,z))
# GetTopBlockHeight
描述
获取当前维度某一位置最高的非空气方块的高度
参数
参数名 数据类型 说明 pos tuple(int,int) x轴与z轴位置 返回值
数据类型 说明 int 高度 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
height = comp.GetTopBlockHeight((5, 5))
# blockUseEventWhiteList
管理方块对ClientBlockUseEvent事件在脚本层的监听
# AddBlockItemListenForUseEvent
描述
增加blockName方块对ClientBlockUseEvent事件的脚本层监听
参数
参数名 数据类型 说明 blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue 返回值
数据类型 说明 bool 是否增加成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(clientApi.GetLevelId())
comp.AddBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为0
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’
# ClearAllListenForBlockUseEventItems
描述
清空所有已添加方块对ClientBlockUseEvent事件的脚本层监听
参数
无
返回值
数据类型 说明 bool 是否清空成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(clientApi.GetLevelId())
comp.ClearAllListenForBlockUseEventItems()
# RemoveBlockItemListenForUseEvent
描述
移除blockName方块对ClientBlockUseEvent事件的脚本层监听
参数
参数名 数据类型 说明 blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue 返回值
数据类型 说明 bool 是否移除成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(clientApi.GetLevelId())
comp.RemoveBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为0
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’
# 界面
# fog
雾效渲染相关的组件,支持设置雾效颜色与范围
# GetFogColor
描述
获取当前雾效颜色
参数
无
返回值
数据类型 说明 tuple(float,float,float,float) 颜色rgba 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
# 获取雾效颜色
fogColor = comp.GetFogColor()
# GetFogLength
描述
获取雾效范围
参数
无
返回值
数据类型 说明 tuple(float,float) 雾效起始值与终点值 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
start,end = comp.GetFogLength()
# GetUseFogColor
描述
判断当前是否开启设置雾效颜色,该值默认为False,使用mod传入的颜色值后为True
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
# 获取是否开启设置雾效颜色
useFogColor = comp.GetUseFogColor()
# GetUseFogLength
描述
判断当前是否开启设置雾效范围,该值默认为False,使用mod传入的范围值后为True
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
# 获取是否开启设置雾效范围
useFogLength = comp.GetUseFogLength()
# ResetFogColor
描述
重置雾效颜色
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
comp.ResetFogColor()
# ResetFogLength
描述
重置雾效范围
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
comp.ResetFogLength()
# SetFogColor
描述
设置雾效颜色
参数
参数名 数据类型 说明 color tuple(float,float,float,float) 颜色RGBA,范围0到1之间,a值主要用于水下效果 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
# 雾效设置为全白色
comp.SetFogColor((1.0,1.0,1.0,1.0))
# SetFogLength
描述
设置雾效范围
参数
参数名 数据类型 说明 start float 雾效起始距离 end float 雾效终点范围 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFog(levelId)
comp.SetFogLength(10, 50)
# name
生物名字相关
# SetAlwaysShowName
描述
设置生物名字是否一直显示,瞄准点不指向生物时也能显示
参数
参数名 数据类型 说明 show bool True为显示 返回值
数据类型 说明 bool 返回是否设置成功 备注
- 该接口只对普通生物生效,对玩家设置不起作用
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateName(entityId)
# 不显示头上的名字
comp.SetAlwaysShowName(False)
# SetShowName
描述
设置生物名字是否按照默认游戏逻辑显示
参数
参数名 数据类型 说明 show bool True为显示 返回值
数据类型 说明 bool 返回是否设置成功 备注
- 当设置为True时,生物的名字显示遵循游戏默认的渲染逻辑,即普通生物需要中心点指向生物才显示名字,玩家则是会一直显示名字
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateName(entityId)
# 不显示头上的名字
comp.SetShowName(False)
# skyRender
天空渲染相关的组件。注意:末地、下界不支持此功能
# GetAmbientBrightness
描述
获取环境光亮度,影响天空亮度,不影响实体与方块光照
参数
无
返回值
数据类型 说明 float 范围0到1之间 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
ambineBrightness = comp.GetAmbientBrightness()
# GetMoonRot
描述
获取月亮角度
参数
无
返回值
数据类型 说明 tuple(float,float,float) 第一个float表示南北偏移,第二个float表示月亮的自旋角度,第三个float表示月升月落。单位为角度 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
rot = comp.GetMoonRot()
# GetSkyColor
描述
获取天空颜色
参数
无
返回值
数据类型 说明 tuple(float,float,float,float) 颜色RGBA,0到1之间,目前a值暂时没用 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
color = comp.GetSkyColor()
# GetSkyTextures
描述
获取当前维度天空盒贴图,天空盒共6张贴图
参数
无
返回值
数据类型 说明 list(str)或None 天空盒贴图列表,该值可能为None 示例
# 贴图列表按顺序分别对应世界坐标的 负Z轴方向, 正X轴方向,正Z轴方向,负X轴方向,正Y轴方向,负Y轴方向。 其中正Y轴即为上方(采用右手坐标系)。
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
textureList = comp.GetSkyTextures(textureList)
# GetStarBrightness
描述
获取星星亮度
参数
无
返回值
数据类型 说明 float 范围0到1之间 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
starBrightness = comp.GetStarBrightness()
# GetSunRot
描述
获取太阳角度
参数
无
返回值
数据类型 说明 tuple(float,float,float) 第一个float表示南北偏移,第二个float表示太阳的自旋角度,第三个float表示日升日落。单位为角度 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
rot = comp.GetSunRot()
# GetUseAmbientBrightness
描述
判断是否在mod设置了环境光亮度
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
useAmbientBrightness = comp.GetUseAmbientBrightness()
# GetUseMoonRot
描述
判断是否在mod设置了月亮角度
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
useMoonRot = comp.GetUseMoonRot()
# GetUseSkyColor
描述
判断是否在mod设置了天空颜色
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
useSkyColor = comp.GetUseSkyColor()
# GetUseStarBrightness
描述
判断是否在mod设置了星星亮度
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
useStarBrightness = comp.GetUseStarBrightness()
# GetUseSunRot
描述
判断是否在mod设置了太阳角度
参数
无
返回值
数据类型 说明 bool 是否设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
useSunRot = comp.GetUseSunRot()
# ResetAmbientBrightness
描述
重置环境光亮度
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.ResetAmbientBrightness()
# ResetMoonRot
描述
重置月亮角度
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.ResetMoonRot()
# ResetSkyColor
描述
重置天空颜色
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.ResetSkyColor()
# ResetSkyTextures
描述
重置当前维度天空盒贴图。如果有使用addon配置贴图则会使用配置的贴图,否则为游戏内默认无贴图的情况
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.ResetSkyTextures()
# ResetStarBrightness
描述
重置星星亮度
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.ResetStarBrightness()
# ResetSunRot
描述
重置太阳角度
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.ResetSunRot()
# SetAmbientBrightness
描述
设置环境光亮度,影响天空亮度,不影响实体与方块光照
参数
参数名 数据类型 说明 brightness float 范围0到1之间 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.SetAmbientBrightness(0.1)
# SetMoonRot
描述
设置月亮所在角度
参数
参数名 数据类型 说明 rot tuple(float,float,float) 第一个float表示南北偏移,第二个float表示月亮的自旋角度,第三个float表示月升月落。单位为角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.SetMoonRot((10, 0, 10))
# SetSkyColor
描述
设置天空颜色
参数
参数名 数据类型 说明 color tuple(float,float,float,float) 颜色RGBA,0到1之间,目前a值暂时没用 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.SetSkyColor((0.5, 0.5, 0.8, 1.0))
# SetSkyTextures
描述
设置当前维度天空盒贴图,天空盒需要6张贴图
参数
参数名 数据类型 说明 textureList list(str) 需要为6张贴图的路径,路径为从textures目录开始的绝对路径,如果天空盒某个方向不需要设置,则传空字符串 返回值
数据类型 说明 bool 设置是否成功 备注
- 游戏内切dimension的时候会重设天空盒贴图,因此开发者需要监听对应的切换维度事件(DimensionChangeClientEvent)进行贴图的处理。
示例
# 贴图列表按顺序分别对应世界坐标的 负Z轴方向, 正X轴方向,正Z轴方向,负X轴方向,正Y轴方向,负Y轴方向。 其中正Y轴即为上方(采用右手坐标系)。
textureList = ['', 'textures/environment/positiveX','textures/environment/positiveZ', '', 'textures/environment/positiveY', '']
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.SetSkyTextures(textureList)
# SetStarBrightness
描述
设置星星亮度,白天也可以显示星星
参数
参数名 数据类型 说明 brightness float 范围0到1之间 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.SetStarBrightness(0.1)
# SetSunRot
描述
设置太阳所在角度
参数
参数名 数据类型 说明 rot tuple(float,float,float) 第一个float表示南北偏移,第二个float表示太阳的自旋角度,第三个float表示日升日落。单位为角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSkyRender(levelId)
comp.SetSunRot((10, 0, 10))
# SkyTextures
描述
修改太阳、月亮、云层分布、天空盒的贴图。使用addon配置,非python接口。
参数
无
返回值
无
备注
游戏提供了重载贴图的方式来修改太阳、月亮、云层分布、天空盒的贴图。 末地和下界没有太阳月亮和云层,另外末地的天空是用一张贴图end_sky.png而不是天空盒贴图,end_sky.png要结合雾效颜色使用。下界暂不支持此功能。 具体路径为:
贴图 路径 太阳贴图 modResource目录/textures/environment/{dimName}_sun.png 月亮贴图 modResource目录/textures/environment/{dimName}_moon_phases.png 云层分布贴图 modResource目录/textures/environment/{dimName}_clouds.png 天空盒贴图 modResource目录/textures/environment/{dimName}_cubemap/cubemap_0.png 其中:天空盒贴图需要放6张图,即最后需要包含
cubemap_0.png
到cubemap_5.png
,而{dimName}
表示dimension的名称,各个dimension名称如下:dimension 名称 末地 theend 下界 nether 上界 overworld 其他复制出来的dimension镜像 从3到20的数字id 示例:
modResource/textures/environment/4_sun.png modResource/textures/environment/overworld_moon_phases.png modResource/textures/environment/3_clouds.png modResource/textures/environment/overworld_cubemap/cubemap_0.png # -z方向 modResource/textures/environment/overworld_cubemap/cubemap_1.png # x方向 modResource/textures/environment/overworld_cubemap/cubemap_2.png # z方向 modResource/textures/environment/overworld_cubemap/cubemap_3.png # -x方向 modResource/textures/environment/overworld_cubemap/cubemap_4.png # y方向 modResource/textures/environment/overworld_cubemap/cubemap_5.png # -y方向 modResource/textures/environment/end_sky.png #末地天空渲染贴图
# textNotifyClient
用于客户端的UI文本提醒
# SetLeftCornerNotify
描述
客户端设置左上角通知信息
参数
参数名 数据类型 说明 textMsg str 通知内容 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextNotifyClient(entityId)
comp.SetLeftCornerNotify("做好准备")
# 控制
# actorMotion
玩家的移动方向和大小
# BeginSprinting
描述
使本地玩家进入并保持向前冲刺状态
参数
无
返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorMotion(localPlayerId)
comp.BeginSprinting()
# EndSprinting
描述
使本地玩家结束向前冲刺状态
参数
无
返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorMotion(localPlayerId)
comp.EndSprinting()
# GetInputVector
描述
获取方向键(移动轮盘)的输入
参数
无
返回值
数据类型 说明 tuple(float,float) 返回一个单位向量,向量第一项为向左的大小,第二项为向前的大小 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorMotion(localPlayerId)
left, up = comp.GetInputVector()
# GetMotion
描述
获取生物的瞬时移动方向向量
参数
无
返回值
数据类型 说明 tuple(int,int,int) 瞬时移动方向向量,异常时返回None 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorMotion(entityId)
motionComp.GetMotion()
# LockInputVector
描述
锁定本地玩家方向键(移动轮盘)的输入,可使本地玩家持续向指定方向前行,且不会再受玩家输入影响
参数
参数名 数据类型 说明 inputVector tuple(float,float) 输入向量,第一项控制向左的大小,第二项控制向前的大小。传入(0, 0)时玩家将会被强制固定在原地,不允许移动。 返回值
数据类型 说明 bool 是否锁定成功,True:成功 False:失败 备注
- 传入的向量会被转化为单位向量,因此传入(10, 0)与传入(0.1, 0)效果相同
示例
import mod.client.extraClientApi as clientApi
# 使玩家向左前方持续移动
localPlayerId = clientApi.GetLocalPlayerId()
rotComp = clientApi.GetEngineCompFactory().CreateRot(localPlayerId)
comp = clientApi.GetEngineCompFactory().CreateActorMotion(localPlayerId)
motionComp.LockInputVector((1, 1))
# SetMotion
描述
设置瞬时的移动方向向量,主要用于本地玩家
参数
参数名 数据类型 说明 motion tuple(float,float,float) 世界坐标系下的向量,该方向为世界坐标系下的向量,以x,z,y三个轴的正方向为正值,可以通过当前玩家的rot组件判断目前玩家面向的方向,可在开发模式下打开F3观察数值变化。 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
# 使玩家向准星的方向突进一段距离
localPlayerId = clientApi.GetLocalPlayerId()
rotComp = clientApi.GetEngineCompFactory().CreateRot(localPlayerId)
rot = rotComp.GetRot()
x, y, z = clientApi.GetDirFromRot(rot)
comp = clientApi.GetEngineCompFactory().CreateActorMotion(localPlayerId)
motionComp.SetMotion((x * 5, y * 5, z * 5))
# rot 和 世界坐标系关系
# ^ x -90°
# |
# 180°/-180 ----------> z 0°
# | 90°
# UnlockInputVector
描述
解锁本地玩家方向键(移动轮盘)的输入
参数
无
返回值
数据类型 说明 bool 是否解锁成功,True:成功 False:失败 示例
import mod.client.extraClientApi as clientApi
# 解锁使用LockInputVector锁定的本地玩家方向键(移动轮盘)输入
comp = clientApi.GetEngineCompFactory().CreateActorMotion(localPlayerId)
motionComp.UnlockInputVector()
# operation
设置是否响应本地玩家的操作
# GetHoldTimeThresholdInMs
描述
获取长按判定时间,即按着屏幕多长时间会触发长按操作
参数
无
返回值
数据类型 说明 int 时间,单位毫秒。默认为400 示例
import mod.server.extraServerApi as serverApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
timeMs = comp.GetHoldTimeThresholdInMs()
# SetCanAll
描述
一次性设置除SetMoveLock之外的所有属性
参数
参数名 数据类型 说明 all bool True为全部响应 返回值
数据类型 说明 bool 设置是否成功 备注
- 要在其他属性设置之前设置,不然在all之前设置的会被覆盖掉
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 全部设置为不响应
comp.SetCanAll(False)
# SetCanAttack
描述
设置是否响应攻击
参数
参数名 数据类型 说明 attack bool True为可攻击 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应攻击
comp.SetCanAttack(False)
# SetCanChat
描述
设置是否响应聊天按钮
参数
参数名 数据类型 说明 chat bool True为可打开聊天页面 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应聊天按钮
comp.SetCanChat(False)
# SetCanDrag
描述
设置是否响应屏幕拖动
参数
参数名 数据类型 说明 drag bool True为可拖动屏幕 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应屏幕拖动
comp.SetCanDrag(False)
# SetCanInair
描述
设置是否响应上升下降按钮(飞在空中时右下角的三个按钮)
参数
参数名 数据类型 说明 inair bool True为可点击 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应空中控制按钮
comp.SetCanInair(False)
# SetCanJump
描述
设置是否响应跳跃(以及在水中浮起)
参数
参数名 数据类型 说明 jump bool True为可跳跃 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应跳跃
comp.SetCanJump(False)
# SetCanMove
描述
设置是否响应移动
参数
参数名 数据类型 说明 move bool True为可移动 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应移动
comp.SetCanMove(False)
# SetCanOpenInv
描述
设置是否响应打开背包按钮
参数
参数名 数据类型 说明 open bool True为可打开背包 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应打开背包按钮
comp.SetCanOpenInv(False)
# SetCanPause
描述
设置是否响应暂停按钮
参数
参数名 数据类型 说明 pause bool True为可打开暂停页面 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应暂停按钮
comp.SetCanPause(False)
# SetCanPerspective
描述
设置是否响应切换视角
参数
参数名 数据类型 说明 persp bool True为可切换 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应切换视角
comp.SetCanPerspective(False)
# SetCanScreenShot
描述
设置是否响应截图按钮
参数
参数名 数据类型 说明 shot bool True为可截图 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应截图按钮
comp.SetCanScreenShot(False)
# SetCanWalkMode
描述
设置是否响应切换行走模式
参数
参数名 数据类型 说明 walkmode bool True为可切换 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 不响应切换行走模式
comp.SetCanWalkMode(False)
# SetHoldTimeThreshold
描述
设置长按判定时间,即按着屏幕多长时间会触发长按操作
参数
参数名 数据类型 说明 time int 时间,单位毫秒。默认为400 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.server.extraServerApi as serverApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
comp.SetHoldTimeThreshold(100)
# SetMoveLock
描述
设置是否锁住移动,与SetCanMove的区别:设置了SetCanMove(False)之后actorMotion组件的SetMotion会失效,而用moveLock为True则不会
参数
参数名 数据类型 说明 movelock bool True为锁住 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateOperation(levelId)
# 锁住移动
comp.SetMoveLock(True)
# playerView
视角模式相关
# GetPerspective
描述
获取当前的视角模式
参数
无
返回值
数据类型 说明 int 0:第一人称视角;1:第三人称视角;2:前视第三人称视角 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
persp = comp.GetPerspective()
# GetToggleOption
描述
获得某个开关设置值的接口
参数
参数名 数据类型 说明 optionId str OptionId枚举 返回值
数据类型 说明 int -1:类型不支持;0:开关关闭; 1: 开关打开; 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
print(comp.GetToggleOption(clientApi.GetMinecraftEnum().OptionId.HIDE_PAPERDOLL))
# GetUIProfile
描述
获取"UI 档案"模式
参数
无
返回值
数据类型 说明 int 0表示经典模式,1表示Pocket模式 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
profile = comp.GetUIProfile()
# HighlightBoxSelection
描述
镜头移动时高亮当前视角中心所指的方块
参数
参数名 数据类型 说明 isHighlight bool 是否高亮,True为高亮,False为不高亮,默认为不高亮 返回值
无
备注
- 功能实现上面其实是 设置->视频->轮廓设置 的一层代码封装,但不会影响到原本轮廓设置的值,如果设置为高亮,效果与关闭轮廓设置时相同,如果设置为非高亮,效果则取决于当前是否设置了轮廓设置,如果设置了,则不高亮。
- 重启后设置失效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
#设置为高亮
comp.HighlightBoxSelection(True)
# LockPerspective
描述
锁定玩家的视角模式
参数
参数名 数据类型 说明 lock int 0:第一人称视角;1:第三人称视角;2:前视第三人称视角 其他值:解除锁定 返回值
数据类型 说明 bool 是否锁定成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
comp.LockPerspective(1)
# SetPerspective
描述
设置视角模式
参数
参数名 数据类型 说明 persp int 0:第一人称视角;1:第三人称视角;2:前视第三人称视角 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(entityId)
comp.SetPerspective(1)
# SetToggleOption
描述
修改开关型设置的接口
参数
参数名 数据类型 说明 optionId str OptionId枚举 isOn bool 是否打开开关,True为开,False为关 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
#设置隐藏纸娃娃选项为打开
print(comp.SetToggleOption(clientApi.GetMinecraftEnum().OptionId.HIDE_PAPERDOLL, True))
# SetUIProfile
描述
设置"UI 档案"模式
参数
参数名 数据类型 说明 profileType int 0表示经典模式,1表示Pocket模式 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayerView(levelId)
#设置为Pocket模式
print(comp.SetUIProfile(1))
# 粒子
# particleControl
用于控制粒子播放相关
# Play
描述
播放粒子特效
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.Play()
# SetFadeDistance
描述
设置粒子开始自动调整透明度的距离。粒子与摄像机之间的距离小于该值时会自动调整粒子的透明度,距离摄像机越近,粒子越透明
参数
参数名 数据类型 说明 fadeDistance float 自动调整透明度的距离,应为正数,负数将视作零来处理 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 设置该粒子在与相机距离小于3时会自动调整透明度
comp.SetFadeDistance(3)
# SetLayer
描述
粒子默认层级为1,当层级不为1时表示该特效开启特效分层渲染功能。特效(粒子和帧动画)分层渲染时,层级越高渲染越靠后,层级大的会遮挡层级低的,且同一层级的特效会根据特效的相对位置产生正确的相互遮挡关系。
参数
参数名 数据类型 说明 layer int 粒子渲染层级,总共包含0-15的层级。 返回值
数据类型 说明 bool 设置是否成功 备注
- 该接口只针对粒子进行设置,序列帧特效请使用frameAniControl组件
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 设置渲染层级为2
comp.SetLayer(2)
# SetRelative
描述
当粒子绑定了entity或骨骼模型时,发射出的粒子使用entity坐标系还是世界坐标系。与mcstudio特效编辑器中粒子的“相对挂点运动”选项功能相同。
参数
参数名 数据类型 说明 relative bool True表示相对坐标系,False表示世界坐标系 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
# 使用世界坐标系
comp.SetRelative(False)
# Stop
描述
停止粒子播放
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleControl(particleEntityId)
comp.Stop()
# particleEntityBind
用于将粒子绑定到实体
# Bind
描述
绑定entity
参数
参数名 数据类型 说明 bindEntityId str 绑定的entity的ID offset tuple(float,float,float) 绑定的偏移量,相对绑定entity脚下中心 rot tuple(float,float,float) 绑定的旋转角度 correction bool 默认不开启,开启后可以使特效的旋转角度准确设置为参照玩家的相对角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleEntityBind(particleEntityId)
comp.Bind(entityId, (0, 1, 0), (0, 0, 0))
# particleSkeletonBind
用于将粒子绑定到骨骼模型
# Bind
描述
绑定骨骼模型
参数
参数名 数据类型 说明 modelId int 绑定的骨骼模型的ID(见model组件的GetModelId) boneName str 绑定具体骨骼的名称 offset tuple(float,float,float) 绑定的偏移量 rot tuple(float,float,float) 绑定的旋转角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleSkeletonBind(particleEntityId)
comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0))
# particleTrans
用于设置粒子的transform属性
# SetPos
描述
设置粒子的位置
参数
参数名 数据类型 说明 pos tuple(float,float,float) 世界坐标 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleTrans(particleEntityId)
comp.SetPos((0, 5, 0))
# SetRot
描述
设置粒子的旋转
参数
参数名 数据类型 说明 pos tuple(float,float,float) 按顺序绕局部坐标系的+x,+y,+z轴旋转的角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateParticleTrans(particleEntityId)
# 绕y轴旋转90度,然后绕旋转后的z轴旋转90度
comp.SetRot((0, 90, 90))
# 模型
# model
用于设置实体的骨骼模型及动画
# BindEntityToEntity
描述
绑定骨骼模型跟随其他entity,摄像机也跟随其他entity
参数
参数名 数据类型 说明 bindEntityId str 绑定跟随的实体Id 返回值
数据类型 说明 bool False表示失败,True表示成功 备注
- 本接口只实现视觉效果,本质上实体还是在原地,因此需要调用接口设置实体的位置到其他entity的位置上,否则当实体本身不在摄像机范围内的时候就会不进行渲染了。
示例
import mod.client.extraClientApi as clientApi
# 将entityId的实体绑定至bindEntityId的实体
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.BindEntityToEntity(bindEntityId)
# BindModelToEntity
描述
实体替换骨骼模型后,再往上其他挂接骨骼模型。对实体播骨骼动作时,其上面挂接的模型也会播相同的动作。
参数
参数名 数据类型 说明 boneName str 挂接的骨骼名称 modelName str 要挂接的骨骼模型名称 返回值
数据类型 说明 int 挂到骨骼上的骨骼模型的Id,失败返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 把名称为gun的骨骼模型挂接到rightHand骨骼上
gunModelId = comp.BindModelToEntity("rightHand", "gun")
# BindModelToModel
描述
在骨骼模型上挂接其他骨骼模型
参数
参数名 数据类型 说明 boneName str 挂接的骨骼名称 modelName str 要挂接的骨骼模型名称 返回值
数据类型 说明 int 挂到骨骼上的骨骼模型的Id,失败返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(11)
# 把名称为gun的骨骼模型挂接到rightHand骨骼上
gunModelId = comp.BindModelToModel("rightHand", "gun")
# CreateFreeModel
描述
创建自由的模型(无需绑定Entity)
参数
参数名 数据类型 说明 modelName str 模型名称 返回值
数据类型 说明 int 创建成功返回 modelId,创建失败返回 0 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
model = comp.CreateFreeModel(modelName)
# GetAllBindModelToEntity
描述
获取实体上某个骨骼上挂接的所有骨骼模型的id
参数
参数名 数据类型 说明 boneName str 要获取的骨骼名称 返回值
数据类型 说明 list(int) 骨骼模型的id的列表 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelIds = comp.GetAllBindModelToEntity("rightHand")
# GetAnimLength
描述
获取某个骨骼动画的长度,单位为秒
参数
参数名 数据类型 说明 aniName str 骨骼动画名称 返回值
数据类型 说明 float 骨骼动画长度 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# 获取run动画的长度
animLength = comp.GetAnimLength('run')
# GetBoneWorldPos
描述
获取骨骼的坐标
参数
参数名 数据类型 说明 boneName str 骨骼名称 返回值
数据类型 说明 tuple(int,int,int) 位置坐标 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
bPos = comp.GetBoneWorldPos(boneName)
# GetEntityBoneWorldPos
描述
获取换了骨骼模型的实体的骨骼坐标
参数
参数名 数据类型 说明 entityId str 实体id boneName str 骨骼名称 返回值
数据类型 说明 tuple(int,int,int) 位置坐标 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
bPos = comp.GetEntityBoneWorldPos(entityId, boneName)
# GetModelId
描述
获取骨骼模型的Id,主要用于特效绑定骨骼模型
参数
无
返回值
数据类型 说明 int 当前骨骼模型实例的id 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
modelId = comp.GetModelId()
# GetPlayingAnim
描述
获取当前播放的骨骼动画名称
参数
无
返回值
数据类型 说明 str 骨骼动画名称 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
playingAnim = comp.GetPlayingAnim()
# HideModel
描述
隐藏纯模型
参数
参数名 数据类型 说明 modelId int 要隐藏的modelId 返回值
数据类型 说明 None 无返回值 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.HideModel(modelId)
# ModelPlayAni
描述
纯骨骼播放动作
参数
参数名 数据类型 说明 modelId int 要设置的modelId aniName str 要设置的动画名称 isLoop bool 是否循环播放,默认为 False 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ModelPlayAni(modelId, 'run', False)
# PlayAnim
描述
播放骨骼动画
参数
参数名 数据类型 说明 aniName str 动画名称 isLoop bool 是否循环播放 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.PlayAnim("run", True)
# PlayBodyAnim
描述
上下半身分离时,对上半身播放动画
参数
参数名 数据类型 说明 bodyAniName str 骨骼动画名称 bodyIsLoop bool 是否循环播放 返回值
数据类型 说明 bool 设置是否成功 备注
- 骨骼模型需要有一根名为“up”的骨骼,并且上半身的其他骨骼都以up为父骨骼
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.PlayBodyAnim("attack", False)
# PlayLegAnim
描述
上下半身分离时,对下半身播放动画
参数
参数名 数据类型 说明 legAniName str 骨骼动画名称 legIsLoop bool 是否循环播放 返回值
数据类型 说明 bool 设置是否成功 备注
- 骨骼模型需要有一根名为“down”的骨骼,并且下半身的其他骨骼都以down为父骨骼
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.PlayLegAnim("run", True)
# RemoveFreeModel
描述
移除自由模型
参数
参数名 数据类型 说明 modelId int 要移除的modelId 返回值
数据类型 说明 bool 是否成功移除 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.RemoveFreeModel(modelId)
# ResetBindEntity
描述
取消目标entity的绑定实体,取消后不再跟随任何其他entity
参数
无
返回值
数据类型 说明 bool False表示失败,True表示成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ResetBindEntity()
# ResetModel
描述
恢复实体为原版模型
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ResetModel()
# SetAnimSpeed
描述
设置某个骨骼动画的播放速度
参数
参数名 数据类型 说明 aniName str 骨骼动画名称 speed float 速度倍率 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
# run动作三倍速
comp.SetAnimSpeed("run", 3.0)
# SetEntityOpacity
描述
设置生物模型的透明度
参数
参数名 数据类型 说明 opacity float 透明度值,取值范围为[0, 1],值越小越透明 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetEntityOpacity(0.2)
# SetFreeModelBoundingBox
描述
设置模型包围盒
参数
参数名 数据类型 说明 modelId int 要设置的modelId min tuple(float,float,float) 包围盒最小点 max tuple(float,float,float) 包围盒最大点 返回值
数据类型 说明 bool 成功返回True,失败返回False 备注
- min的元素一定要比对应的max的元素小。
- 模型包围盒用于判断渲染剔除:判断一个模型要不要渲染,要看它在不在视野范围内,也就是看游戏摄像机的视锥体(摄像机拍到的范围)和这个包围盒有没有交集。有则说明在视野范围内,反之则不在视野范围内。进而可以剔除掉该模型,不进行渲染。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetFreeModelBoundingBox(modelId, (-1, -0.9, -0.8), (1, 1, 1))
# SetFreeModelPos
描述
设置自由模型的位置
参数
参数名 数据类型 说明 modelId int 要设置的modelId x float 要设置的位置X轴参数 y float 要设置的位置Y轴参数 z float 要设置的位置Z轴参数 返回值
数据类型 说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetFreeModelPos(modelId, 0, 0, 0)
# SetFreeModelRot
描述
设置自由模型的方向
参数
参数名 数据类型 说明 modelId int 要设置的modelId x float 沿X方向的旋转参数 y float 沿Y方向的旋转参数 z float 沿Z方向的旋转参数 返回值
数据类型 说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetFreeModelRot(modelId, 0, 0, 0)
# SetFreeModelScale
描述
设置自由模型的大小
参数
参数名 数据类型 说明 modelId int 要设置的modelId x float 沿X方向的比例因子 y float 沿Y方向的比例因子 z float 沿Z方向的比例因子 返回值
数据类型 说明 bool 是否成功设置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetFreeModelScale(modelId, 1, 1, 1)
# SetLegacyBindRot
描述
用于修复特效挂接到骨骼时的方向
参数
参数名 数据类型 说明 enable bool 设置为False时,可以使特效与骨骼方向一致 返回值
数据类型 说明 bool 设置是否成功 备注
- 在挂接特效前调用即可
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetLegacyBindRot(False)
# SetModel
描述
替换实体的骨骼模型
参数
参数名 数据类型 说明 modelName str 骨骼模型的名称 返回值
数据类型 说明 int 替换的骨骼模型实例的id。失败返回-1 备注
- 要恢复原版模型请使用ResetModel接口
- 使用客户端组件更换模型不会同步及存盘,仅是纯客户端表现,如需要同步及存盘,请使用服务器的model组件
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModel("xuenv")
# SetModelOffset
描述
模型增加偏移量
参数
参数名 数据类型 说明 offset tuple(float,float,float) 偏移向量 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelOffset((0, 1, 0))
# SetModelPerspectiveEffect
描述
设置模型透视效果。注:只对自定义骨骼模型生效
参数
参数名 数据类型 说明 isPerspective bool 是否显示透视颜色 color tuple(float,float,float,float) 透视颜色的RGBA值,范围0-1 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetModelPerspectiveEffect(True, (1, 0.9, 0, 0.2))
# SetSkin
描述
更换原版自定义皮肤
参数
参数名 数据类型 说明 skin str 贴图路径,以textures\models为当前路径的相对路径 返回值
数据类型 说明 bool 设置是否成功 备注
- 会覆盖原有皮肤(包括4d皮肤)。但会被骨骼模型覆盖
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetSkin("kagura")
# SetTexture
描述
替换骨骼模型的贴图
参数
参数名 数据类型 说明 texture str 贴图路径,以textures\models为当前路径的相对路径 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.SetTexture("0steve")
# ShowCommonHurtColor
描述
设置挂接骨骼模型的实体是否显示通用的受伤变红效果
参数
参数名 数据类型 说明 show bool 是否显示 返回值
数据类型 说明 bool 设置是否成功 备注
- 引擎默认打开该选项,需要改变受伤效果可以关闭之后再进行定制
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ShowCommonHurtColor(False)
# ShowModel
描述
显示纯模型
参数
参数名 数据类型 说明 modelId int 要显示的modelId 返回值
数据类型 说明 None 无返回值 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.ShowModel(modelId)
# StopBodyAnim
描述
停止上半身动画
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.StopBodyAnim()
# StopLegAnim
描述
停止下半身动画
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.StopLegAnim()
# UnBindModelToEntity
描述
取消实体上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel
参数
参数名 数据类型 说明 modelId int 要取消挂接的骨骼模型的id 返回值
数据类型 说明 bool 挂到骨骼上的骨骼模型的Id,失败返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(entityId)
comp.UnBindModelToEntity(gunModelId)
# UnBindModelToModel
描述
取消骨骼模型上挂接的某个骨骼模型。取消挂接后,这个modelId的模型便会销毁,无法再使用,如果是临时隐藏可以使用HideModel
参数
参数名 数据类型 说明 modelId int 要取消挂接的骨骼模型的id 返回值
数据类型 说明 bool 挂到骨骼上的骨骼模型的Id,失败返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModel(11)
# subModelId已经绑定在modelId为11的骨骼模型上
comp.UnBindModelToModel(subModelId)
# 世界
# chunkSource
# AddChunkPosWhiteList
描述
为某区块加载完成、准备卸载事件添加监听
参数
参数名 数据类型 说明 dimensionId int 区块所在维度 pos tuple(int,int) 指定区块的坐标 返回值
数据类型 说明 bool 是否添加成功 备注
- 方块坐标(x, y, z)所在的区块坐标为(math.floor(x / 16), math.floor(z / 16))
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateChunkSource(entityId)
comp.AddChunkPosWhiteList(0, (0, 0))
# GetChunkPosFromBlockPos
描述
通过方块坐标获得该方块所在区块坐标
参数
参数名 数据类型 说明 blockPos tuple(int,int,int) 方块的坐标 返回值
数据类型 说明 None或tuple(int,int) 该方块所在区块的坐标 备注
- 当传入的blockPos类型不是tuple或者长度不为3时,返回值为None
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateChunkSource(entityId)
chunkPos = comp.GetChunkPosFromBlockPos((90, 40, -4))
# RemoveChunkPosWhiteList
描述
移除对某区块加载完成、准备卸载事件的监听
参数
参数名 数据类型 说明 dimensionId int 区块所在维度 pos tuple(int,int) 指定区块的坐标 返回值
数据类型 说明 bool 是否移除成功 备注
- 方块坐标(x, y, z)所在的区块坐标为(math.floor(x / 16), math.floor(z / 16))
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateChunkSource(entityId)
comp.RemoveChunkPosWhiteList(0, (0, 0))
# game
游戏逻辑相关的组件
# AddPickBlacklist
描述
添加使用camera组件选取实体时的黑名单,即该实体不会被选取到
参数
参数名 数据类型 说明 entityId str 实体id 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
# 添加黑名单
comp.AddPickBlacklist(entityId)
# AddRepeatedTimer
描述
添加客户端触发的定时器,重复执行
参数
参数名 数据类型 说明 delay float 延迟时间,单位秒 func function 定时器触发函数 *args any 变长参数,可以不设置 **kwargs any 字典变长参数,可以不设置 返回值
数据类型 说明 CallLater 返回触发的定时器实例 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
comp.AddRepeatedTimer(3.0,func,args,kwargs)
# AddTimer
描述
添加客户端触发的定时器,非重复
参数
参数名 数据类型 说明 delay float 延迟时间,单位秒 func function 定时器触发函数 *args any 变长参数,可以不设置 **kwargs any 字典变长参数,可以不设置 返回值
数据类型 说明 CallLater 返回单次触发的定时器实例 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
comp.AddTimer(3.0,func,args,kwargs)
# CancelTimer
描述
取消定时器
参数
参数名 数据类型 说明 timer CallLater AddOnceTimer和AddRepeatedTimer时返回的定时器实例 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
comp.CancelTimer(timer)
# CheckNameValid
描述
检查昵称是否合法,即不包含敏感词
参数
参数名 数据类型 说明 name str 昵称 返回值
数据类型 说明 bool True:昵称合法 False:昵称非法 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
isValid = comp.CheckNameValid("史蒂夫")
# CheckWordsValid
描述
检查语句是否合法,即不包含敏感词
参数
参数名 数据类型 说明 words str 语句 返回值
数据类型 说明 bool True:语句合法 False:语句非法 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
isValid = comp.CheckWordsValid("creeper? Aww man")
# ClearPickBlacklist
描述
清除使用camera组件选取实体的黑名单
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
# 清除黑名单中所有实体
comp.ClearPickBlacklist()
# GetCurrentDimension
描述
获取客户端当前维度
参数
无
返回值
数据类型 说明 int 维度id。客户端未登录完成或正在切维度时返回-1 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
dimId = comp.GetCurrentDimension()
# GetEntityInArea
描述
返回区域内的实体,可获取到区域范围内已加载的实体列表
参数
参数名 数据类型 说明 entityId str或None 实体Id pos_a tuple(int,int,int) 起点 pos_b tuple(int,int,int) 终点,终点应大于起点 exceptEntity bool 返回结果中是否除去entityId, 默认为False,传入entityId为None时exceptEntity无作用 返回值
数据类型 说明 list(str) 区域范围内已加载的entityId列表 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
entities = comp.GetEntityInArea(entityId, (0,0,0), (1,2,3))
# GetScreenSize
描述
获取游戏分辨率
参数
无
返回值
数据类型 说明 tuple(float,float) 宽高(像素) 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
width, height = comp.GetScreenSize()
# GetScreenViewInfo
描述
获取游戏视角信息。分辨率为1313,618时,画布是376,250的2倍,所以viewport得到的是1313 + (2-(1313%2)),y值类似,可参考《我的世界》界面适配方法
参数
无
返回值
数据类型 说明 tuple(float,float,float,float) 依次为宽、高、x偏移、y偏移 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
width, height, offsetX, offsetY= comp.GetScreenViewInfo()
# HasEntity
描述
判断 entity 是否存在
参数
参数名 数据类型 说明 entityId str 实体id 返回值
数据类型 说明 int 0表示不存在,1表示存在 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
exist = comp.HasEntity(entityId)
# SetNameDeeptest
描述
设置名字是否透视
参数
参数名 数据类型 说明 deeptest bool True为不透视。默认情况下为透视 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
# 设置为不透视
comp.SetNameDeeptest(True)
# SetPopupNotice
描述
在本地玩家的物品栏上方弹出popup类型通知,位置位于tip类型消息下方
参数
参数名 数据类型 说明 message str 消息内容,可以在消息前增加extraClientApi.GenerateColor("RED")字符来设置颜色,具体参考样例 subtitle str 消息子标题内容,效果同message,也可设置颜色,位置位于message上方 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetPopupNotice(clientApi.GenerateColor("RED") + "消息通知", "消息子标题")
# SetRenderLocalPlayer
描述
设置本地玩家是否渲染
参数
参数名 数据类型 说明 render bool True为渲染 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
# 不渲染本地玩家
comp.SetRenderLocalPlayer(False)
# SetTipMessage
描述
在本地玩家的物品栏上方弹出tip类型通知,位置位于popup类型通知上方
参数
参数名 数据类型 说明 message str 消息内容,可以在消息前增加extraClientApi.GenerateColor("RED")字符来设置颜色,具体参考样例 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(entityId)
comp.SetTipMessage(clientApi.GenerateColor("RED") + "tip提示")
# ShowHealthBar
描述
设置是否显示血条
参数
参数名 数据类型 说明 show bool True为显示。开启后可用health组件单独设置某个实体的血条颜色及是否显示 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
comp.ShowHealthBar(True)
# SimulateTouchWithMouse
描述
模拟使用鼠标控制UI(PC F11快捷键)
参数
参数名 数据类型 说明 touch bool True:进入鼠标模式,False:退出鼠标模式 返回值
数据类型 说明 bool 模拟结果 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateGame(levelId)
comp.SimulateTouchWithMouse(True)
# 实体
# actorCollidable
客户端用来控制玩家是否可碰撞
# SetActorCollidable
描述
设置实体是否可碰撞
参数
参数名 数据类型 说明 isCollidable int 0:不可碰撞 1:可碰撞 返回值
数据类型 说明 bool True表示设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorCollidable(entityId)
success = comp.SetActorCollidable(1)
# actorRender
客户端用来控制实体如何渲染的组件,配合客户端组件queryVariable可以修改某一个生物的渲染
# AddActorRenderController
描述
增加生物[渲染控制器](../../../03-自定义游戏内容/06-自定义生物/01-自定义基础生物.md#7. 自定义渲染控制器)
参数
参数名 数据类型 说明 actorIdentifier str 生物identifier renderControllerName str 渲染控制器名称 condition str 渲染控制器条件,当该条件成立时,renderControllerName指向的渲染控制器才会生效 返回值
数据类型 说明 bool 添加是否成功 备注
- 调用该接口后需要调用RebuildActorRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(levelId)
comp.AddActorRenderController('minecraft:villager', 'custom_render_controller_name', 'query.mod.condition')
# AddActorRenderMaterial
描述
增加生物渲染需要的材质
参数
参数名 数据类型 说明 actorIdentifier str 生物的identifier materialKey str 材质key materialName str 材质名称 返回值
数据类型 说明 bool 添加是否成功 备注
- 调用该接口后需要调用RebuildActorRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddActorRenderMaterial('minecraft:villager', 'custom_material_key', 'custom_material_name')
# AddPlayerAnimation
描述
增加玩家渲染动画
参数
参数名 数据类型 说明 animationKey str 动画键 animationName str 动画名称 返回值
数据类型 说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerAnimation("move.arms", "animation.player.move.arms_custom")
# AddPlayerAnimationController
描述
增加玩家渲染动画控制器
参数
参数名 数据类型 说明 animationControllerKey str 动画控制器键 animationControllerName str 动画控制器名称 返回值
数据类型 说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerAnimationController("root", "controller.animation.player.root_custom")
# AddPlayerGeometry
描述
增加玩家渲染几何体
参数
参数名 数据类型 说明 geometryKey str 渲染几何体键,如玩家默认几何体default geometryName str 渲染几何体名称,如玩家默认几何体geometry.humanoid.custom 返回值
数据类型 说明 bool 是否成功 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效 动画和贴图都是与几何体密切相关的,改变几何体也需要改变动画与贴图
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerGeometry("default", "geometry.player.custom")
# AddPlayerRenderController
描述
增加玩家[渲染控制器](../../../03-自定义游戏内容/06-自定义生物/01-自定义基础生物.md#7. 自定义渲染控制器)
参数
参数名 数据类型 说明 renderControllerName str 渲染控制器名称 condition str 渲染控制器条件 返回值
数据类型 说明 bool 添加是否成功 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerRenderController('custom_render_controller_name', 'query.mod.condition')
# AddPlayerRenderMaterial
描述
增加玩家渲染需要的材质
参数
参数名 数据类型 说明 materialKey str 材质key materialName str 材质名称 返回值
数据类型 说明 bool 添加是否成功 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerRenderMaterial('custom_material_key', 'custom_material_name')
# AddPlayerTexture
描述
增加玩家渲染贴图
参数
参数名 数据类型 说明 geometryKey str 贴图键 geometryName str 贴图路径 返回值
数据类型 说明 bool 是否成功 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.AddPlayerTexture("default", "textures/misc/missing_texture")
# ChangeArmorTextures
描述
修改盔甲在场景中显示和在UI中显示的贴图
参数
参数名 数据类型 说明 armorIdentifier str 盔甲标识符,格式[namespace:name:auxvalue],auxvalue默认为0 texturesDict dict 场景中目标贴图的映射表,格式可参考"definitions/attachables/diamond_helmet.json"配置 uiIconTexture str 盔甲UI图标的贴图, 为None或者""的话表示不修改UI上的图标 返回值
数据类型 说明 bool 修改是否成功(因为采用延迟加载,此处返回成功不代表参数中的贴图路径正确,路径错误会导致渲染时贴图丢失显示异常) 备注
- 无法跟物品的贴图动画同时使用
- 有一定性能消耗,不建议频繁调用
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(levelId)
# 修改钻石头盔的显示为黄金头盔
textureDict = {
"default": "textures/models/armor/gold_1",
"enchanted": "textures/misc/enchanted_item_glint"
}
print(comp.ChangeArmorTextures("minecraft:diamond_helmet", textureDict, "textures/items/gold_helmet"))
# GetNotRenderAtAll
描述
获取实体是否不渲染
参数
无
返回值
数据类型 说明 bool True表示不渲染 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(entityId)
notRender = comp.GetNotRenderAtAll()
# RebuildActorRender
描述
重建生物的数据渲染器(该接口不支持玩家,玩家请使用RebuildPlayerRender)
参数
参数名 数据类型 说明 actorIdentifier str 实体identifier 返回值
数据类型 说明 bool 重建是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(levelId)
comp.RebuildActorRender('minecraft:villager')
# RebuildPlayerRender
描述
重建玩家的数据渲染器
参数
无
返回值
数据类型 说明 bool 重建是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RebuildPlayerRender()
# RemoveActorRenderController
描述
删除生物[渲染控制器](../../../03-自定义游戏内容/06-自定义生物/01-自定义基础生物.md#7. 自定义渲染控制器)
参数
参数名 数据类型 说明 actorIdentifier str 生物identifier renderControllerName str 渲染控制器名称 返回值
数据类型 说明 bool 删除是否成功 备注
- 调用该接口后需要调用RebuildActorRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(levelId)
comp.RemoveActorRenderController('minecraft:villager', 'custom_render_controller_name')
# RemovePlayerAnimationController
描述
移除玩家渲染动画控制器
参数
参数名 数据类型 说明 animationControllKey str 动画控制器键 返回值
数据类型 说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RemovePlayerAnimationController("root")
# RemovePlayerGeometry
描述
删除玩家渲染几何体
参数
参数名 数据类型 说明 geometryKey str 渲染几何体名称键,如玩家默认几何体default 返回值
数据类型 说明 bool 是否成功 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效 动画和贴图都是与几何体密切相关的,改变几何体也需要改变动画与贴图
示例
import mod.client.extraClientApi as clientApi
# geometry definition in player.entity.json
"geometry": {
"default": "geometry.humanoid.custom",
"cape": "geometry.cape"
}
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RemovePlayerGeometry("default")
# RemovePlayerRenderController
描述
删除玩家[渲染控制器](../../../03-自定义游戏内容/06-自定义生物/01-自定义基础生物.md#7. 自定义渲染控制器)
参数
参数名 数据类型 说明 renderControllerName str 渲染控制器名称 返回值
数据类型 说明 bool 删除是否成功 备注
- 调用该接口后需要调用RebuildPlayerRender才会生效
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateActorRender(playerId)
comp.RemovePlayerRenderController('custom_render_controller_name')
# SetNotRenderAtAll
描述
设置是否关闭实体渲染
参数
参数名 数据类型 说明 notRender bool True表示不渲染该实体 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
# 不渲染单个实体 entityId
comp = clientApi.GetEngineCompFactory().CreateActorRender(entityId)
comp.SetNotRenderAtAll(True)
# 重新开始渲染该实体
comp.SetNotRenderAtAll(False)
# auxValue
用于获取弓箭和药水实体的数据值
# GetAuxValue
描述
获取射出的弓箭或投掷出的药水的附加值
参数
无
返回值
数据类型 说明 int 具体数值见wiki的“箭”及“药水”页面 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateAuxValue(entityId)
auxValue = comp.GetAuxValue()
# brightness
客户端用来控制实体的亮度
# SetBrightness
描述
设置实体的亮度
参数
参数名 数据类型 说明 brightness float 0:纯黑
1:正常亮度
1-14:较亮甚至纯白
超过14:通常为纯白,即使数值改变也没有明显变化返回值
数据类型 说明 bool True:设置成功 False:设置失败 备注
- 目前只支持修改替换了骨骼模型的实体亮度,使用游戏原生模型的实体暂不予支持。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBrightness(entityId)
success = comp.SetBrightness(0.5)
# engineType
获取实体的类型
# GetEngineType
描述
获取实体类型
参数
无
返回值
数据类型 说明 int 详见EntityType 示例
import mod.client.extraClientApi as clientApi
from mod_log import logger as logger
comp = clientApi.GetEngineCompFactory().CreateEngineType(entityId)
entityType = comp.GetEngineType()
# 以判断是否是 Mob 为例,如果要判断是否为弹射物,找到对应的类型Projectile修改即可
if entityType & serverApi.GetMinecraftEnum().EntityType.Mob == serverApi.GetMinecraftEnum().EntityType.Mob:
logger.info("{} is Mod".format(comp.GetEngineTypeStr())
# 或者通过Minecraft枚举值文档找到 Mob 的值为 0x00000100 即 256
if entityType & 0x0000010 == 0x0000010:
logger.info("{} is Mod".format(comp.GetEngineTypeStr())
if entityType & 256 == 256:
logger.info("{} is Mod".format(comp.GetEngineTypeStr())
# GetEngineTypeStr
描述
获取实体的类型名称
参数
无
返回值
数据类型 说明 str 实体类型名称,如minecraft:husk 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateEngineType(entityId)
strType = comp.GetEngineTypeStr()
# health
客户端用来设置血条颜色,血条背景相关的组件
# SetColor
描述
设置血条的颜色及背景色
参数
参数名 数据类型 说明 front tuple(float,float,float,float) 血条颜色的RGBA值,范围0-1 back tuple(float,float,float,float) 背景颜色的RGBA值,范围0-1 返回值
无
备注
- 必须用game组件设置ShowHealthBar时才能显示血条!!
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateHealth(entityId)
comp.SetColor((0, 0, 0, 1), (1, 1, 1, 1))
# ShowHealth
描述
设置某个entity是否显示血条,默认为显示
参数
参数名 数据类型 说明 show bool 设置是否显示 返回值
无
备注
- 必须用game组件设置ShowHealthBar时才能显示血条!!
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateHealth(entityId)
# 设置该entity不显示血条
comp.ShowHealth(False)
# modAttr
用于支持脚本层的属性管理
# GetAttr
描述
获取属性值
参数
参数名 数据类型 说明 paramName str 属性名称,str的名称建议以mod命名为前缀,避免多个mod之间冲突 defaultValue any 属性默认值,属性不存在时返回该默认值,此时属性值依然未设置 返回值
数据类型 说明 any 返回属性值 备注
- defaultValue不传的时候默认为None
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModAttr(entityId)
comp.GetAttr('health')
# RegisterUpdateFunc
描述
注册属性值变换时的回调函数,当属性变化时会调用该函数
参数
参数名 数据类型 说明 paramName str 监听的属性名称 func function 监听的回调函数 返回值
无
备注
- 回调函数需要接受一个参数,参数是dict,具体数据示例:{'oldValue': 0, 'newValue': 1, 'entityId': ’-433231231231‘}
示例
import mod.client.extraClientApi as clientApi
# 这个entityId传的是所需要监听的对象的Id
comp = clientApi.GetEngineCompFactory().CreateModAttr(entityId)
comp.RegisterUpdateFunc('health', self.jumpingText)
# 当脚本层的health属性变化时则会调用self.jumpingText
def jumpingText(self, data):
entityId = data['entityId']
oldValue = data['oldValue']
newValue = data['newValue']
# SetAttr
描述
设置客户端属性值
参数
参数名 数据类型 说明 paramName str 属性名称,str的名称建议以mod命名为前缀,避免多个mod之间冲突 paramValue any 属性值,支持python基础数据 返回值
无
备注
- 注意:这里设置了只在本地有效,并不会同步到服务端和其他客户端
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModAttr(entityId)
comp.SetAttr('health', 1)
# UnRegisterUpdateFunc
描述
反注册属性值变换时的回调函数
参数
参数名 数据类型 说明 paramName str 监听的属性名称 func function 监听的回调函数 返回值
无
备注
- 需要传注册时的同一个函数作为参数
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateModAttr(entityId)
comp.UnRegisterUpdateFunc('health', self.jumpingText)
# pos
客户端用来获取实体位置的组件
# GetFootPos
描述
获取实体脚所在的位置
参数
无
返回值
数据类型 说明 tuple(float,float,float) 位置信息 备注
- 获取实体脚底的位置(除了睡觉时)
- 类似接口参见获取实体位置
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePos(entityId)
#获取位置:
entityFootPos = comp.GetFootPos()
# GetPos
描述
获取实体位置
参数
无
返回值
数据类型 说明 tuple(float,float,float) 实体的坐标 备注
- 对于非玩家,获取到的是脚底部位的位置
- 对于玩家,如果处于行走,站立,游泳,潜行,滑翔状态,获得的位置比脚底位置高1.62,如果处于睡觉状态,获得的位置比最低位置高0.2
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePos(entityId)
#获取位置:
entityPos = comp.GetPos()
# queryVariable
客户端用来管理python查询变量状态,一般用来配合服务端组件actorRender对生物的渲染进行管理。
# Get
描述
获取某一个实体计算节点的值,如果不存在返回注册时的默认值
参数
参数名 数据类型 说明 variableName str 节点名称,必须以"query.mod."开头 返回值
数据类型 说明 float 节点的值 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateQueryVariable(entityId)
result = comp.Get('query.mod.state')
# GetMolangValue
描述
获取实体molang变量的值
参数
参数名 数据类型 说明 molangName str molang变量名称,如query.can_fly 返回值
数据类型 说明 float 节点的值,不存在返回None 备注
- 因为没有渲染上下文,某些molang无法通过该种方式获取到正确的值,如query.is_first_person、variable.is_first_person等。
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateQueryVariable(entityId)
result = comp.GetMolangValue('query.can_fly')
# Register
描述
注册实体计算节点
参数
参数名 数据类型 说明 variableName str 节点名称,必须以"query.mod."开头 defalutValue float 默认值 返回值
数据类型 说明 bool 注册是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateQueryVariable(levelId)
result = comp.Register('query.mod.state', 0.0)
# Set
描述
设置某一个实体计算节点的值
参数
参数名 数据类型 说明 variableName str 节点名称,必须以"query.mod."开头 value float 计算节点的值 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateQueryVariable(entityId)
result = comp.Set('query.mod.state', 1.0)
# UnRegister
描述
注销实体计算节点
参数
参数名 数据类型 说明 variableName str 节点名称,必须以"query.mod."开头 返回值
数据类型 说明 bool 注销是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateQueryVariable(levelId)
result = comp.UnRegister('query.mod.state')
# rot
客户端用来获取实体角度的组件,也可以用来设置本地玩家自己的旋转角度
# GetBodyRot
描述
支持设置实体的身体角度
参数
无
返回值
数据类型 说明 float 身体绕竖直方向的角度,单位是角度,如果没有身体,返回为0 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateRot(entityId)
y = comp.GetBodyRot()
# GetRot
描述
获取实体角度
参数
无
返回值
数据类型 说明 tuple(float,float) 俯仰角度及绕竖直方向的角度,单位是角度 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateRot(entityId)
x, y = comp.GetRot()
# SetRot
描述
设置实体的角度
参数
参数名 数据类型 说明 rot tuple(float,float) 俯仰角度及绕竖直方向的角度,单位是角度 返回值
数据类型 说明 bool 设置是否成功 备注
- 只能设置localplayer,即本地玩家自己
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateRot(entityId)
# 设为向上仰视45度,并朝向世界z轴正方向
comp.SetRot((-45, 0))
# 玩家
# camera
摄相机控制
# DepartCamera
描述
分离玩家与摄像机
参数
无
返回值
无
备注
- 分离之后,可以看到玩家四周
示例
import mod.client.extraClientApi as clientApi
# 第三人称锁定视角例子
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.DepartCamera()
comp.LockModCameraYaw(1) # 锁定左右视角
comp.LockModCameraPitch(1) # 锁定上下视角
comp.SetCameraOffset((0, 0, 15))
comp.SetCameraRot((45.0, 0.0))
# GetCameraAnchor
描述
获取相机锚点
参数
无
返回值
数据类型 说明 tuple(float,float,float) 锚点偏移量 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraAnchor()
# GetCameraOffset
描述
获取摄像机偏移量
参数
无
返回值
数据类型 说明 tuple(float,float,float) 偏移量 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraOffset()
# GetCameraPitchLimit
描述
获取摄像机上下角度限制值
参数
无
返回值
数据类型 说明 tuple(float,float) 上下角度限制值 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetCameraPitchLimit()
# GetCameraRot
描述
获取相机转向
参数
无
返回值
数据类型 说明 tuple(float,float) 转向 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
rot = comp.GetCameraRot()
# GetChosen
描述
获取屏幕点击位置的实体或方块信息,通常与GetEntityByCoordEvent配合使用
参数
无
返回值
数据类型 说明 dict 选中目标的数据,详见PickFacing接口的备注 备注
- 目前只有在第一人称视角才能准确获取
示例
import mod.client.extraClientApi as clientApi
# 当玩家点击屏幕时获取点击位置的entityId
class MyClientSystem(ClientSystem):
def __init__(self, namespace, name):
ClientSystem.__init__(self, namespace, name)
self.ListenForEvent('Minecraft', 'Engine', 'GetEntityByCoordEvent', self, self.click)
def click(self, args):
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
pickData = comp.GetChosen()
# GetChosenEntity
描述
获取屏幕点击位置的实体id,通常与GetEntityByCoordEvent配合使用
参数
无
返回值
数据类型 说明 str 实体id 备注
- 目前只有在第一人称视角才能准确获取
示例
# 当玩家点击屏幕时获取点击位置的entityId
import mod.client.extraClientApi as clientApi
class MyClientSystem(ClientSystem):
def __init__(self, namespace, name):
ClientSystem.__init__(self, namespace, name)
self.ListenForEvent('Minecraft', 'Engine', 'GetEntityByCoordEvent', self, self.click)
def click(self, args):
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
entityId = comp.GetChosenEntity()
# GetForward
描述
返回相机向前的方向
参数
无
返回值
数据类型 说明 tuple(float,float,float) 向前的方向 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetForward()
# GetFov
描述
获取视野大小
参数
无
返回值
数据类型 说明 float 即视频设置中的视野,单位为角度 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
fov = comp.GetFov()
# GetFpHeight
描述
获取本地玩家当前状态下,第一人称视角时的摄像机高度偏移量。游泳时,滑翔时以及普通状态下会有所不同
参数
无
返回值
数据类型 说明 float 高度偏移量 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
heightOffset = comp.GetFpHeight()
# GetPosition
描述
返回相机中心
参数
无
返回值
数据类型 说明 tuple(float,float,float) 相机中心位置 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.GetPosition()
# IsModCameraLockPitch
描述
是否锁定摄像机上下角度
参数
无
返回值
数据类型 说明 bool 是否锁定 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.IsModCameraLockPitch()
# IsModCameraLockYaw
描述
是否锁定摄像机左右角度
参数
无
返回值
数据类型 说明 bool 是否锁定 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.IsModCameraLockYaw()
# LockCamera
描述
锁定摄像机
参数
参数名 数据类型 说明 lockPos tuple(float,float,float) 世界坐标 lockRot tuple(float,float) 摄像机的角度(俯仰角及偏航角) 返回值
数据类型 说明 bool 设置是否成功 备注
- 锁定摄像机时只是锁定画面视角,玩家仍然可以移动
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
# 把摄像机固定在(0, 6, 0),并且30度俯视,朝向世界z轴正方向
comp.LockCamera((0, 6, 0), (30, 0))
# LockModCameraPitch
描述
锁定摄像机上下角度(第三人称下生效,锁定后不能上下调整视角)
参数
参数名 数据类型 说明 enable int 1:锁定 0:解锁 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.LockModCameraPitch(1)
# LockModCameraYaw
描述
锁定摄像机左右角度(第三人称下生效,锁定后不能通过鼠标左右调整视角)
参数
参数名 数据类型 说明 enable int 1:锁定 0:解锁 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.LockModCameraYaw(1)
# PickFacing
描述
获取准星选中的实体或者方块
参数
无
返回值
数据类型 说明 dict 选中目标的数据,详见备注 备注
- 选中目标为实体时,返回值为:
{ "type": "Entity", "entityId": entityId }
- 选中目标为方块时,返回值为:
{ "type": "Block", "x": x, "y": y, "z": z, "face": face }
- 没有选中目标时,返回值为:
{ "type": "None" }
- 选中目标为实体时,返回值为:
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
pickData = comp.PickFacing()
# ResetCameraBindActorId
描述
将摄像机重新绑定回主角身上
参数
无
返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.ResetCameraBindActorId()
# SetCameraAnchor
描述
设置相机锚点,暂时只支持高度,其他维度无效
参数
参数名 数据类型 说明 offset tuple(float,float,float) 锚点偏移量 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraAnchor((0,1,0))
# SetCameraBindActorId
描述
将摄像机绑定到目标实体身上(调用者与目标必须在同一个dimension,同时需要在加载范围之内,若绑定后目标离开了范围或者死亡,则会自动解除绑定)
参数
参数名 数据类型 说明 targetId str 目标实体id 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraBindActorId('1234')
# SetCameraOffset
描述
设置摄像机偏移量
参数
参数名 数据类型 说明 offset tuple(float,float,float) 偏移量 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraOffset((1, 1, 1))
# SetCameraPitchLimit
描述
设置摄像机上下角度限制值,默认是(-90,90)
参数
参数名 数据类型 说明 limit tuple(float,float) 上下角度限制值 返回值
数据类型 说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.DepartCamera()
comp.SetCameraPitchLimit((-30, 30))
# SetCameraPos
描述
设置相机中心的位置
参数
参数名 数据类型 说明 pos tuple(float,float,float) 位置 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraPos((1, 1, 1))
# SetCameraRot
描述
设定相机转向
参数
参数名 数据类型 说明 rot tuple(float,float) 转向 返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetCameraRot((1, 1))
# SetFov
描述
设置视野大小
参数
参数名 数据类型 说明 fov float 单位为角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetFov(60)
# SetSpeedFovLock
描述
是否锁定相机视野fov,锁定后不随速度变化而变化
参数
参数名 数据类型 说明 isLocked bool 是否锁定 返回值
无
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.SetSpeedFovLock(True)
# UnDepartCamera
描述
绑定玩家与摄像机
参数
无
返回值
无
备注
- 绑定之后,只能看到玩家背部
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.UnDepartCamera()
# UnLockCamera
描述
解除摄像机锁定
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCamera(levelId)
comp.UnLockCamera()
# player
# ClosePlayerHitBlockDetection
描述
关闭碰撞方块的检测,关闭后将不会触发OnPlayerHitBlockClientEvent事件
参数
无
返回值
数据类型 说明 bool 是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.ClosePlayerHitBlockDetection()
# ClosePlayerHitMobDetection
描述
关闭碰撞生物的检测,关闭后将不会触发OnPlayerHitMobClientEvent事件
参数
无
返回值
数据类型 说明 bool 是否关闭成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.ClosePlayerHitMobDetection()
# OpenPlayerHitBlockDetection
描述
开启碰撞方块的检测,开启后碰撞时会触发OnPlayerHitBlockClientEvent事件
参数
参数名 数据类型 说明 precision float 碰撞检测精度,参数需要在区间[0, 1) 返回值
数据类型 说明 bool 是否设置成功 备注
- 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.OpenPlayerHitBlockDetection(0.0001)
# OpenPlayerHitMobDetection
描述
开启碰撞生物的检测,开启后碰撞时会触发OnPlayerHitMobClientEvent事件
参数
无
返回值
数据类型 说明 bool 是否开启成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.OpenPlayerHitMobDetection()
# getUid
描述
获取本地玩家的uid
参数
无
返回值
数据类型 说明 None或long 玩家uid 备注
- 不是客户端线程或者没有经过登录认证获取的uid为None。在当前机器上调用该接口获取的值为固定值,不依赖创建的player
- getUid接口不能在加载mod过程中使用,推荐开发者在OnLocalPlayerStopLoading事件触发之后再使用
示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
uid = comp.getUid()
# isGliding
描述
是否鞘翅飞行
参数
无
返回值
数据类型 说明 bool 是否鞘翅飞行 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isGliding()
# isInLava
描述
是否在岩浆中
参数
无
返回值
数据类型 说明 bool 是否在岩浆中 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isInLava()
# isInWater
描述
是否在水中
参数
无
返回值
数据类型 说明 bool 是否在水中 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isInWater()
# isMoving
描述
是否在行走
参数
无
返回值
数据类型 说明 bool 是否在行走 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isMoving()
# isOnGround
描述
是否触地
参数
无
返回值
数据类型 说明 bool 是否触地 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isOnGround()
# isRiding
描述
是否骑乘
参数
无
返回值
数据类型 说明 bool 是否骑乘 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isRiding()
# isSneaking
描述
是否潜行
参数
无
返回值
数据类型 说明 bool 是否潜行 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isSneaking()
# isSprinting
描述
是否在疾跑
参数
无
返回值
数据类型 说明 bool 是否在疾跑 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isSprinting()
# isSwimming
描述
是否游泳
参数
无
返回值
数据类型 说明 bool 是否游泳 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.isSwimming()
# setMoving
描述
设置是否行走,只能设置本地玩家(只适用于移动端)
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.setMoving()
# setSneaking
描述
设置是否潜行,只能设置本地玩家(只适用于移动端)
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.setSneaking()
# setSprinting
描述
设置是否疾跑,只能设置本地玩家v(只适用于移动端)
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.setSprinting()
# 物品
# item
获取玩家左右手和背包的物品信息
# ChangeItemTexture
描述
替换物品的贴图,修改后所有用到该贴图的物品都会被改变,后续创建的此类物品也会被改变。会同时修改物品在UI界面上的显示,手持时候的显示与场景掉落的显示。
参数
参数名 数据类型 说明 identifier str 物品标识符,格式[namespace:name:auxvalue],auxvalue默认为0 texturePath str 贴图路径 返回值
数据类型 说明 bool 是否修改成功(因为采用延迟加载,此处返回成功不代表贴图路径正确,路径错误会导致渲染时贴图丢失显示异常) 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(levelId)
print(comp.ChangeItemTexture("mytool:hatchet_1:0", "textures/items/hatchet_1"))
# GetCarriedItem
描述
获取右手物品的信息
参数
参数名 数据类型 说明 getUserData bool 是否获取物品的userData,默认为False 返回值
数据类型 说明 dict 物品信息字典,没有物品则返回None 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(entityId)
carriedData = comp.GetCarriedItem()
# GetItemBasicInfo
描述
获取物品的基础信息
参数
参数名 数据类型 说明 itemName str item的identifier auxValue int 物品的附加值auxvalue,默认为0 isEnchanted bool 是否附魔,默认为False。用于返回的idAux 返回值
数据类型 说明 dict 基础信息字典,见备注 备注
auxValue默认值是0,可以不设置。如果物品不存在,返回值为None
关键字 数据类型 说明 itemName str 本地化的物品名字 maxStackSize int 物品最大堆叠数目 maxDurability int 物品最大耐久值 idAux int 用于给UI的inventory_item_renderer类型控件绑定#item_id_aux字段,详见备注 tierDict dict 自定义方块定义的挖掘相关的属性 netease:tier,没有设置时返回None idAux字段的示例: 在ui中添加一个inventory_item_renderer控件以及#item_id_aux的绑定
"my_item_renderer": { "type": "custom", "renderer": "inventory_item_renderer", "size": [ 160, 160 ], "bindings" : [ { "binding_condition" : "always_when_visible", "binding_name" : "#GetItemIdAux", "binding_name_override" : "#item_id_aux" } ] }
然后在python中添加绑定回调
@ViewBinder.binding(ViewBinder.BF_BindInt, "#GetItemIdAux") def OnStarkGridResize(self): comp = clientApi.GetEngineCompFactory().CreateItem(levelId) info = comp.GetItemBasicInfo("minecraft:bow", 0, True) return info['id_aux']
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetItemBasicInfo("minecraft:bow")
# GetItemEffectName
描述
获取物品的状态描述,如:§7保护 0§r
参数
参数名 数据类型 说明 itemName str item的identifier auxValue int 物品的附加值auxValue,默认为不指定auxValue(0) userData dict 物品userData,默认为None 返回值
数据类型 说明 str 物品的状态描述 示例
# 灾厄旗帜
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetItemEffectName("minecraft:banner", 15, {'Type': 1})
# GetItemFormattedHoverText
描述
获取物品的格式化hover文本,如:§f灾厄旗帜§r
参数
参数名 数据类型 说明 itemName str item的identifier auxValue int 物品的附加值auxValue,默认为不指定auxValue(0) showCategory bool 是否包括item的类别信息,默认False userData dict 物品userData,默认为None 返回值
数据类型 说明 str 物品的格式化hover文本 示例
# 灾厄旗帜
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetItemFormattedHoverText("minecraft:banner", 15, True, {'Type': 1})
# GetItemHoverName
描述
获取物品的hover名称,如:灾厄旗帜§r
参数
参数名 数据类型 说明 itemName str item的identifier auxValue int 物品的附加值auxValue,默认为不指定auxValue(0) userData dict 物品userData,默认为None 返回值
数据类型 说明 str 物品hover名称 示例
# 灾厄旗帜
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(levelId)
comp.GetItemHoverName("minecraft:banner", 15, {'Type': 1})
# GetOffhandItem
描述
获取左手物品的信息
参数
参数名 数据类型 说明 getUserData bool 是否获取物品的userData,默认为False 返回值
数据类型 说明 dict 物品信息字典,没有物品则返回None 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(entityId)
offhandData = comp.GetOffhandItem()
# GetSlotId
描述
获取当前手持的快捷栏的槽id
参数
无
返回值
数据类型 说明 int 0到8 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(entityId)
slotId = comp.GetSlotId()
# GetUserDataInEvent
描述
使物品相关客户端事件的物品信息字典参数带有userData。在mod初始化时调用即可
参数
参数名 数据类型 说明 eventName str 引擎事件名 返回值
数据类型 说明 bool 是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateItem(levelId)
# 这样调用之后,ActorAcquiredItemClientEvent事件的itemDict参数会带有userData字段
comp.GetUserDataInEvent("ActorAcquiredItemClientEvent")
# recipe
# GetRecipesByResult
描述
通过输出物品查询配方所需要的输入材料
参数
参数名 数据类型 说明 resultIdentifier str 输出物品的标识符 tag str 对应配方json中的tags字段里面的值 aux int 输出物品的附加值, 不传参的话默认为0 返回值
数据类型 说明 list(dict) 返回符合条件的配方列表 备注
- 若配方为酿造台配方时,由于原版实现没有存储相应信息,不匹配tag标签与aux值
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateRecipe(clientApi.GetLevelId())
print(comp.GetRecipesByResult("minecraft:boat", "crafting_table", 4))
# 文字面板
# textBoard
用于更新文字面板。文字面板的创建见“创建文字面板”
# CreateTextBoardInWorld
描述
创建文字面板
参数
参数名 数据类型 说明 text str 文字显示内容 textColor tuple(float,float,float,float) 文字颜色的RGBA值,范围0-1 boardColor tuple(float,float,float,float) 可选参数,默认None,设置为黑色,面板颜色的RGBA值,范围0-1 faceCamera bool 是否始终朝向相机, 默认为True 返回值
数据类型 说明 int 返回生成的id,如果生成失败,返回None 备注
- 切换维度后会自动隐藏非本维度创建的而且没有绑定实体的文字面板, 回到该维度后会自动重新显示
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
comp.CreateTextBoardInWorld("我显示在世界坐标位置",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1), True)
# RemoveTextBoard
描述
删除文字面板
参数
参数名 数据类型 说明 boardId int 创建的时候返回的id 返回值
数据类型 说明 bool 是否删除成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在世界坐标位置",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1), True)
if boardId:
comp.RemoveTextBoard(boardId)
# SetBoardBackgroundColor
描述
修改背景颜色
参数
参数名 数据类型 说明 boardId int 文字面板的id backgroundColor tuple(float,float,float,float) 颜色的RGBA值,范围0-1 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardBackgroundColor(boardId, (1.0, 1.0, 1.0, 1.0))
# SetBoardBindEntity
描述
文字面板绑定实体对象
参数
参数名 数据类型 说明 boardId int 文字面板的id bindEntityId str 绑定entity的Id; 如果为None,则为取消实体绑定, 此时下面参数为世界坐标和旋转 offset tuple(float,float,float) 相对于实体的偏移量 rot tuple(float,float,float) 相对于实体的偏移角度 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
# SetBoardDepthTest
描述
设置是否开启深度测试, 默认状态下是开启
参数
参数名 数据类型 说明 boardId int 文字面板的id depthTest bool True为开启深度测试,False为不开启 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardDepthTest(boardId, False)
# SetBoardFaceCamera
描述
设置文字面板的朝向
参数
参数名 数据类型 说明 boardId int 文字面板的id faceCamera bool 是否始终朝向相机, 默认为True 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardFaceCamera(boardId, True)
# SetBoardPos
描述
修改位置
参数
参数名 数据类型 说明 boardId int 文字面板的id pos tuple(float,float,float) 坐标 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardPos(boardId, (0.0, 3.0, 0.0))
# SetBoardRot
描述
修改旋转角度, 若设置了文本朝向相机,则旋转角度的修改不会生效
参数
参数名 数据类型 说明 boardId int 文字面板的id rot tuple(float,float,float) 角度(不是弧度) 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardRot(boardId, (45.0, 90.0, 0.0))
# SetBoardScale
描述
内容整体缩放
参数
参数名 数据类型 说明 boardId int 文字面板的id scale tuple(float,float) x,y方向上的缩放值,要求值大于0,正常状态下是(1.0,1.0) 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardScale(boardId, (2.0, 2.0))
# SetBoardTextColor
描述
修改字体颜色
参数
参数名 数据类型 说明 boardId int 文字面板的id textColor tuple(float,float,float,float) 颜色的RGBA值,范围0-1 返回值
数据类型 说明 bool 返回是否设置成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateTextBoard(clientApi.GetLevelId())
boardId = comp.CreateTextBoardInWorld("我显示在玩家头顶",(0.5, 0.4, 0.3, 0.8),(0, 0, 0, 1),True)
if boardId:
comp.SetBoardBindEntity(boardId, clientApi.GetLocalPlayerId(), (0.0, 1.5, 0.0), (0.0, 0.0, 0.0))
comp.SetBoardTextColor(boardId, (1.0, 1.0, 0.0, 0.8))
# 序列帧
# frameAniControl
用于设置序列帧的播放控制相关属性
# Play
描述
播放序列帧
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Play()
# SetDeepTest
描述
设置序列帧是否透视,默认为否
参数
参数名 数据类型 说明 deepTest bool False表示透视,则被物体/方块阻挡时仍然能看到序列帧 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为透视
comp.SetDeepTest(False)
# SetFaceCamera
描述
设置序列帧是否始终朝向摄像机,默认为是
参数
参数名 数据类型 说明 face bool True表示朝摄像机 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为不始终朝摄像机
comp.SetFaceCamera(False)
# SetFadeDistance
描述
设置序列帧开始自动调整透明度的距离。序列帧与摄像机之间的距离小于该值时会自动调整序列帧的透明度,距离摄像机越近,序列帧越透明
参数
参数名 数据类型 说明 fadeDistance float 自动调整透明度的距离,应为正数,负数将视作零来处理 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置该序列帧在与相机距离小于3时会自动调整透明度
comp.SetFadeDistance(3)
# SetLayer
描述
设置序列帧渲染层级,默认层级为1,当层级不为1时表示该特效开启特效分层渲染功能。特效(粒子和帧动画)分层渲染时,层级越高渲染越靠后,层级大的会遮挡层级低的,且同一层级的特效会根据特效的相对位置产生正确的相互遮挡关系。
参数
参数名 数据类型 说明 layer int 粒子渲染层级,总共包含0-15的层级。 返回值
数据类型 说明 bool 设置是否成功 备注
- 该接口只针对序列帧进行设置,粒子特效请使用particleControl组件
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为渲染层级为2
comp.SetLayer(2)
# SetLoop
描述
设置序列帧是否循环播放,默认为否
参数
参数名 数据类型 说明 loop bool True表示循环播放 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置为循环播放
comp.SetLoop(True)
# SetMixColor
描述
设置序列帧混合颜色
参数
参数名 数据类型 说明 color tuple(float,float,float,float) 颜色的RGBA值,范围0-1 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置颜色为红色半透明
color = (1, 0, 0, 0.5)
comp.SetMixColor(color)
# SetUsePointFiltering
描述
设置序列帧是否使用点滤波
参数
参数名 数据类型 说明 use bool True为使用点滤波,False为使用双线性插值(默认使用) 返回值
数据类型 说明 bool 设置是否成功 备注
- 使用点滤波的图像通常边缘清晰、可能会有较强烈的锯齿感;使用双线性插值的图像通常比较平滑、可能会使图像一定程度上变得模糊
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
# 设置该序列帧使用点滤波
comp.SetUsePointFiltering(True)
# Stop
描述
停止序列帧(不是暂停)
参数
无
返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniControl(frameEntityId)
comp.Stop()
# frameAniEntityBind
用于将序列帧绑定到实体
# Bind
描述
绑定entity
参数
参数名 数据类型 说明 bindEntityId str 绑定的entity的ID offset tuple(float,float,float) 绑定的偏移量 rot tuple(float,float,float) 绑定的旋转角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniEntityBind(frameEntityId)
comp.Bind(entityId, (0, 1, 0), (0, 0, 0))
# frameAniSkeletonBind
用于将序列帧绑定到骨骼模型
# Bind
描述
绑定骨骼模型
参数
参数名 数据类型 说明 modelId int 绑定的骨骼模型的ID(见model组件的GetModelId) boneName str 绑定具体骨骼的名称 offset tuple(float,float,float) 绑定的偏移量 rot tuple(float,float,float) 绑定的旋转角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniSkeletonBind(frameEntityId)
comp.Bind(modelId, "root", (0, 1, 0), (0, 0, 0))
# frameAniTrans
用于设置序列帧的transform属性
# SetPos
描述
设置序列帧的位置
参数
参数名 数据类型 说明 pos tuple(float,float,float) 世界坐标 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
comp.SetPos((0, 5, 0))
# SetRot
描述
设置序列帧的旋转
参数
参数名 数据类型 说明 rot tuple(float,float,float) 按顺序绕局部坐标系的+x,-y,+z轴旋转的角度 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
# 绕y轴旋转90度,然后绕旋转后的z轴旋转90度
comp.SetRot((0, -90, 90))
# SetScale
描述
设置序列帧的缩放
参数
参数名 数据类型 说明 scale tuple(float,float,float) 对于平面序列帧,第一个参数为贴图横向上的缩放,第二个参数为纵向上的缩放,第三个参数无用。对于环状序列帧,为三个坐标轴上的缩放 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateFrameAniTrans(frameEntityId)
# 横向拉伸为2倍,纵向不变
comp.SetScale((2, 1, 1))
# 音效
# customAudio
用于播放自定义音效
# DisableOriginMusic
描述
停止原生背景音乐
参数
参数名 数据类型 说明 disable bool True表示停止,False表示恢复 返回值
数据类型 说明 bool 设置是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
comp.DisableOriginMusic(True)
# Play
描述
播放自定义音效
参数
参数名 数据类型 说明 name str 音效名称 pos tuple(float,float,float) 播放位置 volume float 音量大小,范围0-1 pitch float 播放速度,范围0-256,1表示原速 返回值
数据类型 说明 bool 播放是否成功 备注
- 与示例对应的sound_definitions.json配置:
{ "testaudio": { "category": "music", "min_distance": 0.0, "sounds": [ { "name": "sounds/testaudio/largeBlast1", "load_on_low_memory": true } ] } }
- 目前自定义音效支持fsb、wav、ogg格式
- 详细的配置及使用请参考样例mod
- sound_definitions.json位于resources\sounds目录下,对音效进行配置,name字段表示resources目录下音效资源的路径
- 与示例对应的sound_definitions.json配置:
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
comp.Play("testaudio", (0, 5, 0), 1.0, 1.0)
# PlayCustomMusic
描述
播放自定义音乐
参数
参数名 数据类型 说明 name str 音乐名称 pos tuple(float,float,float) 播放位置 volume float 音量大小,范围0-1,可以从json文件里进行修改 pitch float 播放速度,范围0-256,1表示原速,可以从json文件里进行修改 loop bool 是否循环播放 entityId str 绑定的实体id,默认为None,若有绑定的实体,则pos参数为相对于实体的坐标 返回值
数据类型 说明 str 音乐播放id,可用于控制音乐的停止和循环 备注
当播放音乐错误时,将返回相应的错误id
错误 错误描述 -1 无法在服务端播放自定义音乐 -2 播放位置错误 -3 已有同名全局音乐正在播放 -4 播放失败 -5 绑定实体不存在 当全局音乐在播放的时候,请不要播放同名的普通音乐
针对比较大的音乐,请将load_on_low_memory和stream设为true
与示例对应的sound_definitions.json配置:
{ "sound001": { "min_distance": 0, "max_distance": 20.0, "sounds": [ { "name": "sounds/testaudio/largeBlast1", "load_on_low_memory": true, "stream": true, "pitch": 1, "volume": 1 } ] } }
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
musicId = comp.PlayCustomMusic("sound001", (1,1,1), 1, 1, False, None)
# PlayGlobalCustomMusic
描述
播放全局自定义音乐
参数
参数名 数据类型 说明 name str 音乐名称 volume float 音量大小,范围0-1,可以从 json 文件里进行修改 loop bool 是否循环播放 返回值
数据类型 说明 bool 播放是否成功 备注
- 全局音乐的播放速度需要从配置json里进行修改
- 全局音乐仅能播放一个,当指定全局音乐播放时,会停止掉之前播放的音乐
- 全局音乐的优先级大于普通音乐,当全局音乐在播放时,会让同名普通音乐播放失败
- 针对比较大的全局音乐,请将load_on_low_memory和stream设为true
- 全局音乐需要在json里定义category为music
- 与示例对应的sound_definitions.json配置:
{ "Gsound001": { "category": "music", "sounds": [ { "name": "sounds/testaudio/Music001", "load_on_low_memory": true, "stream": true, "pitch": 1, "volume": 1 } ] } }
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
comp.PlayGlobalCustomMusic("Gsound001", 1, 1, False)
# SetCustomMusicLoop
描述
设定指定音乐是否循环播放,包括全局音乐
参数
参数名 数据类型 说明 name str 音乐名称 loop bool True则循环播放,False则停止循环,停止会持续到播放到本次结束 返回值
数据类型 说明 bool 停止是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
comp.SetCustomMusicLoop("soundName", True)
# SetCustomMusicLoopById
描述
设定指定音乐是否循环播放
参数
参数名 数据类型 说明 musicId str 音乐id,播放指定音乐获取的音乐id loop bool True则循环播放,False则停止循环,停止会持续到播放到本次结束 返回值
数据类型 说明 bool 停止是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
musicId = comp.PlayCustomMusic("sound001", (1,1,1), 1, 1, False, False)
comp.SetCustomMusicLoopById(musicId, True)
# StopCustomMusic
描述
停止自定义音乐,包括全局音乐,将依据fadeOutTime触发OnMusicStopClientEvent事件
参数
参数名 数据类型 说明 name str 音乐名称 fadeOutTime float 停止的淡出时间,单位为秒,如果剩余时间小于淡出时间,将以剩余时间为准 返回值
数据类型 说明 bool 停止是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
comp.StopCustomMusic("soundName", 0)
# StopCustomMusicById
描述
停止自定义音乐
参数
参数名 数据类型 说明 musicId str 音乐id,播放指定音乐获取的音乐id fadeOutTime float 停止的淡出时间,单位为秒 返回值
数据类型 说明 bool 停止是否成功 示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateCustomAudio(entityId)
musicId = comp.PlayCustomMusic("sound001", (1,1,1), 1, 1, False, False)
comp.StopCustomMusicById(musicId, 0)
# systemAudio
用于播放原版音效
# Play
描述
播放原版音效
参数
参数名 数据类型 说明 soundId int SysSoundType枚举 pos tuple(float,float,float) 播放位置 entityType int EntityType枚举 blockId int BlockType枚举 isBaby bool 是否幼儿 isGlobal bool 是否全局 返回值
数据类型 说明 bool 播放是否成功 备注
- 对于死亡音效,因为死亡跟block无关,因此blockId为-1,其他参数根据实际情况选择
- 对于着地音效,与实体类型及幼儿属性无关,而着地到不同的block,音效是不一样的,根据实际情况设置blockId
示例
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateSystemAudio(entityId)
# 播放幼年鸡死亡的音效
comp.Play(
clientApi.GetMinecraftEnum().SysSoundType.Death,
(0, 5, 0),
clientApi.GetMinecraftEnum().EntityType.Chicken,
-1,
True,
False
)
# 播放着地音效
comp.Play(
clientApi.GetMinecraftEnum().SysSoundType.FallBig,
(0, 5, 0),
clientApi.GetMinecraftEnum().EntityType.Undefined,
clientApi.GetMinecraftEnum().BlockType.grass,
False,
False
)