开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] addons制作第七期:基础方块

 发表于 2022-1-25 17:14:53 来自手机|显示全部楼层|阅读模式 IP:贵州省
本帖最后由 泥黑木大跌 于 2022-1-26 21:06 编辑

前言
mc中拥有大量的方块,但对于一些探索mc的老玩家来说,已经太无聊了,那么今天,我来教大家如何添加方块

在本贴需要学会的东西
创建方块
给方块添加函数
给方块添加掉落物

正式开始

首先,我们在行为包文件添加一个叫做block的文件夹,然后老规矩,在里面添加一个json,在json里写
  1. {
  2.   "format_version": "1.16.100",
  3.   "minecraft:block": {
  4.     "description": {
  5.       "identifier": "him:block",//ID
  6.       "category": "Nature"
  7.     },
  8.     "components": {
  9.       "minecraft:loot": "loot_tables/blocks/block.json",//掉落物路径
  10.       "minecraft:destroy_time": 114514.0,//破坏时间,太大会导致方块无法破坏
  11.       "minecraft:friction": 0.7,//踩在上面的行走速度
  12.       "minecraft:map_color": "#FFFFFF",//地图上显示的颜色
  13.       "minecraft:explosion_resistance": 1.0,//能承受的爆炸,值越大,越抗爆
  14.       "minecraft:flammable": {//点燃几率,如果不需要就移除或填0
  15.         "flame_odds": 1,
  16.         "burn_odds": 1
  17.       },
  18.       "minecraft:block_light_absorption": 0.0,//吸收光
  19.       "minecraft:block_light_emission": 0.0,//发出的光照
  20.       "minecraft:on_player_destroyed": {
  21.         "event": "remove:block",
  22.         "target": "self"
  23.       },
  24.       "minecraft:material_instances": {
  25.         "*": {
  26.           "texture": "him:block",//材质,需与上面ID相符
  27.           "render_method": "blend"
  28.         }
  29.       },
  30.       "minecraft:on_step_on": {
  31.         "event": "step:on",
  32.         "target": "self"
  33.       },
  34.       "minecraft:on_step_off": {
  35.         "event": "step:off",
  36.         "target": "self"
  37.       },
  38.       "minecraft:on_placed": {
  39.         "event": "size:block",
  40.         "target": "self"
  41.       },
  42.       "minecraft:random_ticking": {
  43.         "on_tick": {
  44.           "event": "random:tick",
  45.           "target": "self"
  46.         }
  47.       },
  48.       "minecraft:on_fall_on": {
  49.         "event": "fall:on",
  50.         "target": "self"
  51.       },
  52.       "minecraft:ticking": {
  53.         "looping": true,
  54.         "range": [
  55.           10,
  56.           10
  57.         ],
  58.         "on_tick": {
  59.           "event": "on_tick",
  60.           "target": "self"
  61.         }
  62.       },
  63.       "minecraft:creative_category": {
  64.         "category": "nature"
  65.       }
  66.     },
  67.     "events": {//破坏该方块后的函数
  68.       "remove:block": {
  69.         "run_command": {//模式
  70.           "command": [
  71.             "function function_ok"//函数名称 不能是中文
  72.           ]
  73.         }
  74.       },
  75.       "size:block": {//放置方块执行function
  76.         "run_command": {
  77.           "command": [
  78.             "function function_ok"
  79.           ]
  80.         }
  81.       },
  82.       "step:on": {//踩在上面执行的函数
  83.         "run_command": {
  84.           "command": [
  85.             "function function_ok"
  86.           ]
  87.         }
  88.       },
  89.       "step:off": {//离开上面执行的函数
  90.         "run_command": {
  91.           "command": [
  92.             "function function_ok"
  93.           ]
  94.         }
  95.       },
  96.       "on_tick": {//过一段时间执行的函数
  97.         "run_command": {
  98.           "command": [
  99.             "function function_ok"
  100.           ]
  101.         }
  102.       },
  103.       "random:tick": {//不知道
  104.         "run_command": {
  105.           "command": [
  106.             "function function_ok"
  107.           ]
  108.         }
  109.       },
  110.       "fall:on": {//不知道
  111.         "run_command": {
  112.           "command": [
  113.             "function function_ok"
  114.           ]
  115.         }
  116.       }
  117.     },
  118.     "permutations": [
  119.       {
  120.         "condition": "query.block_property('block:rotation') == 2",
  121.         "components": {
  122.           "minecraft:rotation": [
  123.             0,
  124.             0,
  125.             0
  126.           ]        }
  127.       },
  128.       {
  129.         "condition": "query.block_property('block:rotation') == 3",
  130.         "components": {
  131.           "minecraft:rotation": [
  132.             0,
  133.             -180,
  134.             0
  135.           ]
  136.         }
  137.       },
  138.       {
  139.         "condition": "query.block_property('block:rotation') == 4",
  140.         "components": {
  141.           "minecraft:rotation": [
  142.             0,
  143.             90,
  144.             0
  145.           ]
  146.         }
  147.       },
  148.       {
  149.         "condition": "query.block_property('block:rotation') == 5",
  150.         "components": {
  151.           "minecraft:rotation": [
  152.             0,
  153.             -90,
  154.             0
  155.           ]
  156.         }
  157.       }
  158.     ]
  159.   }
  160. }
