BE教程

附加包教程:10.方块(一)

Cat_A***Lv.4 高级会员 发表于 2023-1-12 · 最后回复 2024-5-17 IP:山西省 4,511 4
AI 速览2026-09-25 09:54 生成

附加包教程第十期:从零添加一个自定义方块并赋予纹理

这是附加包教程系列的第十期,主题是方块。帖子先说明方块文档结构与物品相似但组件命名随格式版本变化很大,并统一采用1.21.0格式版本,随后给出一个包含掉落物、摩擦力、地图颜色三个组件的基础方块示例,再讲解如何通过blocks.json和terrain_texture.json登记纹理、放置图片文件,以及用zh_CN.lang修正方块显示名称。适合已经学完前几期物品内容、想继续入门方块开发的附加包作者阅读,文末还提供了可直接修改的模板包。

获取方式
  • 论坛附件:模板包,请解压.zip,免费,3 KB
  • 教程统一使用1.21.0格式版本,旧版组件命名不同
  • 方块纹理支持.tga、.png、.jpg,同名时按此顺序优先
  • 建议把.jpg纹理转换为.png,而非只改后缀
  • zh_CN.lang中命名空间ID后需加.name,且不能换行或转义
  • 半透明或透明纹理在游戏中可能变黑或不透明,需后续组件解决
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
本帖最后由 Cat_Anchor 于 2024-5-17 19:20 编辑

前言

前面4期,我们已经学完了有关物品的知识。这次,我们就来学习如何添加一个方块。这是一个很复杂的内容,它的难度比物品要大得多。然而,如果只需要一个简单的方块,那么方块和物品就大同小异了。接下来,我们将花若干期的时间学习关于方块的所有内容。
准备

学习方块是一个由简到难的过程。
在行为包根目录下打开blocks文件夹,新建一个文件。命名就是你的方块的英文名,这样比较好管理。你也可以新建一个文件夹,把它命名英文名,把所有相关的文件都放进去,方便管理。
方块的文档结构和物品大同小异,具体格式见下。但是,方块的命名分化十分严重。比如你可能可以在一篇文档里看到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的写法。
说了这么多,你一定觉得这命名也太乱了吧!没错,确实就是这么乱。目前的版本有1.16.0、1.16.100、1.17.0、1.18.0、1.19.0、1.20.0等等,但我在这篇文档里一律运用1.21.0版本。
这个版本是格式版本,一般来说,如果1.20的第一个测试版发布了,那么那个测试版里就会有1.20.0的格式版本。但也有例外,比如1.21.0的第一个测试版中确实有1.21.0的方块格式版本,却没有物品的。
格式版本控制着这个方块可以访问的特性,目的是防止旧内容遭到破坏。比如以前是minecraft:destroy_time这个名字的组件现在是minecraft:destructible_by_mining这个名字了,但由于它们对应不同格式版本,旧语法在新版本仍有效。由于新的格式版本能访问新版特性,方块的格式版本应该保持最新。
第一个方块

现在就可以开始了。在你新建的文件里写以下代码。

渲染

这一期,我们还要给方块赋予一个纹理。最常见的方法是打开资源包根目录下blocks.json文件,写入如下代码。
  1. {
  2.   "方块ID": { //这里其实就是你刚才写的方块命名空间ID,简称方块ID。官方说必须写命名空间ID,但经过测试,似乎不写命名空间,只写冒号后面的ID也可以正常工作。不推荐不写命名空间。
  3.     "textures": "起一个短名", //这里如果没什么特殊需求,建议直接写方块ID,当然也可以其他的,跟下面对得上就行,怎么开心怎么来。
  4.     "sound": "amethyst" //方块发出的声音。可以写stone、wood、cloth等等。
  5.   }
  6. }
复制代码
然后打开textures文件夹下terrain_texture.json,把下面的代码粘贴进去。


在textures文件夹下新建blocks文件夹,打开,随便一张正方形图片扔进去,改名成你刚才写的名字(刚才的示例里是test,那就改成test.png)。其实这里没那么严格,照片格式只要是.tga、.png、.jpg中的一种就好了。然而如果图片后缀是.jpg,我建议你把图片转换格式成.png。是转换格式,不是单纯改后缀!如果文件同名而后缀不同,那么按.tga > .png > .jpg的顺序运用。
以.tga为后缀的图片用于纹理被渲染时的染色,比如草方块、树叶、皮革、羊等等可以被染色的东西。

打开游戏,你应该能在物品选项卡里找到你新增的方块,纹理是你刚才添加的图片。不过它的名字是乱码。如果要让它显示成正常名字,那就退出游戏,打开资源包根目录下的texts文件夹,打开zh_CN.lang,在新的一行里输入以下这行内容。
  1. tile.命名空间ID.name=方块名字
复制代码

其中,方块名字随便写,注意命名空间ID后面还有个.name(这是格式版本为1.16.100+的物品没有的)!另外,这里不能换行,也不能用\\转义,但可以用/tellraw或/titleraw命令中的%s功能。方块名字太长的话,可能会被截断。

再次打开游戏,你应该能正常看到一个你的方块了。有一个例外是,如果你给方块的纹理是半透明或者完全透明的,那么到游戏里透明部分会变黑,或者半透明部分会(部分)变得不透明。这个可以通过一个组件解决,我们下期会学到这个组件。
总结

下一期,我们就开始讲方块组件。与物品组件不同,我会按照类别讲方块组件,比如下期讲管渲染的方块组件,然后讲管碰撞箱的方块组件等等。如果你听了上面的这么多东西,有些不明白,我会提供一个模板包,按照这个无脑改就行了。
 模板包,请解压.zip (3.12 KB, 下载次数: 156)


回复 4 最早 最新 只看楼主
RGT*** Lv.3 中级会员
2024-5-17 13:00:11 · 来自手机 IP:浙江省
评论复审中... 编号:10515392
4# 2024-5-17 13:00:11 收起回复
Cat_Anchor 2024-5-18 10:57 IP:天津
回复 举报
请具体描述细节,另外,模板包是用来改的,没有manifest.json文件,不能直接装到游戏里
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则