rapid_agekara
05/30/2025, 2:00 PMimportPackage(Packages.jp.kaiz.atsassistmod.api);
/**
* @param {TileEntityIFTTT} tile
* @param {EntityTrainBase} train nullが入る場合があります
* @param {boolean} first 初回の場合trueになります
*/
function doThat(tile, train, first) {
ControlTrain.logger("ブロック位置を更新します");
var world = tile.getWorld(); // 修正ポイント
// 更新対象のTileEntityの座標(例:表示器)
var targetX = 10;
var targetY = 64;
var targetZ = 20;
// DataMapに設定する新しいblockposの文字列
var newBlockPosStr = "125 45 -299";
// 対象のTileEntityを取得
var tileEntity = world.getTileEntity(targetX, targetY, targetZ);
if (tileEntity === null) {
ControlTrain.logger("TileEntityが見つかりませんでした");
return;
}
// DataMapを取得し、値を更新
if (typeof tileEntity.getResourceState === "function") {
var dataMap = tileEntity.getResourceState().getDataMap();
dataMap.setString("blockpos", newBlockPosStr, 3); // 3 = 永続保存
ControlTrain.logger("blockposを " + newBlockPosStr + " に更新しました");
} else {
ControlTrain.logger("対象TileEntityはResourceStateを持っていません");
}
}
備考
・IFTTT側のエラー情報によるとgetWorldがエラー元らしい
・TileEntityIFTTTのtile?entity?関係に原因がありそう?
そのほか(開発背景的な)
・車両モデル以外のスクリプト初めてなので皆目見当もつきませんでした…
・これは照明モデルのコマブロ引用データ参照元座標をdatamapにから検索するためのものなのでこのスクリプト自体は初回限定で使用予定
・座標ごとにデータマップを設定した照明モデルデータを座標分だけ複製しようとしたがさすがに脳筋にもほどがあるので断念
・一度直下のコマンドブロックのにdatamap値を書いて読み込む方式も検討したが煩雑になるため断念elsafrozen2592
05/30/2025, 2:06 PMrapid_agekara
05/30/2025, 2:32 PM