「永恒之钢」是我做的一套装备附加包:一个锭,加五件工具——剑、镐、斧、铲、锄。
它没有上线,现在的形态是一个 .mcaddon 文件,国际版双击就能导入,
不用经过任何审核。做的时候是拿网易版的接口开发的,但打包成国际版格式也一样能跑,
所以就先这么放着了。
这六个东西听着不多,但每一件都要走完整条链,卡的地方比我想的多。
卡点一:贴图
原版的物品贴图是 16×16 像素,一格一格画出来的。你要新加一件工具, 贴图必须自己画,而且得跟原版那套风格对得上——不然放在背包里一眼就看出是外来的。
六件就是六张 16×16:锭、剑、镐、斧、铲、锄。
工具的形状其实有规律:镐是上面一条横的加一根斜杆,斧是一块厚的刃加杆, 锹是铲头加杆。但难的是颜色:钢这种材质既不能太亮(像铁),也不能太暗(像石头), 最后调的是偏冷一点的青灰色,跟原版的铁镐能区分开,但又不突兀。
这一步花的时间比写代码多。
卡点二:让物品名一个字一个颜色
这个是最好玩的地方。你看到的物品名是:
永 恒 之 锭但每一个字的颜色都不一样:第一二个是紫色,第三个是青色,第四个是白色, 最后那个字按物品类型换——锭是金色,剑是红色,镐是蓝色,斧是绿色,铲是黄色,锄是紫色。
做法是在语言文件里插颜色代码。Minecraft 的文本支持 § 加一个字符来改颜色,
§d 是紫、§b 是青、§f 是白、§6 是金。
所以那一行字其实长这样:
item.eternal_steel:eternal_steel_ingot.name=§l§d永§b恒§f之§6锭§l 是加粗,后面每个字前面单独挂一个颜色码。六个物品就是六行,每一行都要手写。
写完还要写英文版。游戏会读 zh_CN.lang 和 en_US.lang 两份,哪个语言环境读哪份。
卡点三:一个物品要塞进两个包
这是最容易搞错的地方。附加包分资源包和行为包两个,一个物品要同时在两边登记:
- 资源包管「长什么样」:贴图、图标、显示名
- 行为包管「能干什么」:合成配方、实际属性
两个包里都要有 manifest.json,而且每个包、每个模块都要有自己的 UUID,
不能重复。我一开始两个包填了同一个 UUID,导入直接失败,报错也不说人话,
排查了好久才发现。
目录大概是这样:
EternalSteel/├── resource_pack/│ ├── manifest.json│ ├── texts/zh_CN.lang 物品名(带颜色)│ ├── texts/en_US.lang 英文名│ ├── textures/items/*.png 六张贴图│ └── items/*.json 每件物品长什么样└── behavior_pack/ ├── manifest.json ├── recipes/*.json 合成配方 └── items/*.json 每件物品能干什么最后整个文件夹打包成一个 .mcaddon,国际版双击就导入。
卡点四:配方
配方是行为包这边的事,写成 JSON。比如剑是这样的:
{ "format_version": "1.20.10", "minecraft:recipe_shaped": { "description": { "identifier": "eternal_steel:eternal_steel_sword" }, "tags": ["crafting_table"], "pattern": ["X", "X", "#"], "key": { "#": { "item": "minecraft:stick" }, "X": { "item": "eternal_steel:eternal_steel_ingot" } }, "result": { "item": "eternal_steel:eternal_steel_sword", "count": 1 } }}pattern 就是工作台上的形状,一个字母一行。剑是竖着两个锭加一根棍,
所以是 X X # 三行。镐、斧、铲、锄的形状各不相同,五个配方五份 JSON,
一个字母写错就合不出来,而且报错不会告诉你哪里错。
现在的状态
六件套的贴图、名字、配方都做好了,.mcaddon 也打包了,国际版可以直接导入。
但它没上线。 原因很简单:我没想好怎么平衡数值—— 钢的工具到底该比钻石强还是弱?耐久多少?挖矿等级算几级?
数值定不下来,放出去就是半成品,所以先自己留着用。
想试的话跟我说,我把 .mcaddon 发给你。