# 调节元件

其他红石元件只能被动地接收红石信号, 而"调节器"则可以改变红石信号.

Minecraft 中共有 2 种"调节器":

  • "红石中继器 (Redstone Repeater)"
  • "红石比较器 (Redstone Comparator)"

下面, 我们分别讲解:

# 红石中继器 (Redstone Repeater)

Redstone_Repeate

# 特性

"红石中继器(Redstone Repeater)"有 4 个特性:

  • 提升强度
  • 单向传输
  • 制造延迟
  • 锁存状态

# 1.提升强度

"红石中继器"能够将红石信号强度重新提升到 15 单位, 因此, 我们可以使用"中继器"将红石信号不断传输下去.

"提升强度"是"中继器"最主要的功能, 这也是为什么叫"中继器"的原因 -- "中间提升能量供其继续";

# 2.单向传输

只有一个方向的电流可以通过"红石中继器", 其特性类似于现实世界的"二极管"[1]. "红石中继器"会从后端接收红石信号, 然后从前端发出更新强度后的红石信号. 有凹槽(滑轨)和火把的是"后端", 只有火把的是"前端":

中继器的方向性

放置"中继器"时, 中继器的"后端"会在靠近游戏角色的一侧, 所以我们应该面朝想要电流流向的方向放置中继器:

放置中继器

根据之前讨论的"红石粉"的连接特性, 相邻的红石粉会自动连接, 而不会接入相邻的红石设备[2]. 那么利用"单向传输"特性, 在红石设备和红石粉之间放置"中继器", 可以保证红石粉不会相互连接, 而是保证线路之间互相绝缘, 正确接入红石设备:

中继器的单向传输

"红石比较器"也有相同的单向传输特性, 但是由于其侧面也可以输入, 所以通常不使用其实现"单向传输", 而使用"中继器"

# 3.制造延迟

"红石中继器"能够延迟红石信号的传递.

延时对于某些需要特定时序才能正常工作的复杂机械非常关键, 比如活塞门. 中继器的默认状态是延迟 1 红石刻[3](即 0.1 秒), 对着"中继器"点击鼠标右键, 可以将延迟切换为 0.2 秒、0.3 秒 和 0.4 秒 (加上默认的 0.1 秒, 一共 4 个档位). 而且, 我们可以通过同时使用多个"中继器"来制造更长的延迟时间.

# 4.锁存状态

在"红石中继器"的侧面放置一个与之方向垂直的"红石中继器"或者"红石比较器", 当后者被激活时, 前者的"充能"或者"未充能"的状态会被锁住. 也就是说, 如果前者之前处于充能状态, 后者被激活后, 即使撤掉了前者的红石供能元件, 前者还是会处于充能状态. 处于锁存状态的中继器会出现一个挡板标识:

中继器的锁存功能

我们可以利用这个“锁存特性”来制造"电子锁", 用于将门闩死; 或者用来制造一个 1 位[4]的内存单元.

# 合成方法

物品 材料 合成配方
红石中继器
Redstone Repeater
红石火把 + 红石粉 + 石头
Redstone Torch + Redstone + Stone
红石中继器

# 红石比较器 (Redstone Comparator)

Redstone_Comparato

"红石比较器 (Redstone Comparator)" 能够比较后面和侧面输入的红石信号强度, 也能够用来检测容器的填充程度.

# 特性

"红石比较器"有 4 个特性:

  • 比较红石信号
  • 检查容器的填充度
  • 输送红石信号
  • 单向传输

# 1.比较红石信号

"红石比较器"有 2 个输入端和 1 个输出端. "主输入端"在靠近凹槽(滑轨)的一侧, "侧输入端"在侧面, "输出端"在有灯的一侧:

比较器的输入端和输出端

"红石比较器"有 2 种模式:

  • 比较模式:
    • 当"侧输入端"的信号强度比"主输入端"强, 则"输出端"输出的信号强度为 0;
    • 当"侧输入端"的信号强度比"主输入端"弱或者相等, 则"输出端"输出的信号强度与"主输入端"的信号强度相同;
  • 减法模式:
    • 当"侧输入端"的信号强度比"主输入端"强, 则"输出端"输出的信号强度为 0;
    • 当"侧输入端"的信号强度比"主输入端"弱或者相等, 则"输出端"输出的红石信号为"主输入端"信号强度减去"侧输入端"信号强度;

