“连接纹理”是指某一方块的纹理在相邻方块满足特定条件时发生变换,以满足特定的视觉呈现需求。经典的使用例有 Mekanism 的热力蒸馏方块、资源包中广泛存在的连接玻璃。“连接纹理”可被统称为 CTM(Connected Texture Method),为避免混淆,以下将名叫 ConnectedTexturesMod 的模组称为 CTM Mod,CTM 则指“连接纹理”这一行为本身。
成型的热力蒸馏塔
同色相连的玻璃
CTM 不是 Minecraft 原版的内容,而是由各种模组添加渲染连接纹理的能力,由资源包对特定方块加入纹理。也就是说,仅安装连接纹理模组的情况下,不会有纹理连接的效果。
因为不是原版的内容,所以由不同模组提供的 CTM 有不同的格式。只有当同时安装格式匹配的模组和模组/纹理包时,CTM 纹理才可见。常见的格式有:
模组内置:某些模组内置连接纹理支持,如早期的 Mekanism、极限反应堆的 1.12.2 版本,一般较为简陋,由于必须安装特定模组而使用不广,部分强绑定方块状态,较为复杂。
MCPatcher 格式:最初由 MCPatcher 实现,后续随 MCPatcher 被合并到 Optifine 内。是最成熟的连接格式,然而对模组内置资源不太友好。
代表实现:MCPatcher、Continuity,以及它们的衍生模组,包括:OptiFine,1.7.10 的 MCPatcherForge、NotFine、Angelica、Right Proper Texture Patcher,新版 Continuity 的 Forge/NeoForge 移植 Connectedness、NeoContinuity,1.16.5 Fabric 移植 Continuity Unofficial Port 1.16。
代表用例:各种需要 Optifine 的资源包。
CTM Mod 格式:最早在凿子实现,后续独立成为 CTM 模组。由于 OF 格式对模组内置资源的支持较差,模组开发者转向对模组友好的 CTM Mod 格式,使该格式在低版本广泛被模组使用。然而在新版,由于更新不及时,加上凿子停更,CTM 替代品出现,从而占有率下降。
代表实现:凿子本体(1.12.2 +不再内置)、ConnectedTexturesMod,以及衍生模组:Fabric 移植:ConnectedTexturesMod for Fabric、CTM Refabricated,1.20.1 Forge 移植:ConnectedTexturesMod Backport,1.7.10 移植:ConnectedTexturesModUnofficial。
代表用例:凿子本体。
Fusion 格式:支持一些具有区分度的小功能,被 SuperMartijn642 创作的一众模组所使用。支持版本范围广,然而需要注意的是其在 1.12.2 下兼容性较差。
代表实现:Fusion (Connected Textures)。
代表用例:Rechiseled、Connected Glass。
Athena 格式:高版本新兴的一种格式。支持 Forge/NeoForge/Fabric 三端,没有乱七八糟的分支,较为省心。
代表实现:Athena / Stitch。
每种格式有自己的写法和特点,按需选择安装即可。 一般来说同格式写法不会大改,不同实现主要是代码上有区别。几个格式虽然支持的 CTM 种类不同,但是基本都包括了最简单的四图简化 CTM、柱状 CTM 等,虽然纹理排布可能不同,但最终实现效果类似。如果需要,也可以摸索排布规律,实现部分种类 CTM 纹理的互转,所以不要纠结于格式,做一半要改也来得及。
MCPatcher 格式的纹理一般存储在 minecraft/mcpatcher/ctm/** 下(1.13后所有mcpatcher文件夹下的文件应全部改放在optifine文件夹下),纹理以块为单位,properties 文件内存储信息。Wiki 有官方的(英文)和我自己在看的森罗万象(中文)。连接时使用的纹理是一堆特定状态下的小纹理,而不像其他模组一样拼接在一起。
一资源包内绿色玻璃的全尺寸 CTM 和 properties 文件
CTMMod 格式的纹理存储位置不定,存储信息在与模型引用纹理同名的 mcmeta 文件下,类似原版动态纹理的写法。而连接时使用的纹理,则是拼接而成的一张大图,或者多张大图,或者其他的,具体由选择的加载方式而定。Github 上有一个 WiKi(英文),很久不更新了,仍然可用,但是一些新加的的特性(例如使用 Json 自定义 CTM 逻辑、proxy 新写法)没写上去。
凿子的雕凿石头
Fusion 格式类似 CTM,连接纹理是类似的一整张图,信息也存储在 mcmeta 文件,支持的种类更多一点,有自己的模板库和详尽的 WiKi(英文),不再赘述。
Athena 格式写在方块状态文件里面。有官方的 WiKi(英文),可以作为高版本首选。
以下是赛特斯石英块的一个示例。
assets/ae2/blockstates/quartz_block.json
{
"variants": {
"": {
"model": "ae2:block/quartz_block"
}
},
"athena:loader": "athena:ctm",
"ctm_textures": {
"center": "ae2:block/quartz_block_center",
"empty": "ae2:block/quartz_block_empty",
"horizontal": "ae2:block/quartz_block_h",
"vertical": "ae2:block/quartz_block_v",
"particle": "ae2:block/quartz_block"
}
}你可以在 assets/ae2/textures/block 下找到 ctm_textures 里的这四张图。它们都是拆分的状态纹理。


