跳到正文

Biome-colored flowers & plants

作者:JohnBaccarat

让资源包能够为方块添加生物群系颜色。还附带了一些适用于原版的资源包。

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

Header

这是一个模组,可让资源包添加群系染色颜色/索引,基本上就是为草方块、树叶和水添加群系颜色,并为几乎所有*方块提供半透明的群系叠加纹理。*(请参阅 1.18.2 及以下版本的说明)
此模组还附带了一些适用于原版的资源包,它们会被提取到资源包文件夹,并在启动时启用。

对于其他未默认附带的资源包,我应该过段时间会发布一个页面。

要求 / 兼容性

请见下表。
Compatability

1.12.2 和 1.16.5 – 在原版中,半透明纹理会出现视觉叠层问题
1.18.2 及以上版本 – 这些版本正确实现了绊线着色器,因此花朵这类非六面方块也可以使用半透明纹理。

如果你想要或必须使用能修复半透明问题的光影包,我测试了几个,以下版本可用于 1.16.5:

  • AstraLex v90.0
  • BSL v8.2.02
  • Complementary Shaders v4.7.1
  • Complementary Reimagined r2.03
    对于 1.12.2 和 Optifine,你也可以直接使用附带的“(internal)”光影包。它看起来与普通的 MC 完全一样,同时还能修复半透明纹理问题,只会带来少量性能损耗。

说明 – “几乎所有*方块”是什么意思?

1.19.2 及以上版本
实际上应该是所有方块。

1.18.2
指所有允许使用 Forge 的 ItemBlockRenderTypes.setRenderLayer() 方法的方块。

1.16.5
指所有允许使用 Forge 的 RenderTypeLookup.setRenderType() 方法的方块。

1.12.2
指所有原版方块,以及所有未覆盖 getRenderLayer() 方法的模组方块。

如何制作使用此模组的资源包?

我不打算介绍如何制作一般的资源包,请先去别处学习,然后再回来。

也请阅读短期待办事项中的第一项。

一般来说,有两种方法可以为方块添加染色颜色(以及在 1.18.2 及以下版本中添加 RenderTypes/BlockRenderTypes)。
编辑 *.json 模型文件
这种方法直接利用现有的 .json 模型文件基础。我扩展了它们的功能,使其能够添加染色颜色(以及在 1.18.2 及以下版本中指定渲染类型)。
资源包根目录中的 bcfp.ini 文件
这只应作为备用方法使用,适用于模型确实无法通过 .json 方法编辑的情况。通常只适用于较旧的 MC 版本。
你可以在资源包根目录创建一个名为 bcfp.ini 的文件,并指定方块应使用的染色颜色(或 1.18.2 及以下版本中的渲染类型)。
这些设置只会在启动时应用,不会动态重新加载。

两种方法都需要进行的操作

无论使用哪种方法,都需要编辑 .json 模型文件。

“Parent”标签

我们需要通过“parent”标签指向一个现有的父模型文件,或者自行创建模型。
我为 Minecraft 中已有的模型文件附带了一批修改过的父模型文件。编辑 .json 文件最简单的方法,就是将“Original parent”列中的内容替换为“Parent w/ overlay”列中的内容。请保留“block/”或“minecraft:block/”部分。
parent tag

示例:

“parent”: “block/crop_with_biome_overlay_modern”

 

对于 1.12.2,还有“crop_with_biome_overlay_modern”这一选项。它只是将较新版本中的一项修复移植了回来:纹理相对两侧的贴图会互为镜像,因此两侧的像素看起来就像处于相同的实际位置。附带的原版资源包使用了这一选项。

 

对于以上所有内容,你还必须指定一种新的叠加纹理。通常,叠加纹理的名称就是 “overlay”。
如果某个模型可能有多种叠加纹理,例如 “cube_with_biome_overlay”,则每个纹理名称都会有一个副本,并在名称后附加 “-overlay”。
花盆模型是个例外,因为我们只关心花盆里的植物。

这些修改过的模型文件还各自有一个版本:该版本带有第二层叠加,名称是在原名称末尾附加 “2”,另一种叠加纹理的名称也会附加 “2”。说实话,我没有测试这些版本,因为没找到用途。

如果你要创建自己的 .json 文件——”tintindex” 标签

如果你要创建自己的模型,而不是依赖 “parent” 标签,还必须指定带有色调索引的面所使用的色调索引。
你可以查看默认 flowers+plants 资源包中的 sunflower_top.json,了解它们的用法。简单来说,每种应用到方块上的色调颜色都会获得一个色调索引,从编号 0 开始递增(内部用 -1 表示不使用色调索引)。

你也可以用 7zip 解压此模组的 .jar 文件,然后查看 “assets\minecraft\models\block\”,其中提供了此模组修改过的父模型文件,可以帮助你更好地了解如何编写自己的模型。但请不要将这些文件随你的资源包重新分发。

方块/色调颜色

*.json 方法

要添加色调颜色,你必须在 .json 文件的根节点使用 “tintcolor” 标签(也就是通常放置 “parent” 标签的位置)。
以下是有效的色调颜色:

  • grass
  • leaves
  • water
  • startup – 这是启动后存在的方块颜色;如果某个方块一开始就有方块颜色,而我们还想再添加一种颜色,这个选项就很有用。

示例:
“tintcolor” : “leaves”
多个色调颜色的示例:
“tintcolor” : [“startup”, “grass”]

