https://linen.dev logo
jdk.nashorn.internal.scripts.Script$Recompilation$...
# forum
c
* 既存1.7.10向けモデルを1.12.2へ移植しようとしている * RTM2.4と在来で差がある構文はこれで処理しようとした
Copy code
javascript
//上省略
var comps = {};

comps.getTrainStateData = function(entity, value){
    if(RTM2)
        return entity.getVehicleState(TrainState.getStateType(value));
    else
        return entity.getTrainStateData(value);
};

comps.setTrainStateData = function(entity, value1, value2){
    if(RTM2)
        return entity.setVehicleState(TrainState.getStateType(value1), value2);
    else
        return entity.setTrainStateData(value1, value2);
}

comps.syncTrainStateData = function(entity, value1, value2){
    if(RTM2)
        return entity.syncVehicleState(TrainState.getStateType(value1), value2);
    else
        return entity.syncTrainStateData(value1, value2);
}

comps.getControlCar = function(formation){
    if(RTM2)
        return NGTUtil.getMethod(formation.getClass(), formation, formation, "getControlCar", []);
    else
        return NGTUtil.getMethod(formation.getClass(), formation, ["getControlCar"], []);
}
Copy code
javascript
entity.getTrainStateData(6); //既存
comps.getTrainStateData(entity, 6) //変更
* すると1.12.2への移植は成功したが、1.7.10(kaizpatch)で動かすと
もう自分の脳では理解できないことになってしまったので助けを求めます
謎: * この他触ったところがない * 1.12.2では動く
* 1.7.10と1.12.2で違う処理を取ってるのはここしかない上1.7.10でエラーってる → これが問題??なにが??
u
これみたことあるな
たしか同じ内容のデータが1.12.2(RTM2)以降だとgetVehicleStateとかに入ってたはずだな。。。
これは1.7.10のgetTrainStateの中身の話 https://fixvx.com/hi03_s/status/1784452981028700302
これは構文にもあるバージョン跨ぎの話 https://fixvx.com/hi03_s/status/977711958165217281
もしかしたらなんすけど、elseの処理で、kaizPatchが1.12.2側に落ちてませんか?
h
getTrainStateData自体は後方互換性があるので問題ないかと思います 見た感じでは、37行目のコードが40行目のコードを呼び出して、以降無限ループが発生しているっぽいですね
u
循環参照だったか。。。見落としてた🥺
h
ただentityを渡しているので無限ループになる原因がわからないですね・・・ コード全体を見ればなにかわかることがあるかもしれません
c
あ
h
もしくはcomps.getTrainStateDataのgetTrainStateDataの部分の名前を変えてentity.getTrainStateDataと被らないようにしてみて、結果が変わればなにかわかるかもしれません
u
スクリプトの外まで見えてるの強い
c
解決しました * 原因: サーバースクリプトをレンダースクリプトだけ気にしてたらサウンドスクリプトが書き換え途中のものだった(コピペ忘れ)
なんでもなかったですすみませんでした
みなさんありがとうございました