红石比较器

**红石比较器（Redstone Comparator）**是能使红石信号保持、比较、作差或检测特定数据值的红石元件，该元件的加入标志着红石模拟电路被正式加入到游戏中。

获取
--

### 合成

红石比较器可以由3个红石火把、1个下界石英和3个石头合成。

破坏
--

红石比较器被挖掘时会立刻被破坏，用于挖掘的工具的耐久度不会下降。其被破坏后掉落自身。

红石比较器在下列情况会被破坏并掉落：

* 附着方块移动、移除或被破坏；

* 有水流过；

* 有活塞试图推动它或将方块推入其位置。

若熔岩流过其位置，红石比较器会被破坏但不会掉落。

用途
--

红石比较器有一个背向的输入端，记做A，两个侧向的输入端，分别记作B1和B2，取两者中**较大**的那一个作为侧向输入，记为B，此外是指向输出端，记做C。

红石比较器的侧向输入可以从**红石比较器**、红石中继器、红石线、红石块、侦测器、避雷针中获得信号，但不能从被充能的方块中获取信号。

红石比较器可以放置在任何上表面边缘完整的方块（包括倒台阶、楼梯和漏斗）上。按放置方块键放下红石比较器。

对红石比较器使用放置方块键可以切换比较器的两个模式：比较模式和减法模式，分别对应着红石比较器方块模型上的前方的红石火把熄灭或亮起。在不引起歧义的前提下，比较模式和减法模式下的红石比较器可以被分别简称为比较器或减法器。

信号经过红石比较器需要1红石刻，不论输入端是前侧还是边侧。输入信号强度发生改变或输入信号有无的转变也是这样。仅1刻的输入信号变化红石比较器通常不会有反应——例如单刻脉冲的发生器在边侧输入时会被认为总是无信号，在后侧输入则认为是保持开启。

红石比较器有四大用途：保持信号强度、比较信号强度、信号强度作差以及检测方块的状态（主要为容器的装载量）。

### 保持信号强度

红石比较器边侧没有输入（B=0）时，输出的信号强度与后侧输入的强度相同。注意：此功能和红石中继器增强信号强度的功能不同。

### 比较信号强度

红石比较器处于比较模式时（前侧火把关闭）会将后侧输入与边侧的输入比较。若有任意边侧输入大于后侧输入，比较器输出关闭。若两边侧都不大于后侧输入，则比较器仅会输出与后侧相同的信号强度。表达式如下：

`C = A * (B <= A)`

### 信号强度作差

红石比较器处于作差模式（前侧火把打开）时，输出信号强度等于后侧输入信号与两边侧中较强的信号强度之差（最小为0）。表达式如下：

`C = max(A - B, 0)`

例如，如果信号强度在左侧输入处为6，在右侧输入处为7，在后侧为4，则输出信号的强度为 max(4 - max(6, 7), 0) = max(4-7, 0) = max(-3, 0) = 0。

如果信号强度在后侧为9，在右侧输入为2，在左侧输入为5，则输出信号的强度为 max(9 - max(2, 5), 0) = max(9-5, 0) = 4。

### 检测方块状态、方块实体和物品展示框

红石比较器会将后方特定的方块看做电源并将对应的强度作为输入信号。比较器与受测方块之间可以被一个红石导体隔离。

实际上，比较器后方毗邻方块的装载量优先级最高。后方红石导体后的方块装载量又优先于其他红石信号。不过，若其他红石信号为15等级，比较器的输出会为15等级而不检测后方红石导体后方块的状态。

另外，比较器实际上最大可以寄存2,147,483,647的信号强度，可以通过检测命令方块或检测使用命令修改过的容器来获得大于15的信号。

#### 容器

用于检测容器状态的红石比较器会根据物品装满的程度输出对应信号（空为0，满为15，以此类推）。

下列容器可以被比较器检测：

* 熔炉

* 高炉

* 烟熏炉

* 酿造台

* 漏斗

* 探测铁轨上的漏斗矿车

* 发射器

* 投掷器

* 箱子

* 陷阱箱

* 探测铁轨上的运输矿车

* 木桶

* 大箱子

* 大陷阱箱

* 潜影盒

当比较器检测大箱子或大陷阱箱时，比较器会检测整个大箱子（54个槽位），而不只是比较器后方的那半个。不能打开的箱子（无论是因为上方有红石导体还是有猫在上方）总会使比较器被认为信号为0，不受其中物品数量的影响。而潜影盒总是可以被检测的，即使无法打开。

