提供: Minecraft Modding Wiki
移動先: 案内検索
(一行コメント)
(その他の場合の作業スペース処理を編集(2.3までと3+以降の処理の追加)
 
(10人の利用者による、間の36版が非表示)
1行目: 1行目:
{{stb}}
+
MinecraftForge9.11.1.960以降での開発環境構築手順です。
Minecraft1.7.2以降で、MinecraftForge10.12.0.967以降を導入する場合の手順です。<br />
 
;動作確認
 
:Minecraft1.7.2~1.8 Forge10.12.0.??? ~
 
:Minecraft1.6.4 forge-1.6.4-9.11.1.960-964
 
 
 
*動作の確認は基本的にRecommended[推奨版]のみ。Latest[最新版]はForge自体の動作が保証されていません。
 
*Forgeのダウンロードは[http://files.minecraftforge.net/ こちら]から。
 
  
 
==必要なもの==
 
==必要なもの==
 
*MinecraftForgeのソースファイル
 
*MinecraftForgeのソースファイル
**http://files.minecraftforge.net/ から Src をダウンロード
+
**http://files.minecraftforge.net/ から Mdk をダウンロード
**Forge-1.8-11.14.4 以降は名称が '''Mdk''' (Mod Development Kit)に変更されている。また、gradleファイルの内容が変わっているので注意すること。
+
**Forge-1.8-11.14.4 以前は '''Src'''
 +
**Show All Downloadsからダウンロードしたいデータのリンクの右のiを押すと、adfoc.us(広告)を飛ばせます。
 +
 
 
*JDK(JavaDevelopmentKit)
 
*JDK(JavaDevelopmentKit)
 
**http://www.oracle.com/technetwork/java/javase/downloads/index.html からPCに合わせてダウンロード
 
**http://www.oracle.com/technetwork/java/javase/downloads/index.html からPCに合わせてダウンロード
22行目: 17行目:
 
===前準備===
 
===前準備===
 
*JDKのダウンロード、およびインストール
 
*JDKのダウンロード、およびインストール
*MinecraftForgeSourceのダウンロード、および解凍
+
*Mod Development Kit (Mdk)のダウンロード、および解凍
 +
 
 +
===手順===
 +
;IDEAの場合
 +
:#Import Projectから解凍したフォルダの中にあるbuild.gradleを開く
 +
:#読み込みを待った後、Gradleタブ(デフォルトで右側に存在)からsetupDecompWorkspaceを選択し実行する。
 +
;その他の場合
 +
; ForgeGradle 2.3までの場合
 +
:#gradlewファイルが存在するディレクトリで<source lang="winbatch">gradlew setupDecompWorkspace</source>をシェル上で実行する。
 +
:#しばらく待ち、「BUILD SUCCESSFUL」と表示されれば成功。
 +
:##「BUILD FAILURE」と表示された場合は<source lang="winbatch">gradlew --refresh-dependencies</source>を実行の後やり直す。
 +
:#Eclipseの場合は、<source lang="winbatch">gradlew eclipse</source>も併せて実行し、生成されるファイルからプロジェクトを開く。
 +
 
 +
; ForgeGradle 3以降の場合
 +
:#gradlewファイルが存在するディレクトリで<source lang="winbatch">gradlew genEclipseRuns</source>をシェル上で実行する。
 +
:#以降は2.3の2と同じ流れ
  
===環境構築手順(install.bat作成まで)===
 
Forge の src を展開する
 
gradlew.batをメモ帳等で開き、JDKのパスをショートネームで追記しておく(12~18行目あたりのset ***が並んでる付近でよい)
 
*set JAVA_HOME=C:\PROGRA~1\Java\jdk1.7.0_51
 
*ショートネームがわからなければ、コマンドプロンプトで「dir /x C:\」と打てば表示される。「Program Files」は「PROGRA~1」など
 
インストール用バッチファイルの作成
 
*作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「Install.bat」に変更する。
 
(IDEを使わないでデバッグする人用)
 
<source lang="text">
 
call gradlew setupDecompWorkspace
 
</source>
 
(Eclipse用)
 
<source lang="text">
 
call gradlew setupDecompWorkspace eclipse
 
pause
 
</source>
 
(intellij IDEA用)
 
<source lang="text">
 
call gradlew setupDecompWorkspace idea
 
pause
 
</source>
 
(IDEAは標準でGradleファイルの読み込みができるので、バッチファイルを作る必要はそれほどない。)<br>
 
Install.batを実行する。暫く待つと ディレクトリ内に必要なファイルが生成される。
 
*「BUILD SUCCESSFUL」が表示されていれば成功。
 
*失敗していたら「gradlew --refresh-dependencies」を実行させて依存ファイルの再作成を行わせ、再度install.batを実行してみること。
 
  
===build.gradleファイルの編集===
+
===マルチプロジェクトにする場合===
 
複数のMODを同じワークスペースで開発する場合のみ必要な工程です。
 
複数のMODを同じワークスペースで開発する場合のみ必要な工程です。
*ディレクトリ内にあるbuild.gradleファイルを適当なテキストエディタで開く
+
<ol>
**build.gradle内の以下の部分
+
<li>build.gradleファイルを適当なテキストエディタで開き、build.gradle内の以下の部分
<source lang="groovy">
+
<source lang="groovy">apply plugin: ...
apply plugin: 'forge'
 
  
 
version = "1.0"
 
version = "1.0"
62行目: 46行目:
  
 
minecraft {
 
minecraft {
     version = "1.7.2-10.12.0.1024"//DLした時のForgeのバージョン
+
     version = ...
     assetDir = "eclipse/assets"
+
     runDir = ...
  
     mappings = "***"// MDKではMCPのマッピング指定がある
+
     mappings = ...
}
+
}</source>
</source>
 
 
を、次のように変更する。
 
を、次のように変更する。
<source lang="groovy">
+
<source lang="groovy">allprojects {
allprojects {
+
     apply plugin: ...
     apply plugin: 'forge'
 
  
 
     minecraft {
 
     minecraft {
         version = "1.7.2-10.12.0.1024"
+
         version = ...
runDir = "eclipse/assets"
+
runDir = ...
  
         mappings = "***"// MDKではMCPのマッピング指定がある
+
         mappings = ...
 
     }
 
     }
 
    version = "1.0"//各プロジェクトで指定するだろうし、無くてもよい。
 
  
 
     archivesBaseName = project.projectDir.name
 
     archivesBaseName = project.projectDir.name
 
}
 
}
 
</source>
 
</source>
* 最新版では'''apply pluginの設定値が違うため変更しないように.'''
+
</li>
* mappings(MCPの難読化割り当てパターンのようなもの)の初期設定値はForgeのバージョンによって異なるので,ソースをリポジトリ等に公開する場合は注意すること.マルチプロジェクト化の前後で不用意に変更しないように.
+
<li>build.gradleを同じディレクトリに「settings.gradle」ファイルを作成する。</li>
*ディレクトリ内に新規テキストファイルを作成し、ファイル名を「settings.gradle」に変更。
+
<li>「settings.gradle」を開いて、以下のように記述し保存。
*「settings.gradle」を開いて、以下のように記述し保存。
+
;Eclipseの場合
*(Eclipseの場合)includeFlat 'Project1','Project2'
+
:<source lang="groovy">includeFlat 'Project1','Project2'</source>
**この時、Project1ディレクトリとProject2ディレクトリは作業しているディレクトリと“同じ階層”に置くこと
+
:この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペースと“同じ階層”に置くこと
作業フォルダ<br />Project1<br />Project2
+
:親ディレクトリ
*(IDEAの場合)include 'Project1','Project2'
+
::ワークスペース/
**この時、Project1ディレクトリとProject2ディレクトリは作業しているディレクトリ“内”に置くこと
+
::Project1/
作業フォルダ<br />|-Project1<br />|-Project2
+
::Project2/
*各プロジェクトのディレクトリ内に新規テキストファイルを作成し、「build.gradle」という名称に変更。
+
;IDEAの場合
*「build.gradle」を開いて、以下のように記述し保存。
+
:<source lang="groovy">include 'Project1','Project2'</source>
 +
:この時、Project1ディレクトリとProject2ディレクトリは以下に示すようにワークスペース“内”に置くこと
 +
:親ディレクトリ
 +
::ワークスペース/
 +
:::Project1/
 +
:::Project2/
 +
</li>
 +
<li>各プロジェクトのディレクトリ内に「build.gradle」ファイルを作成する。</li>
 +
<li>「build.gradle」を開いて、以下のように記述し保存。
 
<source lang="groovy">
 
<source lang="groovy">
 
sourceSets.main {
 
sourceSets.main {
102行目: 90行目:
 
     resources.srcDirs project.projectDir.name
 
     resources.srcDirs project.projectDir.name
 
}
 
}
 +
version = "1.0"//バージョン</source>
 +
;ソースに日本語が記述されている場合
 +
:さらに以下を追加。<source lang="groovy">tasks.withType(Jar) {compileJava.options.encoding = 'UTF-8'}</source>
 +
;APIに日本語が記述されている場合
 +
:さらに以下を追加。<source lang="groovy">tasks.withType(Jar) {compileApiJava.options.encoding = 'UTF-8'}</source>
 +
;依存関係がある場合、外部jarをビルド時に読ませたい場合
 +
:#さらに以下を追加。<source lang="groovy">dependencies { compile fileTree(dir: 'lib', include: '*.jar') }</source>
 +
:#そのプロジェクトのディレクトリ内に「lib」ディレクトリを作成。
 +
;マルチプロジェクト内の他のプロジェクトに依存している場合
 +
:さらに以下を追加。<source lang="groovy">dependencies { compile project(':ProjectName')}</source>
 +
</li>
 +
</ol>
  
version = "1.0"//各プロジェクトのバージョン
+
以上のようにすると、以下のようになる。
 +
;Eclipseの場合
 +
:ワークスペース/
 +
::src/
 +
::build.gradle
 +
::settings.gradle
 +
:Project1/
 +
::src/
 +
::build.gradle
 +
:Project2/
 +
::src/
 +
::build.gradle
  
</source>
+
;IDEAの場合
*project.projectDir.nameは'''各プロジェクトのディレクトリに置き換わる'''ので'''変更する必要はない'''
+
:ワークスペース/
*以下の記述でも同じように動くが、'''推奨しない。'''
+
::src/
<source lang="groovy">
+
::build.gradle
sourceSets.main {
+
::settings.gradle
    java.srcDirs 'src/main/java'
+
::Project1/
    resources.srcDirs 'src/main/resources'
+
:::src/
}
+
:::build.gradle
 
+
::Project2/
version = "1.0"//各プロジェクトのバージョン
+
:::src/
 
+
:::build.gradle
</source>
 
 
 
*ソースファイル内に日本語が記述されている場合は、「build.gradle」に以下を追加。
 
<source lang="groovy">
 
tasks.withType(Jar) {compileJava.options.encoding = 'UTF-8'}
 
</source>
 
*日本語の記述されているAPIを利用する場合は、「build.gradle」に以下を追加。
 
<source lang="groovy">
 
tasks.withType(Jar) {compileApiJava.options.encoding = 'UTF-8'}
 
</source>
 
*依存関係がある場合、外部jarをビルド時に読ませたい場合は、「build.gradle」に以下を追加。<br />そして、そのプロジェクトのディレクトリ内に「lib」ディレクトリを作成。
 
<source lang="groovy">
 
dependencies { compile fileTree(dir: 'lib', include: '*.jar') }
 
</source>
 
*マルチプロジェクト内の他のプロジェクトに依存している場合は、「build.gradle」に以下を追加。
 
<source lang="groovy">
 
dependencies { compile project(':ProjectName')}
 
</source>
 
 
 
*以上のファイルを配置すると、以下のようになる。
 
Eclipse<br />
 
作業ディレクトリ<br />
 
|-.gradleディレクトリ<br />
 
|-srcディレクトリ<br />
 
|-build.gradle<br />
 
|-settings.gradle<br />
 
Project1<br />
 
|-.gradleディレクトリ<br />
 
|-srcディレクトリ<br />
 
|-build.gradle<br />
 
Project2<br />
 
|-.gradleディレクトリ<br />
 
|-srcディレクトリ<br />
 
|-build.gradle<br />
 
 
 
IDEA<br />
 
作業ディレクトリ<br />
 
|-.gradleディレクトリ<br />
 
|-srcディレクトリ<br />
 
|-build.gradle<br />
 
|-settings.gradle<br />
 
|-Project1<br />
 
 |-.gradleディレクトリ<br />
 
 |-srcディレクトリ<br />
 
 |-build.gradle<br />
 
|-Project2<br />
 
 |-.gradleディレクトリ<br />
 
 |-srcディレクトリ<br />
 
 |-build.gradle
 
  
 
==MOD==
 
==MOD==
 
===開発===
 
===開発===
この環境下でMODをビルドしたい場合、単独プロジェクトの場合は、開発環境の作業ディレクトリに<br />
+
ソースはプロジェクト/ワークスペースのsrc/main/java下に配置し、リソース類はプロジェクト/ワークスペースのsrc/main/resources/assets下に配置する。<br />
src/main/java<br />
+
リソースの配置の仕方は、[[1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。
という階層でディレクトリを作成し、javaディレクトリ内に、自身のMODのパッケージに有ったディレクトリ構成でsourceファイルを配置すればよい。<br />
 
画像や音声ファイル等のリソースファイルは<br />
 
src/main/resources/assets<br />
 
という階層でディレクトリを作成し、assetsディレクトリ内に指定されたディレクトリ構成でファイルを配置すればよい。
 
リソースファイルの配置の仕方は、[[1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所]]を参照のこと。
 
*マルチプロジェクトの場合
 
各プロジェクトディレクトリ内に、上のディレクトリ構成でファイルを配置する。
 
 
===デバッグ===
 
===デバッグ===
 
作成したMODのデバッグは、ForgeGradleを使うことで、1.6.4以前のMCP環境と同様に行うことが出来る。
 
作成したMODのデバッグは、ForgeGradleを使うことで、1.6.4以前のMCP環境と同様に行うことが出来る。
*単独プロジェクトの場合
+
;IDE上でデバッグする場合
作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunClient.bat」に変更する。
+
:;:Eclipse で開発する場合
<source lang="text">
+
:::#プロジェクトファイルを開き、起動クラスの設定を行う
call gradlew runClient
+
:::##起動クラスの設定はクライアントの場合GradleStart、サーバはGradleStartServer。プログラムの引数は空で良いが、「-username=<任意の文字列>」を指定しておくと、マルチプレイのテスト時にOPを付与しなおす必要がなくなる。
pause
+
:::##VM への引数として「-Xincgc -Xmx1024M -Xms1024M」を指定。(非力なマシンでデバッグする場合は適宜変更のこと)
</source>
+
:::##作業ディレクトリに「${workspace_loc:(プロジェクト名)/jars}」を指定。GUI からワークスペースの jars ディレクトリを指定しても良い。
作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunServer.bat」に変更する。
+
:::##ワールド情報は jars/save の中に生成されるので、既存ワールドは適宜このディレクトリにコピーすること。一度ゲームを起動すれば jars ディレクトリ内に必要ディレクトリが作成される。
<source lang="text">
+
:::#ビルドパスの修正
call gradlew runServer
+
:::##ForgeSrcのパスが不足している場合、C:\Users\ユーザー名\.gradle\caches\minecraft\net\minecraftforge\forge\(Forgeバージョン) に forgeSrc-(Forgeバージョン).jar が存在する。添付ソースは末尾が「-source.jar」のファイルなので一緒に設定すると良い
pause
+
:;:IDEAで開発する場合
</source>
+
::::GradleタブからそれぞれのプロジェクトのrunClient,runServerを実行する。
*'''build.gradle内のrunDirに指定したディレクトリ(MDKのデフォルトでは"run")がプロジェクトディレクトリ以下に存在しないと,runClientおよびrunServerがエラーで実行できないので注意.'''
+
;その他の場合
*マルチプロジェクトの場合
+
:;:単独プロジェクトの場合
作業ディレクトリ(プロジェクトディレクトリではない)内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunClient.bat」に変更する。
+
::::ワークスペースで<source lang="winbatch">gradlew runClient</source>をシェルから実行することでクライアントが立ち上がる。<br><source lang="winbatch">gradlew runServer</source>と実行すればサーバーが立ち上がる。
<source lang="text">
+
:;:マルチプロジェクトの場合
call gradlew :<PROJECT NAME>:runClient
+
::::ワークスペースで<source lang="winbatch">gradlew :<PROJECT NAME>:runClient</source>と実行するとプロジェクトのModとそれの依存するModのみが入った環境のクライアントが立ち上がる。<br><source lang="winbatch">gradlew :<PROJECT NAME>:runServer</source>とすれば、サーバーが立ち上がる。
pause
+
'''build.gradle内のrunDirに指定したディレクトリ(MDKのデフォルトでは"run")がプロジェクトディレクトリ以下に存在しないと,runClientおよびrunServerがエラーで実行できないので注意.'''
</source>
 
作業ディレクトリ(プロジェクトディレクトリではない)内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「RunServer.bat」に変更する。
 
<source lang="text">
 
call gradlew :<PROJECT NAME>:runServer
 
pause
 
</source>
 
*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」と実行すれば自動的に構成できる。
 
  
 
===リリース===
 
===リリース===
リリースビルド用バッチファイルの作成<br />
+
;シングルプロジェクトの場合
(シングルプロジェクト用)
+
:;:IDEAの場合
*作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「Release.bat」に変更する。
+
::::Gradleタブからbuildを選択し実行。
<source lang="text">
+
:;:その他の場合
call gradlew build --info > buildlog.txt 2>&1
+
::::ワークスペースで<source lang="winbatch">gradlew build</source>とシェルから実行。成果物は\build\libs下に出力される
</source>
+
:::::「build.gradle」を弄っていなければ、「modid-1.0.jar」として出力されている。"archivesBaseName"-"version".jarという書式
*今後、コンパイルを行う時はこの「Release.bat」を実行すれば、MCPでの「recompile.bat」「reobfuscate_srg.bat」を同時に行ってくれる
+
;マルチプロジェクトの場合
*コンパイル中のログは、「buildlog.txt」に出力される
+
:;:IDEAの場合
*コンパイルされたclassファイルは、\build\libsディレクトリに圧縮された状態で出力される
+
::::Gradleタブからビルドしたいプロジェクトのbuildを選択し実行。
**「build.gradle」を弄っていなければ、「modid-1.0.jar」として出力されている。"archivesBaseName"-"version".jarという書式
+
:;:その他の場合
 
+
::::ワークスペースで<source lang="winbatch">gradlew :<ProjectName>:build</source>とシェルから実行。成果物は各プロジェクトの\build\libs下に出力される
(マルチプロジェクト用)
+
:::::「build.gradle」を弄っていなければ、「<ProjectName>-1.0.jar」として出力されている。"<ProjectName>"-"version".jarという書式
*作業ディレクトリ内に新規テキストファイルを作成し、中に以下のコードを書いて保存。ファイル名を「Release-<ProjectName>.bat」に変更する。
 
<source lang="text">
 
call gradlew :<ProjectName>:build --info > build-<ProjectName>-log.txt 2>&1
 
</source>
 
*今後、<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の新しいビルドがアップデートされた時に、以下のようにして、開発環境のForgeをアップデートすることが出来る。
 
Forgeの新しいビルドがアップデートされた時に、以下のようにして、開発環境のForgeをアップデートすることが出来る。
*「build.gradle」ファイルを開く。
+
#「build.gradle」ファイルを開く。
*中程のminecraftブロック内の“version”を最新のビルドナンバーに書き換え、保存する。
+
#中程のminecraftブロック内の“version”を最新のビルドナンバーに書き換え、保存する。
*「install.bat」を実行。
+
#「gradlew setupDecompWorkspace」を実行。
<del>(注意)マルチプロジェクトをしている場合は、setupDevWorkspaceとsetupDecompWorkspaceを全てのプロジェクトで自動で行うが、setupDecompWorkspaceは大元のプロジェクトで行えば十分なので、「install.bat」の中身の「setupDecompWorkspace」を「:setupDecompWorkspace」に置き換えたほうが、作業が捗り、decomp時のJava heapエラーに悩まされることもなくなる。</del>
 
(1.7.10以降なら、そのままでも重複タスクはスキップされるので、Java heap エラーは起きにくくなった。)
 
  
 
==動画==
 
==動画==
 
<youtube width="640" height="360">8VEdtQLuLO0</youtube>
 
<youtube width="640" height="360">8VEdtQLuLO0</youtube>
 +
<youtube width="640" height="360">pLWQk6ed56Q</youtube>
 +
<youtube width="640" height="360">yanCpy8p2ZE</youtube>
 +
<youtube width="640" height="360">PfmlNiHonV0</youtube>
  
 
==リンク==
 
==リンク==
256行目: 188行目:
  
 
===参考サイト===
 
===参考サイト===
[http://forum.minecraftuser.jp/viewtopic.php?f=21&t=9494&start=320 非公式フォーラム]<br />
+
*[http://mcforge.readthedocs.io/en/latest/gettingstarted/ Getting Started]
[http://reginn666.hatenablog.com/entry/2013/12/25/031356 IDEA+Gradleでわいわい]<br />
+
{{Warning}}以下古い情報を含みます。
[http://qiita.com/reginn666/items/d26717cf06ca17eb072c IntelliJ IDEAでModding]<br />
+
*[http://forum.minecraftuser.jp/viewtopic.php?f=21&t=9494&start=320 非公式フォーラム]
[http://qiita.com/reginn666/items/b9f4a0a9f647d7034210 ForgeGradle+IDEAでマルチプロジェクト]
+
*[http://reginn666.hatenablog.com/entry/2013/12/25/031356 IDEA+Gradleでわいわい]
 +
*[http://qiita.com/reginn666/items/d26717cf06ca17eb072c IntelliJ IDEAでModding]
 +
*[http://qiita.com/reginn666/items/b9f4a0a9f647d7034210 ForgeGradle+IDEAでマルチプロジェクト]
  
 
<comments />
 
<comments />
 +
----
 +
* eclipseの初回起動時のワークスペースの設定はどのようにすればいいのですか。 --[[特別:投稿記録/153.174.129.158|153.174.129.158]] 2018年2月12日 (月) 16:50 (JST)
 +
----
 +
* &quot;MOD&quot;の&quot;開発&quot;の欄についてですが、「ソースはプロジェクト/ワークスペースのsrc/main/java下に配置し」のところを分かりやすく加筆できる方お願いします --[[特別:投稿記録/153.174.129.158|153.174.129.158]] 2018年2月12日 (月) 16:44 (JST)
 +
----
 +
* &quot;MOD&quot;の&quot;開発&quot;の欄についてですが、「ソースはプロジェクト/ワークスペースのsrc/main/java下に配置し」のところを --[[特別:投稿記録/153.174.129.158|153.174.129.158]] 2018年2月12日 (月) 16:43 (JST)
 +
----
 +
* PowerShell上では./gradlew setupDecompWorkspaceのように先頭に./をつけないと動かないんですね... --[[特別:投稿記録/126.100.216.85|126.100.216.85]] 2017年10月2日 (月) 11:00 (JST)
 +
----
 +
* gradlew setupDecompWorkspaceを実行した時、:deobfuscateJar FAILEDで止まって、そのまま終わってしまいます。 どうするべきでしょうか? --[[特別:投稿記録/175.28.219.127|175.28.219.127]] 2017年9月17日 (日) 10:37 (JST)
 +
----
 +
* 当たり前ですが、install.bat実行時に対応するバージョンのminecraftの.jarが無いと失敗します。実行前に一度でも対応バージョンのminecraftを起動しておく旨を記載した方がよろしいかと --[[特別:投稿記録/122.251.218.248|122.251.218.248]] 2016年12月14日 (水) 18:09 (JST)
 
----
 
----
 
* マルチプロジェクトのほうの解説が少しわかりづらいのです --[[特別:投稿記録/118.8.218.24|118.8.218.24]] 2016年7月23日 (土) 19:06 (JST)
 
* マルチプロジェクトのほうの解説が少しわかりづらいのです --[[特別:投稿記録/118.8.218.24|118.8.218.24]] 2016年7月23日 (土) 19:06 (JST)
 
----
 
----
 
* install.batが失敗したので調べたらgradle.propertiesファイルを作成して内容をorg.gradle.jvmargs=-Xmx2048Mと書いてgradlewと同じディレクトリに入れておいたら成功しました。 --[[特別:投稿記録/115.36.144.125|115.36.144.125]] 2016年2月25日 (木) 07:04 (JST)
 
* install.batが失敗したので調べたらgradle.propertiesファイルを作成して内容をorg.gradle.jvmargs=-Xmx2048Mと書いてgradlewと同じディレクトリに入れておいたら成功しました。 --[[特別:投稿記録/115.36.144.125|115.36.144.125]] 2016年2月25日 (木) 07:04 (JST)

2020年6月10日 (水) 06:16時点における最新版

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

必要なもの[編集]

  • MinecraftForgeのソースファイル
    • http://files.minecraftforge.net/ から Mdk をダウンロード
    • Forge-1.8-11.14.4 以前は Src
    • Show All Downloadsからダウンロードしたいデータのリンクの右のiを押すと、adfoc.us(広告)を飛ばせます。

Forge[編集]

前準備[編集]

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

手順[編集]

IDEAの場合
  1. Import Projectから解凍したフォルダの中にあるbuild.gradleを開く
  2. 読み込みを待った後、Gradleタブ(デフォルトで右側に存在)からsetupDecompWorkspaceを選択し実行する。
その他の場合
ForgeGradle 2.3までの場合
  1. gradlewファイルが存在するディレクトリで
    gradlew setupDecompWorkspace
    をシェル上で実行する。
  2. しばらく待ち、「BUILD SUCCESSFUL」と表示されれば成功。
    1. 「BUILD FAILURE」と表示された場合は
      gradlew --refresh-dependencies
      を実行の後やり直す。
  3. Eclipseの場合は、
    gradlew eclipse
    も併せて実行し、生成されるファイルからプロジェクトを開く。
ForgeGradle 3以降の場合
  1. gradlewファイルが存在するディレクトリで
    gradlew genEclipseRuns
    をシェル上で実行する。
  2. 以降は2.3の2と同じ流れ


マルチプロジェクトにする場合[編集]

複数の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の場合
ワークスペース/
src/
build.gradle
settings.gradle
Project1/
src/
build.gradle
Project2/
src/
build.gradle
IDEAの場合
ワークスペース/
src/
build.gradle
settings.gradle
Project1/
src/
build.gradle
Project2/
src/
build.gradle

MOD[編集]

開発[編集]

ソースはプロジェクト/ワークスペースのsrc/main/java下に配置し、リソース類はプロジェクト/ワークスペースのsrc/main/resources/assets下に配置する。
リソースの配置の仕方は、1.7のリソース(テクスチャ・サウンド・言語ファイル等)の置き場所を参照のこと。

デバッグ[編集]

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

IDE上でデバッグする場合
Eclipse で開発する場合
  1. プロジェクトファイルを開き、起動クラスの設定を行う
    1. 起動クラスの設定はクライアントの場合GradleStart、サーバはGradleStartServer。プログラムの引数は空で良いが、「-username=<任意の文字列>」を指定しておくと、マルチプレイのテスト時にOPを付与しなおす必要がなくなる。
    2. VM への引数として「-Xincgc -Xmx1024M -Xms1024M」を指定。(非力なマシンでデバッグする場合は適宜変更のこと)
    3. 作業ディレクトリに「${workspace_loc:(プロジェクト名)/jars}」を指定。GUI からワークスペースの jars ディレクトリを指定しても良い。
    4. ワールド情報は jars/save の中に生成されるので、既存ワールドは適宜このディレクトリにコピーすること。一度ゲームを起動すれば jars ディレクトリ内に必要ディレクトリが作成される。
  2. ビルドパスの修正
    1. ForgeSrcのパスが不足している場合、C:\Users\ユーザー名\.gradle\caches\minecraft\net\minecraftforge\forge\(Forgeバージョン) に forgeSrc-(Forgeバージョン).jar が存在する。添付ソースは末尾が「-source.jar」のファイルなので一緒に設定すると良い
IDEAで開発する場合
GradleタブからそれぞれのプロジェクトのrunClient,runServerを実行する。
その他の場合
単独プロジェクトの場合
ワークスペースで
gradlew runClient
をシェルから実行することでクライアントが立ち上がる。
gradlew runServer
と実行すればサーバーが立ち上がる。
マルチプロジェクトの場合
ワークスペースで
gradlew :<PROJECT NAME>:runClient
と実行するとプロジェクトのModとそれの依存するModのみが入った環境のクライアントが立ち上がる。
gradlew :<PROJECT NAME>:runServer
とすれば、サーバーが立ち上がる。

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

リリース[編集]

シングルプロジェクトの場合
IDEAの場合
Gradleタブからbuildを選択し実行。
その他の場合
ワークスペースで
gradlew build
とシェルから実行。成果物は\build\libs下に出力される
「build.gradle」を弄っていなければ、「modid-1.0.jar」として出力されている。"archivesBaseName"-"version".jarという書式
マルチプロジェクトの場合
IDEAの場合
Gradleタブからビルドしたいプロジェクトのbuildを選択し実行。
その他の場合
ワークスペースで
gradlew :<ProjectName>:build
とシェルから実行。成果物は各プロジェクトの\build\libs下に出力される
「build.gradle」を弄っていなければ、「<ProjectName>-1.0.jar」として出力されている。"<ProjectName>"-"version".jarという書式

Forgeのアップデート[編集]

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

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

動画[編集]

リンク[編集]

以前のバージョンでの手順[編集]

参考サイト[編集]

Attention.pngWarning:以下古い情報を含みます。


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


  • eclipseの初回起動時のワークスペースの設定はどのようにすればいいのですか。 --153.174.129.158 2018年2月12日 (月) 16:50 (JST)

  • "MOD"の"開発"の欄についてですが、「ソースはプロジェクト/ワークスペースのsrc/main/java下に配置し」のところを分かりやすく加筆できる方お願いします --153.174.129.158 2018年2月12日 (月) 16:44 (JST)

  • "MOD"の"開発"の欄についてですが、「ソースはプロジェクト/ワークスペースのsrc/main/java下に配置し」のところを --153.174.129.158 2018年2月12日 (月) 16:43 (JST)

  • PowerShell上では./gradlew setupDecompWorkspaceのように先頭に./をつけないと動かないんですね... --126.100.216.85 2017年10月2日 (月) 11:00 (JST)

  • gradlew setupDecompWorkspaceを実行した時、:deobfuscateJar FAILEDで止まって、そのまま終わってしまいます。 どうするべきでしょうか? --175.28.219.127 2017年9月17日 (日) 10:37 (JST)

  • 当たり前ですが、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)