
CC:我的外设扩展器
便捷计算机工艺:为NeoForge上的“创造:航空学”调整外设
查看大图CCPE — CC 外设扩展器
便捷的 ComputerCraft: Tweaked 外设,专为 NeoForge 上的机械动力:航空学模组打造
包含内容
- 微型外设扩展器 — 对任何方块进行无线 NBT 读取;无线红石信号控制;远程外设访问
- 红石收发器 — 无线读取和传输机械动力红石信号
- 电子传动装置 — 专为 CC:T 控制设计的转速控制器
功能特性
📡 无线方块读取

CC:Tweaked 要求计算机必须与目标方块直接相邻才能访问外设。虽然许多模组为其方块添加了外设支持,但并非所有方块都具备此功能。
CCPE 添加了外设扩展器。将传感器附着到任意方块上,设置一个频道号,即可从 Lua 中无线读取该方块的数据——无需线缆,无距离限制。
- 通过
pe.get(channel, path)或pe.getAll(channel)读取 NBT - 路径语法:
"Items[0].Count"、"ForgeData.CustomName"等
数据每服务器刻(50毫秒)刷新一次,Lua 读取每次调用约需 0.02 毫秒——非常适合高频监控。
local pe = require("ccpe.pe")
local data = pe.getAll(1) -- 读取频道1上方块的完整 NBT
local cnt = pe.get(1, "Items[0].Count") -- 按路径读取特定字段
🔌 外设代理
pe.getPeripheral(ch)— 无线访问附着方块的 CC:T 外设方法
🧭 导航台集成(需要 simulated:navigation_table)
| 方法 | 返回值 | 描述 |
|---|---|---|
pe.getNavTargetPos(ch) |
{x, y, z} |
目标世界坐标 |
pe.getNavSelfPos(ch) |
{x, y, z} |
自身世界坐标 |
pe.getNavDistance(ch) |
number |
到目标的距离(米) |
pe.getNavRelativeAngle(ch) |
number |
方位角(度,0~360) |
🚀 物理数据(需要 Sable/物理结构)
| 方法 | 返回值 | 描述 |
|---|---|---|
getPhysicsPos(ch) |
{x, y, z} |
世界坐标(米) |
getPhysicsOrientation(ch) |
{x, y, z, w} |
旋转四元数 |
getPhysicsCenterOfMass(ch) |
{x, y, z} |
质心(世界坐标) |
getPhysicsMass(ch) |
number |
质量(千克) |
getPhysicsChainMass(ch) |
number |
物理体链总质量(千克) |
getPhysicsGravityForce(ch) |
number |
重力(牛顿) |
getPhysicsChainGravityForce(ch) |
number |
物理体链总重力(牛顿) |
速度方法需要传感器附着在 simulated:velocity_sensor 上
| 方法 | 返回值 | 描述 |
|---|---|---|
getPhysicsVelocity(ch) |
{x, y, z} |
地面速度(米/秒) |
getPhysicsAirVelocity(ch) |
{x, y, z} |
空速,已扣除风速(米/秒) |
getPhysicsAngularVelocity(ch) |
{x, y, z} |
角速度(弧度/秒) |
📶 无线红石
pe.setRedstoneOutput(ch, 0-15)— 传输红石信号(主线程执行)pe.getRedstoneOutput(ch)— 读取已传输的信号pe.getRedstoneInput(ch)— 读取接收到的信号
📻 红石收发器

允许计算机直接读取和传输机械动力红石信号——无需在计算机旁放置多个红石信号方块。
每个收发器使用旗帜配置多个频道,每个频道绑定一对红石频率物品。可通过 Lua 按频道号访问:
local r = peripheral.find("ccpe:redstone_transceiver")
-- 读取频道3上的机械动力红石网络信号
local signal = r.getRedstoneSignal(3)
-- 向频道7上的机械动力网络传输满信号
r.setRedstoneSignal(7, 15)
| 方法 | 描述 |
|---|---|
getRedstoneSignal(channel) |
读取绑定到该频道的机械动力红石信号(0–15) |
setRedstoneSignal(channel, 0-15) |
向绑定到该频道的机械动力网络传输红石信号(主线程执行) |
🎛️ 电子传动装置

