磁带机

基本信息

属性 值
注册名 computronics:tapeReader
未本地化名 computronics.tapeDrive(BlockTapeReader.java:24)—— 物品栏名取自 lang tile.computronics.tapeDrive.name = 磁带机
方块类 pl.asie.computronics.block.BlockTapeReader
TileEntity pl.asie.computronics.tile.TileTapeDrive
文档名 tape_drive(BlockTapeReader.java:23)
正面材质 computronics:tape_drive_front(BlockTapeReader.java:43)
GUI Computronics.guiTapeDrive(BlockTapeReader.java:25)
接受红石 receivesRedstone 恒为 true(BlockTapeReader.java:47-49)
比较器输出 hasComparatorInputOverride 恒为 true(BlockTapeReader.java:52-54)
创造标签 tabComputronics(继承自 BlockPeripheral.java:29)
开启配置 enable.tape,默认 true(Computronics.java:240)

功能

插入并播放录音带的设备,是 Computronics 的核心:它把音频数据编码成 DFPWM 流,经音频线推给所有扩音器。

播放状态机 TapeDriveState.State 共 4 态(TapeDriveState.java:16-22):STOPPED / PLAYING / REWINDING / FORWARDING。每次状态切换服务端先摘除旧播放器(AudioUtils.removePlayer),切到 PLAYING 时再申请新播放器并记录 lastCodecTime(TapeDriveState.java:65-82)。无磁带时强制回到 STOPPED(TapeDriveState.java:70)。

PLAYING 态每 250 ms 出一包(TapeDriveState.java:110-116);读不满整包即判定磁带结束并停止(TapeDriveState.java:92)。

数值

数值名 值 范围 来源
tapedrive.audioPreloadMs 750 500–10000 Config.java:400-406
tapedrive.hearingDistance 24 0–64 Config.java:407-413
播放出包间隔 250 ms(硬编码) — TapeDriveState.java:113
倒带 / 快进步长 ∓2048 字节/次 — TapeDriveState.java:120、TapeDriveState.java:125
变速范围 0.25 – 2.0 — TapeDriveState.java:45-49
变速公式 packetSize = round(1024 × speed) — TapeDriveState.java:47
音量映射 floor(volume × 127),钳制 0.0–1.0 — TapeDriveState.java:59-63
DFPWM 比特率参数 packetSize × 8 × 4 — TapeDriveState.java:98

变速范围是硬编码的,没有对应的配置项;TapeDriveState.packetSize 初值 1024 同样不可配。

交互

触发 行为
右击 打开 guiTapeDrive(GuiTapePlayer),GUI 内的播放/停止/倒带/快进经封包发回服务端
比较器读取 返回 TileTapeDrive 当前状态(BlockTapeReader.java:57-60;Tile 为 TileTapeDrive 时取值,否则 0)
红石输入 receivesRedstone 恒 true
断开音频线 无声音输出

⚠️ GUI 状态封包的异常被静默吞掉:GuiProviderTapeDrive.setState 中 Computronics.packet.sendToServer(packet) 包裹在 try { ... } catch (Exception e) { // NO-OP } 内(GuiProviderTapeDrive.java:37-45)。封包构造或发送失败时既不抛错也不写日志,但 tile.switchState(state) 仍会在 catch 之后不执行——GUI 显示与实际播放状态会不一致且无任何提示。

合成配方

无 OC 配方(ModRecipes.java:122-134):

iii
iri
iai
字符 物品
i 铁锭 ingotIron
r 红石粉 dustRedstone
a 铁音符盒(未启用时回退为 minecraft:noteblock)

OC 配方(ModRecipes.java:400-419):

ici
sag
ibi
字符 物品
i 铁锭 ingotIron
c oc:circuitChip2
s minecraft:craftingPiston
g 铁栅栏 minecraft:iron_bars
a 扩音器 → 铁音符盒 → 音符盒(依次回退)
b oc:materialCircuitBoardPrinted

相关条目