复制代码


然后跟着注释来,但有一些函数不知道触发方法,就需要你一个一个去执行了,loot一会讲

掉落物

我们可以在代码中发现一个loot事件,这正是和掉落物有关,我们把路径填写好后在行为包添加一个叫loot_tables的文件,其实名字不重要,重要的是填写的路径,然后再里面添加blocks文件夹又在里面添加一个json,需与方块的loot事件中的路径的名称相同,不支持除英文外的语言,然后再里面写入
  1. {
  2.   "pools": [
  3.     {
  4.       "rolls": 1,
  5.       "entries": [
  6.         {
  7.           "type": "item",
  8.           "weight": 1,
  9.           "name": "minecraft:diamond",
  10.           "functions": [
  11.             {
  12.               "function": "set_count",
  13.               "count": {
  14.                 "min": 1,
  15.                 "max": 1
  16.               }
  17.             },
  18.             {
  19.               "enchantments": [],
  20.               "function": "enchant_randomly"
  21.             }
  22.           ]
  23.         }
  24.       ]
  25.     }
  26.   ]
  27. }
复制代码

这次没有注释,我来解释其中的事件
"name",掉落物的ID
"weight"掉落的数量
如果无需掉落物可以删掉该json

资源包

在资源包文件夹中添加textures、texts等文件夹,再添加blocks.json这个文件,我们先在texture文件夹创建一个叫blocks的文件夹,把贴图放里面,贴图必须为正方形,可以选用32×32的贴图,然后退出,但不要退出textures文件夹,在与blocks文件夹同层的地方创建一个叫terrain_texture.json的文件,在里面写入

  1. {
  2.   "resource_pack_name": "vanilla",
  3.   "texture_name": "atlas.terrain",
  4.   "padding": 8,
  5.   "num_mip_levels": 4,
  6.   "texture_data": {//方块后缀
  7.     "block": {
  8.       "textures": "textures/blocks/block"//材质路径
  9.     }
  10.   }
  11. }
复制代码

然后跟着注释来,如果需要再添加一个,则在上一个的大括号后面加“,”然后退出textures文件,添加一个叫blocks.json的文件,在里面写入

  1. {
  2.   "him:block": {//ID
  3.     "textures": "block",//需与terrain_texture填的后缀一模一样
  4.     "sound": "normal"//音效
  5.   },
  6.   "format_version": [
  7.     1,
  8.     1,
  9.     0
  10.   ]
  11. }
复制代码


由于版本号在下面,所以大括号要加,然后跟着注释来,此时只差翻译部分,我们的教程就完了,这很简单,添加一个叫做texts的文件夹,在里面创建一个叫zh_CN.lang的文件,在里面写入tile.him:block.name=方块

格式是这样的
tile.ID前缀:ID后缀.name=名字
然后我们滴addons完成了

接下来提供模板包和图片
模板包:
 方块模板b.mcaddon(2.74 KB, 下载次数: 32)  方块模板r.mcaddon(5.29 KB, 下载次数: 16)
图片:

Screenshot_20220125_163644.jpg

