# 客户端组件

# 存储

# 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.pngcubemap_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目录下音效资源的路径
  • 示例

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
)