# 自定义方块概述

该功能不需要开启实验性玩法。

开发者可以通过在addon中配置json来添加自定义方块。添加的自定义方块支持ModAPI中与方块及物品相关的所有事件及接口。

# 注册

以demo CustomBlocksMod为例:

  1. 在行为包中新建netease_blocks目录

    reg-1

  2. 在目录下新建一个json用于编写方块的定义。json的格式可参考官方wiki (opens new window)

    reg-2

    reg-3

    • json中至少有一个component
    • identifier的格式为:命名空间[冒号]方块名。命名空间推荐与mod名称一致。而冒号后的方块名必须全局唯一,为避免与原版方块以及其他mod重复,请加上命名空间作为前缀来保证唯一

    (例如图中的customblocks:customblocks_test0) ​ 而不要写成customblocks:test0。

    • mod中其他地方都是用这个identifier与这个自定义方块对应上
  3. 将方块的贴图放到textures\blocks

    可以支持高于16x16分辨率的高清贴图,但需要注意过高的分辨率会导致手机端(尤其是低端机)上无法进入游戏。

    reg-4

  4. 在textures中新建terrain_texture.json,编写资源名与贴图的对应关系。资源名的命名必须满足全局唯一。json格式可参考“Mod PC开发包”的data\resource_packs\vanilla\textures\terrain_texture.json

    reg-5

    reg-6

  5. 在resource中新建一个blocks.json,编写方块贴图及声音,贴图的值需要与上一步terrain_texture.json中配置的资源名对应。json格式可参考“Mod PC开发包”的data\resource_packs\vanilla\blocks.json

    reg-7

    reg-8

  6. texts\zh_CN.lang中配置方块中文名称:

    键的格式为tile.方块identifier.name

    reg-9

    reg-10

  7. 重复1-6编写其他自定义方块

# 卸载

若使用了自定义方块的存档卸载mod后再进入时:

  1. 对地图上已存在的自定义方块:

    (1)自定义方块会变为未知的方块。如果用GetBlockNew接口获取它的信息,indentifier是之前的自定义方块。生存模式下,玩家可以用手瞬间破坏这个未知的方块,生成掉落物,且可以拾取。拾取到背包后显示的物品名字为”未知“,且无法放置到世界中。

    (2)若某个subchunk未进行过方块更新,那么重新加载mod时,自定义方块会保留。但一旦subchunk进行了方块更新,即使重新加载mod,自定义方块会永远消失。

  2. 对玩家背包中的自定义方块:

    物品会消失。若重新加载mod,对卸载期间登录过的玩家,物品不会恢复;没登录过的玩家,物品可以保留。

  3. 对地图上容器内的自定义方块:

    物品会消失。若重新加载mod,对卸载期间进行探索过的区域内的容器,物品不会恢复;未探索区域的容器,物品可以保留。

  4. 对地图上未捡起的掉落物:

    掉落物会消失。若重新加载mod,对卸载期间进行探索过的区域,掉落物不会恢复(除非subchunk内没有其他任何entity);未探索区域的掉落物可以保留。