它与转速控制器有何不同? 使用机械动力的转速控制器作为外设时(调用
setTargetSpeed()),会触发RotationPropagator.handleRemoved(),导致整个下游子网络级联清除所有动力源。这会引起意外行为(例如 Aeroworks 的步进舵机在速度变化时失控)。 Simulated 的模拟传动缺乏 CC:T 接口,难以进行微调。
电子传动装置使用 detachKinetics() + attachKinetics() 温和地刷新网络,不会干扰下游设备。
电子传动装置(ccpe:transmission_peripheral)不接受红石信号——仅通过 Lua 控制。将其放置在动能网络中即可实时调节下游速度。
local t = peripheral.find("ccpe:transmission_peripheral")
-- 比率模式:下游 = 上游 × 比率
t.setRatio(0.5) -- 降低至 50%
t.setRatio(3.0) -- 提升至 3 倍(上限 256 RPM)
-- 目标速度模式:直接设置下游速度(0–256,保留2位小数)
t.setTargetSpeed(128.56)
print(t.getTargetSpeed()) -- 128.56
-- 查询当前状态
print(t.getRatio())
| 方法 | 描述 |
|---|---|
setRatio(ratio) |
设置速度比率(≥0),进入比率模式(主线程执行) |
getRatio() |
获取当前比率 |
setTargetSpeed(speed) |
直接设置下游速度 0–256.00,进入目标模式(主线程执行) |
getTargetSpeed() |
获取目标速度 |
调用
setRatio切换到比率模式;调用setTargetSpeed切换到目标模式。两种模式下实际输出均以 256 RPM 为上限。
🏗️ 区块与物理体加载
传感器可以保持目标区域保持加载状态:
| 模式 | 描述 | 使用场景 |
|---|---|---|
| 关闭 | 不强制加载 | 短距离使用 |
| 加载区块 | 在传感器所在区块使用原版 setChunkForced |
防止方块所在区块被卸载 |
| 加载物理体 | 注册 Sable 强制加载票据 + 跟随运动的 PORTAL 票据 | 防止飞行器/物理体被 Sable 的距离优化卸载 |
物理体模式会自动跟踪结构的移动,将 PORTAL 票据重新定位到物理体当前所在的区块。轴承连接链每 5 秒刷新一次。
配置(config/ccpe-common.toml):
sensorChunkLoadEnabled— 启用区块加载sensorMaxForceLoad— 最大同时加载的传感器数量sensorPortalTicketRadius— PORTAL 票据半径
快速上手
local pe = require("ccpe.pe")
-- 读取箱子库存
local items = pe.getAll(1)
for k, v in pairs(items) do print(k, v) end
-- 导航引导(传感器需附着在导航台上)
local target = pe.getNavTargetPos(2)
local dist = pe.getNavDistance(2)
local angle = pe.getNavRelativeAngle(2)
print(string.format("目标:距离 %.0f 米,方位 %.1f°", dist, angle))
-- 物理数据
local mass = pe.getPhysicsMass(3)
local com = pe.getPhysicsCenterOfMass(3)
print(string.format("质量:%.1f 千克,质心:%.1f, %.1f, %.1f", mass, com.x, com.y, com.z))
-- 无线红石
pe.setRedstoneOutput(4, 15) -- 向频道4上的传感器供电
-- 机械动力红石信号控制
local redstone = peripheral.find("ccpe:redstone_transceiver")
redstone.setRedstoneSignal(5, 15) -- 向频道5上的机械动力网络传输信号
redstone.getRedstoneSignal(3) -- 读取频道3上的机械动力网络信号
-- 电子传动装置控制
local trans = peripheral.find("ccpe:transmission_peripheral")
trans.setTargetSpeed(200) -- 将下游速度设置为 200 RPM
trans.setRatio(0.75) -- 切换到比率模式:输出 75%
前置要求
- NeoForge 1.21.1
- CC:Tweaked 1.118.0+
- 机械动力 (Create) 6.0.10+
- Simulated(机械动力:航空学)1.3.0+
- Sable 2.0.3+
性能表现
读取操作约每次调用 0.02 毫秒,红石写入操作约每次调用 50 毫秒。
正在加载版本记录…


正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。