# UI API

下面是UI的一些API接口文档,关于UI的使用请参照UI使用文档

下面的文档分为两个部分,一部分是在extraClientApi中,另一部分是ScreenNode基类的成员函数。

# extraClientApi

有一部分UI相关的接口分布在extraClientApi的UI分类中。

# ScreenNode

ScreenNode的一些有用的函数,界面Node节点的获取方式在UI使用文档中有详细说明。

	import mod.client.extraClientApi as clientApi
	uiNode = clientApi.GetUI("myModName", "myUIName")

假设下文中的函数,uiNode为获取到的ScreenNode继承类,调用的UI界面是按下面的节点树组织结构的

my_namespace
| main
	| image
	| image_button
	| text1
	| panel
		| text2
	| panel2
		| text_edit_box

# ChangeBindAutoScale

  • 描述

    设置已绑定实体的UI是否根据绑定实体与本地玩家间的距离动态缩放,只对已绑定实体的UI界面生效,如何将UI与实体绑定详见创建UI界面

  • 参数

    参数名 数据类型 说明
    autoScale int 1:动态缩放 0:不动态缩放
  • 返回值

    数据类型 说明
    bool 是否设置成功 True:成功 False:失败
  • 示例

succ = uiNode.ChangeBindAutoScale(1)

# ChangeBindEntityId

  • 描述

    修改绑定的实体id,只对已绑定实体的UI界面生效,如何将UI与实体绑定详见创建UI界面

  • 参数

    参数名 数据类型 说明
    entityId str 绑定的实体id
  • 返回值

    数据类型 说明
    bool 是否修改成功 True:成功 False:失败
  • 示例

succ = uiNode.ChangeBindEntityId(entityId)

# ChangeBindOffset

  • 描述

    修改与绑定实体之间的偏移量,只对已绑定实体的UI界面生效,如何将UI与实体绑定详见创建UI界面

  • 参数

    参数名 数据类型 说明
    offset tuple(float,float,float) 偏移量
  • 返回值

    数据类型 说明
    bool 是否修改成功 True:成功 False:失败
  • 备注

    • 不建议在第一人称视角下,将本地玩家绑定UI的偏移量设为(0, 0, 0)
  • 示例

succ = uiNode.ChangeBindOffset((0, 3, 0))

# Clone

  • 描述

    克隆一个已有的控件,修改它的名称,并将它挂接到指定的父节点上,目前文本、图片、按钮控件的克隆控件表现正常,其他复杂控件的克隆控件可能存在运行问题,建议在json编写的过程中,手动复制一份对应控件使用。

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始的控件路径
    parentPath str 为从main节点开始,父节点的控件路径
    newName str 为克隆成功后创建的新控件名称,新控件的路径为parentPath/newName
  • 返回值

    数据类型 说明
    bool 是否克隆成功
  • 示例

# we want to clone text2 named text3 on panel
parentPath = "/panel"
text2Path = "/panel/text2"
text3Name = "text3"
uiNode.Clone(text2Path, parentPath, text3Name)

# GetAllChildrenPath

  • 描述

    获取所有子节点的路径list

  • 参数

    参数名 数据类型 说明
    parentPath str 为从main节点开始,父节点的控件路径
  • 返回值

    数据类型 说明
    list(str) 返回父节点下的子节点的路径,会递归返回所有子节点,若节点无子节点,返回空list
  • 示例

# get panel's all children path
node.GetAllChildrenPath("/panel")

# GetBaseUIControl

  • 描述

    根据路径获取BaseUIControl实例

  • 参数

    参数名 数据类型 说明
    path str 当前控件的路径
  • 返回值

    数据类型 说明
    BaseUIControl 路径对应控件的BaseUIControl实例
  • 示例

# 根据路径获得BaseUIControl实例
text2Path = "/panel/text2"
text2UIControl = uiNode.GetBaseUIControl(text2Path)

# GetBindAutoScale

  • 描述

    获取该绑定实体的UI是否动态缩放,未绑定的UI将传回默认值1

  • 参数

  • 返回值

    数据类型 说明
    int 1:动态缩放 0:不动态缩放
  • 示例

autoScale = uiNode.GetBindAutoScale()

# GetBindEntityId

  • 描述

    获取该UI绑定的实体id,未绑定的UI将传回默认值None

  • 参数

  • 返回值

    数据类型 说明
    str 绑定的实体id
  • 示例

entityId = uiNode.GetBindEntityId()

# GetBindOffset

  • 描述

    获取该UI绑定实体的偏移量,未绑定的UI将传回默认值(0, 0, 0)

  • 参数

  • 返回值

    数据类型 说明
    tuple(float,float,float) 偏移量
  • 示例

