takecx / RemoteControllerMod

Minecraft Remote Controller Mod
8 stars 5 forks source link

Minecraft-Forge 1.17.1への対応 #25

Open Naohiro2g opened 3 years ago

Naohiro2g commented 3 years ago

Forge 1.17.1がリリースされたので、対応したい。

ビルドを試みると、エラーメッセージ「Spec2など知らないので、MCP configをロードできない」でストップ。

まず、メジャーバージョンアップの際は、 build.gradleに記述されている、mappings channelとversionを更新しないといけない模様。 現在は、mappings channel: 'snapshot', version: '20210309-1.16.5'

参考ページ https://minecraft.fandom.com/wiki/Tutorials/Creating_Forge_mods#3.C2.BD._A_note_about_mappings

さらに、spec2について、 C:\Users\USERNAME.gradle\caches\forge_gradle\maven_downloader\de\oceanlabs\mcp\mcp_config\1.17.1-20210706.113038\mcp_config-1.17.1-20210706.113038.zip を開いて、config.jsonを見ると、

    "spec": 2,
    "version": "1.17.1",
    "official": true,
    "java_target": 16,

となっており、jsonのフォーマットが変わっている、Java SE16を期待しているなどの変化が読み取れる。

そもそも、使っているgradleのバージョンが4.10.3なので、これを上げないとダメかな?? java16が必要なら、gradleも7が必要。

takecx commented 3 years ago

@Naohiro2g 私の方でも以下の手順でrunClientタスクの実行までやってみました!

  1. MC 1.17.1のMdkをダウンロード
  2. ダウンロードしたzipファイルを解凍
  3. gradlew genIntellijRunsを実行
  4. IntelliJ ideaで上記フォルダを開く
  5. Gradleプロジェクトのインポートを実行(ポップアップに出てきた)
  6. runClientタスクを実行

結果はビルド失敗で以下のようなエラーメッセージでした。

AgentRenderer.java:3: エラー: シンボルを見つけられません
import net.minecraft.client.renderer.entity.EntityRendererManager;
                                           ^
  シンボル:   クラス EntityRendererManager
  場所: パッケージ net.minecraft.client.renderer.entity
AgentRenderer.java:5: エラー: パッケージnet.minecraft.entityは存在しません
import net.minecraft.entity.Entity;
                           ^
AgentRenderer.java:6: エラー: シンボルを見つけられません
import net.minecraft.util.ResourceLocation;
                         ^
  シンボル:   クラス ResourceLocation
  場所: パッケージ net.minecraft.util

Spec2など知らないので、MCP configをロードできない

上記のエラーとは違うような気はしますが、デバッグを開始することはできませんでした。 (どうやらいろんなクラスがなくなったりしているようなので対応する必要がありそうです)

Naohiro2g commented 3 years ago

@takecx Forge1.17自体が、まだバグっぽいみたいなので、こちらの対応もそれほど急がなくてもいい感じ?もあります。OptifineもForge経由では未対応です。どちらの作業が足りていないのか不明。

おそらく、1.17でMinecraft-Forgeの開発環境がある程度変化している予感。この辺のノウハウが海外でもいいので出回ると助かりそう。

私の環境はVS Code/Windowsで、実はrunClient(マイクラ起動できる?)はやったことなく、gradle buildだけです。ちなみにgradlew buildでなくても行けてる。。違いがわかっていません。

ラズパイにJava版マイクラを動かす方法で1.17 対応を調べてみると、やはり、Java8はサポートが無くなり Java16が必要になったとのこと。現在は、1.16.5まで手元のラズパイで動いています。

MCP config云々は、開発環境のバージョンが関係しているような気がします。spec2は、config.jsonのフォーマットバージョンで、takecxさんの環境でエラーが出ないのはforge MDK-java-gradleのバージョンが上がっているからではないでしょうか?

takecx commented 3 years ago

@Naohiro2g エラーが出ていたコードを少し触ってみましたが、やはり情報が無いと厳しいですね。。。 コンストラクタの引数が変わっていたり、継承していたクラスがパラメータを取るようになっていたりでダメでした 🤔

ForgeのDocumentも見てみましたが、まだ1.16の状態から変更無いみたいです(1.17用のブランチは作られているようですが1.16からの差分は無しでした)

情報が出てくるのを待ってから対応したほうが良さそうですね(少なくともDocumentページは更新してもらわないと何もわからないです)

Naohiro2g commented 3 years ago

日本語で良い記事/開発者を発見しました。MCのjava16へのupdateの件、次はjava17だろうとのこと。 https://minecraft.mixjuice.info/2021/06/01/minecraft1-17-java-16/ https://twitter.com/syokkendesuyo

ちなみに、ラズパイ4Bの最新OSではjava11がインストールされており、今まではjava8を手動でインストールして対応していました。