More Red × CC:Tweaked 桥接

More Red × CC:Tweaked 桥接

让CC: Tweaked电脑读写更多红石捆绑线缆信号。替代已废弃的仅适用于1.21.1的兼容模组,使用More Red的现代Ex Machina信号图。

More Red × CC:Tweaked 桥接

让CC: Tweaked 计算机能够通过标准的红石总线 API——redstone.getBundledInput 和 redstone.setBundledOutput——读取和写入More Red 的束线缆。将计算机紧贴束线缆放置,即可在 Lua 中控制全部十六个颜色通道。

这是对 YuRaNnNzZZ 所制作的已弃用模组 More Red x CC:Tweaked Compat 的重构,该模组在 Minecraft 1.21.1 版本停止更新。理念相同,但内部实现全新——由于下文所述原因,旧方案已不可行。

Requirements

  • Minecraft 26.1.2
  • NeoForge 26.1.2 或更新版本
  • CC: Tweaked 1.118 或更新版本——从 Modrinth 下载
  • More Red 26.1.0.5 或更新版本——可在 CurseForge 上获取

CC: Tweaked 不再发布到 CurseForge。这里的页面在 Minecraft 1.21.1 版本停止更新,与本模组不兼容。请改用 Modrinth 获取。

请勿单独安装 Ex Machina。 More Red 已通过 jar-in-jar 方式内置了该库。额外添加独立副本会导致问题。

使用方法

将计算机、海龟或红石中继器直接紧贴 More Red 束线缆——或任何单色线缆、节点或中继器。然后在 Lua 中:

-- 读取计算机后方线缆上当前的所有颜色
local input = redstone.getBundledInput("back")

-- 白色是否激活? if colors.test(input, colors.white) then print("白色已激活") end

-- 驱动红色和蓝色 redstone.setBundledOutput("back", colors.combine(colors.red, colors.blue))

setBundledOutput 替换整个掩码而非累加,因此要单独更改某个通道,需先读取:

local out = redstone.getBundledOutput("back")

out = colors.combine(out, colors.orange) -- 开启橙色,不影响其他通道 redstone.setBundledOutput("back", out)

out = colors.subtract(out, colors.red) -- 关闭红色 redstone.setBundledOutput("back", out)

颜色位与 Minecraft 的染料颜色完全对应,因此 colors.white 对应 More Red 的白色通道,colors.red 对应红色,依此类推,共十六种。

支持的方块

计算机(普通、高级、命令)、海龟(普通、高级)以及红石中继器。

须知事项

计算机会读回自身的输出。如果计算机在网络上驱动白色并读取同一网络,它会看到白色。线缆每个通道只能承载一个值,无法区分“我驱动了这个”与“其他东西驱动了这个”。这与真实束线缆的行为一致,但不同于 CC 通常排除方块自身输出的惯例。请在不同的线缆上进行驱动和读取,或在 Lua 中屏蔽自身输出。

写入在 tick 结束时生效。在同一 tick 内先执行 setBundledOutput 再执行 getBundledInput 会读回旧值。请在两者之间使用 sleep 或等待事件。

其他模组的线缆可选择加入。附着逻辑由 redcc_bridge:bundled_cables 方块标签驱动,而非硬编码 ID。因此,任何添加到该标签的彩色线缆都无需修改代码即可工作。普通红石线被有意排除——将其包含会导致十六种颜色合并为一个信号。

类似计算机的方块需明确列出。上述六个 CC 方块通过数据映射分配,因此行为类似计算机的第三方方块不会被自动识别。

工作原理

显而易见的设计——将 More Red 旧的 ChanneledPowerSupplier 能力桥接到 CC 的束线红石提供器——已不可行。More Red 在 1.22 重写中完全移除了自身的 api 包,并将所有线缆连接交给 Commoble 的 Ex Machina 框架,因此已无能力可供桥接。这很可能就是原作者兼容模组停止维护的原因,而不仅仅是版本跟进滞后。

Ex Machina 的信号图是受支持的集成点,其通道模型——十六种染料颜色加普通红石——与 CC 的 16 位束线掩码(每位对应一种染料颜色)完全吻合。因此,本模组注册了一个信号组件,将计算机接入图中所有颜色通道,将其束线输出发布到图中,缓存返回结果,并将缓存报告给 CC。

模组任何地方均未引用 More Red 的类。绑定通过 Ex Machina 按方块 ID 完成。

致谢

本模组仅是粘合剂。实际工作属于其他人:

  • More Red 和 Ex Machina 信号图框架——作者 Commoble (MIT)
  • CC: Tweaked——作者 Daniel Ratcliffe、Aaron Mills 和 SquidDev,最初由 Daniel Ratcliffe 创作
  • More Red x CC:Tweaked Compat,本模组在 26.1.2 版本替代的模组——作者 YuRaNnNzZZ (MIT)

在 MIT 许可证下发布。