2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Minecraft 1.19以降のMod(Forge)でMixinの設定をする

Posted at

この記事はMinecraft 1.18以前でModを開発したことがあるが、1.19以降のMixinの設定でbuild.gradleをみて、戸惑った人向けです
Modを作ったことがない人向けではありません

前提知識

  • Mixinを設定してあげることで、新しい要素を追加するだけでなく、元々のMinecraftのコードを改造したような機能も実装できる
  • Minecraft ForgeではJava向けビルドツールであるGradleを使って、依存関係やタスクを管理している

問題

Mixinの公式ドキュメントをみると、設定の方法が3ステップで書かれており、1.18以前では、手元のbuild.gradleをコピペしながら変更するだけで設定できる
しかし1.19以降で同じように進めていこうとすると、第1ステップで手が止まる(第2, 3ステップは今まで通りでいける)
公式ドキュメントには、

build.gradle
buildscript {
    repositories {
       ...
    }
    dependencies {
        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
        // MixinGradle:
        classpath 'org.spongepowered:mixingradle:0.7.+'
    }
}
...
apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'
// MixinGradle:
apply plugin: 'org.spongepowered.mixin'
...

のようにbuild.gradlebuildscriptapply pluginに追加しろと書かれているが、
Forgeからダウンロードしてきた、MDKのbuild.gradleをみると、それらしいところはなく、

build.gradle
plugins {
    id 'eclipse'
    id 'maven-publish'
    id 'net.minecraftforge.gradle' version '5.1.+'
}
...

というbuildscriptapply pluginの間をとったような数行が書かれているだけである
似ているからといって、pluginsにそれっぽくid 'org.spongepowered.mixin'id 'org.spongepowered:mixingradle:0.7.+'id 'org.spongepowered:mixingradle' version '0.7.+'と書いたところでエラーが出るだけで何も動かない

原因

調べたところ、プラグインの書き方は2通りあるらしく、1.18以前はbuildscript+apply pluginという古い書き方だが、1.19以降はpluginsという新しい書き方らしい
参考:エキサイトTechBlog -build.gradleのbuildscript、plugins、dependenciesの違いについて-

解決方法

もちろんpluginsのところを丸々buildscript+apply pluginに置き換えれば動くが、せっかく新しい書き方が使われているので、そのやり方で書くために調べたところ以下のサイトが参考になった
参考:Stack Overflow -How can the gradle plugin repository be changed?-
参考サイトによると、build.gradleだけではなくsettings.gradleも変更する必要があるらしい

build.gradle
plugins {
    id 'eclipse'
    id 'maven-publish'
    id 'net.minecraftforge.gradle' version '5.1.+'
    id 'org.spongepowered.mixin' version '0.7.+'
}
...
settings.gradle
pluginManagement {
    repositories {
        gradlePluginPortal()
        maven { url = 'https://maven.minecraftforge.net/' }
        maven { url = 'https://spongepowered.org/maven/'}
    }
    resolutionStrategy {
        eachPlugin {
            if (requested.id.id == 'org.spongepowered.mixin') {
                useModule('org.spongepowered:mixingradle:0.7.+')
            }
        }
    }
}

なぜsettings.gradleの変更が必要かというと、org.spongepowered.mixinは外部プラグインなので、プラグインを取得してくる場所を指定してあげる必要があるからである
とにかくこれで正しくなったので、Mixinの公式ドキュメントの残りのステップの設定をしたらMixinは使えるようになるはずである

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?