プログラミング知識ほぼ不要でModを製作する方法(基礎編)

どうも。ゾンビ先生(エリンギ)です。

この記事では、タイトルにもある通り「Modding」について扱っていきたいと思います。

記事進行の都合上、順を追ってゆっくり説明していくことになりますので、要点だけ分かれば十分だぜ、という方はこの後の段落を飛ばして記事最下部にあるまとめをご覧ください。

注意 当記事で紹介する方法に関するご質問・ご意見は、フォーラム等ではなくこの記事への返信でお願いいたします。 また、方法本体とあまり関係がない、基礎的な内容に関する質問が多く寄せられた場合、回答しない場合があります。申し訳ありません。


■目次
1. Moddingを簡単に…?
2. コピペModdingとは?
3. 具体的な手順
  3-1. 準備する物
  3-2. JDK導入手順
  3-3. Eclipse導入手順
  3-4. Forge導入手順
  3-5. 最初に行うこと
4. Moddingの基礎知識
5.コピペや参考元に使えるサイト様

 

1.Moddingを簡単に…?

皆さんは、Modding(Mod製作)と聞いて、どんな印象を持たれますか?

「なんだか難しそう…」
「プログラミングができないといけないんでしょ?」


といった風に思われている方も多いと思います。 確かに、ModはJavaなどのプログラム言語で書かれたプログラムで、1から書こうとすればそれ相応の技術が必要になってきます。 しかし、この記事でご紹介する「コピペModding(仮)」なら、そういった高度なプログラミングの技術・知識が一切なくとも、ブロックの追加からMob・キー操作まで、様々な機能を持つModが製作できるのです! ただ、一応言っておくと、コピペ後の変更等の際にはJava等の知識ややる気が多少必要になってきます。その辺りはご了承下さい。 …興味を持っていただけましたか? では早速、その方法をお教えしましょう!  

2.コピペModdingとは

コピペModdingとは、その名の通り Mod製作の大部分をコピー&貼り付けでやってしまおう、という手法のことです。 Modのコード(=プログラム内容)も、別にそれぞれのModの完全オリジナルというわけではなく、基本的な要素追加などの方法には共通部分がかなりあります。 その共通部分を既存のコードから持ってきて、名前やテクスチャなど見た目に関わる部分を変更していく、というのがやや詳しい説明ですね。 しかしまあ、これだけ言われてもよくわかりません(私も書いていてよくわからなくなってきました)ので、早速具体的な内容に入っていきましょう。  

3.製作の下準備

準備する物

・JDK(Java Develpment Kit) http://www.oracle.com/technetwork/java/javase/downloads/index.html
Javaで開発するためのものです。これ自体に触れることはほとんどありません。

 

・Eclipse(日本語化版はPleiades)、またはIntelliJ IDEAなどのJava開発環境 http://mergedoc.osdn.jp/(Eclipse日本語版)
私自身はEclipseを使用していますので、今後はそれに基づいて書いていきます。 バージョンは大きく影響しませんが、理由がなければ最新版がお勧めです。

 

・Forgeのソースファイル http://files.minecraftforge.net/
最近はほとんどのModがForgeを前提としていますので、こちらの導入も必要になってきます。




(以下の導入手順は Minecraft Modding Wiki の内容をやや要約したものになっています。詳細な内容は元のページをご覧ください。ただ、質問はこの記事への返信などでお願いします なお、以下の手順はWindowsでのものですので、他のOSをお使いの方はファイル形式等が異なる可能性があります。基本は同じはずなので形式などだけ読み替えてください)  

JDK導入手順

リンク先、JDK DOWNLOAD(JREではありません)をクリックし、Oracle Binary Code License Agreement for Java SEを確認の上「Accept License Agreement」にチェックを入れてからその下の、自分のPCのOSに合ったJDKをダウンロードしてください。32bit版はx86と記載されています。 その後、ダウンロードしたexeファイルをダブルクリックして導入してください。

 

Eclipse導入手順

ダウンロードしたEclipseまたはPleiades All In Oneを解凍してください。その中にEclipse.exeがあるのでそこから起動できます。余談ですが、Pleiades All In Oneの方が起動時の画面が格好いいです(個人の感想です)。

