
Minecraft バージョン1.12の最大の新要素、これまでの「実績」に代わる「Advancements(進捗)」。実績と同じように、ゲームを進めて目標を達成していく… のですが、大きく進化した点があります。
それは、Advancementsを自分で自由に作れるという点です。編集するだけではありません。いくらでも追加でき、自分だけの進捗タブやツリーを作って、自分だけのクリア条件、自分だけのクリア報酬を設定できるのです。
1.12の「ファンクション」システムと組み合わせれば、配布ワールド制作に大いに役立つでしょう。
Advancementsの自作は非常に奥が深いので、記事は複数に分けて投稿します。#0の今回は、
そもそもAdvancementsってどんなシステム? 配布ワールド制作にどう役立つの?
という皆さんの疑問を解決します。
※この記事の内容は2021年9月5日現在最新の「1.12-pre4」に準拠しています。今後仕様が変わる可能性もありますのでご注意下さい。
そもそもAdvancementsってどんなシステム? 何ができるの?

バージョン1.12の新要素、「Advancements(進捗、進歩)」とはどんなシステムなんでしょうか。
実績と違ってタブで分かれており、途中から解除もできる

1.12(のSnapShot)でゲームメニューを開くと、これまで実績があった場所に「Advancements」があります。クリックしてみましょう。

何もありません。「実績」の場合はやるべき事が書かれていたのに...どうすればいいんでしょう?

とりあえず木を伐って作業台を作ってみて下さい。すると進捗の画面が更新され、「Minecraft」という名前の進捗を解除できます。

エンティティ(Mobなどのブロックじゃない物体のこと)を倒したり、倒されたりしてみましょう。すると進捗画面に「Adventure」というタブが追加され、同時に「Adventure」という進捗が解除できます。
進捗はカテゴリごとに分類されており、それぞれのタブの最初の進捗の名前はタブ名と共通なのです。
Advancementsの特徴は、タブに分かれていることだけではありません。実績と違って、"前の進捗"を無視して途中からでも解除可能なのです。

例えば、運良く宝箱からいきなりダイヤの装備品を入手したとします。するとAdventureタブの「Cover Me With Diamonds」が、前の進捗をガン無視して解除可能なんです!
しかもこれ、解除する進捗のタブが表示されていない状態でもいきなり解除可能なんです。実績は順番が正直面倒臭かったですからね。嬉しい!
自作すればこんなことができる!

そして進捗システムの最大の特徴...それは全てがJSON文書でできているという点です! つまりは自分で自由に編集し、追加できるということ! これからの配布ワールド作成に大きく関わるシステムなんです。

例えばこんな感じで、新しいタブを追加し、その中にオリジナルの"進捗ツリー"を構築できるんです。背景やアイコン、それぞれの進捗のタイプや名前などを何でも自由に設定可能。ワクワクするでしょ?

カスタマイズできるのは見た目だけではありません。それぞれの進捗を解除する色々な「トリガー(trigger)」を選んで設定できます。一つの進捗に複数のトリガーを設定することも可能。

トリガーには、それぞれ複数の「コンディション(conditions)」を設定できます。例えばトリガーが「placed_block(ブロックを置いた)」なら、「どのブロックを置いたのか」の条件を設定するのがコンディションです。LootTableの書き方を知っている方ならすんなり分かる仕組みですね。
リワード(報酬)としてコマンドを実行できる→コマンドブロックの代わりになる!

進捗を自作してもおまけ要素になるだけだよね? ― いえいえ、進捗システムはワールド制作における革命です。
なぜなら、進捗を達成した報酬として"複数のコマンドを実行"できてしまうのです! つまりコマンドブロックの塊をJSONファイルに置き換えられるということ!

例えばこちらのJSON文書は、「ゾンビを爆発で倒す」進捗を設定したものです。リワードに「ダイヤをgiveする」「この進捗を非達成状態にする」コマンドを書いたファンクションのテキストファイルの場所を指定しているので、ゾンビを爆発で倒す度にダイヤモンドが与えられるわけです。配布ワールドに使えそうでしょ?
- 「ファンクション」システムの解説
https://napoan.com/wp/pc-112-functions-guide/
ということで、この「Advancements(進捗)の自作完全ガイド」シリーズの記事では「配布ワールド制作に役立つ」Advancementsの作り方を解説していきます。次回は自作の基本、書くためのツールや保存場所、タブとツリーの作り方を解説します。
おおお!ついに実績編集追加ですね!!配布ワールドで活用できそうです!
常時実行コマンドをAdvancementで実行する場合はトリガーにarbitrary_player_tickを使ったほうがトリガーがtickの時よりコマンド実行数減りますよ(てか画像の例だとマルチプレイ時に5秒じゃなくて2.5秒とかになりますしお寿司)
知りませんでした><教えて下さりありがとうございます
報告
1.11のreplayMODはoptifineと共存できましたよ!
それと1.11の解説もしてくれるとありがたいです
1.12の正式版が出てからでも、「Advancements for 1.7.10」とかっていうmodが欲しい
実績→進捗
無理に1.7.10を使う必要はないと思うのですが…
さんのコマンド力で配布ワールド作って配布して欲しいですヽ(*´∀`)ノ
1.12-pre2でarbitrary_player_tick廃止になってgameruleで常時実行できるようになりましたという報告?のような
そうなのかすげぇぇぇえ!
jsonだけ配布とかもできるのか
とかって書いてあるからバージョンに拘ってるんじゃないと思いますよ
進捗どうですか?
僕たちで作るっていうのはどうですか!!
じゃツイッター教えてくださいww☚(技術力0の人間)
advancementのrewardにfunctionを設定した場合、基本的には機能するのですが、@sや@pのセレクタを含ませた場合、機能しません。
@sを使用するexecuteコマンドをrewardに使いたいのですが、何か解決策はありますでしょうか?
すみません、これはマイクラ自身の問題ではありませんでした。
1.7.10でmoddingとかmod入れて遊んでいるのでバージョンアップせずに新機能が欲しいのです。
1.7.10限定でバージョンアップ(1.8などにせずに)1.8以降にある要素を追加するModがほしいということじゃないですか?