换个说法: 如果我们用字母 A 表示"主输入端", 用字母 B 表示"侧输入端", 用字母 C 表示"输出端", 那么:

  • 比较模式:
    • 当 B > A, 那么 C = 0
    • 当 B ≤ A, 那么 C = A
  • 减法模式:
    • 当 B > A, 那么 C = 0
    • 当 B ≤ A, 那么 C = A - B

比较器的两种模式

"比较模式"和"减法模式"有个共性: 当"侧输入端"的信号大于"主输入端"的信号时, "输出端"的信号强度为 0

那么, 如何切换模式呢?

  • 默认情况下, 比较器处于"比较模式", 这时"比较器"前面的火把是熄灭的
  • 对着"比较器"点击鼠标右键, 将切换成"减法模式", "比较器"前面的火把会点亮

# 2.检查容器的"填充度"

"红石比较器"可以检查容器的填充度, 然后输出等比例的红石信号强度.

什么叫"填充度"? 比如说, "箱子(Chest)"一共有 27 格储物空间, 那么如果有 10 格被填满(如果是可堆叠的物品, 必须堆叠到最高才算填满 1 格, 比如说草方块可以堆叠 64 个, 那么一格里面必须有 64 个草方块才算填满 1 格)

比如说"漏斗", "漏斗"共有 5 格存储空间, 如果填满 3 格, 填充度为 3/5 = 60%, 那么占据了 3/5 = 60% 的空间, 则比较器会输出 15 * 60% = 9 单位强度(满格红石能量强度是 15 单位强度): 如果 5 格都装满, 则代表 100% 填充, 那么相连的比较器也会输出 100% 的强度, 即 15 * 100% = 15 单位强度.

"红石比较器"可以检查以下容器的填充度(简单而言, 我们可以认为, 只要带有物品栏的物品都可以被检查填充度):

  • 箱子(Chest)
  • 陷阱箱(Trapped Chest)
  • 潜影盒(Shulker Box)
  • 漏斗(Hopper)
  • 熔炉(Furnace)
  • 投掷器(Dropper)
  • 发射器(Dispenser)
  • 唱片机(Jukebox)
  • 酿造台(Brewing Stand)
  • "探测铁轨(Detector Rail)"上的"带漏斗的矿车(Minecart with Hopper)"
  • "探测铁轨(Detector Rail)"上的"带箱子的矿车(Minecart with Chest)"

# 已知容器中的物品数量, 求解信号强度

"信号强度" = 向下取整 [ 1 + ("所有物品栏的满度之和" / "物品栏总数") * 14 ]

其中, "(单格)物品栏的满度" = "单格中的物品数" / "此类物品最大堆叠数"

以"漏斗"和"箱子"为例, 假设有 2 格装了 64 个木板, 有 1 格装了 9 格木板:

例子_漏斗和箱子填充度

那么, 对于"箱子"来说, 比较器输出的信号强度是:

  1. 1 + ( ( 2 + 9/64) / 27 ) * 14 = 2.10995
  2. 2.10995 向下取整是 2
  3. 所以输出的信号强度是 2 个单位强度

对于"漏斗"来说, 比较器输出的信号强度是:

  1. 1 + ( ( 2 + 9/64) / 5 ) * 14 = 6.99375
  2. 6.99375 向下取整是 6
  3. 所以输出的信号强度是 6 个单位强度

实际输出的强度和我们的计算是一致的:

如何求解比较器输出的信号强度

# 已知信号强度, 求解容器中物品的数量

如果你想要输出特定强度的红石信号, 那么就需要计算填充多少东西

所需物品数 = 两者取较大值 { 向上取整 [("容器总格数" * 64 / 14) * ("目标信号强度" - 1)], "目标信号强度"}

以"漏斗"和"箱子"作为例子, 假设我们需要输出 6 个单位强度, 放置的是木板(堆叠上限是 64).

"漏斗"需要的物品数:

  1. 计算结果是 (5 * 64 / 14) * (6 - 1) = 114.28571, 向上取整后为 115;
  2. 115 (计算结果) 和 6 (目标信号强度) 比较, 较大的数是 115, 所以需要的物品总数是 115

"箱子"需要的物品数:

  1. 计算结果是 (27 * 64 / 14) * (6 - 1) = 617.14285, 取整后为 618;
  2. 618 (计算结果) 和 6 (目标信号强度) 比较, 较大的数是 618, 所以需要的物品总数是 618

把计算出的物品数装入"漏斗"和"箱子":

例子_漏斗和箱子填充度

