Minecraft Moddingのすゝめ「Moddingをしてよかったことと役立つサイト集」

#はじめに
私が初めてMinecraftを買ってもらったのが小学6年生、Modding― プログラムを書こうとしたのが
中学2年生の時だったと思います。当時は「Modってなんやねん！？」みたいな感じでしたので、
ひたすら適当なModで遊んで、次第に自分で作ってみたいと思うようになりました。
正直、めっちゃ高度なことはまだ全然できませんが、**挑戦してみてめちゃくちゃ良かったと思います**。

今回は私がModdingをやってみたことでマイクラのModdingだから良かったと思うこと、初めてModdingする上で参考になりそうなサイトをいくつか紹介したいと思います。

#ここがええ！

- **MinecraftやModdingをしている人とのつながりができた**
同じ趣味でできた人のつながりって案外強いもので、ひっさびさにお話したら、いろいろアドバイスを頂きました！
その人は高専出身なんですが、ちゃんとした専門知識を持っている人がいると本当に心強いです。

- **思うようにコードがかけた時の達成感が半端ない**
Minecraftってバージョン変わるごとにForgeの仕様だったりバニラ側の仕様だったりでめちゃくちゃ仕様変更が激しいんですよ。
なので変わるごとにいろんな処理を変えてやらないといけないんですが、まぁ面倒くさいです。できなくなる処理とかもあります。
なのでそういった処理を適切なものに完璧に置き換えられたときは嬉しかったですね。

- **論理的に物事を考え、冷静に判断できるようになった**
マイクラだからってわけではないですが、これも大きいかなと。考え方もかなり変わったと思います。
感情的になることより、冷静に判断できるようになることが多くなりました。2020年から小学校でプログラミング教育が
必修になるらしいですが、こういった思考を鍛えるっていう面では最適やなと実感しました。

- **チャレンジ精神が強くなった**
基本ができて達成感を得ると、難易度の高いコーディングに挑戦したくなります。高みを目指すのはいいことです。
私はアホみたいなくだらんModを作っていかにそれを活用するすげーアイテムを作るか、みたいな感じでやってます笑

- **説明力が身に付いた**
仕様変更された部分を分かりやすく説明したりする時はやっぱ上がってるなあと思いました。こういった記事を書くことで、
インプットとアウトプットをし、自己の能力を分析して改善点を見つけ出せたりするのもいいと思います。

- **好きなゲームに関することだから長続きする**
これがいっちゃんでかいと思います。途中ブランクもありましたが、なんやかんやで5年ほどプログラミングしてるわけです。
好きなことに関するモノだからこそ続けられるっていう点では、ゲームのModは最適ではないかと思います。

#プログラミングをする時に心がけていること
私なりに心がけるといいよ！って思うことを書いていきます。必ずしもこれがいいとは思いません。
やっていくうちに自分なりの考えで好きなようにやればいい作品ができるはずです。

- **最初はできなくて当たり前なので、GitHubなどでコードを参考にして人の技術をパクる**
世の中にはGitHubやGitBucketでコードを公開してくださっているツワモノがたくさんいらっしゃるので、
困ったらその方々のコードを参考にするといいと思います。

- **自分が何を目標とするのがなんとなくでもいいので立てる**
完璧なプランを立ててからだと、問題に直面した時にやる気がごっそりそがれるので、
めちゃくちゃ漠然とした目標、例えば「食い物追加するMod作るぜ！！！」くらいの気持ちで始めればいいと思います。

- **絶対途中で目が疲れてくるので無理はしない**
長時間画面とにらめっこしているわけですから、目はかなり疲れます。休憩は取りましょう。
ただし休憩でスマホなんかをいじるとあんま意味ないので、
私は大好きなメタルコアを数十分聞いてまたカキカキを繰り返しています。

- **最適化されたコードやヘルパークラスはじゃんじゃん使う**
素人のうちなんて何が最適な手順なのかわからないので、ライブラリやらAPIやら使ってわかりやすく
コードを書いていれば確実なコードがかけますし、時短にもなります。

