# 方块实体

# CleanBlockTileEntityCustomData

服务端

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    清空指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    bool 清空结果,假如对应位置的block不存在或者没有绑定的TileEntity,就会失败
  • 备注

    • 如果dimensionId不传或传入负值,该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
dimensionId = 0
suc = comp.CleanBlockTileEntityCustomData(pos, dimensionId)
print "CleanBlockTileEntityCustomData pos=%s suc=%s" % (str(pos), suc)

# CreateFrameEffectForBlockEntity

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    在自定义方块实体上创建序列帧特效,创建后该接口返回序列帧特效的Id,利用该Id可以使用特效/序列帧中的接口对该序列帧特效进行播放、设置位置、大小等操作。与实体的序列帧特效创建方式类似。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    path str 特效资源路径,不需要后缀名,路径为resource_pack/textures文件夹下或resource_pack/effects下的序列帧资源文件的路径,路径名分别以"textures/"开头或"effects/"开头。路径名以"textures/"开头时不需要加.json后缀名, 路径名以"effects/"开头时需要加.json后缀名。
    frameKeyName str 该序列帧特效的自定义键值名称,创建序列帧特效后可以使用该键值名称通过GetFrameEffectIdInBlockEntity接口来获取序列帧特效的id。
    effectPos tuple(float,float,float) 特效相对自定义方块实体的位置,即以自定方块实体所在的位置为原点的坐标系下的坐标位置。
  • 返回值

    数据类型
    说明
    int或None 创建成功则返回序列帧特效的Id,创建失败则返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 以自定义方块实体所在的位置为原点,在这个原点上的坐标(1.0, 1.0, 1.0)的位置上使用resource_pack/textures下的资源创建序列帧特效
id1 = comp.CreateFrameEffectForBlockEntity(pos, "textures/sfxs/snow", "my_frame1", (1.0, 1.0, 1.0))
# 以自定义方块实体所在的位置为原点,在这个原点上的坐标(1.0, 1.0, 1.0)的位置上使用resource_pack/effects下的资源创建序列帧特效
id2 = comp.CreateFrameEffectForBlockEntity(pos, "effects/sfxs/snow.json", "my_frame2", (1.0, 1.0, 1.0))

# CreateParticleEffectForBlockEntity

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    在自定义方块实体上创建粒子特效,创建后该接口返回粒子特效的Id,利用该Id可以使用特效/粒子中的接口对该粒子特效进行播放、设置位置、大小等操作。与实体的粒子特效创建方式类似。若自定义方块实体已存在键值名称相同的特效,则不会创建新的特效,接口返回已有的特效Id。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    path str 特效资源路径,需要加上后缀名(一般是json)。路径为resource_pack/effects文件下的粒子特效json文件路径,路径名以"effects/"开头。
    particleKeyName str 该粒子特效的自定义键值名称,创建粒子特效后可以使用该键值名称通过GetParticleEffectIdInBlockEntity接口来获取粒子特效的id。
    effectPos tuple(float,float,float) 特效相对自定义方块实体的位置,即以自定方块实体所在的位置为原点的坐标系下的坐标位置。
  • 返回值

    数据类型
    说明
    int或None 创建成功则返回粒子特效的Id,创建失败则返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 以自定义方块实体所在的位置为原点,在这个原点上的坐标(1.0, 1.0, 1.0)的位置上创建粒子特效
id = comp.CreateParticleEffectForBlockEntity(pos, "effects/fire.json", "my_particle1", (1.0, 1.0, 1.0))

# ExecuteCommandBlock

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    执行一次命令方块

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.ExecuteCommandBlock((x, y, z), 0)

# GetBlockEntityData

服务端客户端

# 服务端接口

method in mod.server.component.blockEntityExDataCompServer.BlockEntityExDataCompServer

  • 描述

    用于获取可操作某个自定义方块实体数据的对象,操作方式与dict类似

  • 参数

    参数名
    数据类型
    说明
    dimension int 维度
    pos tuple(int,int,int) 方块所在位置
  • 返回值

    数据类型
    说明
    BlockEntityData或None 可操作该方块实体内数据的对象
  • 备注

    • GetBlockEntityData返回None通常是由于该方块所在区块未加载、正在退出游戏、该方块不是自定义方块或该自定义方块的json中并未配置netease:block_entity组件。
      在对GetBlockEntityData返回对象进行操作前,请先判断它是否为空,否则会导致'NoneType' object has no attribute '__getitem__'错误。
    • 支持python基本数据类型(int/float/string/bool/dict/list),不支持tuple且dict的key必须为字符串
    • 存储list时,list内各项的数据类型应相同,否则将存储失败。如[True, False]可成功存储,[True, 1, 0.5]会存储失败
    • 虽然返回的对象操作与dict相似,但并不支持嵌套存储,只允许形如blockEntityData['key'] = value的直接赋值。如blockEntityData["value5"] ["v1"] = 9或blockEntityData["value6"].append(True)的操作将无法成功存储数据。
    • 存储整数时,若数值范围超过int所能表示的最大范围,将无法成功存储。建议将此类数值转为字符串进行存储。
  • 示例

