addons制作第七期:基础方块
本帖最后由 泥黑木大跌 于 2022-1-26 21:06 编辑前言
mc中拥有大量的方块,但对于一些探索mc的老玩家来说,已经太无聊了,那么今天,我来教大家如何添加方块
在本贴需要学会的东西
创建方块
给方块添加函数
给方块添加掉落物
正式开始
首先,我们在行为包文件添加一个叫做block的文件夹,然后老规矩,在里面添加一个json,在json里写
{
"format_version": "1.16.100",
"minecraft:block": {
"description": {
"identifier": "him:block",//ID
"category": "Nature"
},
"components": {
"minecraft:loot": "loot_tables/blocks/block.json",//掉落物路径
"minecraft:destroy_time": 114514.0,//破坏时间,太大会导致方块无法破坏
"minecraft:friction": 0.7,//踩在上面的行走速度
"minecraft:map_color": "#FFFFFF",//地图上显示的颜色
"minecraft:explosion_resistance": 1.0,//能承受的爆炸,值越大,越抗爆
"minecraft:flammable": {//点燃几率,如果不需要就移除或填0
"flame_odds": 1,
"burn_odds": 1
},
"minecraft:block_light_absorption": 0.0,//吸收光
"minecraft:block_light_emission": 0.0,//发出的光照
"minecraft:on_player_destroyed": {
"event": "remove:block",
"target": "self"
},
"minecraft:material_instances": {
"*": {
"texture": "him:block",//材质,需与上面ID相符
"render_method": "blend"
}
},
"minecraft:on_step_on": {
"event": "step:on",
"target": "self"
},
"minecraft:on_step_off": {
"event": "step:off",
"target": "self"
},
"minecraft:on_placed": {
"event": "size:block",
"target": "self"
},
"minecraft:random_ticking": {
"on_tick": {
"event": "random:tick",
"target": "self"
}
},
"minecraft:on_fall_on": {
"event": "fall:on",
"target": "self"
},
"minecraft:ticking": {
"looping": true,
"range": [
10,
10
],
"on_tick": {
"event": "on_tick",
"target": "self"
}
},
"minecraft:creative_category": {
"category": "nature"
}
},
"events": {//破坏该方块后的函数
"remove:block": {
"run_command": {//模式
"command": [
"function function_ok"//函数名称 不能是中文
]
}
},
"size:block": {//放置方块执行function
"run_command": {
"command": [
"function function_ok"
]
}
},
"step:on": {//踩在上面执行的函数
"run_command": {
"command": [
"function function_ok"
]
}
},
"step:off": {//离开上面执行的函数
"run_command": {
"command": [
"function function_ok"
]
}
},
"on_tick": {//过一段时间执行的函数
"run_command": {
"command": [
"function function_ok"
]
}
},
"random:tick": {//不知道
"run_command": {
"command": [
"function function_ok"
]
}
},
"fall:on": {//不知道
"run_command": {
"command": [
"function function_ok"
]
}
}
},
"permutations": [
{
"condition": "query.block_property('block:rotation') == 2",
"components": {
"minecraft:rotation": [
0,
0,
0
] }
},
{
"condition": "query.block_property('block:rotation') == 3",
"components": {
"minecraft:rotation": [
0,
-180,
0
]
}
},
{
"condition": "query.block_property('block:rotation') == 4",
"components": {
"minecraft:rotation": [
0,
90,
0
]
}
},
{
"condition": "query.block_property('block:rotation') == 5",
"components": {
"minecraft:rotation": [
0,
-90,
0
]
}
}
]
}
}
然后跟着注释来,但有一些函数不知道触发方法,就需要你一个一个去执行了,loot一会讲
掉落物
我们可以在代码中发现一个loot事件,这正是和掉落物有关,我们把路径填写好后在行为包添加一个叫loot_tables的文件,其实名字不重要,重要的是填写的路径,然后再里面添加blocks文件夹又在里面添加一个json,需与方块的loot事件中的路径的名称相同,不支持除英文外的语言,然后再里面写入
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"weight": 1,
"name": "minecraft:diamond",
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 1
}
},
{
"enchantments": [],
"function": "enchant_randomly"
}
]
}
]
}
]
}
这次没有注释,我来解释其中的事件
"name",掉落物的ID
"weight"掉落的数量
如果无需掉落物可以删掉该json
资源包
在资源包文件夹中添加textures、texts等文件夹,再添加blocks.json这个文件,我们先在texture文件夹创建一个叫blocks的文件夹,把贴图放里面,贴图必须为正方形,可以选用32×32的贴图,然后退出,但不要退出textures文件夹,在与blocks文件夹同层的地方创建一个叫terrain_texture.json的文件,在里面写入
{
"resource_pack_name": "vanilla",
"texture_name": "atlas.terrain",
"padding": 8,
"num_mip_levels": 4,
"texture_data": {//方块后缀
"block": {
"textures": "textures/blocks/block"//材质路径
}
}
}
然后跟着注释来,如果需要再添加一个,则在上一个的大括号后面加“,”然后退出textures文件,添加一个叫blocks.json的文件,在里面写入
{
"him:block": {//ID
"textures": "block",//需与terrain_texture填的后缀一模一样
"sound": "normal"//音效
},
"format_version": [
1,
1,
0
]
}
由于版本号在下面,所以大括号要加,然后跟着注释来,此时只差翻译部分,我们的教程就完了,这很简单,添加一个叫做texts的文件夹,在里面创建一个叫zh_CN.lang的文件,在里面写入tile.him:block.name=方块
格式是这样的
tile.ID前缀:ID后缀.name=名字
然后我们滴addons完成了
接下来提供模板包和图片
模板包:
图片:
对于我这种沙币来说,根本就不会。根本就听不懂。 关于函数啥的我压根看不懂[哔哩_doge] 本帖最后由 XiaMoHuaHuo_CN 于 2022-1-25 21:34 编辑
纠错:首先,Json中是不能写注释的
其次,内容补充
正确的翻译应该看下面:(后面不想翻译了,请自行删除注释)
{
"format_version": "1.16.100", //支持版本
"minecraft:block": { //设置类型为方块
"description": { //描述
"identifier": "him:block", //物品命名空间
"category": "Nature" //类型
},
"components": { //组件
"minecraft:loot": "loot_tables/blocks/block.json", //掉落物路径
"minecraft:destroy_time": 114514.0, //破坏时间,无法破坏请填 -1
"minecraft:friction": 0.7, //踩在上面的行走速度
"minecraft:map_color": "#FFFFFF", //地图上显示的颜色
"minecraft:explosion_resistance": 1.0, //能承受的爆炸,值越大,越抗爆
"minecraft:flammable": { //点燃几率,如果不需要就移除或填0
"flame_odds": 1,
"burn_odds": 1
},
"minecraft:block_light_absorption": 0.0, //吸光等级
"minecraft:block_light_emission": 0.0, //光照等级
"minecraft:on_player_destroyed": { //玩家死亡时
"event": "remove:block", //移除方块
"target": "self" //触发对象
},
"minecraft:material_instances": { //材质
"*": { //所有
"texture": "him:block", //需要设置材质的命名空间
"render_method": "blend" //混合
}
},
"minecraft:on_step_on": { //被踩踏
"event": "step:on", //事件(环境)
"target": "self" //触发对象
},
"minecraft:on_step_off": { //未踩踏
"event": "step:off", //事件(环境)
"target": "self" //触发对象
},
"minecraft:on_placed": { //在某个方块上的时候
"event": "size:block", //事件(环境)
"target": "self" //触发对象
},
"minecraft:random_ticking": { //随机tick
"on_tick": { //在tick时
"event": "random:tick", //事件(环境)
"target": "self" //触发对象
}
},
"minecraft:on_fall_on": { //掉落
"event": "fall:on", //事件(环境)
"target": "self" //触发对象
},
"minecraft:ticking": { //ticking相关
"looping": true, //原型
"range": [ //排列
10,
10
],
"on_tick": { //过一段时间后
"event": "on_tick", //事件(环境)
"target": "self" //触发对象
}
},
"minecraft:creative_category": { //新建分类
"category": "nature" //分类名
}
},
"events": { //破坏该方块后的函数
"remove:block": { //移除方块
"run_command": { //运行命令
"command": [ //命令
"function function_ok" //命令名称 不能是中文
]
}
},
"size:block": { //方块被填充
"run_command": { //运行命令
"command": [ //命令
"function function_ok" //命令名称,不能是中文
]
}
},
"step:on": { //踩在方块
"run_command": { //运行命令
"command": [ //命令
"function function_ok" //命令名称,不能是中文
]
}
},
"step:off": { //离开方块
"run_command": { //运行命令
"command": [ //命令
"function function_ok" //命令名称,不能是中文
]
}
},
"on_tick": { //过一段时间后
"run_command": { //运行命令
"command": [ //命令
"function function_ok" //命令名称,不能是中文
]
}
},
"random:tick": { //随机tick
"run_command": { //运行命令
"command": [ //命令
"function function_ok" //命令名称,不能是中文
]
}
},
"fall:on": {//不知道
"run_command": {
"command": [
"function function_ok"
]
}
}
},
"permutations": [ //序列
{
"condition": "query.block_property('block:rotation') == 2",
"components": {
"minecraft:rotation": [
0,
0,
0
] }
},
{
"condition": "query.block_property('block:rotation') == 3",
"components": {
"minecraft:rotation": [
0,
-180,
0
]
}
},
{
"condition": "query.block_property('block:rotation') == 4",
"components": {
"minecraft:rotation": [
0,
90,
0
]
}
},
{
"condition": "query.block_property('block:rotation') == 5",
"components": {
"minecraft:rotation": [
0,
-90,
0
]
}
}
]
}
}
XiaMoHuaHuo_CN 发表于 2022-1-25 21:31
纠错:首先,Json中是不能写注释的
其次,内容补充
感谢 是我刚看到,还是我刚看的。总之,我会说:终于更新啦! 啦 啦啦 啦啦 啦 啦啦 啦啦! 那么,怎样让一个方块只能被特定工具挖掘呢[哔哩_脱单] 方块需不需要添加type属性啊?我只知道itme需要添加。 XiaMoHuaHuo_CN 发表于 2022-1-25 21:31
纠错:首先,Json中是不能写注释的
其次,内容补充
纠错,JSON可以写注释,但是你写的位置不对,不报错才怪=_= XiaMoHuaHuo_CN 发表于 2022-1-25 21:31
纠错:首先,Json中是不能写注释的
其次,内容补充
所有注释全写括号内不报错才怪=_=
页: [1]2