CC:创建红石连接

CC:创建红石连接

这个模组将机械动力的红石链路网络与CC:Tweaked计算机连接起来。

技术

CC: Create Redstone Link

基于 https://modrinth.com/mod/cc-redstone-link-bridge。我本想直接在那里贡献添加颜色支持的功能,但遗憾的是该模组没有提供源代码(尽管其页面上标注了 MIT 许可证)。

这个模组将 Create 红石链接网络CC:Tweaked 电脑连接起来。它添加了一个方块,名为 CC 红石链接桥,可以放置在游戏世界中,然后作为 ComputerCraft 的外设使用。

此模组需要 CreateCC:Tweaked

模组功能

这座桥充当两个系统之间的小型适配器:

  • Create 提供红石链接网络。
  • CC:Tweaked 提供来自电脑的 Lua 控制。

将桥方块放置在游戏世界中后,连接的电脑可以:

  • 读取任意红石链接频率对的当前信号强度
  • 向任意红石链接频率对发送信号强度
  • 可选地为任一频率槽位设置 24 位 RGB 染料颜色

该模组有意保持极简。Lua 接口仅暴露了直接网络交互所需的操作。

工作原理

当从 Lua 使用该外设时:

  • getLinkSignal(freq1, freq2) 查询该频率对的当前强度。
  • sendLinkSignal(freq1, freq2, strength) 设置目标频率对并传输所选强度。

两个函数都接受两个可选尾随参数 color1color2,它们会为对应的频率槽位应用染料颜色。 频率值是作为字符串写入的物品 ID。例如,minecraft:iron_ingotminecraft:oak_sapling 构成一个有效的频率对。

合成配方

配方是一个 3×3 的有序合成,四个角落是红石链接,中心是无线调制解调器,底部中间槽位是圆石。剩余的中间边缘槽位(顶部中间、左侧中间和右侧中间)填充 Create 发射器。

Lua API

外设类型:

  • redstone_link_bridge

方法:

  • getLinkSignal(freq1, freq2 [, color1 [, color2]]) -> number
  • sendLinkSignal(freq1, freq2, strength [, color1 [, color2]])

频率值

freq1freq2 必须是字符串形式的物品 ID。

示例:

  • "minecraft:iron_ingot"
  • "minecraft:oak_sapling"
  • "minecraft:redstone"

如果你想表示一个空的频率值,请使用空字符串("")。

频率颜色

color1color2 是可选的 24 位 RGB 整数,格式为 0xRRGGBB。它们仅在对应的频率物品支持 Minecraft 的 DYED_COLOR 数据组件时才有意义,在原版中只有皮革盔甲和皮革马铠支持。带颜色的槽位与同物品的无颜色槽位属于不同的红石链接网络,不同颜色也会产生不同的网络。

Minecraft Wiki 染料页面列出了在 Java 版中,16 种标准染料应用于皮革盔甲时各自产生的 RGB 值。有用的值:

  • 0xB02E26 —— 红色染料
  • 0x3C44AA —— 蓝色染料
  • 0xFED83D —— 黄色染料
  • 0x5E7C16 —— 绿色染料
  • 0x1D1D21 —— 黑色染料
  • 0xF9FFFE —— 白色染料

如果某个槽位应保持无颜色,请传入 nil(或直接省略该参数)。如果只想给第二个槽位上色,请将第一个参数传为 nil

示例

local bridge = peripheral.find("redstone_link_bridge")
assert(bridge, "没有找到 redstone_link_bridge")

-- 读取现有的频率对
local current = bridge.getLinkSignal("minecraft:diamond", "minecraft:redstone")
print("当前信号:", current)

-- 向频率对发送信号
bridge.sendLinkSignal("minecraft:diamond", "minecraft:redstone", 7)

-- 在带颜色标签的信道上发送。这匹配一个物理红石链接,
-- 其皮革盔甲槽位分别染了红色染料和蓝色染料。
bridge.sendLinkSignal(
    "minecraft:leather_chestplate",
    "minecraft:leather_helmet",
    15,
    0xB02E26,   -- 红色染料
    0x3C44AA)   -- 蓝色染料

-- 只有第二个槽位有颜色
bridge.sendLinkSignal(
    "minecraft:leather_chestplate",
    "minecraft:leather_helmet",
    15,
    nil,
    0x3C44AA)   -- 蓝色染料