提供: Minecraft Modding Wiki
移動先: 案内検索
(マルチプロジェクトにする場合: 整形)
(マルチプロジェクトにする場合)
64行目: 64行目:
 
:この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペースと“同じ階層”に置くこと
 
:この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペースと“同じ階層”に置くこと
 
:親ディレクトリ
 
:親ディレクトリ
:::ワークスペース/
+
::ワークスペース/
:::Project1/
+
::Project1/
:::Project2/
+
::Project2/
 
;IDEAの場合
 
;IDEAの場合
 
:<source lang="groovy">include 'Project1','Project2'</source>
 
:<source lang="groovy">include 'Project1','Project2'</source>
 
:この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペース“内”に置くこと
 
:この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペース“内”に置くこと
 
:親ディレクトリ
 
:親ディレクトリ
:::ワークスペース/
+
::ワークスペース/
:::::Project1/
+
:::Project1/
:::::Project2/
+
:::Project2/
 
</li>
 
</li>
 
<li>各プロジェクトのディレクトリ内に「build.gradle」ファイルを作成する。</li>
 
<li>各プロジェクトのディレクトリ内に「build.gradle」ファイルを作成する。</li>
98行目: 98行目:
 
;Eclipseの場合
 
;Eclipseの場合
 
:ワークスペース/
 
:ワークスペース/
:::.gradle/
+
::.gradle/
:::src/
+
::src/
:::build.gradle
+
::build.gradle
:::settings.gradle
+
::settings.gradle
 
:Project1/
 
:Project1/
:::.gradle/
+
::.gradle/
:::src/
+
::src/
:::build.gradle
+
::build.gradle
 
:Project2/
 
:Project2/
:::.gradle/
+
::.gradle/
:::src/
+
::src/
:::build.gradle
+
::build.gradle
  
 
;IDEAの場合
 
;IDEAの場合
 
:ワークスペース/
 
:ワークスペース/
 +
::.gradle/
 +
::src/
 +
::build.gradle
 +
::settings.gradle
 +
::Project1/
 
:::.gradle/
 
:::.gradle/
 
:::src/
 
:::src/
 
:::build.gradle
 
:::build.gradle
:::settings.gradle
+
::Project2/
:::Project1/
+
:::.gradle/
:::::.gradle/
 
:::::src/
 
:::::build.gradle
 
:::Project2/
 
:::::.gradle/
 
 
:::src/
 
:::src/
 
:::build.gradle
 
:::build.gradle

2017年2月20日 (月) 20:58時点における版

この記事は執筆中です。加筆してくださる人を募集しています。

MinecraftForge9.11.1.960以降での開発環境構築手順です。

必要なもの

Forge

前準備

  • JDKのダウンロード、およびインストール
  • Mod Development Kit (Mdk)のダウンロード、および解凍

手順

IDEAの場合
  1. Import Projectからbuild.gradleを開く
その他の場合
  1. gradlewファイルが存在するディレクトリで
    gradlew setupDecompWorkspace
    をシェル上で実行する。
  2. しばらく待ち、「BUILD SUCCESSFUL」と表示されれば成功。
    1. 「BUILD FAILURE」と表示された場合は
      gradlew --refresh-dependencies
      を実行の後やり直す。
  3. Eclipseの場合は、
    gradlew eclipse
    も併せて実行し、生成されるファイルからプロジェクトを開く。

マルチプロジェクトにする場合

