
方块变体交换器
一个轻量级模组,让你能随时在手持方块的不同变体间切换——木板到楼梯、台阶、栅栏、门等——无需打开工作台或切石机。
查看大图方块变体交换器
一个轻量级模组,让你无需打开工作台或切石机,即可在手持方块的各变体(台阶、楼梯、栅栏、门等)之间即时切换。
功能说明
选中快捷栏中的一个方块,按住交换键(默认左 Alt),然后滚动滚轮。手中的方块会在其配置的变体组中循环切换。快捷栏上方会显示预览,展示其他变体及其名称,让你在放置前就能看到要切换成什么。
核心理念是,一整"族"方块(例如所有橡木建筑方块)就像一个你随身携带、可按需变形的单一物品。例如,你的物品栏中只保留一组橡木木板,但实际上你可以即时使用 9 组橡木变体(完整方块、楼梯、台阶、栅栏、栅栏门、门、活板门、压力板和按钮)。

设计目的
众所周知,物品栏管理是这个游戏的一大难题。其中最大的成因之一就是为了所有建筑方块而不得不加入游戏的各种方块变体,以及随之而来的对这些方块进行物品栏和存储管理的负担。有了这个模组,方块变体只存在于快捷栏中,其他地方不会出现;它们总会还原为原始的基块。这简化了物品栏管理、存储和分类,并消除了在方块变体堆叠间频繁切换,以及在工作台或切石机中反复合成的需要。
运作方式
- 交换: 按住交换键(默认左 Alt,可改键)并滚动鼠标滚轮,同时手中握持一个属于变体组的方块。手中的物品会切换到下一个/上一个变体。滚动会在组内循环。
- 预览: 按住交换键时,快捷栏上方会显示一列"幽灵"槽位,展示该组中的其他变体并标注名称。预览时会隐藏干扰视线的 HUD 元素。
- 非破坏性掉落: 破坏已放置的变体方块会掉落其基块,而非变体本身。这保持整个方块族作为一种可互换的资源——放置楼梯,敲掉它,得到木板。
- 变体仅存于快捷栏: 变体只存在于你的快捷栏和副手槽中。将其移入主物品栏、箱子、潜影盒,或扔到地上,它会自动还原为其基块。这防止了变体物品使存储系统变得杂乱。
- 智能拾取: 当你手持某个基块的变体时拾取该基块,物品会合并到那个堆叠中,而不是占用新槽位。该堆叠继续显示变体;数量只是增加。(已重命名或以其他方式自定义的堆叠会保持独立。)

