-
Notifications
You must be signed in to change notification settings - Fork 2
Redstone Control_CN
无线能量监视器(MTEWirelessEnergyMonitor)提供 5 种红石输出模式,可在 GUI 中切换。模式编号、判定逻辑与参数依赖如下表所示:
| 模式编号 | 名称 | 判定逻辑 |
|---|---|---|
| 0 | 关闭(Off) | 不输出红石信号 |
| 1 | 高电平(High) | 电量 > 参数1 时输出信号 |
| 2 | 低电平(Low) | 电量 < 参数1 时输出信号 |
| 3 | 正向滞后(High-Hysteresis) | >参数1 输出,必须 <参数2 才取消 |
| 4 | 反向滞后(Low-Hysteresis) | <参数2 输出,必须 >参数1 才取消 |
**设计说明:**模式 0 直接关闭红石输出;模式 1/2 为单阈值比较;模式 3/4 引入双阈值滞后区间,避免在阈值附近反复跳变(红石抖动)。
红石模式 1~4 依赖 参数1 与 参数2 两个阈值。参数支持负数,输入后通过 Math.round 四舍五入为整数参与判定。
- **输入框:**200×17 像素,使用
ScientificTextFieldWidget(科学记数法文本框) -
4 个调整按钮:
- **-(减最高位):**步长 = 10floor(log10(abs(value)))
- **+(加最高位):**步长同上
- **×(×10):**当前值乘以 10
- **÷(÷10):**当前值除以 10
- **容错:**输入非法时抛出
NumberFormatException,由 GUI 捕获并忽略,不写入参数
步长说明:"减/加最高位" 按钮的步长根据当前值的数量级动态计算,例如值为 12345 时步长为 104=10000,按下 - 后变为 2345。这种设计便于大数值的快速调整。
红石判定基于 锚定值(anchor value),共 3 种锚定模式可选:
| 锚定模式 | 数据类型 | 取值来源 |
|---|---|---|
| 0 = 电网电量 | BigInteger | getWirelessEU() |
| 1 = 平均 EU/t | double → long | Math.round(euPerTick) |
| 2 = 实时 EU/t | double → long | Math.round(realtimeEuPerTick) |
- GUI 中提供 3 个锚定按钮,选中时显示
=,未选中显示< -
setAnchorMode会将传入值钳制到[0, 2]区间,防止越界 - 切换锚定模式后,红石判定立即基于新锚定值进行
| 特性 | 说明 |
|---|---|
| 输出强度 | 输出时为 15,不输出时为 0 |
| 红石检测间隔 | 2 ticks(0.1 秒),常量 REDSTONE_CHECK_INTERVAL = 2L
|
| 状态变化通知 | 状态变化时通知 6 个面(6 sides) |
| 时间戳独立 | 红石输出与 UI 更新使用独立的时间戳,互不阻塞 |
**独立时间戳说明:**红石逻辑每 2 tick 检测一次,而 UI 刷新频率不同。两者分离确保红石响应迅速(0.1 秒级),同时 UI 更新不会拖慢红石判定。
模式 3 与模式 4 引入双阈值滞后(Hysteresis)机制,避免锚定值在阈值附近抖动导致红石频繁切换。
- **初始:**不输出
- **进入输出:**锚定值 > 参数1 → 输出
- **退出输出:**输出后,锚定值 < 参数2 → 取消输出
- **滞后区间:**当 参数1 > 参数2 时形成滞后区间,区间内维持原状态
- **初始:**不输出
- **进入输出:**锚定值 < 参数2 → 输出
- **退出输出:**输出后,锚定值 > 参数1 → 取消输出
逻辑统一说明:
getGeneralRS(用于 GUI 预览/查询)与updateRedstoneOutput(用于实际红石输出更新)此前逻辑不一致,已统一为同一套滞后判定逻辑,确保 GUI 预览与实际输出行为完全一致。
当电网发生 **长时重载(> 10 秒)**触发冷启动时,红石输出会启用一段缓冲期,避免数据集清空期间红石中断造成外部系统误判。
- **缓冲时长:**600 ticks(30 秒),
redstoneReloadDelay = 600 - **递减机制:**每 tick 递减 1,直至归零
- **缓冲期间:**维持
mSidedRedstone[]缓存,红石输出不中断 - **显示提示:**缓冲期间显示"重载计算中,红石逻辑维持"
**设计目的:**冷启动期间数据集不足,EU/t 无法准确计算,若直接清空红石输出可能导致外接的红石报警系统误报。30 秒缓冲为数据集重新积累提供时间窗口。
无线能量监视器 GUI 界面(含红石模式与参数配置区域):