Help us understand the problem. What is going on with this article?

Minecraftの他Modのアドオンを作る方法 【IntelliJ IDEA向け】

はじめに

この度開発環境をEclipseからIntelliJ IDEAに移行しました。
なにこれめっちゃ使いやすいやん!
ってのが正直な感想です。いいですねこれ!
しかし環境を引き継ぐ上でいろいろと問題が起こりました。
今回は他Modのソースを経由するアドオンを作る過程で
ごちゃごちゃしたので、方法などをまとめておきます。

この記事はMinecraftのModdingをある程度自力で行える方向けの記事になっています。
そのため、Moddingの環境構築云々はこの記事では解説しないため、
その他の情報を参考に自力で環境構築をお願いします。

09/25追記
この環境は現時点での現行最新版である1.14.xではなく,
1.7.10で開発しているので、かなり内容が異なるかと思います。
ご指摘がありましたが、この環境では同梱されているGradleを使用していますのでimplementationは使えませんでした。
因みにバージョンはプロパティを見たところ2.0らしいです。めちゃくちゃ古いですね!
あと仮に非推奨だったとしてもとりあえず動くので自分はいいと思ってます。

開発環境

今回は以下の環境でやっていきます。

  • Windows 10
  • JDK 8u161
  • Minecraft 1.7.10
  • MinecraftForge 10.13.4.1614
  • Eclipse 4.6 Neon から IntelliJ IDEA 2019.1.3 へ

実際にやっていきましょう

build.gradleを開く

説明文を消して見やすくしましたが、最初の時点では大体こんな感じになっていると思います。
ファイル名

この中に、 dependencies という項目があるはずです。
この項目では、開発及びビルド時に必要なライブラリを指定できます。
下記のように追記してください。

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

これで、 build.gradle と同じディレクトリの libs というフォルダ内にある、 .jar の拡張子のファイルを
ライブラリとしてコンパイル時に使用できるようになります。libs のフォルダ名はなんでも大丈夫です。
このように同期化が完了すれば成功です。
e4d0b5e9721d0efa6f1c97646c2f6741.png

BuildCraftのアドオンを作ってみよう!

有名な工業ModであるBuildCraftのアドオンを作っていきます。
今回は、レシピをいじるなどの簡単なものですが、やり方次第では
某木エンジンみたいなこともできるので、皆さん頑張ってください。

フォルダにBuildCraftのdev版を入れる

開発用バージョンが公式サイトなどで配布されているのでダウンロードしてきました。
これを先程指定した libs の中に入れます。
ffde3d839de117e272843f1cd560effd.png

少し経てば、IntelliJ IDEAの方で自動で同期化してくれるはずです。
いけましたね。
8f77c6b5af8b0dd4dfa19e961ed28e7b.png

この状態で起動すれば、MinecraftにModとしてBuildCraftが認識してくれます。
以下のように認識してくれていれば成功です!
ファイル名

実際にレシピを追加する

サンプルとして最初からあるExampleModのソースを流用します。
今回は、以下のような感じになりました。

package com.example.examplemod;

@Mod(modid = ExampleMod.MODID, version = ExampleMod.VERSION, dependencies = "required-after:BuildCraft|Core")
public class ExampleMod
{
    static final String MODID = "CheapestQuarry";
    static final String VERSION = "1.0";

    @EventHandler
    public void PostInit(FMLInitializationEvent event)
    {
        if(Loader.isModLoaded("BuildCraft|Builders"))
        {
            GameRegistry.addShapedRecipe(new ItemStack(BuildCraftBuilders.quarryBlock, 1, 0),
                    "XXX", "XPX", "XXX", 'X', Blocks.cobblestone, 'P', Items.wheat_seeds);
        }
    }
}

レシピ追加の構文は基本的なものと同じです。このコードでは、
クラフト結果のアイテムとして、BuildCraftの露天掘り機を指定しています。
ただし、このModがBuildCraft以前に読み込まれるとエラーが出て
Minecraftが起動しなくなるので、必ずModアノテーションの後に
dependencies = "required-after:BuildCraft|Core"
と入力しておきましょう。この場合では、
BuildCraftのコアModが読み込まれた後にこのModを読み込む
といった感じです。とりあえずはこれで完成なので起動してみましょう!

起動してプレイしてみる

読み込まれていますね。何やら説明が嫌な予感...。
cb138082ee8d111f6d90424ee0d36064.png

なんということでしょう。開始数分で作れる程のコストの安いレシピが追加されたではありませんか!
これは世界が沈むまで時間の問題ですね....。

ということでレシピの追加に成功です!
quarryissocheap

終わりに

正直Eclipseで開発していたときと殆ど同じように実装できました。
むしろ当方の環境では手動で追加しないといけなかったので、
いろいろと自動でできるようになって本当に助かっています。
こんな感じでのほほぉ~んともぢんぐをこれからもやっていこうと思いました。

それでは皆様良きもぢんぐライフを!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away