import mod.server.extraServerApi as serverApi
# 设置
blockEntitycomp = serverApi.GetEngineCompFactory().CreateBlockEntityData(levelId)
dimension = 0
pos = (4, 3, 2)
# GetBlockEntityData在某些情况下会返回None,对返回结果进行操作前务必先判断它是否为空
blockEntityData = blockEntitycomp.GetBlockEntityData(dimension, pos)
# 存储数据
# 支持存储python基本数据类型(int/float/string/bool/dict/list),不支持tuple,并且key必须为字符串
# 存储list时,list内各项的数据类型应相同,否则将存储失败
if blockEntityData:
    blockEntityData['value1'] = 10
    blockEntityData['value2'] = 3.5
    blockEntityData['value3'] = True
    blockEntityData['value4'] = "hello"
    blockEntityData['value5'] = {"v1": 10, "v2": 3.5, "v3": [0,1,2]}
    blockEntityData['value6'] = [True, False]
# 读取数据
if blockEntityData:
    value1 = blockEntityData['value1']
    value5 = blockEntityData['value5']
    # 不存在于方块实体中的数据将返回None
    valueNone = blockEntityData['valueNone']

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    用于获取方块(包括自定义方块)的数据,如需修改,请使用setblockentitydata接口

  • 参数

    参数名
    数据类型
    说明
    dimension int 维度
    pos tuple(int,int,int) 方块所在位置
  • 返回值

    数据类型
    说明
    dict或None 方块实体内数据的对象
  • 备注

    • 随着版本更迭,方块中包含的数据结构可能被微软团队调整,并且不会公告,使用该接口的开发者需注意版本更新时做好测试和兼容。数据编码为UTF-8 适用于:方块实体 (opens new window) 特殊情况:末影箱的物品信息不能通过该接口获取
    • 需要注意的是,由于该接口获取的是包含原版nbttag及自定义方块的数据,为了兼容原版nbttag,Python对象在获取出来时,会做一定的转换,如: None -> {"type" : 1, "value": 2} 因此,若不希望有类似转换,并且只需要获取自定义方块实体的数据, 请使用CreateBlockEntityData里的GetBlockEntityData接口
  • 示例

import mod.server.extraServerApi as serverApi
blockEntitycomp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
blockEntityData = blockEntitycomp.GetBlockEntityData(0, (4, 3, 2))

# 客户端接口

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    用于获取客户端当前维度中方块(包括自定义方块)的数据,数据只读不可写,无法获取箱子内的物品信息。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
  • 返回值

    数据类型
    说明
    dict或None 方块实体内数据的对象
  • 备注

    • 随着版本更迭,方块中包含的数据结构可能被微软团队调整,并且不会公告,使用该接口的开发者需注意版本更新时做好测试和兼容。数据编码为UTF-8 适用于:方块实体 (opens new window) 特殊情况:末影箱的物品信息不能通过该接口获取
    • 需要注意的是,由于该接口获取的是包含原版nbttag及自定义方块的数据,为了兼容原版nbttag,Python对象在获取出来时,会做一定的转换,如: None -> {"type" : 1, "value": 2} 因此,若不希望有类似转换,并且只需要获取自定义方块实体的数据, 请使用CreateBlockEntityData里的GetBlockEntityData接口
  • 示例

import mod.client.extraClientApi as clientApi
blockEntitycomp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
blockEntityData = blockEntitycomp.GetBlockEntityData((4, 3, 2))

# GetBlockEntityMolangValue

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    获取自定义方块实体的Molang变量的值。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    variableName str molang变量的名称,以"variable."开头,并且不能包含超过两个"."。
  • 返回值

    数据类型
    说明
    float 该molang变量的值,如该变量不存在,则返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.GetBlockEntityMolangValue(pos, "query.mod.idle")

# GetBlockTileEntityCustomData

