Files
CC-StationBroadcast/test.lua
T
Henry_Du 39dc446958 功能(站点广播): 实现延误与停运列车的双语广播功能
添加所有中日文广播所需的音频资源文件
将应用版本更新至v1.0.37
修复列车状态原因映射逻辑,补充广播所需的缺失字段
实现根据延误、停运状态生成对应双语广播序列的逻辑
更新测试脚本以适配区块阅读器并正确解析CRN的NBT数据
添加示例NBT转储文件作为参考
2026-08-02 18:50:49 +08:00

48 lines
1.7 KiB
Lua

local reader = peripheral.find("blockReader")
if not reader then
print("Error: Block Reader not found!")
return
end
while true do
term.clear()
term.setCursorPos(1,1)
print("=== CRN Advanced Display Parser ===")
local success, data = pcall(reader.getBlockData)
if success and data and data.TrainStops then
local now = os.epoch("utc") / 50 -- Minecraft ticks (approx)
for i, stop in ipairs(data.TrainStops) do
local st = stop.Station
if st then
local trainName = st.TrainName or "Unknown"
local dest = st.Destination or "Unknown"
-- 时间计算
local scheduledArrival = st.ScheduledArrival or 0
local realArrival = st.RealTimeArrival or 0
-- 计算 ETA (秒)
local etaTicks = realArrival - data.LastRefreshed
local etaSeconds = math.floor(etaTicks / 20)
if etaSeconds < 0 then etaSeconds = 0 end
-- 计算 Delay (分钟)
local delayTicks = realArrival - scheduledArrival
local delayMinutes = math.floor(delayTicks / (20 * 60))
if delayMinutes < 0 then delayMinutes = 0 end
print(string.format("[%d] Train: %s -> %s", i, trainName, dest))
print(string.format(" ETA: %d seconds", etaSeconds))
print(string.format(" Delay: %d minutes", delayMinutes))
print("---------------------------------")
end
end
else
print("Waiting for CRN data...")
end
os.sleep(1)
end