---
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 | 生成的微缩方块的资源字符串 |
- 示例
```python
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 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlock(levelId)
blankPalette = comp.GetBlankBlockPalette()
```
### 客户端接口
method in mod.client.component.blockCompClient.BlockCompClient
- 描述
获取一个空白的方块调色板。
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BlockPaletteComponent | 返回生成的方块调色板实例,如获取失败则返回None |
- 示例
```python
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) | 终点方块位置 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BlockPaletteComponent | 返回生成的方块调色板实例,如创建失败则返回None |
- 备注
- 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
- 示例
```python
import mod.server.extraServerApi as serverApi
# playerId可以为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) | 终点位置 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| BlockPaletteComponent | 返回生成的方块调色板实例,如创建失败则返回None |
- 备注
- 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
- 需要等区域内的方块完全加载才能正确获取调色板
- 示例
```python
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 |
- 备注
- 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
- 示例
```python
import mod.server.extraServerApi as serverApi
# playerId可以为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 |
- 备注
- 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
- 需要等列表内的方块完全加载才能正确获取调色板
- 示例
```python
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
- 示例
```python
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。 |
- 示例
```python
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)
```