在上面的示例中,startup 色调颜色的索引为 0,grass 色调颜色的索引为 1。
有时,startup 色调颜色本身已经使用了多个色调索引;遇到这种情况时,你应该可以多次指定 “startup” 色调颜色。

 

请注意,如果你使用此模组提供的任何修改版父模型文件,它们都已经应用了 grass 色调颜色,因此若要使用 grass 色调颜色,就不必再指定。

例外的是以 “stem” 开头的修改版模型文件,因为原版游戏中的这些模型已经有方块颜色,所以它们使用 “startup” 和 “grass” 两种色调颜色。

带有两层叠加的版本还额外使用 leaves 色调颜色。

bcfp.ini 方法

通常,我们首先要在新建的 bcfp.ini 文件中添加一个方块。这些条目使用常见的 <namespace>:<location> 格式。例如,MC 中的石头命名空间为 “minecraft”,位置为 “stone”,因此初始字符串应为 “minecraft:stone”。
然后,可以指定以下其中一项:

  • !grass
  • !leaves
  • !water
    示例:
    minecraft:cobble_stone!leaves
    多个色调颜色的示例:
    minecraft:cobble_stone!leaves!grass

bcfp.ini 文件中的空行或以 # 开头的行都会被忽略。
如果你不确定某个方块的 <namespace>:<location> 是什么,通常可以在游戏中按住 F3,再按 H,这样鼠标悬停在物品栏中的方块上时就会显示相关信息。
如果没有指定色调颜色,默认会使用 !grass。

渲染类型

我们还必须指定游戏如何渲染方块。

*.json 方法

如果你了解现代资源包,可能已经知道这一点,不过我也为 1.18.2 及更早版本实现了这个功能。
此“render_type”标签位于我们的 .json 文件根目录。
有效值:

  • minecraft:tripwire – 修复 minecraft:translucent 的图层错乱问题;如果你想让非六面方块具有透明效果,应使用此值。1.12.2 不可用。
  • minecraft:translucent – 适用于为具有不透明材质的六面方块添加覆盖层。用于植物等非六面方块模型时,会出现难看的图层错乱问题。
  • minecraft:cutout_mipped – 带有 mip 映射的 cutout 版本,通常用于树叶。详见下文。
  • minecraft:cutout – 原版中的大多数花朵都使用此值。像素要么完全透明,要么完全不透明。像素被判定为透明的阈值是 30%,即 76/256。
  • minecraft:solid – 普通的不透明方块。对我们来说基本没什么用。

示例:
“render_type” : “minecraft:tripwire”

总的来说,对我们最有用的是 tripwire(1.12.2 中则是 translucent)。
对于较旧的版本,需要注意的是,多个方块状态(基本上一个方块状态对应一个 *.json 文件)必须共用同一种渲染类型,因为渲染类型是绑定到方块上的。因此,模组会遍历一个方块所有可能的状态,并采用上面列表中优先级最高的那个。

 

bcfp.ini 方法

此方法仅适用于 1.18.2 及更早版本。
有效值:

  • !tripwire
  • !translucent
  • !cutout_mipped
  • !cutout
  • !solid

示例:
minecraft:stone!grass!translucent

有关这些值的说明,请参阅 *.json 方法。
如果未指定值,默认使用 !tripwire。

待办事项

短期 / 几周内

  • 有时,在 Sodium 的衍生模组中,渲染类型只有在启动时才会更改。这对资源包作者来说尤其重要,因为如果想更改渲染类型,就必须重启游戏。
  • 从 1.18 版本开始移植到 Fabric。 参见常见问题。
  • 研究如何检测是否正在使用光影,因为用于 tripwire 的光影通常会被忽略,导致阴影不生效;必要时将渲染类型设为 translucent。
    长期
  • 或许可以研究修复旧版本中的图形问题,这样就不需要其他模组了。
  • 也许有一天会再尝试移植到 1.7.10。

常见问题

问:会影响性能吗?
会。由于 GPU 必须为每个覆盖层额外绘制三角形,因此会略微影响性能。在一片花林中使用 Rubidium 时,我的 FPS 大约会降低 1–2%。

我曾经用大约 27 万多朵花搭建过一面巨大的斜墙。直接看向它时,安装此模组会让我的 FPS 下降约 18%,不过我觉得这种情况不太现实。

问:什么时候移植到 Fabric?
大概几周内。 我会研究将资源包移植到 OptiFine 自定义颜色格式,因为有几个模组移植了相关功能,例如 Vanadium Colors 和 Colormatic。

问:什么时候发布源代码?
以后会发布,大概会在移植到 Fabric 之后。我想先整理一下代码,因为我以前从未在互联网上发布过源代码。

问:你会为已经发布过此模组的旧版 Minecraft 更新模组吗?
会,只要更新后的功能对该 Minecraft 版本仍然有意义。

问:你会为某个大版本中并非最新的次要版本更新模组吗?
不会。

问:新的 MC 版本已经发布,Forge 也推出了测试版,你会马上更新模组吗?
只要 Forge 还没有稳定版,我就不会更新。不过,你可以试着使用上一个 MC 次要版本对应的版本,因为我没有禁止模组在更新的 MC 次要版本中运行。

常见问题

Biome-colored flowers & plants 支持哪些 Minecraft 版本?

Biome-colored flowers & plants 支持 Minecraft Java 版 1.12.2–1.20.1,共 12 个版本,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Biome-colored flowers & plants 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:仅客户端。

评论

登录后评论和评分

JohnBaccarat 的其他作品

查看全部 →