hi03
02/16/2023, 1:10 PMjs
︙
var modelName = item.func_77942_o() ? item.func_77978_p().func_74779_i("ModelName") : null;
if (!modelName) continue;
setting.model.push(modelName);
var subType = item.func_77952_i();
switch (subType) {
case 1: subType = 0; break;//EC
case 0: subType = 1; break;//DC
case 2: subType = 2; break;//CC
default: subType = 0; break;
}
setting.type.push(subType);
setting.dir.push(itemStackSize === 2 ? 1 : 0);
var modelSet = ModelPackManager.INSTANCE.getModelSet("ModelTrain", modelName); //ここでエラー発生
if (modelSet) {
setting.distance = modelSet.getConfig().trainDistance * 2;
}
︙
クラッシュレポート抜き出しPIPOsen
02/16/2023, 2:47 PM坐/Kaiz_JP
02/16/2023, 2:49 PMjava
private final Map<String, IModelNGT> modelFileMap = new ConcurrentHashMap<>(); が原因と思われます。Nashornから呼び出した際のDynalinkでIModelNGTクラスの呼び出しがかかり、IModelNGTはクライアント側のみのクラスであるため、NoClassDefFoundErrorが発生している模様です。また、リフレクションを使用した方法でも、```java
ModelPackManager.INSTANCE
までの呼び出しでクラッシュが発生するため代替不可能です。
そのため、かなり冗長な方法となりますが、一時的に車両エンティティをスポーンせずに生成してModelSetのみを取り出すことで同様の処理の実現が可能です。
```js
importPackage(Packages.jp.ngt.rtm.entity.train);
var train
switch (subType) {
case 2:
train = new EntityFreightCar(world, "");
break;
case 3:
train = new EntityTanker(world, "");
break;
default:
train = new EntityTrain(world, "");
}
train.setModelName(modelName);
var modelSet = train.getModelSet();hi03
02/18/2023, 1:04 PM