Hobbytimeblank 发表于 7 天前

[bug汇报]train.getThisRoutePlatforms()返回空数组

本帖最后由 Hobbytimeblank 于 2025-2-16 13:13 编辑

我的LCD代码中有一部分是这样的。

function render(ctx, state, train) {
    let route_p = train.getThisRoutePlatforms();
    if (route_p == undefined && state.outputDelay <= 0){
      MinecraftClient.displayMessage("发生错误," + train.id() +","+ String(route_p),false);
      state.outputDelay = 2000;//这个state.outputDelay是个时间设置,是为了防止信息刷屏
    } else if (…) {
      //...省略约150行LCD绘制代码
    }
}

首先将train.getThisRoutePlatforms()的数据存入route_p中,然后判断。理论上该代码只会在列车回库,没有下一个站台的时候返回空数组。然而在实际测试中,即使在创建好的路线上,列车可能在刚刚加载出来的时候也返回空数组。有时候持续不到一秒,有时候还会持续很久都返回空数组。

根据我的代码,聊天框打出的信息一般是这样的:

发生错误,-8396668132046797000,[]

使用的版本是ANTEbuild#968测试版本,如果有人在其他版本中发现了不一样的现象,欢迎讨论(在前几个测试版本我也遇到过)

596wjr 发表于 6 天前

其实这种问题无伤大雅,反正也不到一秒,就当是在加载了(可能真的是在加载),就当是“面向结果”编程了,结果对了就行

Hobbytimeblank 发表于 5 天前

596wjr 发表于 2025-2-17 23:08
其实这种问题无伤大雅,反正也不到一秒,就当是在加载了(可能真的是在加载),就当是“面向结果”编程了, ...

并不是不到一秒,实测有时候确实是一秒,但也可能会持续一两分钟,甚至有的列车直到开出渲染范围都一直在返回空数组

wxyt_cr200j 发表于 3 天前

大佬像这些获取信息的函数在哪找到,我找不到

ShentongMetro 发表于 3 天前

更新一次列车信息的操作是每次执行完渲染后再更新的,如果渲染卡住了就不会及时更新
我倒觉得是ANTE的问题,用异步不给同步信息上锁倒是蛮容易陷入更新数据死循环的(以我个人的理解,类似于出现类似mysql幻读脏写的问题)
页: [1]
查看完整版本: [bug汇报]train.getThisRoutePlatforms()返回空数组