发是的个的发
本帖最后由 发是的个的发 于 2023-3-13 16:53 编辑

在最近的版本中更新了盔甲纹饰这个功能,让盔甲可以有更多的纹理,这填补了MC数据包一直以来的一个问题,那就是你无法做出更多款式的服装(除非借助optifine),原版只给你提供了皮革染色这样的选择。但现在加入盔甲纹饰功能就让原版MC中在不影响原生服装的情况下可以自定义更多款式。通过数据包和资源包,你可以自定义服装上的图案,但我也发现一个问题,那就是虽然可以自定义图案,但是图案的颜色只能根据你所给的材料而定,而通常情况下特定材料只能有特定颜色,例如钻石是蓝色,铁是白色,这样的话你自定义出的服装也就只能有一种颜色,这样对于服装来说也是不够丰富的,那么有什么办法可以让盔甲纹饰同时有多种颜色吗?
我翻找以后发现,在盔甲纹饰的原理是这样的。首先是一张图片提供纹饰的图案,在游戏文件路径minecraft\.minecraft\versions\1.19.4-pre1\assets\minecraft\textures\trims\models\armor下,你可以找到这些图片。其次,要一张图片提供材料能赋予的颜色板,在文件路径minecraft\.minecraft\versions\1.19.4-pre1\assets\minecraft\textures\trims\color_palettes中。而你会发现提供图案的图片所用的颜色都是白色、灰色和黑色,而提供颜色板的图片则是各种各样的颜色由浅到深渐变。所以我猜测提供图案上不同程度的灰色能对应于颜色板上不同深浅的颜色,如果把不同深浅的同一颜色替换成其他颜色,那么绘制图案时,不同深浅的灰色就能对应不同的颜色。于是我就尝试改变了一下铜的颜色板,把不同深浅的红褐色改成其他种类的颜色,果然盔甲就出现了各种各样的颜色。
当然,这就对画材质提出很高要求,毕竟你要区分不同的灰色,然后用不同的灰色来代表各种颜色,而最多只能有8种颜色。我在测试时也发现,如果你选的灰色无法和画板对应上的话,会直接呈现为画图案时的颜色。

经过我的不懈观察,我提取了几个图案中的颜色的RGB值,发现所有的灰色的RGB值中R值、G值、B值都是相同的,虽然我只找出了6种颜色,但我也从6种颜色中发现规律,那件事每个颜色的R值(或者G值或者B值)都是32的倍数,所以我猜测8种灰色的RGB分别从(0,0,0)依次递增32,直到(224,224,224),RGB值越高,颜色越白,对应的颜色板就是越浅的颜色。(一开始我以为是从32开始递增到256,后来发现RGB颜色最高也就255,所以应该是从0开始,实践证明也是如此)


但我发现,盔甲纹饰可以实现更多,因为你可以把颜色板之间设置成透明无色,这样你就可以随意使用颜色去绘制纹饰图案。有时间的话我会详细说明怎样做一个数据包来实现自定义盔甲纹饰,而且盔甲纹饰能够展示不同的时装。

晴路卡
这填补了MC数据包一直以来的一个问题,那就是你无法做出更多款式的服装(除非借助optifine)
1.19.4之前就能做了 也不用optifine

发是的个的发
晴路卡 发表于 2023-3-12 20:07
1.19.4之前就能做了 也不用optifine

是用shade吗?

pengy
精华6666666

晴路卡

是 着色器做的 不同颜色的皮革套显示不同样式的盔甲

发是的个的发
晴路卡 发表于 2023-3-13 15:13
是 着色器做的 不同颜色的皮革套显示不同样式的盔甲

那其实还是需要借助一些插件,我个人研究数据包就是为了不需要安装forge或者fabric之类的插件就能拓展更多玩法。不过现在我有些不明白的一个是这个视频博主最后向我们展示了他自定义了一个盔甲模板,而且自定义出来的这个物品可以直接从创造 模式的物品栏中取出来,这是不是意味着现在MC可以真正意义上添加新的物品,而不是在原有物品上改材质改名字。https://www.youtube.com/watch?v=LJ9AA_9NQso

晴路卡
发是的个的发 发表于 2023-3-13 16:42
那其实还是需要借助一些插件,我个人研究数据包就是为了不需要安装forge或者fabric之类的插件就能拓展更 ...

呃 不需要借助什么插件 原版客户端/服务端就能用 你可以自己试试
https://github.com/Ancientkingg/fancyPants
我自己也写过一个 还能支持纹理动画和发光贴图

是能添加新物品,但添加的只能是trim,而且存档必须开启实验性选项才能用
我能理解你对你自己的发现很惊喜,但是没搞明白就说“其实还是需要借助一些插件”这种话真的很伤人。

发是的个的发
晴路卡 发表于 2023-3-13 18:32
呃 不需要借助什么插件 原版客户端/服务端就能用 你可以自己试试
https://github.com/Ancientkingg/fancy ...

好吧,是我孤陋寡闻了,抱歉

ruhuasiyu
  1. {
  2.   "sources": [
  3.     {
  4.       "type": "paletted_permutations",
  5.       "textures": [
  6.         "cpp:trims/models/armor/new_year_cloth",
  7.         "cpp:trims/models/armor/new_year_cloth_leggings"
  8.       ],
  9.       "palette_key": "trims/color_palettes/trim_palette",
  10.       "permutations": {
  11.         "none": "trims/color_palettes/trim_palette"
  12.       }
  13.     }
  14.   ]
  15. }

复制代码


像这样弄atlas就行了,弄一个平凡的置换颜色版就行


小鸟游·漆黑
学到了新知识

quechao_
非常实用的知识

霜树
学到学学到了 感谢大佬~