offset = uiNode.GetBindOffset()

# GetChildrenName

  • 描述

    获取子节点的名称list

  • 参数

    参数名 数据类型 说明
    parentPath str 为从main节点开始,父节点的控件路径
  • 返回值

    数据类型 说明
    list(str) 返回父节点下的子节点的名称,不会递归返回所有子节点,若节点无子节点,返回空list
  • 示例

# get panel's children name
node.GetChildrenName("/panel")

# GetIsHud

  • 描述

    获得本界面的输入模式

  • 参数

  • 返回值

    数据类型 说明
    int 返回1表示该界面不屏蔽游戏操作,返回0则屏蔽。
  • 示例

# 我们需要获得本界面的输入模式
isHud = uiNode.GetIsHud()

# GetRichTextItem

  • 描述

    返回一个富文本控件实例

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始,继承自rich_text.RichTextPanel控件的路径
  • 返回值

  • 示例

# we want get a rich-text-item
richTextPath = "/RichTextPanel"
richTextItem = uiNode.GetRichTextItem(richTextPath)

# RemoveComponent

  • 描述

    动态删除某一控件

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始,被删除控件路径
    parentPath str 为从main节点开始,父节点的控件路径
  • 返回值

  • 示例

# we want to remove text2
text2Path = "/panel/text2"
parentPath = "/panel"
uiNode.RemoveComponent(text2Path, parentPath)

# SetIsHud

  • 描述

    设置本界面的输入模式

  • 参数

    参数名 数据类型 说明
    isHud int 设置1表示该界面不屏蔽游戏操作,设置0则屏蔽。
  • 返回值

  • 示例

# 我们需要设置本界面为HUD操作模式
uiNode.SetIsHud(1)

# SetRemove

  • 描述

    删除本界面节点

  • 参数

  • 返回值

  • 示例

# we want to remove this screen
uiNode.SetRemove()

# SetScreenVisible

  • 描述

    设置是否显示本界面

  • 参数

    参数名 数据类型 说明
    visible bool False为隐藏该界面,True为显示该界面
  • 返回值

  • 示例

# 我们隐藏当前UI的界面
uiNode.SetScreenVisible(False)

# SetSelectControl

  • 描述

    设置当年焦点所在的控件

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始,所要选中控件的路径
    enable bool True为选中componentPath所代表的控件,false为取消选中
  • 返回值

  • 示例

path = "/text_edit_box0"
uiNode.SetSelectControl(path, True)

# SetStackGridCount

  • 描述

    设置StackGrid控件的大小

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始,Grid控件的路径
    count int 设置StackGrid的内容数量
  • 返回值

  • 示例

# we want change stackgrid count
stackgridPath = "/stack_grid1"
uiNode.SetStackGridCount(stackgridPath, 3)

# SetUiEntity

  • 描述

    设置PaperDoll控件需要显示的生物模型,PaperDoll控件的配置方式详见控件介绍PaperDoll

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始的控件路径
    entityIdentifier str 生物定义中设定的identifier(暂不支持squid、horse、donkey、mule、zombie_horse、skeleton_horse、drowned、elder_guardian、ender_dragon,将在后续版本支持)
  • 返回值

  • 示例

# we want to show an entity model
imagePath = "/paper_doll0"
uiNode.SetUiEntity(imagePath, 'minecraft:cat')  # 而根据参数说明,传入'minecraft:squid'则无模型显示

# SetUiItem

  • 描述

    设置ItemRenderer控件显示的物品,ItemRenderer控件的配置方式详见控件介绍ItemRenderer

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始,需要被修改控件的路径
    itemName str 物品identifier
    auxValue int 物品附加值
    isEnchanted bool 可选参数,是否显示附魔效果,默认为False不显示
    userData dict 可选参数,如果是灾厄旗帜或焰火之星等带有userData的需要传入该参数才能正确显示,目前已知仅有灾厄旗帜和焰火之星需要传
  • 返回值

    数据类型 说明
    bool 是否设置结果,True为成功
  • 示例

#设置显示为木板block
itemRenderPath = "/panel/item_renderer"
itemName = "minecraft:wool"
auxValue = 0
uiNode.SetUiItem(itemRenderPath, itemName, auxValue)

# SetUiModel

  • 描述

    设置PaperDoll控件需要显示的模型,PaperDoll控件的配置方式详见控件介绍PaperDoll

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始的控件路径
    modelName str 骨骼模型的名称
    animateName str 动画名称,默认为'idle'
    looped bool 是否循环播放动画,默认为True
  • 返回值

    数据类型 说明
    bool 是否设置成功
  • 示例