複数のMODを同じワークスペースで開発する場合のみ必要な工程です。

  1. build.gradleファイルを適当なテキストエディタで開き、build.gradle内の以下の部分
    apply plugin: ...
    
    version = "1.0"
    group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
    archivesBaseName = "modid"
    
    minecraft {
        version = ...
        runDir = ...
    
        mappings = ...
    }

    を、次のように変更する。

    allprojects {
        apply plugin: ...
    
        minecraft {
            version = ...
    	runDir = ...
    
            mappings = ...
        }
    
        archivesBaseName = project.projectDir.name
    }
  2. build.gradleを同じディレクトリに「settings.gradle」ファイルを作成する。
  3. 「settings.gradle」を開いて、以下のように記述し保存。
    Eclipseの場合
    includeFlat 'Project1','Project2'
    この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペースと“同じ階層”に置くこと
    親ディレクトリ
    ワークスペース/
    Project1/
    Project2/
    IDEAの場合
    include 'Project1','Project2'
    この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペース“内”に置くこと
    親ディレクトリ
    ワークスペース/
    Project1/
    Project2/
  4. 各プロジェクトのディレクトリ内に「build.gradle」ファイルを作成する。
  5. 「build.gradle」を開いて、以下のように記述し保存。
    sourceSets.main {
        java.srcDirs project.projectDir.name
        resources.srcDirs project.projectDir.name
    }
    version = "1.0"//バージョン
    ソースに日本語が記述されている場合
    さらに以下を追加。
    tasks.withType(Jar) {compileJava.options.encoding = 'UTF-8'}
    APIに日本語が記述されている場合
    さらに以下を追加。
    tasks.withType(Jar) {compileApiJava.options.encoding = 'UTF-8'}
    依存関係がある場合、外部jarをビルド時に読ませたい場合
    1. さらに以下を追加。
      dependencies { compile fileTree(dir: 'lib', include: '*.jar') }
    2. そのプロジェクトのディレクトリ内に「lib」ディレクトリを作成。
    マルチプロジェクト内の他のプロジェクトに依存している場合
    さらに以下を追加。
    dependencies { compile project(':ProjectName')}

以上のようにすると、以下のようになる。

Eclipseの場合
ワークスペース/
.gradle/
src/
build.gradle
settings.gradle
Project1/
.gradle/
src/
build.gradle
Project2/
.gradle/
src/
build.gradle
IDEAの場合
ワークスペース/
.gradle/
src/
build.gradle
settings.gradle
Project1/
.gradle/
src/
build.gradle
Project2/
.gradle/
src/
build.gradle

MOD

開発

この環境下でMODをビルドしたい場合、単独プロジェクトの場合は、開発環境の作業ディレクトリに
src/main/java
という階層でディレクトリを作成し、javaディレクトリ内に、自身のMODのパッケージに有ったディレクトリ構成でsourceファイルを配置すればよい。
画像や音声ファイル等のリソースファイルは
src/main/resources/assets
という階層でディレクトリを作成し、assetsディレクトリ内に指定されたディレクトリ構成でファイルを配置すればよい。 リソースファイルの配置の仕方は、1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所を参照のこと。

  • マルチプロジェクトの場合

各プロジェクトディレクトリ内に、上のディレクトリ構成でファイルを配置する。

デバッグ

作成したMODのデバッグは、ForgeGradleを使うことで、1.6.4以前のMCP環境と同様に行うことが出来る。

  • 単独プロジェクトの場合

作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunClient.bat」に変更する。

call gradlew runClient
pause

作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunServer.bat」に変更する。

call gradlew runServer
pause
  • build.gradle内のrunDirに指定したディレクトリ(MDKのデフォルトでは"run")がプロジェクトディレクトリ以下に存在しないと,runClientおよびrunServerがエラーで実行できないので注意.
  • マルチプロジェクトの場合

作業ディレクトリ(プロジェクトディレクトリではない)内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunClient.bat」に変更する。

call gradlew :<PROJECT NAME>:runClient
pause

作業ディレクトリ(プロジェクトディレクトリではない)内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunServer.bat」に変更する。

call gradlew :<PROJECT NAME>:runServer
pause
  • IDE上でデバッグする場合

Eclipse で開発する場合は、プロジェクトファイルを開き、起動クラスの設定を行う

  • 起動クラスの設定はクライアントの場合GradleStart、サーバはGradleStartServer。プログラムの引数は空で良いが、「-username=<任意の文字列>」を指定しておくと、マルチプレイのテスト時にOPを付与しなおす必要がなくなる。
  • VM への引数として「-Xincgc -Xmx1024M -Xms1024M」を指定。(非力なマシンでデバッグする場合は適宜変更のこと)
  • 作業ディレクトリに「${workspace_loc:(プロジェクト名)/jars}」を指定。GUI からワークスペースの jars ディレクトリを指定しても良い。
  • ワールド情報は jars/save の中に生成されるので、既存ワールドは適宜このディレクトリにコピーすること。一度ゲームを起動すれば jars ディレクトリ内に必要ディレクトリが作成される。

