356 lines
12 KiB
Markdown
356 lines
12 KiB
Markdown
---
|
||
sidebarDepth: 1
|
||
---
|
||
# 方块组合
|
||
|
||
## CreateMicroBlockResStr
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
method in mod.server.component.blockCompServer.BlockCompServer
|
||
|
||
- 描述
|
||
|
||
生成微缩方块资源Json字符串
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| identifier | str | 微缩方块唯一标识 |
|
||
| start | tuple(int,int,int) | 微缩起始坐标 |
|
||
| end | tuple(int,int,int) | 微缩结束坐标 |
|
||
| colorMap | dict | 默认为None,微缩方块颜色对应表 |
|
||
| isMerge | bool | 默认为False,是否合并同类型方块 |
|
||
| icon | str | 默认为空字符串,微缩方块图标,需要定义在 terrain_texture.json 中 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| 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
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span><span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
### 服务端接口
|
||
|
||
<span id="s0"></span>
|
||
method in mod.server.component.blockCompServer.BlockCompServer
|
||
|
||
- 描述
|
||
|
||
获取一个空白的方块调色板。
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| BlockPaletteComponent | 返回生成的方块调色板实例,如获取失败则返回None |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreateBlock(levelId)
|
||
blankPalette = comp.GetBlankBlockPalette()
|
||
```
|
||
|
||
|
||
|
||
### 客户端接口
|
||
|
||
<span id="c0"></span>
|
||
method in mod.client.component.blockCompClient.BlockCompClient
|
||
|
||
- 描述
|
||
|
||
获取一个空白的方块调色板。
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| BlockPaletteComponent | 返回生成的方块调色板实例,如获取失败则返回None |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.client.extraClientApi as clientApi
|
||
comp = clientApi.GetEngineCompFactory().CreateBlock(levelId)
|
||
blankPalette = comp.GetBlankBlockPalette()
|
||
```
|
||
|
||
|
||
|
||
## GetBlockPaletteBetweenPos
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span><span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
### 服务端接口
|
||
|
||
<span id="s0"></span>
|
||
method in mod.server.component.blockCompServer.BlockCompServer
|
||
|
||
- 描述
|
||
|
||
根据输入的两个方块位置创建并获取一个方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。这个方块调色板包含了这两个位置之间的所有方块及其相对位置。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| dimensionId | int | 方块所在维度 |
|
||
| startBlockPos | tuple(int,int,int) | 起始方块位置 |
|
||
| endBlockPos | tuple(int,int,int) | 终点方块位置 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| 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))
|
||
```
|
||
|
||
|
||
|
||
### 客户端接口
|
||
|
||
<span id="c0"></span>
|
||
method in mod.client.component.blockCompClient.BlockCompClient
|
||
|
||
- 描述
|
||
|
||
根据输入的两个位置创建并获取一个方块调色板,该接口会搜索这两个位置之间的所有方块创建方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。这个方块调色板包含了这两个位置之间的所有方块及其相对位置。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| startPos | tuple(int,int,int) | 起始位置 |
|
||
| endPos | tuple(int,int,int) | 终点位置 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| BlockPaletteComponent | 返回生成的方块调色板实例,如创建失败则返回None |
|
||
|
||
- 备注
|
||
- 对于床方块,方块调色板获取床方块时,只会添加床头的方块,床尾方块会进行忽略。对于门方块,则只会添加门的下半部分的方块,门的上半部分会进行忽略。
|
||
- 需要等区域内的方块完全加载才能正确获取调色板
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.client.extraClientApi as clientApi
|
||
comp = clientApi.GetEngineCompFactory().CreateBlock(levelId)
|
||
palette = comp.GetBlockPaletteBetweenPos((200,64,200),(201,65,202))
|
||
```
|
||
|
||
|
||
|
||
## GetBlockPaletteFromPosList
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span><span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
### 服务端接口
|
||
|
||
<span id="s0"></span>
|
||
method in mod.server.component.blockCompServer.BlockCompServer
|
||
|
||
- 描述
|
||
|
||
根据输入的方块位置列表创建并获取一个方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。创建的方块调色板包含了这个位置列表中的所有方块及其相对位置。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| dimensionId | int | 方块所在维度 |
|
||
| posList | list(tuple(int,int,int)) | 方块位置列表 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| 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)
|
||
])
|
||
```
|
||
|
||
|
||
|
||
### 客户端接口
|
||
|
||
<span id="c0"></span>
|
||
method in mod.client.component.blockCompClient.BlockCompClient
|
||
|
||
- 描述
|
||
|
||
根据输入的方块位置列表创建并获取一个方块调色板,方块调色板用于描述和记录世界中的多个方块的组合。创建的方块调色板包含了这个位置列表中的所有方块及其相对位置。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| posList | list(tuple(int,int,int)) | 方块位置列表 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| 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
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
method in mod.server.component.blockCompServer.BlockCompServer
|
||
|
||
- 描述
|
||
|
||
注册特殊方块组合
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| pattern | list(str) | 方块组合位置 |
|
||
| defines | dict | 方块组合类型 |
|
||
| result_actor_name | str | 合成结果 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| 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
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
method in mod.server.component.blockCompServer.BlockCompServer
|
||
|
||
- 描述
|
||
|
||
根据输入的方块调色板内容,将调色板内记录的所有方块设置为实际的方块。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| 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: 放弃之后的生成过程。 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| 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)
|
||
```
|
||
|
||
|
||
|