服务端

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    读取指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
    key str 自定义key
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    any 设定的value值,假如对应的数据不存在,则会返回None
  • 备注

    • 如果dimensionId不传或传入负值,该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
dimensionId = 0
key = "owner"
val = comp.GetBlockTileEntityCustomData(pos, key, dimensionId)
print "GetBlockTileEntityCustomData pos=%s key=%s value=%s" % (str(pos), key, val)

# GetBlockTileEntityWholeCustomData

服务端

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    读取指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据字典。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    dict或None TileEntity自定义存储数据字典,假如没有任何额外存储数据,那么返回None或者空字典
  • 备注

    • 如果dimensionId不传或传入负值,该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
dimensionId = 0
data = comp.GetBlockTileEntityWholeCustomData(pos, dimensionId)
if not data:
    print "GetBlockTileEntityWholeCustomData pos=%s return empty" % (str(pos), )
else:
    print "GetBlockTileEntityWholeCustomData pos=%s return success" % (str(pos), )
if data:
    for key, val in data.iteritems():
        print "key=%s val=%s" % (key, str(val))

# GetCommandBlock

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    获取命令方块的设置内容

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    dict 命令方块的设置内容,详见备注
  • 备注

  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.GetCommandBlock((x, y, z), 0)

# GetFrameEffectIdInBlockEntity

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    获取在自定义方块实体中已创建的指定序列帧特效的Id,已创建的特效分为两种:一是通过resource_pack/entity/下的实体json文件中使用“netease_frame_effects”所定义的特效;二是使用接口CreateFrameEffectForBlockEntity创建的特效。 返回的特效Id可以使用特效/序列帧中的接口对该序列帧特效进行播放、设置位置、大小等操作。与实体的序列帧特效创建方式类似。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    frameKeyName str 序列帧特效的自定义键值名称,即:netease_frame_effects: { "keyName" : {"path“:“textures/sfxs/xxx.json”, "pos": [1.0, 1.0, 1.0f]} } 中的"keyName",又或者是通过CreateFrameEffectForBlockEntity创建特效时该接口中填写的frameKeyName参数。
  • 返回值

    数据类型
    说明
    int或None 返回序列帧特效的Id,该键值不存在则返回None
  • 示例

# 假设自定义方块实体定义了以下特效
# "minecraft:client_entity": {
#                  ...
#       "netease_frame_effects":{
#             "my_frame1" : { "path" : "textures/sfxs/snow.json", "pos": [1.0 , 1.0 , 1.0]},
#             ...
#        }
# }
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 获取名为"my_frame1"这个预设特效的特效Id
id = comp.GetFrameEffectIdInBlockEntity(pos, "my_frame1")

# GetFrameItem

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    获取物品展示框的物品

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    dict 物品信息字典,获取失败或没有物品则返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.GetFrameItem((x, y, z), 0)

# GetFrameItemDropChange

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    获取物品展示框里物品的掉落几率

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    float 掉落几率,取值范围为[0,1],获取失败返回-1
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.GetFrameItemDropChange((x, y, z), 0)

# GetFrameRotation

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    获取物品展示框里物品的顺时针旋转角度

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    float 旋转角度,取值范围[0~360],获取失败返回-1
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.GetFrameRotation((x, y, z), 0)

# GetHopperSpeed

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    获取漏斗运输一个物品所需的时间(单位:刻)

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    int 运输一个物品所需的时间(单位:刻)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.GetHopperSpeed((x, y, z), 0)

# GetParticleEffectIdInBlockEntity

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    获取在自定义方块实体中已创建的指定粒子特效的Id,已创建的特效分为两种:一是通过resource_pack/entity/下的实体json文件中使用“netease_particle_effects”所定义的特效;二是使用接口CreateParticleEffectForBlockEntity创建的特效。 返回的特效Id可以使用特效/粒子中的接口对该粒子特效进行播放、设置位置、大小等操作。与实体的粒子特效创建方式类似。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    particleKeyName str 粒子特效的自定义键值名称,即:netease_particle_effects: { "keyName" : {"path“:“effects/xxx.json”, "pos": [1.0, 1.0, 1.0f]} } 中的"keyName",又或者是通过CreateParticleEffectForBlockEntity创建特效时该接口中填写的particleKeyName参数。
  • 返回值

    数据类型
    说明
    int或None 返回粒子特效的Id,该键值不存在则返回None
  • 示例

# 需要自定义方块实体的entity.json文件具有如下定义:
# "minecraft:client_entity": {
#                  ...
#       "netease_particle_effects":{
#             "my_particle1" : { "path" : "effects/fire.json", "pos": [1.0 , 1.0 , 1.0]},
#             ...
#        }
# }
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 获取名为"my_particle1"这个预设特效的特效Id
id = comp.GetParticleEffectIdInBlockEntity(pos, "my_particle1")

# RemoveFrameEffectInBlockEntity

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    移除在自定义方块实体上创建的序列帧特效。移除后的特效Id将会失效。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    frameKeyName str 该序列帧特效的自定义键值名称。
  • 返回值

    数据类型
    说明
    bool 移除成功返回True, 该键值不存在则返回False
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 移除键值名为"my_frame1"的特效
comp.RemoveFrameEffectInBlockEntity(pos, "my_frame1")

# RemoveParticleEffectInBlockEntity

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    移除在自定义方块实体上创建的粒子特效。移除后的特效Id将会失效。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    particleKeyName str 该粒子特效的自定义键值名称。
  • 返回值

    数据类型
    说明
    bool 移除成功返回True, 该键值不存在则返回False
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 移除键值名为"my_particle1"的特效
comp.RemoveParticleEffectInBlockEntity(pos, "my_particle1")

# SetBlockEntityData

服务端

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    用于设置方块(包括自定义方块)的数据

  • 参数

    参数名
    数据类型
    说明
    dimension int 维度
    pos tuple(int,int,int) 方块所在位置
    nbtData dict 方块实体内数据的对象,可结合GetBlockEntityData使用,获取后修改部分数据后再进行设置。如果传空dict,大部分数据不会被改变,小部分数据会被设置为默认值
  • 返回值

    数据类型
    说明
    bool 设置是否成功
  • 备注

    • 随着版本更迭,方块中包含的数据结构可能被微软团队调整,并且不会公告,使用该接口的开发者需注意版本更新时做好测试和兼容。数据编码为UTF-8 适用于:方块实体 (opens new window) 特殊情况:末影箱的物品信息不能通过该接口设置 注意:面向、状态等数据修改只会影响方块实体的数据,不会影响方块的渲染表现 切记:如果忽略游戏原有规则随意修改nbt数据,可能会导致bug或游戏崩溃
  • 示例

import mod.server.extraServerApi as serverApi
blockEntitycomp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
blockEntityData = blockEntitycomp.GetBlockEntityData(0, (4, 3, 2))
if blockEntityData:
    blockEntityData["FrontText"]["Text"]["__value__"] = "test"
    blockEntitycomp.SetBlockEntityData(0, (4, 3, 2), blockEntityData)

# SetBlockEntityMolangValue

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    设置自定义方块实体的Molang变量,与实体的molang变量作用相同。目前主要用于控制自定义实体的动画状态转变。Molang变量的定义方式与原版实体的Molang变量定义方法相同。详细可参考自定义方块实体动画的教学文档。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    variableName str molang变量的名称,以"variable."开头,并且不能包含超过两个"."。
    value float molang变量的值
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 注意,自定义方块实体的Molang变量与微软原版的Molang变量定义和使用方式相同, 因此不需要调用实体/molang/中的Register接口及UnRegister接口进行注册和反注册,只需在entity.json中进行定义和初始化即可,这点与微软原版实体的使用方法相同,可参考微软原版实体的entity.json文件。
  • 示例

# 需要自定义方块实体的entity.json文件具有如下定义:
# "minecraft:client_entity": {
#                  ...
#       "scripts":{
#             // 注册"variable.mod_is_moving"这个molang变量并将其值初始化为1.0
#             "initialize": [  "variable.mod_is_moving = 1.0;" ],
#             ...
#        }
# }
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
# 设置molang变量的值来转变动画状态
comp.SetBlockEntityMolangValue(pos, "variable.mod_is_moving", 2.0)

# SetBlockTileEntityCustomData

服务端

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    设置指定位置的特殊方块(箱子、头颅、熔炉、花盆等)绑定的TileEntity内存储的自定义数据。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 绑定TileEntity的特殊方块的位置坐标
    key str 自定义key
    value any 支持python基本数据类型,tuple不支持
    dimensionId int 方块所在维度
  • 返回值

    数据类型
    说明
    bool 设置结果,假如对应位置的block不存在或者没有绑定的TileEntity,就会设置失败
  • 备注

    • 如果dimensionId不传或传入负值,该接口使用创建组件时的playerId来定位具体维度,且仅可获取玩家附近的方块,若方块位置离玩家太远,可能无法获取到正确的返回信息。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(playerId)
pos = (-1, 4, 34)
dimensionId = 0
suc = comp.SetBlockTileEntityCustomData(pos, "owner", "Jack", dimensionId)
print "SetBlockTileEntityCustomData pos=%s suc=%s" % (str(pos), suc)

# SetCommandBlock

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    对命令方块进行内容设置

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
    cmd str 命令输入
    name str 悬浮文本
    mode int 方块类型,详见枚举命令方块类型
    isConditional int 条件,详见枚举命令方块条件类型
    redstoneMode int 红石模式,详见枚举命令方块红石类型
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 如果使用该接口时,有玩家处于命令方块的操作界面会存在问题, (1)如果玩家修改了命令方块内容关闭ui时,客户端会向服务端发包,届时可能出现接口设置被玩家设置覆盖的情况。 (2)如果没做修改,关闭ui会导致客户端命令方块外观不会按照服务端的修改进行改变。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
cmd = "give @p green_candle"
name = "hello world"
mode = serverApi.GetMinecraftEnum().CommandBlockType.CYCLE
isConditional = serverApi.GetMinecraftEnum().ConditionType.UNCONDITIONAL
redstoneMode = serverApi.GetMinecraftEnum().RedstoneModeType.KEEP_ON
print comp.SetCommandBlock((x, y, z), 0, cmd, name, mode, isConditional, redstoneMode)

# SetEnableBlockEntityAnimations

客户端

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    设置是否开启自定义方块实体的动画效果,开启之后,自定义实体方块会按照实体文件中animation_controller所定义的动画状态机进行动画播放。关闭之后,则会停止所有动画播放。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块所在位置
    enable bool 是否开启自定义方块实体的动画播放
  • 返回值

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

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.SetEnableBlockEntityAnimations(pos, True)

# SetFrameItem

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    设置物品展示框的物品

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
    itemDict dict 详见物品信息字典
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
itemDict = {
    'itemName': 'minecraft:bow',
    'count': 15,
    'enchantData': [(serverApi.GetMinecraftEnum().EnchantType.BowDamage, 1),],
    'auxValue': 0,
    'customTips':'§c new item §r',
    'extraId': 'abc',
    'userData': { },
}
print comp.SetFrameItem((x, y, z), 0, itemDict)

# SetFrameItemDropChange

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    设置点击物品展示框时生成掉落的几率,默认为1

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
    change float 掉落几率,取值范围为[0,1]
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 展示框只在生存模式下会生成掉落物,该设置只有在展示框内有物品的时候才会存档
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.SetFrameItemDropChange((x, y, z), 0, 0)

# SetFrameRotation

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    设置物品展示框里物品的顺时针旋转角度

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
    rot float 旋转角度,取值范围[0~360]
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.SetFrameRotation((x, y, z), 0, 90)

# SetHopperSpeed

服务端

method in mod.server.component.blockEntityCompServer.BlockEntityCompServer

  • 描述

    设置漏斗运输一个物品所需的时间(单位:红石刻,1秒10刻),默认值为4刻,该设置存档

  • 参数

    参数名
    数据类型
    说明
    pos tuple(int,int,int) 方块位置
    dimensionId int 方块所在维度
    moveTime int 运输一个物品所需的时间(单位:刻)
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 该设置会决定漏斗吸取物品和推出物品的速度,即每过一个moveTime,漏斗会从其上方吸取一个物品,同时向连接的容器输送一个物品。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockEntity(levelId)
print comp.SetHopperSpeed((x, y, z), 0, 1)

CleanBlockTileEntityCustomData

CreateFrameEffectForBlockEntity

CreateParticleEffectForBlockEntity

ExecuteCommandBlock

GetBlockEntityData

服务端接口

客户端接口

GetBlockEntityMolangValue

GetBlockTileEntityCustomData

GetBlockTileEntityWholeCustomData

GetCommandBlock

GetFrameEffectIdInBlockEntity

GetFrameItem

GetFrameItemDropChange

GetFrameRotation

GetHopperSpeed

GetParticleEffectIdInBlockEntity

RemoveFrameEffectInBlockEntity

RemoveParticleEffectInBlockEntity

SetBlockEntityData

SetBlockEntityMolangValue

SetBlockTileEntityCustomData

SetCommandBlock

SetEnableBlockEntityAnimations

SetFrameItem

SetFrameItemDropChange

SetFrameRotation

SetHopperSpeed