データパック入門向け解説

> 本記事はとあるDiscordサーバーにかつてあった記事を再編し、まとめたものです。
# はじめに
本記事はコマンド・データパックを全く触ったことがない人向けの記事になっている。
コマンド勢を増やすべく、初心者が勢いだけで書いた記事なので、読みやすさとかは期待しないでほしい。
全力で他の方の動画とか記事とかに頼っていくので対戦よろしくお願いします。
# 第１回 コマンドってなぁに？
**説明しよう！**
コマンドとはMinecraftにデフォルトの機能として用意されている、<INS>文字列を使ってMinecraftの世界に様々な影響を与えることができるもの</INS>である！！！


壮大に書いたものの、要するに``/tp``でテレポートできたりだとか``/gamemode``でゲームモードを変えたりだとかできるアレのことである。
いまいちピンとこない人は、らすく氏の[この記事](https://qiita.com/Rusk_Eocssar/items/899064b3a30a3a877875)を読んでみよう。
真似するだけでも十分コマンドを楽しむことができるだろう。

https://qiita.com/Rusk_Eocssar/items/899064b3a30a3a877875



コマンドに対して、「よくわからん難しいもの」というイメージを持つ人もいるかもしれないが、全くそんなことはない。
ぶっちゃけ小学生でも全然できる。

**<INS>コマンドを学ぶ上で重要なのはやる気だけである。</INS>**

事前知識だとかそういうのは一切必要ない。
中には難しいこともあるが、結局は全て<INS>簡単なルールの組み合わせ</INS>だけでできている。
自分が理解できるところからで十分だ。諦めず、少しずつコマンドを理解していこう。

# 第２回 データパックってなぁに？
**説明しよう！**
<INS>データパックとはコマンドの進化系である！</INS>


流石に手抜きすぎるので補足すると、

- 既存のコマンドを組み合わせたオリジナルコマンドを作れる。
- オリジナル実績を作れる。
- オリジナルバイオーム、ディメンションが作れる。

などなど、コマンド＋αを使って結構いろんなものを追加、カスタムするためのものだ。


まぁ百聞は一見に如かず、見た方が早いだろう。
ここでは[ちゅずめ氏のYouTubeチャンネル](https://youtube.com/@chuzume)を紹介しておく。

https://youtube.com/@chuzume



ところで、私の偏見で話すと、コマンド勢がコマンドブロックを触ることはほとんどない。
というのも、コマンドでできてデータパックにできないことは基本存在しない。
さらにデータパックではVSCode等のツールを使って書くことができ、制作のめんどくささが大きく変わるからだ。


慣れないツールを使うのは、少し面倒に感じるかもしれないが、むしろコマンドブロックを使う方が面倒である。
今後のモチベーション維持などにも繋がるため、早いうちに慣れておくべきだろう。

# 第３回 「やりたいこと」を決めよう
当然だが、はじめからコマンドの全てを把握しようとするのは無理な話である。

そこで一つずつコマンドを学んでいくことになると思うのだが、学ぶべき順序というのはとても難しいものだ。
個人的に、自分で<INS>ゴールを決めて、それに向けて必要な技術を身につけていく</INS>のが一番学びやすいと思う。
作業が進むことが実感できてモチベーションにもつながるだろうし、なにより完成した時の達成感はとてもよいものだ。


と、いうわけで**自分が何をしたいのか**というのを考えよう。
とある記事から引用するが、
> **コマンドは手段であり目的では無いです。**

ぶっちゃけ、自分の目的がコマンドに適していないのであればわざわざコマンドを使う必要もないだろう。
かくいう私も、最近はMODの制作が気になっている。


話を戻そう。
「やりたいこと」と言われても、コマンドに明るくない人にとってはなかなか難しい話だろう。
そこで、まずは配布されているマップやデータパックを触ってイメージを膨らますのがよい。
いろいろ見ているうちに、すこしは気になるものが出てくるんじゃないだろうか。
まだこの段階ではこんな感じことやりたいなぁ程度でも考えてみよう。


注意点をあげるとするならば、できるだけ<INS>小さい規模で完成にする。</INS>ということだ。
既存のマップを遊ぶ中で、あんなこともしたい！こんなこともしたい！となった人も多いだろう。
しかし、最初から大規模なものを作るのは**絶対に**おすすめしない

**まずは完成させるのが大切**である。

もし仮に、「全然思いつかない！」という人がいたとしても、さほど問題はない。
とりあえず先に、第４回を参考にデータパックの殻を作ってしまおう。
はじめて作るデータパックというのは、基本自分の思い通りにならない。
先人たちの作品を見たあとなら尚更のことだ。
~~新たな技術を見つけるとどうせ書き直したくなるので、~~ そこまで深く考えずなんとなくで決めるといいだろう。


ところで、今回引用させていただいた記事は、ひろばお氏の[こちら](https://qiita.com/Hirobao1/items/e8f8468517ac466732c9)の記事である。
コマンド初心者向けに様々なことが書かれているのでぜひ読んでみてほしい。

https://qiita.com/Hirobao1/items/e8f8468517ac466732c9
# 第４回 データパックの殻をつくろう
ここまでかなりボリューミーな記事だっただろう。~~本編はここからだ。~~
実際に自分で文字列を書いて、ゲーム内で試して、修正して…という作業をしていこう。

まずはGoogleで``datapack 作り方``で検索してみて欲しい。
最近はデータパックもだいぶメジャーになってきており、かなり多くの人が解説記事や動画を投稿している。
**それを読み尽くす勢いで読もう。**
この段階ではまだ実際に真似する必要はない。とりあえず読みまくろう。

はっきり言って、初心者がこれを全て理解するのは不可能だ。
ただ、似た記事の中でも書いてある内容が微妙に異なっている。
記事を読んでいく上で、<INS>すこしでも知ってることがあれば、次の記事を読む時に事前知識になりとても役に立つ</INS>だろう。
記事と記事の間を他の記事が補完するという表現がよいのだろうか。
理解を深めるため、できるだけ多くの記事を読もう。

私もおすすめの入門向けの解説をいくつかここに貼っておく。

- [【マインクラフト】太陽でもわかる！データパックの入れ方【解説】](https://youtu.be/-cm0JMmt9-A?si=Yk4QioLFT69MWIj2)
- [【Minecraft】データパックの作成チュートリアル #1](https://variouscolors.net/game/minecraft/diary/how-to-make-a-data-pack1/)
- [データパックの構造について解説してみた～データパック製作講座導入回～ ](https://youtu.be/VtvaGWd4t70?si=jyeDHDwL4-UBfNm3)
- [#1 基礎 - 意外と簡単データパック制作](https://note.com/sy_shizuku/n/n5bd35e6da382?sub_rt=share_pw)
- [#2 関数(Function) - 意外と簡単データパック制作](https://note.com/sy_shizuku/n/n2d02904f3181?sub_rt=share_pw)
- [Minecraft 誰でもわかるデータパックの作り方①](https://yoima.hatenadiary.com/entry/2021/03/31/175253)
:::note warn
ほとんどの記事はWindows向けに書かれている。
しかし、macなどの他osでもほとんど違いはない。
記事内で言っていることと多少違っていても、とりあえずやってみれば上手くいくことも多いだろう。
それでもうまくいかないことなどがあればぜひ質問して欲しい。
:::
さて、なんとなくデータパックについてわかってきたのではないだろうか。
それでは、いよいよ自分でやってみよう。

まっしゅ氏の[こちらの動画](https://youtu.be/RLveAEMtsfY?si=D7HIjLqhh-Ag6f7S)を見ながら、とりあえず全部真似するといいだろう。
とても丁寧に解説されていて、おすすめである。
~~すこし古い動画だが、現バージョンでも問題なく動くだろう。~~
``追記 : この前のアップデートで書き方変わりました...とりあえずバージョンを1.20.1くらいにすればいけるはず。今度変更点加筆します（気が向けば）``

https://youtu.be/RLveAEMtsfY?si=D7HIjLqhh-Ag6f7S

今の段階で全て理解する必要はない。とりあえず真似して試してなんか動いた！程度でも、**やってみることが重要** である。

> かくいう私はここで誤字に気づかなかったりなんだりで、数時間溶かしたし、いまだにそういうミスばかりする。
動かなかった時も諦めず根気強く頑張ろう。

と、いうわけでデータパックの殻の完成である。
~~まぁ肝心なところは全て他の方に丸投げなのだが...~~
質問はいつでも受け付けているので、わからないことなどあればTwitterやDiscordなどで気軽に聞いて欲しい。
次回はこの殻に中身を詰めて、自分が作りたいものを形にしていこう。
# 第５回 イメージを形にしよう
本シリーズもいよいよ最終回となる。
今回は第３回で決めた「やりたいこと」を実際に形にしていく手順を解説していく。

まずuran氏の[この動画](https://youtu.be/HSbEqNnWZuA?si=TXvxfJ3PfeB8k0oD)を見よう。
自分の<INS>「やりたいこと」を具体的な「パーツ」にする</INS>方法が解説されている。

https://youtu.be/HSbEqNnWZuA?si=TXvxfJ3PfeB8k0oD

次に、前にも紹介した、ひろばお氏の[この記事](https://qiita.com/Hirobao1/items/e8f8468517ac466732c9)を読もう。
<INS>「パーツ」を「コマンド」にする</INS>方法が解説されている。

https://qiita.com/Hirobao1/items/e8f8468517ac466732c9

ぶっちゃけ、これだけでコマンドはできてしまうのである。

あとは上で作ったコマンドをデータパック書き込んでいくだけだ。
最後に実際にゲーム内で動くか試して、想定通りの動きを確認できたら完成になる。

しかし、 **コマンドは想定通りに動かない。** 
一回で動くほうが怖いくらいである。

コマンドが動かなかったときは
```
1.どの部分が悪さをしているのかを突き止める。
2.なぜその部分が悪さをしているのかを突き止める。
3.その部分を修正する。
```
をする必要がある。
sayコマンドなどを使って、とにかく<INS>見える化</INS>するとわかりやすいだろう。
ほかにも、MC Datapack Wiki JPの[この記事](https://datapack.game-info.wiki/d/%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB/%C6%B0%A4%AB%A4%CA%A4%A4%A4%C8%A4%AD%A4%CB%BB%EE%A4%B9%A4%B3%A4%C8%A5%EA%A5%B9%A5%C8)なども参考になる。

https://datapack.game-info.wiki/d/%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB/%C6%B0%A4%AB%A4%CA%A4%A4%A4%C8%A4%AD%A4%CB%BB%EE%A4%B9%A4%B3%A4%C8%A5%EA%A5%B9%A5%C8


動作確認をする上でとても重要な点が、<INS> **必ず** パーツごとに **こまめに** 動作確認</INS>をすることである。
調べるコマンドの数が多いと猛烈に時間がかかる。
一度動作確認さえしてしまえば、その部分を大きく書き換えることはあまりない。
必ずこまめに動作確認をし、パーツごとに完成させていこう。

どれだけ規模が大きいものや、複雑なものを作るときなどでもこの、 **「分解」「変換」「修正」** を繰り返すだけでいつかは完成する。
時間はかかるだろうが、根気よく頑張ろう。

また、この記事の一番下に、個人的に役に立ちそうなサイトをまとめている。暇な時にでも見てみるといいだろう。

# さいごに
お疲れ様でした。
これにて入門向け講座は終了である。

たとえ一つでもデータパックを完成させることができたなら、十分コマンド初心者を名乗れるだろう。
ところで、せっかく作ったデータパックを自分のものだけにするのはもったいない。
完成したデータパックはぜひ、Twitterなどで投稿してみてほしい。
もしかすると、その投稿が次のコマンダーの助けになるかもしれない。

そしてここまで読んでくれた方、本当にありがとうございました。
~~なんか常に上から目線でちょっと申し訳なかった~~
質問も受け付けているのでぜひどうぞ。
一緒に開発しようぜ！それではよきコマンドライフを～

> 質問は[@TN_Potato](https://x.com/tn_potato)のDMなどからお願いします。

# 番外編 お役立ちリンク集
- [google](https://www.google.com) - 言わずもがな
- [まっしゅ氏のYouTube](https://youtube.com/@Hama_SH) - データパックの機能やよく使う技術の解説など
- [【初めてコマンドを学ぶ人へ】最短でコマンドを学ぶ方法](https://natsumake.com/study_commands_for_begginer/) - コマンドの基礎を学ぶ際にとても参考になる。本記事にも組み込みたかったが存在を知るのが遅すぎた。
- ~~[Minecraft fandom wiki 日本語版](https://minecraft.fandom.com/ja/wiki/Minecraft_Wiki) - 細かい仕様等の確認など~~
- ~~[Minecraft fandom wiki 英語版](https://minecraft.fandom.com) - 日本語版にはない情報も多くある~~
- [Minecraft Wiki 英語版](https://minecraft.wiki/) - 上記wikiが移行したらしい。こっちの方が情報もまとまっていて見やすいのでオススメ
- [Minecraft Wiki 日本語版](https://ja.minecraft.wiki/) - 上に同じく
- [ChatGPT](https://chatgpt.com/) - 聞けばなんでも答えてくれるが、嘘をそれっぽく言ってくる。しかも情報が古い。BingAIとかだと、ネットから情報を拾ってくるのでそこはカバーできるかも...？
- [MC Datapack Wiki JP](https://datapack.game-info.wiki/d/%a5%c1%a5%e5%a1%bc%a5%c8%a5%ea%a5%a2%a5%eb) - 様々な知見が得られる
- [Minecraft Command Advent Calendar 2023](https://qiita.com/advent-calendar/2023/mccmd) - コマンダーたちが書いた記事まとめ。様々な知見が得られる
- [【マイクラ】スコアボード（scoreboard）コマンドを実戦形式で解説【基礎編】【マインクラフト】](https://hollys-command-lecture.hatenablog.com/entry/about-scoreboard) - スコアボードの基本的な使い方
- [【マイクラ】1.13以降の『execute』コマンドの新仕様について完全解説【18w20c対応済】](https://hollys-command-lecture.hatenablog.com/entry/1.13-execute) - execute入門向け記事(旧バージョン向けの記事だが、参考になる)
- [【コマンド】execute onでコマンドの実行者を変えられる【マイクラ】](https://natsumake.com/execute-on/) - 上の記事時点では未実装のexecute onの基本的な使い方
- [Data Pack Generators](https://misode.github.io) - jsonファイル生成ツールなど
- [【マインクラフト】軽いデータパックが作りたい！【データパック解説】](https://www.youtube.com/watch?v=DaFmrTAZkFE) - データパック軽量化のやり方
- [競プロerによるコマンド軽量化テクニック](https://qiita.com/Serena-Healer/items/9749a4ade4a697d9dce9) - データパック軽量化の考え方
- [えびちり氏のプレイリスト](https://youtube.com/playlist?list=PL1DGsG6D8GoqV8l5e8mec0bWKG3wQ7KLz&si=8t4PfrHstz5_JZvJ) - ゲーム制作には必須級である、見た目を変更するリソースパックの入門向け動画まとめ
- [blockbench](https://www.blockbench.net) - 3Dリソパ制作ツール
- [animated java](https://animated-java.dev) - 動くmobなどを作る際に blockbenchのプラグイン
- [mcstacker](https://mcstacker.net) - コマンド生成ツール、複雑なコマンドを手打ちしたくないときに（私はUIが苦手であまり使わない）
- [minecraft tools](https://minecraft.tools/en/public-gallery.php) - 色々生成ツール、コマンド以外もある、tellrawなどに
- [コマンド勢のtwitter](https://twitter.com/home) - さまざまな知見を得られる
- [twitter #おしえて先駆者コマンダー](https://twitter.com/hashtag/%E6%95%99%E3%81%88%E3%81%A6%E5%85%88%E9%A7%86%E8%80%85%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%80%E3%83%BC) - 様々な知見を得られる。質問するともしかしたら答えてくれるかも...?
- [twitter #コマンドメモ](https://twitter.com/search?q=%23コマンドメモ) - 様々な知見が得られる

あとコマンド系コミュニティはできるだけたくさん入って、定期的に確認するべき。様々な知見が〜

また何か思いついたら追記するかもです。ではでは