- **行き詰まったら寝る その後調べたり、誰かに相談**
時折びっくりするくらい行き詰まる時があるんですよ。そんな時って他のことをしてもあんまり気分がのらないので
何も考えずに寝るのが一番です。お仕事でプログラミングをしている方は後のことも考えないといけませんが笑

- **アイデアが思いつかなかったら適当な人にアイデアを煽る**
アイデアってなかなか思いつかない所もあると思います。プログラミング全くやってない人とかでも
前衛的なアイデアをもらえることもあるので、なんとなくで聞いてみてもいいと思います。
([この](https://forum.civa.jp/viewtopic.php?t=152#p548)アホなModも一緒にプレイしてる方に頂きました笑)

#Minecraft Moddingで参考になりそうなモノたち
ここからはModdingをする上で私が参考にしてきたサイトなどを紹介していきます。
ただし、最近はバニラが熱いので、情報が古いものが多いです。Forgeに関しては公式の解説さえまだ微妙です...。

##✔日本語で解説がある、日本人作者である

- [TNT Modders - MOD開発講座](https://www.tntmodders.com/tutorial/)
ModdingグループのTNT Moddersさんのサイトです。1.7.10でのModdingの解説に強いです。

- [defeatedcrow mod wiki - IGNIS作成記](https://defeatedcrow.jp/modwiki/IGNIS%E5%88%B6%E4%BD%9C%E8%A8%98%E9%8C%B2)
日本人ModderのdefeatedcrowさんによるMod制作記です。レンダリングやエンティティのAIなど高度な解説が見れます。

- [Minecraft Modding Wiki](https://mcmodding.jp/modding/index.php/Minecraft_Modding_Wiki)
昔からあるModdingのコミュニティです。情報が錯綜していたりするのである程度自分で判断する必要があります。

- [MOD製作者のためのソース講座 by 鎮守府MOD製作者・鮎滝渉【Minecraft JE版】](https://ayutakimm.wp-x.jp/)
ChinjufuMod製作者のayutakiさんによる解説サイトです。1.12.2以降の解説に強いです。

##✔海外の解説、公開されているソース
海外の解説は主にフォーラムやGitHubといったコミュニティが盛んなため、日本のように具体的な解説サイトは
あまりないようです。なので参考にする場合は他のModのソースを参考にしたほうが早いです。

- [Forge Documentation](https://mcforge.readthedocs.io/en/latest/)
Forge公式による解説です。1.12.2までは解説が存在し、メソッドの説明などが豊富です。

- [GitHub - MrCrayfishFurnitureMod](https://github.com/MrCrayfish/MrCrayfishFurnitureMod)
海外ModderのMrCraifhshさんが開発されているModのリポジトリです。大手工業などと違ってヘルパーの多様をせず、
パケット関係の処理をバニラコードベースで書かれているため、参考にしやすいです。

- [GitHub - Mekanism](https://github.com/mekanism/mekanism)
海外Modderのaidancbradyさんが開発されていたModのリポジトリです。
CoFHCoreの使い方やAPIの実装の仕方、パケットの送受信、右クリックイベントなど高度なソースが豊富です。

- [JEI Getting Started](https://github.com/mezz/JustEnoughItems/wiki/Getting-Started)
JustEnoughtItemsを開発環境にインポートする方法が解説されています。ここの解説を応用して、
Maven経由でGradleプロジェクトにライブラリをインポートするやり方が覚えられると思います。

- [GitHub - BitOfEverything](https://github.com/CJMinecraft01/BitOfEverything)
海外ModderのCJMinecraft01さんのModのリポジトリです。YouTubeで解説されいる動画のソースを
リポジトリに上げてらっしゃるだけに、バニラベースなのですぐに理解できます。

#終わりに
いざ文章化してみると自分でも曖昧に思っていたプログラミングの利点をいろいろ考えられてよかったなぁと思います。
最近のMinecraft Moddingは情報がどんどん古くなっているので全く参考にならないページも多いですが、
経験を積んで最適なコーディングができるように皆さん頑張ってみてください。