疑问与解答
这会导致建筑需要更多方块吗? 并非如此。平均而言,变体方块的合成操作是有损耗的,实际上只有台阶能获得比原方块更多的数量:
| 变体 | 合成比例 | 原版方块损耗 |
|---|---|---|
| 楼梯 | 4 个合成 6 个 | 33% |
| 台阶 | 6 个合成 3 个 | 0%(实际翻倍产出) |
| 栅栏 * | 3 个合成 5 个 | 40% |
| 栅栏门 * | 1 个合成 4 个 | 75% |
| 墙 | 6 个合成 6 个 | 0% |
| 门 | 3 个合成 6 个 | 50% |
| 活板门 | 2 个合成 6 个 | 67% |
| 压力板 | 1 个合成 2 个 | 50% |
| 按钮 | 1 个合成 1 个 | 0% |
| 格栅 | 4 个合成 4 个 | 0% |
*栅栏和栅栏门还需要木棍,此处按木板等价物计算(2 木板 = 4 木棍)。
这个模组始终是 1 个方块进,1 个方块出,并且完全可逆。因此,与原版合成相比,除了台阶外,每个变体实际消耗的基块都更少——只有在台阶上,原版 2 换 1 的产出才更划算。对于石质方块族,你还可以使用切石机,它对大多数形状都是 1:1 的,所以两者大体相当,而该模组只是省去了合成这一步。
其理念是改变制作变体时对方块比例的思考方式,并完全不再将变体视为独立的方块。使用此模组,变体在快捷栏之外不存在,始终只是你切换成所需形状的那个基块。
为什么方块 X 不在变体组中? 通常有充分的理由——技术问题、游戏平衡(正常合成配方中投入方块数量差异巨大,或者合成配方中使用了除源方块外的其他物品),或方块分类问题(模组仅尝试将创造模式物品栏"建筑方块"标签页中的方块归组)。以下是一些原版物品及其原因的示例:
- 木告示牌:基础告示牌仅由木板和木棍制成,这本来可以使其符合条件(因为我们也允许栅栏和栅栏门)。然而,告示牌携带额外的组件数据,且最大堆叠数为 16 而非 64,这使得它们与其他可交换方块不一致,并导致堆叠问题。我不想涉足复杂的物品堆叠组件比较或更改物品最大堆叠数,这不是本模组的目的。
- 功能方块(箱子、堆肥桶、木桶、熔炉等):游戏平衡考量,即使它们仅由一种材料制成,其成本也远高于一块木板/圆石。
- 梯子:仅由木棍制成,因此如果归入橡木木板族,就会禁止使用其他木材类型制作。
- 玻璃块/玻璃板以及地毯/薄层:同样出于游戏平衡,合成产出数量远多于基块。
- 染色方块、铜灯、悬挂式告示牌:游戏平衡,需要其他合成物品(染料、烈焰棒、锁链等)。
- 铁/金块(门、活板门、测重压力板):由锭而非块制成;如果由块制成,成本会过高。
为什么完整方块变体不可交换? 本模组旨在允许在不同方块形状变体之间切换,而非在不同完整方块之间切换。这就是为什么你不能在石头和圆石、深板岩和圆石深板岩、或錾制/支柱变体之间切换。此外,许多此类方块往往有大量自身的形状变体(例如,所有深板岩方块、圆石/磨制/砖/瓦都有自己的楼梯、台阶和墙),因此将它们全部放入一个变体组是不切实际的。唯一偏离此规则的是铜格栅,它算是一种完整方块但在我看来又不完全是,例如你可以像楼梯或台阶一样给它含水。
这是客户端还是服务端模组? 两者皆是。交换、掉落还原和限制功能均通过服务端 Mixin 和网络运行,而交换键 + 滚轮触发和幽灵预览在客户端。因此,要启用完整功能,服务端和客户端都需要安装。
在现有世界中添加/移除是否安全? 非常安全。该模组不会触碰世界中已放置的方块,只处理物品栏中的物品。安装/卸载绝不会损坏世界。安装后,任何不在玩家快捷栏/副手槽中(但存储在箱子等存储方块中,或玩家内部物品栏中)的方块变体都会还原为基块。卸载后,每个方块都会留在物品栏中的原位置——基块保持为基块,快捷栏中的变体保持为原版方块变体。 该模组不会添加或移除任何物品堆叠,也不会更改物品堆叠数量,更不会覆盖世界中放置的方块。它唯一做的是将玩家快捷栏/副手槽之外的方块变体物品堆叠还原为基块物品堆叠。仅此而已。
使用方块变体的合成配方如何处理? 幸运的是,这类配方数量很少(主要是由台阶合成錾制/支柱方块,但也包括堆肥桶或盔甲架之类),并且都在尽量保持合成材料平衡的前提下得到了处理(例如,錾制/支柱方块现在由两个完整方块而非两个台阶合成,但产出两个方块而非一个,与原版石英支柱配方一致)。
创造模式的选取方块 / 创造物品栏如何工作? 中键点击一个已放置的变体,你会得到变体物品(掉落逻辑不适用于创造模式选取),之后它在快捷栏中正常工作。
生存模式的选取方块如何工作? 选取方块功能完全支持变体。中键点击一个方块,如果你的物品栏中有来自同一方块变体族的物品堆叠,无论如何都会给你那个物品堆叠。所以,如果你选取一个完整方块,而你的快捷栏中当前放着楼梯变体,它会选取那个物品堆叠并为你自动交换。如果你选取一个变体方块,而你的快捷栏甚至玩家物品栏中有基块的堆叠,它也会拉取并自动交换。
边缘情况物品容器(物品展示框、饰纹陶罐)如何处理? 物品展示框仍然可以展示方块变体,如果你将变体放入其中的话,所以与原版相比没有变化。只有当变体被从物品展示框中打落时,物品才会还原为基块。饰纹陶罐也可以持有变体,但当陶罐被破坏或用漏斗移除时,物品会还原。任何漏斗/投掷器的移动都会将物品还原为基块。
工具附魔仍然正常工作吗? 是的,无需任何更改。方块还原是在游戏计算完掉落物之后处理的,因此精准采集/时运仍然生效,然后掉落结果会在适用时转换为基块。
这会导致卡顿或性能问题吗? 不会。方块还原检查是基于刻的,但扫描是廉价的哈希映射查找,并且仅在打开物品栏界面时运行。影响可忽略不计。游戏加载甚至会微乎其微地更快,因为移除了数百个方块变体的合成和切石配方。
切石机怎么办? 切石机并未被移除;仅移除了方块变体的配方。该方块仍在游戏中,保留了完整方块的配方(而非形状变体),可用于装饰,或用于本模组未涵盖的模组场景中的其他配方。
是否支持/将会支持模组 X? 受支持的模组列表在下方。可以通过提交 GitHub Issue 来请求新增,或者使用自定义 JSON 配置文件自行添加(说明见下文)。
受支持的模组
目标是在有兴趣的前提下,尽可能为更多热门模组集成变体交换器支持。该模组已根据版本和模组加载器组合,内置了对特定模组组的兼容性。
没看到你喜欢的具有方块形状变体的模组?提交一个 GitHub Issue 来请求,或者将你自己的配置(说明见下文)放入你的游戏。
配置
该模组为上述每个受支持模组内置了默认配置,并且每次更新都会自动保持最新——除非你想要自定义,否则无需维护任何配置文件。
这些默认值存在于模组内部,绝不会写入磁盘,因此模组更新总能带来最新配置,而无需你删除或重新生成任何东西。对于你未安装的模组,其方块组会被直接跳过。
自定义
要更改或添加变体组,请将你自己的 JSON 文件放入 config/blockvariantswapper/(该文件夹会为你自动创建为空)。任何以 _block_variants.json 结尾的文件(例如 minecraft_block_variants.json)都会在默认配置之上加载。每个文件将一个基块映射到其循环切换的方块列表:
{
"minecraft:oak_planks": [
"minecraft:oak_planks",
"minecraft:oak_stairs",
"minecraft:oak_slab",
"minecraft:oak_fence",
"minecraft:oak_fence_gate",
"minecraft:oak_door",
"minecraft:oak_trapdoor",
"minecraft:oak_pressure_plate",
"minecraft:oak_button"
]
}
需要记住的事项:
- 自定义配置由你自己负责维护,并确保其正常工作。
- 该模组仅完全支持方块族配置中的常规建筑方块。其他方块类型,尤其是包含组件数据的方块(例如告示牌、熔炉等功能方块),或无法堆叠至标准 64 个物品堆叠的方块,将无法正常工作,并可能导致意外行为。我不会接受针对这些提出的问题。
你的文件与默认配置的交互方式:
- 覆盖: 如果你定义的基块已存在于内置默认配置中(例如
minecraft:oak_planks),你的组会完全替换默认组,因此请列出你想要保留的每个变体,因为该方块的默认组会被丢弃。(这是移除你不喜欢的变体的方法:重新定义不包含它的族。) - 添加: 定义默认配置中没有的基块以添加全新的族;这样你可以为尚未捆绑的模组添加支持。
- 组中的第一个条目是基块,所有变体最终都会还原为它。
- 每个基块在每个文件中只能出现一次 —— 一个 JSON 文件中同一个键出现两次将无法加载。
- 当前游戏实例中不存在的物品 ID 会被静默跳过,因此引用可选模组的文件即使在该模组未安装时也可以安全保留。
- 如果两个文件定义了相同的基块,则以(按文件名顺序)最后一个为准。
- 在游戏内运行
/reload即可在不重启的情况下应用配置更改。
许可证
根据 [LGPL-3.0-only](LICENSE)许可证授权。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。