实际输出的红石信号强度的确是我们要的 6 单位强度:

如何求解比较器输出的信号强度_B

如果我们把计算出的物品数减去 1 (也就是"漏斗"装 114 个木板方块, "箱子"装 617 个木板方块)?

只能输出 5 个单位强度:

如何求解比较器输出的信号强度

# 3.检测"唱片机"播放的唱片

当"比较器"放在激活的"唱片机(Jukebox)"旁边时, 会根据播放的唱片的 ID 输出不同的红石信号强度:

唱片 ID 名称 输出的红石信号强度
13 1
cat 2
blocks 3
chirp 4
far 5
mall 6
mellohi 7
stal 8
strad 9
ward 10
11 11
ait 12

红石比较器_唱片机

# 4.输送红石信号

"红石比较器"也可以用来输送红石信号, 不会对红石信号产生任何改变, 甚至不会消耗红石信号强度:

比较器不会消耗红石信号强度

# 5.单向传输

"红石比较器"也具有方向性. 放置"比较器"时, "后端"会在靠近游戏角色的一侧, 所以我们应该面朝想要电流流向的方向放置"比较器":

比较器的方向性

根据之前讨论的"红石粉"的连接特性[2:1], 相邻的红石粉之间会自动连接, 而不会接入相邻的红石设备. 那么利用"单向传输"特性, 在红石设备和红石粉之间放置"比较器", 可以保证线路之间互相绝缘, 从而保证正确接入红石设备, 而不是自动相互连接:

比较器的单向传输

“比较器”和"中继器"都具有单向传输的特性, 但是大家通常使用"中继器"来实现单向传输, 而不是"比较器". 这是因为"比较器"的侧面也可以输入, 容易造成超出预期的影响.

不宜使用比较器实现单向传输

# 合成方法

"红石比较器(Redstone Comparator)"的合成方法:

物品 材料 合成配方
红石比较器
Redstone Comparator
红石火把 + 下界石英 + 石头
Redstone Torch + Nether Quartz + Stone
红石比较器

合成比较器需要的"下界石英", 只能在"下界"[5]才能找到. 当然, 如果你是"创造模式"[6], 就不需要操心这个问题.

# 比较器的简单应用

比较器的应用

  1. 制作锁: "比较器"处于"比较模式", "主输入端" 13 单位强度, "侧输入端" 15 输入强度, "侧输入端" 大于 "主输入端", 所以"比较器"输出强度为 0; 这个结构可以用于"门闩", 比如说自动门加上这个结构, 平常可以使用自动门, 回家后可以闩住门, 保证自动门无法被开启.
  2. 指定输出信号的强度: 假设我们想要 2 个单位强度. 将"比较器"切换到"减法模式", 让"主输入端"输入 15 单位强度, 让"侧输入端"输入 13 单位, 那么输出端的信号强度是 15 - 13 = 2
  3. 制作脉冲电流: 将"比较器"切换到"减法模式"
    • 阶段 1: "主输入端" 15 单位强度, "侧输入端"输入强度为 0, 所以"输出端"强度为 15 - 0 = 15;
    • 阶段 2: "输出端"强度为 15, 走到"侧输入端"时强度为 13, 此时, "主输入端"的 15 减去"侧输入端"的 13 等于 2, 所以"输出端"的强度变成 2;
    • 阶段 3: "输出端"的强度为 2, 走到"侧输入端"时强度为 0, 所以"输出端"强度为 15 - 2 = 13
    • 上面的"阶段2"和"阶段3"循环往复, 形成脉冲电流

  1. "二极管"具有两个电极, 只允许电流从"正极"流入, 从"负极"流出. 我们会利用二极管的这种单向导电性, 把方向交替变化的"交流电"变成单一方向的脉冲"直流电". ↩︎

  2. 红石粉的连接特性请参考 传输元件 ↩︎ ↩︎

  3. 1 个"红石刻" = 0.1 秒, 1 个"游戏刻" = 0.05 秒. 详细解释见这里 ↩︎

  4. "位“是计算机中用来度量信息数量的最小单位. 每 1 ”位“表示 1 个二进制数字 (0 或者 1); 我们也可以将“1 位”称为“1 比特”; 每 8 位就是 1 个“字节” ↩︎

  5. Minecraft 的地下世界/地狱. 我们可以通过制作"传送门"到达下界. ↩︎

  6. 请参考另一本书 -- 《Minecraft 荒野探险家》 (opens new window)" ↩︎