NEON 格好いい
(注意:Lhaplus、Lhaca、jar コマンドでは解凍ができません。Windowsならば右クリックして「すべて展開」を選択するのがいいと思います。詳細はDLリンク最下部を参照してください)

 

Forge導入手順

リンク先から、ダウンロードしたいForgeのバージョンを探し、右のほうの「Src」からダウンロードしてください。
Forgeのバージョンがそのまま、作ったModが対応するMinecraftのバージョンになりますので、制作したいバージョンのものをどうぞ。
ただ、コピペ元のコードの数の関係から、この記事では1.7(.10-10.13.4.1558)を扱わせていただきます。

ダウンロードしたSrcを解凍し、中にあるgradlew.batをメモ帳などで開いて、JDKのパスを下のようにショートネームで追記します。位置は12~18行目あたりのset~~~が並んでいる辺りで問題ありません。

set JAVA_HOME=C:\PROGRA~1\Java\jdk(バージョン)

ショートネームが分からなければ「dir /x C:\」と打てば表示されます。。「Program Files」は「PROGRA~1」などとなります。

gradlew.batがある場所と同じ階層に、新しくテキストファイルを作成し、中に以下のコードを書いて「Install.bat」として保存してください。
(IDEを使わないでデバッグする人用)

call gradlew setupDecompWorkspace

(Eclipse用)

call gradlew setupDecompWorkspace eclipse
pause

(intellij IDEA用)

call gradlew setupDecompWorkspace idea
pause


保存したら、そのbatをダブルクリックで実行してください。少しかかるので鉱石でも採掘して待っていましょう。
最後のほうに「BUILD SUCCESSFUL」と表示されていれば成功です。表示されていなかった場合は「gradlew –refresh-dependencies」をInstall.batなどと同じようにして実行させて関連ファイルの再生成を行ってからInstall.batを実行してみてください。

複数のModを同じ場所で開発する場合はbuild.gradleの編集が必要になりますが、ここでは省略させていただきます。Modding Wikiなどをご覧ください。

 

最初に行うこと

蒸気の作業が終わったらEclipseを起動し、ワークスペース(恐らく設定を求めるウィンドウが表示されるかと思います)に用意したForgeのファイル群内の「eclipse」フォルダを指定してください。

起動できたら、左のほうにある「パッケージ・エクスプローラー」のMinecraftを開き、中のsrc/main/javaを開いてください。
「com.example.examplemod」というパッケージがあるかと思いますが、それはForge側が用意したサンプルですので、出力が面倒にならないよう削除しておきましょう。

更に、コードを入れるパッケージ(後述)を作成しておきます。src/main/javaを右クリックし、新規>パッケージから作成してください。
パッケージ名に制約はありませんが、自分の名前(ドメインを持っている場合はそれの逆引き)とMod名を組み合わせる場合が多いようです。他のModと被らないように設定しておきましょう。
例:eryngii.minfopost(ドメイン名を持っていない場合)
    com.example.examplemod(example.comというドメインを持っている場合)
ここまで終われば、後はコピペ元に従ってクラスやパッケージを追加していくだけです。具体的な追加方法については次回から書いていきます!

 

4.Moddingの基礎知識

今後の記事内容を読んでいくうえで重要になってくるので、ここで大まかに用語について説明しておきます。

ただ、記事内で一般的ではない用語を使う場合は説明を付けますので、以下の内容を完全に把握する必要は全くありません。少しずつ慣れていきましょう!

ほとんどコピペで済むとはいっても、コピペしたものを上手く作り替えていく関係で、多少の内容把握は必要になります。下の図に簡単に示してみたので眺めるだけ眺めてみてください。

