LoginSignup
8
10

More than 5 years have passed since last update.

Minecraft Modを作る拡張機能の紹介 - Minecraft Mod Developer Pack

Last updated at Posted at 2015-12-07

前書き

枠が空いていたので、エントリしました!
昨年、minecraftがMicrosoftのものになって、minecraftsweeperができるのかと思っt
Microsoft Azure上に公式のデプロイイメージができたり、
VisualStudioの拡張機能にMod開発パックが作られたりと。

そんなところで、拡張機能でデバ・・・までを紹介します。
環境は、VisualStudio2015Pro Update1です。

紹介といっても、奮闘に近いものがありますので、温かく応援しながら読んでください。

拡張機能のインストール

検索でminecraftと入力
Minecraft Mod Developer Pack
を入れます。

image.png

サイズはそれなりに大きいので時間かかります
image.png

インストール
image.png

プロジェクトの新規作成(プロジェクトテンプレート)

Javaが追加され、その中にMinecraftForge Mod のテンプレートが追加されています。
image.png

何やらメッセージが・・・
image.png

プロジェクトを新規作成したあと、必要なリソースを裏でダウンロードしているようです。
これを待たないと、何もできません。(結構かかる)
image.png

ビルド!!失敗

落ち着いたら、ビルドします。

出力ウィンドウ
C:\Source\MinecraftMod1\MinecraftMod1\packages\com.microsoft.minecraftmod.0.5.4.0\build\com.microsoft.minecraftmod.targets(10,5): error MSB3073: コマンド "gradlew setupDecompWorkspace --refresh-dependencies" はコード 1 で終了しました。
プロジェクト "MinecraftMod1.javaproj" のビルドが終了しました -- 失敗。

========== ビルド: 正常終了または最新の状態 0、失敗 1、スキップ 0 ==========
File not found: .classpath. A provisioning build needs to complete successfully first

なんか失敗してます。
setupDecompWorkspace --refresh-dependencies
でエラーということで、依存するものを解決(ダウンロードか何か)できなかったんじゃないかーと。
こんなときはもう一度ビルド。

・・・うん、だめだ。

原因 はJDKが入っていないこと!

公開ページを確認
Minecraft Mod Developer Pack
あ、OS入れ替えてからJDK入れてなかった!
それは動かないだろうということで、インストール
Minecraft Mod Developer Packは、x64のみサポートということで、x64のものを入れた。

再ビルド

再度、ビルド

