解説動画

間違っているコード
const PILLAR_ID: number = 17; // 支柱(オークの原木)
player.onChat("19-10", function () {
player.say("支柱にはしごをかけて登ります");
const PILLAR_HEIGHT: number = 6;
agent.setSlot(1); // スロット1には複数種類のブロックIDを入れ替えながら使う
for (let i: number = 0; i < PILLAR_HEIGHT; i++) {
agent.setItem(LADDER_ID, 1, 1);
agent.place(FORWARD);
agent.move(UP, 1);
}
player.say("上まで登れました");
});
解答コード
const PILLAR_ID: number = 17; // 支柱(オークの原木)
player.onChat("19-10", function () {
player.say("支柱にはしごをかけて登ります");
const PILLAR_HEIGHT: number = 6;
agent.setSlot(1); // このあとはスロット1に、はしご・支柱いずれも1個だけ入れ替えながら使う(置く→次を積む、の順に行うだけなのでスロットを分ける必要はない)
for (let i: number = 0; i < PILLAR_HEIGHT; i++) {
try {
let aheadId: number = agent.inspect(AgentInspection.Block, FORWARD);
if (aheadId == AIR_ID) {
throw "支柱が欠けていてはしごを置けません";
}
agent.setItem(LADDER_ID, 1, 1);
agent.place(FORWARD);
} catch (e) {
player.say("例外を検出: " + e);
player.say("支柱を補ってからはしごをかけます");
agent.setItem(PILLAR_ID, 1, 1);
agent.place(FORWARD);
agent.setItem(LADDER_ID, 1, 1);
agent.place(FORWARD);
}
agent.move(UP, 1);
}
player.say("上まで登れました");
});