# we want to change model
imagePath = "/paper_doll0"
uiNode.SetUiModel(imagePath, 'saber', 'idle', True)

# SetUiModelScale

  • 描述

    设置PaperDoll控件模型的缩放比例

  • 参数

    参数名 数据类型 说明
    componentPath str 为从main节点开始,被删除控件路径
    scale float PaperDoll的缩放比例,默认为1.0
  • 返回值

  • 备注

    • 当设置为原版生物模型时会导致偏移,建议开发者自行调整位置
  • 示例

imagePath = "/paper_doll0"
uiNode.SetUiModelScale(imagePath, 1.2)

# MiniMapBaseScreen

MiniMapBaseScreen继承于ScreenNode,实现了小地图基本的功能,并且封装了一些操作小地图的接口。 备注:该功能属于实验性功能,目前在低端机可能会出现性能问题,建议开发者合理地使用该功能。 注意事项: 1)不建议在飞行模式或者跑图模式下开启小地图; 2)如果重写了Create接口,请先调用一下super(MiniMapBaseScreen, self).Create(); 3)如果重写了Destroy接口,请先调用一下super(MiniMapBaseScreen, self).Destroy();

# AddEntityMarker

  • 描述

    增加实体位置标记

  • 参数

    参数名 数据类型 说明
    entityId str 实体Id
    texturePath str 头顶ICON贴图,如textures/blocks/border
    size tuple(float,float) 贴图大小,默认为(4,4)
    enableRotation bool 是否启用实体朝向,默认为False
  • 返回值

    数据类型 说明
    bool 是否增加成功
  • 示例

import mod.client.extraClientApi as clientApi
node = clientApi.CreateUI(modConfig.ModName, modConfig.UIName, {"mini_map_root_path": "/mainPanel"})
node.AddEntityMarker(entityId, "textures/ui/custom_head")

# AddStaticMarker

  • 描述

    增加地图上静态位置的标记

  • 参数

    参数名 数据类型 说明
    key str 标记Id
    vec2 tuple(float,float) 地图位置二维坐标(x,z)
    texturePath str 贴图路径
    size tuple(float,float) 贴图大小,默认为(4,4)
  • 返回值

    数据类型 说明
    bool 是否增加成功
  • 示例

import mod.client.extraClientApi as clientApi
node = clientApi.CreateUI(modConfig.ModName, modConfig.UIName, {"mini_map_root_path": "/mainPanel"})
node.AddStaticMarker("this_is_marker_key", (10,2), "textures/blocks/border", (3,3))

# RemoveEntityMarker

  • 描述

    删除实体位置标记

  • 参数

    参数名 数据类型 说明
    entityId str 实体Id
  • 返回值

    数据类型 说明
    bool 是否删除成功
  • 示例

import mod.client.extraClientApi as clientApi
node = clientApi.CreateUI(modConfig.ModName, modConfig.UIName, {"mini_map_root_path": "/mainPanel"})
node.RemoveEntityMarker(entityId)

# RemoveStaticMarker

  • 描述

    删除静态位置标记

  • 参数

    参数名 数据类型 说明
    key str 标记的Id
  • 返回值

    数据类型 说明
    bool 是否删除成功
  • 示例

import mod.client.extraClientApi as clientApi
node = clientApi.CreateUI(modConfig.ModName, modConfig.UIName, {"mini_map_root_path": "/mainPanel"})
node.RemoveStaticMarker(entityId)

# ZoomIn

  • 描述

    放大地图(最多放大一倍)

  • 参数

    参数名 数据类型 说明
    value float 在原有基础上的增量值,可以控制放大速度,默认为0.1
  • 返回值

    数据类型 说明
    bool 是否成功
  • 示例

import mod.client.extraClientApi as clientApi
node = clientApi.CreateUI(modConfig.ModName, modConfig.UIName, {"mini_map_root_path": "/mainPanel"})
node.ZoomIn(0.2)

# ZoomOut

  • 描述

    缩小地图(最多缩小一倍)

  • 参数

    参数名 数据类型 说明
    value float 在原有基础上的减少值,可以控制缩小速度,默认为0.1
  • 返回值

    数据类型 说明
    bool 是否成功
  • 示例

import mod.client.extraClientApi as clientApi
node = clientApi.CreateUI(modConfig.ModName, modConfig.UIName, {"mini_map_root_path": "/mainPanel"})
node.ZoomOut(0.2)