19-10 闇(やみ)の奥へ続く道

解説動画

クエスト19の19-6から19-10で必要なブロック番号

間違っているコード

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("上まで登れました");
});