(画像はEclipse、Forge#1558、外観をダーク、フォントをメイリオに変更済みでのものです)

 

①パッケージ
Modのソースを格納しておく部分で、クラス数が多い場合などにはcom.example.examplemod.blocksのように、パッケージ内にさらにパッケージを作成して整理することもあります。

 
 

②クラス
Modのソースコードを書き込んでいくファイルです。基礎的な登録などを行うCoreクラス、ブロック情報を記載するBlockクラスなど、用途に応じて分けつつ相互に連携します。コピペModdingにおいては、コピペ元の分け方に従うのがいいと思います。

 
 

③Import
Minecraft本体やForgeのクラス、自分のMod内の他のクラスを読み込む処理です。読み込むことにより、簡単に言えばそのクラスの処理を利用したりできます。

 
 

④Modアノテーション
Coreクラスのみに記述するものです。これがあることでModのクラスとして認識されます。ModのID、バージョンなどの情報を記載できますが必須なものはIDだけです。細かいModの情報はmcmod.infoという別のファイルに記載します。(これに関しては次回以降で述べます)

 
 

⑤処理書き込み部分(仮称)
クラス内の、具体的に処理を書き込んでいく部分です。(preInit、init、postInit等のイベントが配置されていきますが、どのイベントを何に使うかは人によって違うこともあります。コピペ元の記述に従うのが無難かと思います。)
 
参考:http://hevohevo.hatenablog.com/entry/2014/08/15/185204

 

⑥参照ライブラリ
大まかにいえば参照できるクラス群のことです。色々とありますがコピペModdingでよく使うのは一番上のForgeSrc-(バージョン) のみで、ForgeとMinecraftのソースコードを閲覧できます。

 
 


・その他用語など
覚えておくと多少は使えるかな? 程度ですので読み飛ばしていただいても問題ありません。

●extend (継承)とimplement
extendは他のクラスを「継承」し、そのクラスの機能を使えるようにすること、implementはインターフェース(あまり必要ない知識のため割愛)の実装に使います。(Java本体の知識は曖昧な部分もあるため誤りがあった場合は申し訳ありません)
BlockやEntityなどのクラスは、基礎となるMinecraft本体のクラスを継承している場合が多いです。

 

5.コピペや参考元に使えるサイト様


コピーさせていただく元のコードが無ければこの方法は成立しません。次回以降も適宜紹介はしますが、ここで、参考になるコードを公開して下さっているサイトをいくつかご紹介しておきます。

※サイトにより異なりますが、コピペで製作したModのライセンスは基本コピペ元に帰属します。各サイトの利用規約・ライセンス等を必ず確認して下さい。
確認不足によるトラブルに関しては一切責任を負いません。
 

◆Minecraft Modding Wiki
有志によって運営されている開発者向けのページです。バージョン・用途向けに簡潔なチュートリアルがまとめてあり参照しやすく、種類も豊富です。

 

  ◆TNT Modders
「オファレンMOD」、「星の樹MOD」などの開発者、赤砂蛇凪浜様と、「匠Craft」の開発者Tom Kate様が運営されているWikiです。1.7でのMod製作チュートリアルがあり、実際の実装例もあるため応用が利かせやすくなっています。

 

 
◆Reginn666様のWiki
1.7 / 1.3のForgeのModのサンプルや、APIの情報などが記載されています。他サイトではない手法が書かれている場合もあるので、一通り見ておくといいかもしれません。

 

 
◆その他のModのソースコード
 
フォーラムなどで公開されているModの中には、Github他でソースを公開しているModもあります。実際に動いているコードはかなりいい例になりますので、公開されているModがあればそちらも覗いてみましょう。ただ、ソースのコピペ利用が作者様により制限されている場合もありますので、事前確認や利用規約の熟読を必ず行い、その規約に従ってください。当サイトでは利用規約を破ったことに関するトラブルには一切責任を負いません。
 
◆Minecraft本体のソースコード 
Minecraft本体も勿論Javaで書かれているので、動いているお手本として参考になる場面は多くあります。 Forgeで開発していれば、前章で記載した「参照ライブラリ」のforgeSrc-からForge及びMinecraftのソースコードが閲覧可能ですので、バニラの処理と似たことをしたい場合はその部分のソースを見てみましょう。(ただし、一部かなり読みにくい部分もあります。)

 
◆海外のMod製作支援サイト 
英語が読めるのならば、調べたい処理内容を英語で検索することで、海外のMod製作情報サイトを見つけることができます。
日本よりもかなり情報が豊富なので、行き詰ったら機械翻訳などを駆使して見てみてもいいかもしれません。


 

■今回のまとめ
・コピペModdingとは、既存のModのプログラムをコピーしてきて、外見や動作に関わる部分だけ書き換えてModを作る方式のこと。
・ModdingにはJDK、Eclipseなどの開発環境、ForgeのSrcの準備が必要
・参考になるサイトはいくつか存在する。
・いずれにせよ、ライセンス等はコピペ元に帰属するのかどうかをしっかりと確認する必要がある。