Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/世界/方块组合.md
2025-03-18 14:46:12 +08:00

13 KiB
Raw Blame History

sidebarDepth
sidebarDepth
1

方块组合

CreateMicroBlockResStr

服务端

method in mod.server.component.blockCompServer.BlockCompServer

  • 描述

    生成微缩方块资源Json字符串

  • 参数

    参数名
    数据类型
    说明
    identifier str 微缩方块唯一标识
    start tuple(int,int,int) 微缩起始坐标
    end tuple(int,int,int) 微缩结束坐标
    colorMap dict 默认为None微缩方块颜色对应表
    isMerge bool 默认为False是否合并同类型方块
    icon str 默认为空字符串,微缩方块图标,需要定义在 terrain_texture.json 中
  • 返回值

    数据类型
    说明
    str 生成的微缩方块的资源字符串
  • 备注

    • 联机大厅不支持
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlock(levelId)
result = comp.CreateMicroBlockResStr("x", (12, 60, 12), (26, 76, 26), colorMap={'minecraft:grass': [12, 22, 123, 255]}, isMerge=True, icon="micro_block_datiangou")
with open("micro_block_x.json", "w+") as f:
    f.write(result)
#该例子中,方块将以 (12 60 12) 为起点,以 (26 76 26) 为终点进行微缩,最终微缩方块里所有草方块的颜色为 rgba(12,22,123,255),实际显示颜色会依据环境光照微调,物品栏里的图标为 terrain_texture.json 里 micro_block_datiangou 对应的图片。

GetBlankBlockPalette

服务端客户端

服务端接口

method in mod.server.component.blockCompServer.BlockCompServer

  • 描述

    获取一个空白的方块调色板。

  • 参数

  • 返回值

    数据类型
    说明
    BlockPaletteComponent 返回生成的方块调色板实例如获取失败则返回None
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlock(levelId)
blankPalette = comp.GetBlankBlockPalette()

客户端接口

method in mod.client.component.blockCompClient.BlockCompClient

  • 描述

    获取一个空白的方块调色板。

  • 参数

  • 返回值

    数据类型
    说明
    BlockPaletteComponent 返回生成的方块调色板实例如获取失败则返回None
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlock(levelId)
blankPalette = comp.GetBlankBlockPalette()

GetBlockPaletteBetweenPos

服务端客户端

服务端接口

method in mod.server.component.blockCompServer.BlockCompServer

  • 描述

    根据输入的两个方块位置创建并获取一个方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。这个方块调色板包含了这两个位置之间的所有方块及其相对位置。

  • 参数

    参数名
    数据类型
    说明
    dimensionId int 方块所在维度
    startBlockPos tuple(int,int,int) 起始方块位置
    endBlockPos tuple(int,int,int) 终点方块位置
    eliminateAir bool 生成的方块调色板中是否剔除起始方块位置和终点方块位置之间多余的空气方块默认true。值为True时方块调色板中不记录这两个位置范围内多余的空气方块值为False时方块调色板中将记录这两个位置范围内多余的空气方块。
  • 返回值

    数据类型
    说明
    BlockPaletteComponent 返回生成的方块调色板实例如创建失败则返回None。如果输入的两个方块位置之间全是空气在eliminateAir为False情况下则返回一个包含所有空气方块的方块调色板而在eliminateAir为True情况下则直接返回None。
  • 备注

    • 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
  • 示例

import mod.server.extraServerApi as serverApi
# entityId可以为None也可以传入玩家的id。当传入的dimensionId为0或正值时依赖dimensionId来获取区域当传入的dimensionId为负值时依赖传入的playerId来获取区域。
comp = serverApi.GetEngineCompFactory().CreateBlock(entityId)
palette = comp.GetBlockPaletteBetweenPos(0, (200,64,200),(201,65,202))

客户端接口

method in mod.client.component.blockCompClient.BlockCompClient

  • 描述

    根据输入的两个位置创建并获取一个方块调色板,该接口会搜索这两个位置之间的所有方块创建方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。这个方块调色板包含了这两个位置之间的所有方块及其相对位置。

  • 参数

    参数名
    数据类型
    说明
    startPos tuple(int,int,int) 起始位置
    endPos tuple(int,int,int) 终点位置
    eliminateAir bool 生成的方块调色板中是否剔除起始位置和终点位置之间多余的空气方块默认True。值为True时方块调色板中不记录这两个位置范围内多余的空气方块值为False时方块调色板中将记录这两个位置范围内多余的空气方块。
  • 返回值

    数据类型
    说明
    BlockPaletteComponent 返回生成的方块调色板实例如创建失败则返回None。如果输入的两个方块位置之间全是空气在eliminateAir为False情况下则返回一个包含所有空气方块的方块调色板而在eliminateAir为True情况下则直接返回None。
  • 备注

    • 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
    • 需要等区域内的方块完全加载才能正确获取调色板
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlock(levelId)
palette = comp.GetBlockPaletteBetweenPos((200,64,200),(201,65,202))

