# 调节元件
其他红石元件只能被动地接收红石信号, 而"调节器"则可以改变红石信号.
Minecraft 中共有 2 种"调节器":
- "红石中继器 (Redstone Repeater)"
- "红石比较器 (Redstone Comparator)"
下面, 我们分别讲解:
# 红石中继器 (Redstone Repeater)
# 特性
"红石中继器(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 Comparator)" 能够比较后面和侧面输入的红石信号强度, 也能够用来检测容器的填充程度.
# 特性
"红石比较器"有 5 个特性:
- 比较红石信号
- 检查容器的填充度
- 输送红石信号
- 制造延迟
- 单向传输
# 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 + ( ( 2 + 9/64) / 27 ) * 14 = 2.10995
- 2.10995 向下取整是 2
- 所以输出的信号强度是 2 个单位强度
对于"漏斗"来说, 比较器输出的信号强度是:
1 + ( ( 2 + 9/64) / 5 ) * 14 = 6.99375
- 6.99375 向下取整是 6
- 所以输出的信号强度是 6 个单位强度
实际输出的强度和我们的计算是一致的:
# 已知信号强度, 求解容器中物品的数量
如果你想要输出特定强度的红石信号, 那么就需要计算填充多少东西
所需物品数 = 两者取较大值 { 向上取整 [("容器总格数" * 64 / 14) * ("目标信号强度" - 1)], "目标信号强度"}
以"漏斗"和"箱子"作为例子, 假设我们需要输出 6 个单位强度, 放置的是木板(堆叠上限是 64).
"漏斗"需要的物品数:
- 计算结果是
(5 * 64 / 14) * (6 - 1) = 114.28571
, 向上取整后为 115; - 115 (计算结果) 和 6 (目标信号强度) 比较, 较大的数是 115, 所以需要的物品总数是 115
"箱子"需要的物品数:
- 计算结果是
(27 * 64 / 14) * (6 - 1) = 617.14285
, 取整后为 618; - 618 (计算结果) 和 6 (目标信号强度) 比较, 较大的数是 618, 所以需要的物品总数是 618
把计算出的物品数装入"漏斗"和"箱子":
实际输出的红石信号强度的确是我们要的 6 单位强度:
如果我们把计算出的物品数减去 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.制造延迟
"红石比较器"也可以用来延迟红石信号的传递, 和红石中继器不同的是:
- 红石中继器能够延迟 1 - 4 个红石刻 (即 0.1 - 0.4 秒)
- 红石比较器只能延迟 1 个红石刻 ( 0.1 秒 )
建议用红石中继器来延迟信号, 而不要用比较器.
# 6.单向传输
"红石比较器"也具有方向性. 放置"比较器"时, "后端"会在靠近游戏角色的一侧, 所以我们应该面朝想要电流流向的方向放置"比较器":
根据之前讨论的"红石粉"的连接特性[2:1], 相邻的红石粉之间会自动连接, 而不会接入相邻的红石设备. 那么利用"单向传输"特性, 在红石设备和红石粉之间放置"比较器", 可以保证线路之间互相绝缘, 从而保证正确接入红石设备, 而不是自动相互连接:
“比较器”和"中继器"都具有单向传输的特性, 但是大家通常使用"中继器"来实现单向传输, 而不是"比较器". 这是因为"比较器"的侧面也可以输入, 容易造成超出预期的影响.
# 合成方法
"红石比较器(Redstone Comparator)"的合成方法:
物品 | 材料 | 合成配方 |
---|---|---|
红石比较器 Redstone Comparator | 红石火把 + 下界石英 + 石头 Redstone Torch + Nether Quartz + Stone |
合成比较器需要的"下界石英", 只能在"下界"[5]才能找到. 当然, 如果你是"创造模式"[6], 就不需要操心这个问题.
# 比较器的简单应用
- 制作锁: "比较器"处于"比较模式", "主输入端" 13 单位强度, "侧输入端" 15 输入强度, "侧输入端" 大于 "主输入端", 所以"比较器"输出强度为 0; 这个结构可以用于"门闩", 比如说自动门加上这个结构, 平常可以使用自动门, 回家后可以闩住门, 保证自动门无法被开启.
- 指定输出信号的强度: 假设我们想要 2 个单位强度. 将"比较器"切换到"减法模式", 让"主输入端"输入 15 单位强度, 让"侧输入端"输入 13 单位, 那么输出端的信号强度是 15 - 13 = 2
- 制作脉冲电流: 将"比较器"切换到"减法模式"
- 阶段 1: "主输入端" 15 单位强度, "侧输入端"输入强度为 0, 所以"输出端"强度为 15 - 0 = 15;
- 阶段 2: "输出端"强度为 15, 走到"侧输入端"时强度为 13, 此时, "主输入端"的 15 减去"侧输入端"的 13 等于 2, 所以"输出端"的强度变成 2;
- 阶段 3: "输出端"的强度为 2, 走到"侧输入端"时强度为 0, 所以"输出端"强度为 15 - 2 = 13
- 上面的"阶段2"和"阶段3"循环往复, 形成脉冲电流
"二极管"具有两个电极, 只允许电流从"正极"流入, 从"负极"流出. 我们会利用二极管的这种单向导电性, 把方向交替变化的"交流电"变成单一方向的脉冲"直流电". ↩︎
"位“是计算机中用来度量信息数量的最小单位. 每 1 ”位“表示 1 个二进制数字 (0 或者 1); 我们也可以将“1 位”称为“1 比特”; 每 8 位就是 1 个“字节” ↩︎
Minecraft 的地下世界/地狱. 我们可以通过制作"传送门"到达下界. ↩︎
请参考另一本书 -- 《Minecraft 荒野探险家》 (opens new window)" ↩︎