見出し画像

【雑談】なぜコマンドブロックではなくデータパックを使うのか


なぜデータパックを使うのか

個人的にはこの3つが最も便利なことだと思っています

  1. VSCodeなどの便利な環境で開発ができる

  2. Advancement,Predicateなどのコマンドブロックにはない便利要素がたくさんある

  3. 管理が楽

1.VSCodeなどの便利な環境で開発ができる

まず1つ目の利点「VSCodeなどの便利な環境で開発ができる」
について解説します。

通常コマンドブロックではこんなUI↓ ですが

https://static.wikia.nocookie.net/minecraft_ja_gamepedia/images/9/99/Command_Block_GUI.png/revision/latest?cb=20200927094646

VSCodeではこんなUI↓ です。

開発中のデタパ

全然違いますね。
多分多くの人はVSCodeのUIの方が親しみやすいと思います。
特に左側にあるエクスプローラーが非常に便利で、
   あのコマブロどこいいった
問題を解決できます。
もうこれだけでデータパックを使う利点になります(過言)

さらにこちらのVSCode
Tab補完の完全上位互換が使えます。
VSCodeには拡張機能という機能がありVSCodeに機能をどんどん追加することができます。え?どういうことかわからない?こういうことです

素晴らしいですね。
多分ほとんどのデータパック職人の皆さんはVSCodeで開発されていると思います。(偏見)

2.Advancement,Predicateなどのコマンドブロックにはない便利要素がたくさんある

続いて「Advancement,Predicateなどのコマンドブロックにはない便利要素がたくさんある」についてです。
データパックにはFunctionしかないと思われがち(私も最初そう思ってました)ですがAdvancement(進捗)を作れたりRecipe(レシピ)を作れたり…とかなりの量の要素があります。詳細はこちらを参照してください

このようにデータパックにはかなりの量の要素があるのです。
その中でも特に便利な機能を紹介します

2-1.Advancements

Advancementは進捗を自作することができます。
ですがほとんどのデータパック職人はAdvancementを本来の目的で使用していません。なぜかというと

  1. イベント(○○した時のような)が簡単に作成できる

  2. 進捗を達成した時達成した人に対してFunctionを実行できる

  3. マルチ対応

  4. 軽い(多分)

便利ですね~
コマンドだけでは再現が難しいような処理でもAdvancementなら簡単にできるものは結構あります。
作例を載せておきます

{
  "criteria": {
    "requirement": {
      "trigger": "minecraft:consume_item",
      "conditions": {
        "player": [],
        "item": {
          "items": [
            "minecraft:apple"
          ]
        }
      }
    }
  },
  "rewards": {
    "function": "test:any_function"
  }
}

trigger : イベント名 今回だと「consume_item」アイテムを消費した時に発生します
conditions : プレイヤーの状態
item : 消費したアイテム 今回だと「minecraft:apple」
rewards : 進捗を達成した時の報酬
function : 達成したプレイヤーに対して実行する関数

3.管理が楽

最後に「管理が楽」について。
VSCodeでエクスプローラーが使える時点で既に管理が楽なんですがGitが簡単に使えるというのも大きいです。
Githubで共同作業(したことないですが)とかできるのも便利だと思います。

まとめ

データパックは、いいぞ~

補備

書き方が雑ですが、データパックの魅力をわかっていただけましたか?
この記事を読んでデータパックに興味を持ってくれれば幸いです。
最後まで読んでいただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?