Micro block

参阅Minecraft基岩版开发Wiki上Micro block的页面微缩方块

本页面部分内容来自Minecraft基岩版开发Wiki

**Micro block(微缩方块)** 是网易自定的一种方块，在生存模式下使用木镐及以上采掘工具可以破坏并掉落其物品形式，它可以将游戏内自定义区域的方块压缩成若干个小方块进行显示，但这并不意味着类似将原方块缩小显示，方块为载体，显示时纹理为一种纯色(相当于自定义了方块模型)，目前仅开放预微缩方块。

外貌
--

Micro block方块是一个可自定义的方块，默认透明，碰撞箱与一般固体方块相同。无任何参数的Micro block类似屏障方块。玩家在方块上的脚步粒子为数据更新方块纹理，脚步声与石头相同。

获取
--

### 命令

**Micro block**属于一种用于技术方块，常规情况无法使用`/give`获取。其只能通过`/setblock`放置，指令如下：

````
/setblock <x> <y> <z> micro_block

````

### 常规

在一些网易版基岩版模组中可能包含微缩方块构建的模型，但无法获取微缩方块本身。（需要验证）

用途
--

**预微缩方块**通过使用 modsdk 接口生成对应的微缩方块信息并由开发者保存为微缩方块文件，然后将该文件放入到 mod 中，重进游戏后，微缩方块便类似于游戏的原生方块，可以在物品列表里找到并使用。

开发者可以通过Api CreateMicroBlockResStr 来对一个区域进行保存,返回的结果为字符串,开发者需要手动保存

```
CreateMicroBlockResStr(self, identifier, frompos, topos, colorMap=None, isMerge=False, icon="")

```

**CreateMicroBlockResStr**
*method in mod.server.component.blockCompServer.BlockCompServer*

服务端
 start
 end
 colorMap
 isMerge
 icon

返回值

* 使用 frompos 和 topos 选中的区域，仅仅会生成其中的方块数据（包括自定义方块），对于生物等实体数据并不会包含其中。当选中的区域没有被加载时，不会产生数据，当选中的区域包含已加载区域和未加载区域时，仅仅只会产生已加载区域的数据。

### 微缩方块数据驱动文件(来源于开发者文档)

```
 {
 "netease:micro\_block": {
 "data": {
 "11": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "10": [[], [], [0, 0, 0, 1], [], [], [], [], [], [], [], [0, 0, 0, 1]],
 "13": [[], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "12": [[], [], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "14": [[], [], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 2]],
 "1": [[], [], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]],
 "3": [[], [], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "2": [[], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "5": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [], [], [], [0, 0, 0, 1]],
 "4": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "7": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "6": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1]],
 "9": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1]],
 "8": [[], [], [0, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 1], [], [], [], [0, 0, 0, 1], [0, 0, 0, 1]]
 },
 "description": {
 "identifier": "micro\_block:number\_9\_2",
 "blocks": [{//包含的方块信息
 "aux": 0,
 "name": "minecraft:grass",
 "color": [254, 46, 45]
 }, {
 "aux": 1,
 "name": "minecraft:grass",
 "color": [254, 46, 45]
 }
 ],
 "icon": "",
 "size": [11, 15, 6]
 }
 },
 "format\_version": "1.13.0"
 }

```

### 示例

如图可见,这是搭建出的一个小屋

通过Api

```
comp = serverApi.GetEngineCompFactory().CreateBlock(self.GetLevelId())
result = comp.CreateMicroBlockResStr("x", (576, 96, -3), (573, 100, 0), colorMap={'minecraft:planks': [218, 165, 32, 255], 'minecraft:log': [0, 0, 0, 255], 'minecraft:glass\_pane': [255, 140, 0, 255], 'minecraft:wooden\_door': [255, 0, 0, 255]}, isMerge=True, icon="diamond")
print result

```

打印出了一段JSON文本，进行格式化

```
{
 "netease:micro\_block":{
 "data":{
 "0":[
 [
 1,
 2,
 2
 ],
 [
 3,
 0,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ],
 [
 4,
 4,
 4
 ]
 ],
 "1":[
 [
 5,
 2,
 2
 ]
 ],
 "2":[
 [
 6,
 7,
 8
 ]
 ],
 "3":[
 [
 6,
 2,
 2
 ]
 ]
 },
 "description":{
 "identifier":"micro\_block:x",
 "blocks":[
 {
 "color":[
 218,
 165,
 32,
 255
 ],
 "aux":0,
 "name":"minecraft:planks"
 },
 {
 "color":[
 218,
 165,
 32,
 255
 ],
 "aux":1,
 "name":"minecraft:planks"
 },
 {
 "aux":0,
 "name":"minecraft:grass"
 },
 {
 "aux":3,
 "name":"minecraft:grass"
 },
 {
 "color":[
 0,
 0,
 0,
 255
 ],
 "aux":0,
 "name":"minecraft:log"
 },
 {
 "color":[
 0,
 0,
 0,
 255
 ],
 "aux":5,
 "name":"minecraft:log"
 },
 {
 "color":[
 255,
 140,
 0,
 255
 ],
 "aux":0,
 "name":"minecraft:glass\_pane"
 },
 {
 "color":[
 255,
 140,
 0,
 255
 ],
 "aux":7,
 "name":"minecraft:glass\_pane"
 }
 ],
 "icon":"diamond",
 "size":[
 3,
 4,
 3
 ]
 }
 },
 "format\_version":"1.13.0"
}

```
此段JSON代码写入资源包根目录/models/netease\_micro\_block/xx.json里

行为包根目录/netease\_blocks/xx.json新编写一个自定义方块

两个文件中identifier需保持一致重新进入游戏,得到下图中的方块

历史
--