ビルドパスの修正

  • ForgeSrcのパスが不足している場合、C:\Users\ユーザー名\.gradle\caches\minecraft\net\minecraftforge\forge\(Forgeバージョン) に forgeSrc-(Forgeバージョン).jar が存在する。添付ソースは末尾が「-source.jar」のファイルなので一緒に設定すると良い

IDEAで開発する場合、起動構成は開発ディレクトリ上でのコマンドプロンプトで「gradlew genIntellijRuns」と実行すれば自動的に構成できる。

リリース

リリースビルド用バッチファイルの作成
(シングルプロジェクト用)

  • 作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「Release.bat」に変更する。
call gradlew build --info > buildlog.txt 2>&1
  • 今後、コンパイルを行う時はこの「Release.bat」を実行すれば、MCPでの「recompile.bat」「reobfuscate_srg.bat」を同時に行ってくれる
  • コンパイル中のログは、「buildlog.txt」に出力される
  • コンパイルされたclassファイルは、\build\libsディレクトリに圧縮された状態で出力される
    • 「build.gradle」を弄っていなければ、「modid-1.0.jar」として出力されている。"archivesBaseName"-"version".jarという書式

(マルチプロジェクト用)

  • 作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「Release-<ProjectName>.bat」に変更する。
call gradlew :<ProjectName>:build --info > build-<ProjectName>-log.txt 2>&1
  • 今後、<ProjectName>のプロジェクトのコンパイルを行う時はこの「Release-<ProjectName>.bat」を実行すれば、MCPでの「recompile.bat」「reobfuscate_srg.bat」を同時に行ってくれる
  • コンパイル中のログは、「build-<ProjectName>-log.txt」に出力される
  • コンパイルされたclassファイルは、\build\libsディレクトリに圧縮された状態で出力される
    • マルチプロジェクト用「build.gradle」を弄っていなければ、「<ProjectName>-1.0.jar」として出力されている。"<ProjectName>"-"version".jarという書式

Forgeのアップデート

Forgeの新しいビルドがアップデートされた時に、以下のようにして、開発環境のForgeをアップデートすることが出来る。

  • 「build.gradle」ファイルを開く。
  • 中程のminecraftブロック内の“version”を最新のビルドナンバーに書き換え、保存する。
  • 「install.bat」を実行。

(注意)マルチプロジェクトをしている場合は、setupDevWorkspaceとsetupDecompWorkspaceを全てのプロジェクトで自動で行うが、setupDecompWorkspaceは大元のプロジェクトで行えば十分なので、「install.bat」の中身の「setupDecompWorkspace」を「:setupDecompWorkspace」に置き換えたほうが、作業が捗り、decomp時のJava heapエラーに悩まされることもなくなる。 (1.7.10以降なら、そのままでも重複タスクはスキップされるので、Java heap エラーは起きにくくなった。)

動画

リンク

以前のバージョンでの手順

参考サイト

非公式フォーラム
IDEA+Gradleでわいわい
IntelliJ IDEAでModding
ForgeGradle+IDEAでマルチプロジェクト


自分のコメントを追加
Minecraft Modding Wikiはすべてのコメントを歓迎します。匿名で投稿したくない場合は、アカウント作成またはログインしてください。無料です。


  • 当たり前ですが、install.bat実行時に対応するバージョンのminecraftの.jarが無いと失敗します。実行前に一度でも対応バージョンのminecraftを起動しておく旨を記載した方がよろしいかと --122.251.218.248 2016年12月14日 (水) 18:09 (JST)

  • マルチプロジェクトのほうの解説が少しわかりづらいのです --118.8.218.24 2016年7月23日 (土) 19:06 (JST)

  • install.batが失敗したので調べたらgradle.propertiesファイルを作成して内容をorg.gradle.jvmargs=-Xmx2048Mと書いてgradlewと同じディレクトリに入れておいたら成功しました。 --115.36.144.125 2016年2月25日 (木) 07:04 (JST)