右边的“容器信号强度所需最少物品数”表展示了各容器中，64为1组的物品需要多少组才能输出指定的信号强度值。“组”前的数字表示满叠的物品需要组数（不需要1组则不显示），“个”前的数字表示整叠物品以外需要的物品数量（没有零头时不显示）。对于只能堆叠到16个的物品（雪球、告示牌、末影珍珠等），“个”前的数字除以4向上取整就可以适用。对于不可堆叠的物品，一个就相当于一组。

例如，假设全部使用堆叠数为64的物品，需要依靠漏斗产生10强度的信号需要至少3组又14个物品，一共206个。

**已知物品数量，求输入信号强度值**
容器空时，输入0。
容器不为空时，输入按下列计算：
`C = 向下取整[1 + (所有槽位的满度之和 / 槽位总数) × 14]`
`一个槽位的满度 = 该槽位的物品数 / 此类物品最大堆叠数`
*示例：*发射器（共9个槽位）中有300方块，这种方块最大堆叠至64，产生信号强度为8：

>
> 1 + ((300物品 / 64最大堆叠数) / 9个槽位) × 14 = 8.292，向下取整得8。
>
>
>
>

注意不可堆叠的物品总被认为充满一个槽位（1物品，1最大堆叠数：1 / 1 = 1.0），最多堆叠到16的物品（例如末影珍珠、雪球或鸡蛋）也类似地看作16即为充满。
**已知信号强度值，求物品数量**
这对于利用比较器与容器配合来输出特定强度来说是有用的。输出特定信号强度所需物品数量用如下算法计算：
`所需物品数 = max{目标信号强度 , 向上取整[ ( 容器总槽位数 × 64 / 14) × ( 目标信号强度 - 1 ) ] }`
*示例：*利用熔炉（3物品栏）来创造强度为9的信号，你需要110物品：

>
> max( 9 , ( 3 × 64 / 14 ) × ( 9 - 1 ) ) = 109.714，向上取整为110。
>
>
>
>

#### 其他

一些非容器的方块也可以被比较器检测：

蛋糕
蛋糕输出的信号强度取决于蛋糕剩余量。每片输出2强度，总共有7片，也就是说完整蛋糕输出14强度。
炼药锅
炼药锅输出的信号强度取决于水量。从完全无水到完全充满，输出分别为0、1、2与3。
堆肥桶
堆肥桶输出的信号强度依赖于堆肥桶的堆肥层数，每有一层增加一格信号。从完全没有到完全充满，输出分别为0到8。
命令方块
命令方块存储最后执行的命令的“成功次数”，表示此命令方块最近执行成功命令的次数。“成功”的定义由命令的成功条件决定：如果聊天界面显示红色错误信息，那么命令执行不成功。
大多数命令每次执行只能成功一次，但特定命令（例如将玩家作为参数的命令）可以成功多次，比较器会输出全部的成功数（可以超过15）。
命令方块持续存储最后执行的命令的成功数，直到再次执行命令。因此比较器会持续输出同一信号强度，即使命令方块已经不在激活状态（命令方块关闭不影响比较器开关）。
末地传送门框架
末地传送门框架有末影之眼的时候输出满强度15，若非则0。
物品展示框
比较器可以检测物品展示框的内含物状态。若要检测展示框的状态，比较器必须连接在展示框附着方块的**后方**，并**背侧**朝方块。若展示框内无物品，则输出0，此外则根据物品旋转角度为1至8强度（1为默认方向，右击旋转直到8，然后再返回1）。
唱片机
唱片机输出的信号取决于正在播放的唱片。对应关系请见上方的*容器信号强度所需最少物品*表格。
讲台
讲台输出的信号强度取决于当前玩家打开书的页码（例如一本有15页的书每翻一页提升1信号强度，或5页的书每翻一页提升3强度）。
蜂巢和蜂箱
蜂巢和蜂箱会输出与其方块状态`honey_level`的值相同强度的红石信号。
重生锚
输出的信号取决于重生锚的能量：1级能量对应3级信号，2级能量对应7级信号，3级能量对应11级信号，4级能量对应15级信号。
雕纹书架
雕纹书架会输出与其`last_interaction_book_slot`值（最后一次互动的槽位号）相同强度的红石信号。
幽匿感测体
幽匿感测体会输出与其感测到的振动频率值相同强度的红石信号，参见幽匿感测体/振动频率。
## 许可协议

此页面除描述外的内容来源于Minecraft Wiki上的红石比较器页面，且对原内容进行了更改。

因此这些内容在CC BY-NC-SA许可协议下提供。（中文原文）