--- front: hard: 入门 time: 分钟 --- # 功能 ## 获取及设置某个位置的方块 获取见服务端blockInfo组件的GetBlockNew接口 设置见服务端blockInfo组件的SetBlockNew接口 ## 物品形式的生成及获取 支持“MOD SDK文档”中所有与物品相关的接口及事件,其中的物品identifier对应方块identifier。 ## 方块及物品事件 支持“MOD API”中所有与方块相关的事件,其中添加了“fullName”字段返回对应的方块identifier 支持"MOD API"中所有与物品相关的事件,其中添加了“itemName”字段返回对应的方块identifier。 ## 自定义配方 见[自定义配方文档](../5-自定义配方.md),材料及结果都支持填写方块identifier。可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)行为包的netease_recipes ## 方块组合 见"MOD API"的服务端block组件,defines项支持填写自定义方块的identifier。可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)脚本的CustomBlocksServer.RegisterBlockPattern ## 村民交易 可将行为包的交易配置中的item修改为自定义方块的identifier。可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)行为包的`trading\economy_trades\armorer_trades.json`,里面将新手级盔甲商的其中一个交易项替换为绿宝石兑换customblocks:customblocks_test0方块 ## 构成自定义群系 阅读这条前请先阅读[群系地貌文档](../4-自定义维度/2-群系地貌.md)。 可通过修改minecraft:overworld_surface字段来使用自定义方块生成区块。可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)行为包的`netease_biomes\dm5`,里面在自定义群系demo[CustomBiomesMod](../../13-模组SDK编程/60-Demo示例.md#CustomBiomesMod)中dm5维度的基础上进行修改,将该维度的dm5_cold_beach、dm5_frozen_ocean、dm5_frozen_river、dm5_ice_plains、dm5_river几个群系的地表方块进行了替换。 ## 声音 resource包中`blocks.json`配置方块的sound。 可以使用原版`sounds.json`中block_sounds里的类型。不支持添加自定义block_sounds类型 ## 亮度 行为包中使用[minecraft:block_light_emission](./1-JSON组件.md#minecraft_block_light_emission)可将方块设置为光源。 可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)的customblocks:customblocks_model_flower方块。 [minecraft:block_light_absorption](./1-JSON组件.md#minecraft_block_light_absorption)可设置方块透光率,值的范围为0-15 ## 挖掘 挖掘的详细介绍可参考[官方wiki](https://minecraft-zh.gamepedia.com/挖掘) 挖掘时间可使用[minecraft:destroy_time](./1-JSON组件.md#minecraft_destroy_time)配置 挖掘工具可使用[netease:tier](./1-JSON组件.md#netease_tier)配置 可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)的customblocks:customblocks_test_ore方块 ## 多面向 行为包中使用[netease:face_directional](./1-JSON组件.md#netease_face_directional)配置。 四面向可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)的customblocks:customblocks_test_face4方块 六面向可参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)的customblocks:customblocks_test_face6方块 对于两种面向,当玩家进行放置时,都是north的贴图面向玩家。 方块的面向等于north贴图面向的方向(即玩家放置时准心的反方向)。 当设置为四面向时,方块面向与附加值auxvalue的关系为: | 方块面向 | auxvalue | | -------- | -------- | | south | 0 | | west | 1 | | north | 2 | | east | 3 | 当设置为六面向时,方块面向与附加值auxvalue的关系为: | 方块面向 | auxvalue | | -------- | -------- | | down | 0 | | up | 1 | | north | 2 | | south | 3 | | west | 4 | | east | 5 | ## 自定义方块及自定义方块模型的群系颜色 关于生物群系颜色的描述可看[生物群系 - Minecraft Wiki,最详细的我的世界百科 ](https://minecraft.fandom.com/zh/wiki/生物群系#.E7.94.9F.E7.89.A9.E7.BE.A4.E7.B3.BB.E9.A2.9C.E8.89.B2) 原版方块在不同生物群系中会有稍稍不同的颜色变化,例如草、树叶等方块,它们会随着它们所在的群系的温度以及降雨量而产生颜色变化,在温度高的环境中会偏绿,在降雨量低的环境中会变黄。 [自定义方块](./0-自定义方块概述.md)及[自定义方块模型](./5-自定义方块模型.md)也支持该特性。开发者们也可以参考[CustomBlocksMod](../../13-模组SDK编程/60-Demo示例.md#CustomBlocksMod)中的**customblocks:customblocks_leaves_tinted**方块、**customblocks:customblocks_test_face4_tinted**方块以及**customblocks:customblocks_model_flower_tinted**方块,并参考这三个方块所使用的的颜色渐变图(CustomBlocksMod\CustomBlocksMod_resource\textures\colormap\my_grass.png)。 以下将会说明如何为自定义方块添加自定义群系颜色。 #### **1. 颜色渐变图的准备** 首先,我们需要为方块准备一张颜色渐变图(color map),该图示例如下: ​ 该图分辨率固定为256x256,目前暂不支持其他分辨率,并且仅图像中的左下三角形部分会被使用,右上三角形部分不会被使用,因此可以置为空白。 ​ 方块在被添加群系颜色时,会按照该群系的降雨量及温度来决定我们所取的群系颜色是这张颜色渐变图上的哪一个颜色点。其规则如下: - 温度从低往高时,会按照红色箭头方向从颜色渐变图的右边到左边决定颜色点的x坐标值, - 降雨量从低往高时,会按照蓝色箭头方向从颜色渐变图的下方到上方决定颜色点的y坐标值。 ​ 举个例子,在降雨量低而且温度高的群系,所取的颜色为这张颜色渐变图的最左下角部分,即颜色会偏黄色。 ​ **根据以上规则,开发者可以自己来定义自己的颜色渐变图来为自定义方块添加特殊的群系颜色。制作时也可以根据原版的颜色渐变图来修改。需要注意的是,分 辨率固定为256x256。** ​ 制作好的渐变图可以放在resource_pack/textures/colormap/这个路径下。 #### **2. 为自定义方块设置这张渐变图** ​ 渐变图的使用方式有两种,一种是为方块整体使用这张渐变图,一种是为方块中指定的贴图使用这张贴图。 ##### (1)为方块整体使用这张渐变图 ​ 在准备好这张图后,我们需要在resource_pack/blocks.json中添加这张图的使用: ```json "customblocks:customblocks_leaves_tinted": { "sound": "grass", "textures": "customblocks:customblocks_leaves_tinted", // 使用"use_colormap"字段指定使用的colormap贴图路径 // 使用colormap后, 该方块的颜色将会随群系的变化而变化 "use_colormap":"textures/colormap/my_grass" } ``` ​ 我们使用"use_colormap"字段来指定这个方块使用自定义群系颜色,这个字段的值则是这张颜色渐变图的相对路径。 ​ 这样我们的自定义方块就能在不同群系中表现出不同的颜色差异了。 ​ ##### (2)为方块指定的贴图使用这张渐变图 ​ 为方块指定的贴图使用这张渐变图时,我们需要在resource_pack/textures/terrain_texture.json中为某张贴图进行指定: ```json "customblocks:customblocks_test_face4_top_tinted":{ "textures": "textures/blocks/glazed_terracotta_white", // 使用"use_colormap"字段指定使用的colormap贴图路径, 分辨率固定为256x256, 暂不支持其他分辨率 "use_colormap":"textures/colormap/my_grass" }, ``` ​ 我们在上面的代码示例中为"customblocks:customblocks_test_face4_top_tinted"这张贴图指定了渐变图。这样一来,我们可以在resource_pack/blocks.json为这个方块的某个面指定使用这张"customblocks:customblocks_test_face4_top_tinted"贴图了: ```json "customblocks:customblocks_test_face4_tinted": { "textures": { "down": "customblocks:customblocks_test_face4_front_tinted", // 这个贴图使用了带colormap的贴图(colormap在textures/terrain_texture.json中指定), 该面的颜色将会随群系的变化而变化 "up": "customblocks:customblocks_test_face4_front_not_tinted", "north": "customblocks:customblocks_test_face4_top_tinted", // 这个贴图使用了带colormap的贴图(colormap在textures/terrain_texture.json中指定), 该面的颜色将会随群系的变化而变化 "south": "customblocks:customblocks_test_face4_top_sides_not_tinted", "west": "customblocks:customblocks_test_face4_top_sides_not_tinted", "east": "customblocks:customblocks_test_face4_top_tinted" // 这个贴图使用了带colormap的贴图(colormap在textures/terrain_texture.json中指定), 该面的颜色将会随群系的变化而变化 }, "sound": "stone" } ``` ​ 我们为这个方块的下表面,东表面以及北表面使用了这些带有渐变图的贴图,如此,方块就表现为某些面能在群系中产生不同颜色的变化,而某些面则不会产生颜色变化。 #### **3.不适用的方块及情况** 注意,以下自定义方块或情形将不适用自定义群系颜色: (1)重力方块在下落时由于会转换为方块实体,因此方块颜色将变为原来的颜色。 (2)使用了textures/flipbook_textures.json中定义的动态贴图的自定义方块,自定义群系颜色也不会生效。 (3)自定义方块实体外观不适用自定义群系颜色。 (4)自定义流体不适用自定义群系颜色。 (5)自定义刷怪箱、自定义传送门不适用自定义群系颜色。 (6)自定义方块模型无法支持为这个模型中指定的贴图使用自定义群系颜色,只能整体使用自定义群系颜色。