GetBlockPaletteFromPosList

服务端客户端

服务端接口

method in mod.server.component.blockCompServer.BlockCompServer

  • 描述

    根据输入的方块位置列表创建并获取一个方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。创建的方块调色板包含了这个位置列表中的所有方块及其相对位置。

  • 参数

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

    数据类型
    说明
    BlockPaletteComponent 返回生成的方块调色板实例如创建失败则返回None
  • 备注

    • 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
  • 示例

import mod.server.extraServerApi as serverApi
# entityId可以为None也可以传入玩家的id。当传入的dimensionId为0或正值时依赖dimensionId来获取区域当传入的dimensionId为负值时依赖传入的playerId来获取区域。
comp = serverApi.GetEngineCompFactory().CreateBlock(entityId)
palette = comp.GetBlockPaletteFromPosList(0,
[(200,64,200),
(201,64,200)
(202,64,200)
])

客户端接口

method in mod.client.component.blockCompClient.BlockCompClient

  • 描述

    根据输入的方块位置列表创建并获取一个方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。创建的方块调色板包含了这个位置列表中的所有方块及其相对位置。

  • 参数

    参数名
    数据类型
    说明
    posList list(tuple(int,int,int)) 方块位置列表
  • 返回值

    数据类型
    说明
    BlockPaletteComponent 返回生成的方块调色板实例如创建失败则返回None
  • 备注

    • 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
    • 需要等列表内的方块完全加载才能正确获取调色板
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlock(levelId)
palette = comp.GetBlockPaletteFromPosList([
(200,64,200),
(201,64,200)
(202,64,200)
])

RegisterBlockPatterns

服务端

method in mod.server.component.blockCompServer.BlockCompServer

  • 描述

    注册特殊方块组合

  • 参数

    参数名
    数据类型
    说明
    pattern list(str) 方块组合位置
    defines dict 方块组合类型
    result_actor_name str 合成结果
  • 返回值

    数据类型
    说明
    bool 设置结果
  • 备注

    • 注意该pattern不限定方向只要能在任一平面上组合成功就能合成对应的实体。
    • 如示例代码所示,不需要放方块的位置需要显式定义为空气方块
    • 当引擎中已注册过相同的pattern和defines时该接口不会更新result_actor_name并返回False
    • namespace:name:aux_value当aux_value不填或者填时为通配如果有具体aux_value时只匹配特定方块 如'minecraft:wood'、'minecraft🪵'均通配木头,而'minecraft🪵0'只匹配橡木。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlock(levelId)
pattern = [
    'A#A',
    'XXX',
    'AXA'
    ]
defines ={
    '#': 'minecraft:gold_block',
    'X': 'minecraft:iron_block',
    'A': 'minecraft:air',
}
comp.RegisterBlockPatterns(pattern,defines,'minecraft:chicken')
#该例子左中右下放铁块,上面放金块,会生成一只鸡

SetBlockByBlockPalette

服务端

method in mod.server.component.blockCompServer.BlockCompServer

  • 描述

    根据输入的方块调色板内容,将调色板内记录的所有方块设置为实际的方块。

  • 参数

    参数名
    数据类型
    说明
    blockPalette BlockPaletteComponent 方块调色板由GetBlockPaletteBetweenPos以及GetBlockPaletteFromPosList接口获取
    dimensionId int 方块所在维度。如果输入的数值小于0则使用entityId获取设置方块的区块。
    pos tuple(int,int,int) 设置方块的原点位置,将以这个位置作为原点设置方块
    rotation int 方块组合体的旋转旋转方向为绕设置方块的原点位置所在的y轴进行旋转旋转角度仅支持-270,-180,-90,0,90,180,270。如果传入的不是这些值将取其中最接近输入值的数值。
    conflictMode int 冲突模式枚举可选参数默认为0。在生成过程中遇到生成的位置有其他方块的情况时那么将会根据冲突模式来进行处理。可以输入的值为:0,1,2, 分别代表: 0: 替换地图中的方块1: 跳过这个方块2: 放弃之后的生成过程。
  • 返回值

    数据类型
    说明
    bool 生成过程是否成功无法完成整个生成过程返回False完成整个生成过程则返回True。如果冲突模式为2时遇到冲突方块时放弃之后的生成过程这时候接口也会返回False。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlock(entityId)
palette = comp.GetBlockPaletteBetweenPos(0, (200,64,200),(201,65,202))
# 将方块以(205,64,200)为原点设置palette中的方块旋转90度冲突模式为0即替代地图中的方块
comp.SetBlockByBlockPalette(palette, 0, (205,64,200),90,0)