出力
------ ビルド開始: プロジェクト:MinecraftMod1, 構成:DebugClient Any CPU ------
    Setting up MinecraftForge workspace... (this may take a while but it's a one-time build)
    Note: This extension will download and build third party packages. Each third party package is licensed to you by its owner. Microsoft is not responsible for, nor does it grant any licenses to, third-party packages. 
    ============================================================
    gradlew setupDecompWorkspace --refresh-dependencies
    ****************************
     Powered By MCP:             
     http://modcoderpack.com/    
     Searge, ProfMobius, Fesh0r, 
     R4wk, ZeuX, IngisKahn, bspkrs
     MCP Data version : snapshot_20141130
    ****************************
    :extractMcpData UP-TO-DATE
    :getVersionJson
    :extractUserDev UP-TO-DATE
    :genSrgs SKIPPED
    :extractNatives UP-TO-DATE
    :getAssetsIndex
    :getAssets
    :makeStart
    [ant:javac] �x��: [options] �u�[�g�X�g���b�v�E�N���X�p�X��-source 1.6�ƈꏏ�ɐݒ肳��Ă��܂���
    [ant:javac] �x��1��
    :downloadMcpTools
    :downloadClient
    :downloadServer
    :mergeJars
    :deobfuscateJar
    Applying SpecialSource...
    Applying Exceptor...

よしよし、いい感じ。
文字とか化けてるけど気にしない。
ところが・・・

出力
    Importing references:
    Importing references:
    C:/Users/[user]/.gradle/caches/minecraft/net/minecraftforge/forge/1.8-11.14.1.1357/snapshot/20141130/forgeSrc-1.8-11.14.1.1357.jar;C:/Users/[user]/.gradle/caches/modules-2/files-2.1/net.minecraft/launchwrapper/1.11/9c0592c6e1e9ea296a70948081bd4cc84dda1289/launchwrapper-1.11.jar;
(中略)
プロジェクト "MinecraftMod1.javaproj" のビルドが終了しました -- 失敗。

ビルドに失敗しました。
========== ビルド: 正常終了または最新の状態 0、失敗 1、スキップ 0 ==========

ビルドに失敗しました。
また、失敗。
ただ、今度は自分のプロジェクト内のものでエラーが出てるようす。
勢いあまって、ここを書き換えてしまったのが問題
image.png

今度はこんなエラー
image.png

正直、英語はよく読めない。
クラス名の指定を、プロジェクトのプロパティのデバッグタブでやってね。
みたいなことを言われている気がする。

ここにExampleModを入れてみるが、当然動かない。
そもそも、Modのエントリポイントであって、デバッグのエントリポイントではないだろう。

手詰まりか?

さて・・・テンプレートを私が壊してしまった可能性があるので、もう一度プロジェクトを作ってみようと思う。
というのも、JDKが入らない状態で、正しくプロジェクトが作られていない可能性を疑ってみた。

これが、最初から作っていたプロジェクトで、リファレンスが一切出ていない。
image.png

改めて作ったプロジェクトでは、ちゃんとリファレンスが出ている。
image.png

ビルド成功!!

というわけで、改めてリビルド!

出力
------ すべてのリビルド開始: プロジェクト:MinecraftMod2, 構成:DebugClient Any CPU ------
    Importing references:
(中略)
    C:\Program Files\Java\jdk1.8.0_66\bin\jar.exe cf obj/DebugClient/MinecraftMod2.jar -C src/main/resources/ mcmod.info
    MinecraftMod2 -> C:\Source\MinecraftMod1\MinecraftMod1\MinecraftMod2\bin\mods\MinecraftMod2.jar
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

今度はこれをデバッグ実行してみようと思う。

image.png

image.png

無事に動いた!!

デバッグ・・・読み込まれず

これは、Javaのコード。Modのエントリポイントのようなものだ。
コードを1行加えて、ブレークポイントを張ってみた。

image.png

デバッグ開始!しかしながら、、、
image.png

となり、クラスが読み込まれていない。

ここに関して
偉大なる先人がいらっしゃった。
Visual Studio の拡張機能 Minecraft Mod Developer Pack について

どうやら、そこではデバッグ開始時にModが読み込まれてないという内容。

改めて、自分のデバッグしているものが出力しているものを見てみた。
image.png

ここに、MinecraftMod2.jarを読み込んだが、modファイルとして認識できないぞーという内容と思われるものが出ている。

VisualStudioじゃない開発方法をのぞいてみる

ここまでくるとVisualStudioがどうしたというよりもMinecraftForgeとかそういう話になってくるので、
MinecraftForge導入手順
を参考にさせていただきました。

というわけで、シェルから起動した。

Shell
call gradlew runClient

image.png

image.png

コマンドラインでやると、認識できているという。

どうやら、出来上がった.jarの中にClassファイルがいないようだ。

VisualStudioのもの
image.png
shellのもの
image.png

試しに、shellから起動したときに出来上がった
modid-1.0.jarを、
bin\mods\modid-1.0.jarに配置してみたところ、読み込むことができた。
image.png

Java Language support?

・・・・そうなると、、、、。
Minecraft Mod Developer Packの依存している
Java Language supportではないか?ということで。
単純なコンソールアプリケーションを作ってみた。
image.png
テンプレートのままでもエラーとなる。
どうやら、Minecraft Mod Developer Packが原因ではなさそう。
というのも、Minecraft Mod Developer Packのビルドで問題だったのは、Classファイルがなかったこと。
この依存しているJava Language supportそもそもうまくいっていないと考えた。

msbuild単体で見た時には、CoreCompile、CoreCreatePackageという二つが省略となっている。
エラーでは、objにJARがなくてbinにコピーできないと。
image.png

さて・・・・どうしたもんだろうか
色々調べてみたものの、プロジェクト設定からビルドの中で、jarファイルを生成させるための手法を見つけられず。
このソースがあるGitHubリポジトリを覗いてみた。

https://github.com/tunnelvisionlabs/JavaForVS/issues/36
というところで、既にこんなissuesもあった。

ここにあるように、CoreCompileをターゲットとした場合、
JARは作られるが、ビルドタスクのごく一部のみとなるので
ちゃんとした流れにならない。

現在、更新は行われていない様子。

ここまでくると、*.targetsファイルを直すとかそういう方法になってきそうな気がしています。
CoreCompileを動かすだけなら・・・

Tvl.Jvm.Common.targets
  <Target Name="_ComputeNonExistentFileProperty" Condition="('$(BuildingInsideVisualStudio)' == 'true') and (('$(BuildingProject)' == 'false') or ('$(UseHostCompilerIfAvailable)' == 'true'))">
  <Target Name="_ComputeNonExistentFileProperty" Condition="true">

おそらく、この後にJARを生成する部分は、CoreCreatePackageと思われる。
今も試行錯誤中...

最後

Minecraft Modを作る拡張機能の紹介・・・デバッグしたかった話でしたOTL
要するに間に合わなかった
動かし方は、今後も調べてみようと思っています。
また、何かご存知の方教えてください。
わかり次第、この記事に追記します。

最後まで読んでいただきましてありがとうございます。

2015-12-09 追記

手っ取り早い方法を発見。
既定の言語を英語にしてしまう。
これだと、先日したようなパッチは不要です。

image.png
image.png

デバッグもできたよー!
image.png
image.png

なんでかは、javac.exeのコマンドライン出力の前提に影響していると思われる。
ただ、納得いかないので日本語でもできるようにしたいなぁと思う。
ハックっぽくなるけど、やっぱり、継続中…

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10