Screenshot_20220125_163848.jpg

 方块模板r.mcaddon(5.29 KB, 下载次数: 16)

 方块模板b.mcaddon(2.74 KB, 下载次数: 32)

评分

参与人数 1铁粒 +9收起理由
 WZM*** + 9多谢作者大大的模板

查看全部评分

苦力怕论坛,感谢有您~
 发表于 2022-1-25 17:17:56 来自手机|显示全部楼层 IP:广东省
对于我这种沙币来说,根本就不会。根本就听不懂。
2#2022-1-25 17:17:56回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-1-25 20:31:37 来自手机|显示全部楼层 IP:河北省
关于函数啥的我压根看不懂
3#2022-1-25 20:31:37收起回复
WZMint2023-5-1 13:46IP:贵州省
回复举报
其实很简单,components里面的事触发条件,events里面的是执行的函数
苦力怕论坛,感谢有您~
 发表于 2022-1-25 21:31:15|显示全部楼层 IP:广西
本帖最后由 XiaMoHuaHuo_CN 于 2022-1-25 21:34 编辑

纠错:首先,Json中是不能写注释的
image.png
其次,内容补充
正确的翻译应该看下面:(后面不想翻译了,请自行删除注释)

  1. {
  2.     "format_version": "1.16.100", //支持版本
  3.     "minecraft:block": { //设置类型为方块
  4.         "description": { //描述
  5.             "identifier": "him:block", //物品命名空间
  6.             "category": "Nature" //类型
  7.         },
  8.         "components": { //组件
  9.             "minecraft:loot": "loot_tables/blocks/block.json", //掉落物路径
  10.             "minecraft:destroy_time": 114514.0, //破坏时间,无法破坏请填 -1
  11.             "minecraft:friction": 0.7, //踩在上面的行走速度
  12.             "minecraft:map_color": "#FFFFFF", //地图上显示的颜色
  13.             "minecraft:explosion_resistance": 1.0, //能承受的爆炸,值越大,越抗爆
  14.             "minecraft:flammable": { //点燃几率,如果不需要就移除或填0
  15.             "flame_odds": 1,
  16.             "burn_odds": 1
  17.         },
  18.         "minecraft:block_light_absorption": 0.0, //吸光等级
  19.         "minecraft:block_light_emission": 0.0, //光照等级
  20.         "minecraft:on_player_destroyed": { //玩家死亡时
  21.           "event": "remove:block", //移除方块
  22.           "target": "self" //触发对象
  23.         },
  24.         "minecraft:material_instances": { //材质
  25.           "*": { //所有
  26.             "texture": "him:block", //需要设置材质的命名空间
  27.             "render_method": "blend" //混合
  28.           }
  29.         },
  30.         "minecraft:on_step_on": { //被踩踏
  31.           "event": "step:on", //事件(环境)
  32.           "target": "self" //触发对象
  33.         },
  34.         "minecraft:on_step_off": { //未踩踏
  35.           "event": "step:off", //事件(环境)
  36.           "target": "self" //触发对象
  37.         },
  38.         "minecraft:on_placed": { //在某个方块上的时候
  39.           "event": "size:block", //事件(环境)
  40.           "target": "self" //触发对象
  41.         },
  42.         "minecraft:random_ticking": { //随机tick
  43.           "on_tick": { //在tick时
  44.             "event": "random:tick", //事件(环境)
  45.             "target": "self" //触发对象
  46.           }
  47.         },
  48.         "minecraft:on_fall_on": { //掉落
  49.           "event": "fall:on", //事件(环境)
  50.           "target": "self" //触发对象
  51.         },
  52.         "minecraft:ticking": { //ticking相关
  53.           "looping": true, //原型
  54.           "range": [ //排列
  55.             10,
  56.             10
  57.           ],
  58.           "on_tick": { //过一段时间后
  59.             "event": "on_tick", //事件(环境)
  60.             "target": "self" //触发对象
  61.           }
  62.         },
  63.         "minecraft:creative_category": { //新建分类
  64.           "category": "nature" //分类名
  65.         }
  66.       },
  67.       "events": { //破坏该方块后的函数
  68.         "remove:block": { //移除方块
  69.           "run_command": { //运行命令
  70.             "command": [ //命令
  71.               "function function_ok" //命令名称 不能是中文
  72.             ]
  73.           }
  74.         },
  75.         "size:block": { //方块被填充
  76.           "run_command": { //运行命令
  77.             "command": [ //命令
  78.               "function function_ok" //命令名称,不能是中文
  79.             ]
  80.           }
  81.         },
  82.         "step:on": { //踩在方块
  83.           "run_command": { //运行命令
  84.             "command": [ //命令
  85.               "function function_ok" //命令名称,不能是中文
  86.             ]
  87.           }
  88.         },
  89.         "step:off": { //离开方块
  90.           "run_command": { //运行命令
  91.             "command": [ //命令
  92.               "function function_ok" //命令名称,不能是中文
  93.             ]
  94.           }
  95.         },
  96.         "on_tick": { //过一段时间后
  97.           "run_command": { //运行命令
  98.             "command": [ //命令
  99.               "function function_ok" //命令名称,不能是中文
  100.             ]
  101.           }
  102.         },
  103.         "random:tick": { //随机tick
  104.           "run_command": { //运行命令
  105.             "command": [ //命令
  106.               "function function_ok" //命令名称,不能是中文
  107.             ]
  108.           }
  109.         },
  110.         "fall:on": {//不知道
  111.           "run_command": {
  112.             "command": [
  113.               "function function_ok"
  114.             ]
  115.           }
  116.         }
  117.       },
  118.       "permutations": [ //序列
  119.         {
  120.           "condition": "query.block_property('block:rotation') == 2",
  121.           "components": {
  122.             "minecraft:rotation": [
  123.               0,
  124.               0,
  125.               0
  126.             ]        }
  127.         },
  128.         {
  129.           "condition": "query.block_property('block:rotation') == 3",
  130.           "components": {
  131.             "minecraft:rotation": [
  132.               0,
  133.               -180,
  134.               0
  135.             ]
  136.           }
  137.         },
  138.         {
  139.           "condition": "query.block_property('block:rotation') == 4",
  140.           "components": {
  141.             "minecraft:rotation": [
  142.               0,
  143.               90,
  144.               0
  145.             ]
  146.           }
  147.         },
  148.         {
  149.           "condition": "query.block_property('block:rotation') == 5",
  150.           "components": {
  151.             "minecraft:rotation": [
  152.               0,
  153.               -90,
  154.               0
  155.             ]
  156.           }
  157.         }
  158.       ]
  159.     }
  160.   }
