附加包教程:10.方块(一) - 教程中心 - Minecraft(我的世界)苦力怕论坛
<br /><br /><table cellspacing="0" class="t_table" ><tr><td><font size="6">前言<br /></font></td></tr><tr><td><br />前面4期,我们已经学完了有关物品的知识。这次,我们就来学习如何添加一个方块。这是一个很复杂的内容,它的难度比物品要大得多。然而,如果只需要一个简单的方块,那么方块和物品就大同小异了。接下来,我们将花若干期的时间学习关于方块的所有内容。<br /></td></tr><tr><td><img onerror="study_killerrpic(this)" id="aimg_pbL74" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" src="https://klpbbs.com/static/image/hrline/line5.png" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt="" /></td></tr><tr><td><font size="6">准备<br /></font></td></tr><tr><td><br />学习方块是一个由简到难的过程。<br />在行为包根目录下打开blocks文件夹,新建一个文件。命名就是你的方块的英文名,这样比较好管理。你也可以新建一个文件夹,把它命名英文名,把所有相关的文件都放进去,方便管理。<br />方块的文档结构和物品大同小异,具体格式见下。但是,方块的命名分化十分严重。比如你可能可以在一篇文档里看到minecraft:aim_collision,在另一篇文档里看到minecraft:selection_box,在其他文档里看到minecraft:pick_collision。这看起来是3个不同的组件,实际上其实作用相同,都是指定了方块的判定框,只是它们在不同的版本里有不同的命名。上面三个,minecraft:pick_collision是1.17.0的写法,minecraft:aim_collision是1.18.0的写法,而minecraft:selection_box则是1.19.40的写法。你也有可能在一边看见minecraft:destroy_time,另一边看到minecraft:destructible_by_mining。你发现这两个不一样,一个是直接赋值,另一个接的是一个对象。你可能会问,这两个总不是一个组件了吧!不,然而,它们还是起同样作用的组件,只不过前者是1.16.100的写法,后者是1.19.40的写法。<br />说了这么多,你一定觉得这命名也太乱了吧!没错,确实就是这么乱。目前的版本有1.16.0、1.16.100、1.17.0、1.18.0、1.19.0、1.20.0等等,但我在这篇文档里一律运用1.21.0版本。<br />这个版本是格式版本,一般来说,如果1.20的第一个测试版发布了,那么那个测试版里就会有1.20.0的格式版本。但也有例外,比如1.21.0的第一个测试版中确实有1.21.0的方块格式版本,却没有物品的。<br />格式版本控制着这个方块可以访问的特性,目的是防止旧内容遭到破坏。比如以前是minecraft:destroy_time这个名字的组件现在是minecraft:destructible_by_mining这个名字了,但由于它们对应不同格式版本,旧语法在新版本仍有效。由于新的格式版本能访问新版特性,方块的格式版本应该保持最新。<br /></td></tr><tr><td><img onerror="study_killerrpic(this)" id="aimg_I3WaJ" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" src="https://klpbbs.com/static/image/hrline/line2.png" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt="" /></td></tr><tr><td><font size="6">第一个方块<br /></font></td></tr><tr><td><br />现在就可以开始了。在你新建的文件里写以下代码。<br /><input type="button" class="yc" value="点击展开折叠内容" onClick="n = this.parentNode.parentNode.lastChild;if(n.style.display == 'none') {n.style.display = 'block';this.value='点击折叠展开内容';} else {n.style.display = 'none';this.value='点击展开折叠内容';} return false;"/> <table style="word-break:break-all;word-wrap:break-all;"><td><ol><li>{<br /><li> "format_version": "1.21.0", //这个是代码的版本号。<br /><li> "minecraft:block": {<br /><li> "description": {<br /><li> "identifier": "namespace:identifier", //命名空间ID<br /><li> "menu_category": {<br /><li> "category": "items", //这里是你要放在创造模式物品栏和工作台屏幕的哪个选项卡。可以填construction(建材)、nature(自然)、equipment(装备)、items(物品)或none(无)。如果省略或填none,这个方块将不会出现在创造模式物品栏或工作台屏幕上。<br /><li> "group": "", //指定这个物品被放在哪个组里。如果省略、不填或名称不匹配任何现有物品组,那么这个方块将独立在选项卡里。要填本地化字符串。<br /><li> "is_hidden_in_commands": false //指定这个方块是否不会出现在命令列表中,如果是false,那么会出现。如果是true,那么不会出现在列表中,而且命令不能使用这个方块作为参数(相当于方块被隐藏了)。<br /><li> }<br /><li> },<br /><li> "components": {<br /><li> "minecraft:loot": "loot_tables/example_block_loot.json", //这个是掉落物组件,挖掉方块时会按照这个战利品表掉落物品。<br /><li> "minecraft:friction": 0.4, //方块表面的摩擦力。<br /><li> "minecraft:map_color": "#00ff00" //方块在地图上的颜色。<br /><li> }<br /><li> }<br /><li>}</ol><br />上面我给出的示例文档里描述了一个基本的方块,有三个组件,分别指定了掉落物、摩擦力和地图颜色。如果想要创造功能更丰富的方块,就必须借助更多组件的帮助。如果想要方块在特定情形作出反应,就需要借助触发器组件的帮助。(触发器组件是普通组件的一种特殊情形。)所以,以后我将列出所有可用的组件。使用时,直接复制,粘贴到与示例组件同级的位置就好了。<br /></td></table><br /></td></tr><tr><td><img onerror="study_killerrpic(this)" id="aimg_Ye46y" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" src="https://klpbbs.com/static/image/hrline/line1.png" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt="" /></td></tr><tr><td><font size="6">渲染<br /></font></td></tr><tr><td><br />这一期,我们还要给方块赋予一个纹理。最常见的方法是打开资源包根目录下blocks.json文件,写入如下代码。<ol><li>{<br /><li> "方块ID": { //这里其实就是你刚才写的方块命名空间ID,简称方块ID。官方说必须写命名空间ID,但经过测试,似乎不写命名空间,只写冒号后面的ID也可以正常工作。不推荐不写命名空间。<br /><li> "textures": "起一个短名", //这里如果没什么特殊需求,建议直接写方块ID,当然也可以其他的,跟下面对得上就行,怎么开心怎么来。<br /><li> "sound": "amethyst" //方块发出的声音。可以写stone、wood、cloth等等。<br /><li> }<br /><li>}</ol>然后打开textures文件夹下terrain_texture.json,把下面的代码粘贴进去。<input type="button" class="yc" value="点击展开折叠内容" onClick="n = this.parentNode.parentNode.lastChild;if(n.style.display == 'none') {n.style.display = 'block';this.value='点击折叠展开内容';} else {n.style.display = 'none';this.value='点击展开折叠内容';} return false;"/> <table style="word-break:break-all;word-wrap:break-all;"><td><ol><li>{<br /><li> "texture_data": {<br /><li> "这里写之前起的短名": {<br /><li> "textures": "textures/blocks/test" //这里就是你的纹理的路径。不需要后缀,只需要保证它指向了一张正方形的图片即可。<br /><li> }<br /><li> }<br /><li>}</ol>我之前在物品文档中提到过登记表,指item_texture.json。其实这个文件就相当于方块纹理的登记表。</td></table><br /><br />在textures文件夹下新建blocks文件夹,打开,随便一张正方形图片扔进去,改名成你刚才写的名字(刚才的示例里是test,那就改成test.png)。其实这里没那么严格,照片格式只要是.tga、.png、.jpg中的一种就好了。然而如果图片后缀是.jpg,我建议你把图片转换格式成.png。是转换格式,不是单纯改后缀!如果文件同名而后缀不同,那么按.tga > .png > .jpg的顺序运用。<br />以.tga为后缀的图片用于纹理被渲染时的染色,比如草方块、树叶、皮革、羊等等可以被染色的东西。<br /><br />打开游戏,你应该能在物品选项卡里找到你新增的方块,纹理是你刚才添加的图片。不过它的名字是乱码。如果要让它显示成正常名字,那就退出游戏,打开资源包根目录下的texts文件夹,打开zh_CN.lang,在新的一行里输入以下这行内容。<br /><ol><li>tile.命名空间ID.name=方块名字</ol><br />其中,方块名字随便写,注意命名空间ID后面还有个.name(这是格式版本为1.16.100+的物品没有的)!另外,这里不能换行,也不能用\\转义,但可以用/tellraw或/titleraw命令中的%s功能。方块名字太长的话,可能会被截断。<br /><br />再次打开游戏,你应该能正常看到一个你的方块了。有一个例外是,如果你给方块的纹理是半透明或者完全透明的,那么到游戏里透明部分会变黑,或者半透明部分会(部分)变得不透明。这个可以通过一个组件解决,我们下期会学到这个组件。<br /></td></tr><tr><td><img onerror="study_killerrpic(this)" id="aimg_X555V" onclick="zoom(this, this.src, 0, 0, 0)" class="zoom" src="https://klpbbs.com/static/image/hrline/line1.png" onmouseover="img_onmouseoverfunc(this)" lazyloadthumb="1" border="0" alt="" /></td></tr><tr><td><font size="6">总结<br /></font></td></tr><tr><td><br />下一期,我们就开始讲方块组件。与物品组件不同,我会按照类别讲方块组件,比如下期讲管渲染的方块组件,然后讲管碰撞箱的方块组件等等。如果你听了上面的这么多东西,有些不明白,我会提供一个模板包,按照这个无脑改就行了。<br /><a href="https://klpbbs.com/forum.php?mod=attachment&aid=MjQ4MTYwfDVmOTg0ZTg4fDE3MTc5MTA1NDJ8MHw4MjQ0NA%3D%3D" target="_blank">模板包,请解压.zip</a><br /><br /><br /><a href="https://klpbbs.com/thread-82077-1-1.html" target="_blank">第九期</a> 第十期 <a href="https://klpbbs.com/thread-82451-1-1.html" target="_blank">第十一期</a><br>来源:<a href="https://klpbbs.com/thread-82444-1-2.html" target="_blank">https://klpbbs.com/thread-82444-1-2.html</a><br>免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 这是很有用的附加包的教程,我要好好学习学习,感谢楼主分享的教程! 十分感谢分享<img onerror="study_killerrpic(this)" src="https://klpbbs.com/static/image/smiley/bilibili/72.png"border="0" alt="" /> 似乎用不了了
页:
[1]