复制代码

评分

参与人数 1铁粒 +10收起理由
 MC*** + 10苦力怕论坛感谢有你~

查看全部评分

4#2022-1-25 21:31:15回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-1-25 21:36:28 来自手机|显示全部楼层 IP:贵州省
XiaMoHuaHuo_CN 发表于 2022-1-25 21:31
纠错:首先,Json中是不能写注释的

其次,内容补充

感谢
5#2022-1-25 21:36:28回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-1-25 21:39:07 来自手机|显示全部楼层 IP:吉林省
是我刚看到,还是我刚看的。总之,我会说:终于更新啦! 啦 啦啦 啦啦 啦 啦啦 啦啦!
6#2022-1-25 21:39:07回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-3-12 15:46:26 来自手机|显示全部楼层 IP:广东省
那么,怎样让一个方块只能被特定工具挖掘呢
7#2022-3-12 15:46:26回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-3-17 13:03:47 来自手机|显示全部楼层 IP:吉林省
方块需不需要添加type属性啊?我只知道itme需要添加。
8#2022-3-17 13:03:47回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-3-17 13:53:41 来自手机|显示全部楼层 IP:辽宁省
XiaMoHuaHuo_CN 发表于 2022-1-25 21:31
纠错:首先,Json中是不能写注释的

其次,内容补充

纠错,JSON可以写注释,但是你写的位置不对,不报错才怪=_=
9#2022-3-17 13:53:41回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-3-17 13:54:31 来自手机|显示全部楼层 IP:辽宁省
XiaMoHuaHuo_CN 发表于 2022-1-25 21:31
纠错:首先,Json中是不能写注释的

其次,内容补充

所有注释全写括号内不报错才怪=_=
10#2022-3-17 13:54:31回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-28 16:18

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3