pon52ponponのブログ

メモ帳だもの

PixelmonGenerationsを遊ぼうとしたらforge-1.12.2-14.23.5.2847のインストーラーバグってる?

モッド作成のお勉強が時間がなくてできてないので放置www

そんななかPixelmonGenerationsを遊んでみようかと準備にとりかかるが、対象のforgeのインストーラーがバグってインストールできない(´;ω;`)ウゥゥ

// 1:
java.net.preferIPv4Stack=true
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at net.minecraftforge.installer.Java6Gate.main(Java6Gate.java:48)
Caused by: java.lang.ExceptionInInitializerError
    at net.minecraftforge.installer.ClientInstall.getSponsorMessage(ClientInstall.java:401)
    at net.minecraftforge.installer.InstallerAction.getSponsorMessage(InstallerAction.java:60)
    at net.minecraftforge.installer.InstallerPanel.updateFilePath(InstallerPanel.java:334)
    at net.minecraftforge.installer.InstallerPanel.(InstallerPanel.java:315)
    at net.minecraftforge.installer.SimpleInstaller.launchGui(SimpleInstaller.java:167)
    at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:54)
    ... 5 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at net.minecraftforge.installer.MirrorData.buildMirrorList(MirrorData.java:84)
    at net.minecraftforge.installer.MirrorData.(MirrorData.java:63)
    at net.minecraftforge.installer.MirrorData.(MirrorData.java:17)
    ... 11 more

ということで、無理やりにでもインストールできないか試してみる。

色々情報収集した結果、jarに内包されたinstall_profile.jsonがどうやら原因らしい( ゚Д゚)

まずは7-Zipをインストールして、「forge-1.12.2-14.23.5.2847-installer.jar」を開いてみる。

f:id:pon52ponpon:20210612150134p:plain

確かに原因のinstall_profile.jsonがあった。

インストール時のエラーからMirrorDataでエラーだしてるようなので、install_profile.jsonのmirroListの個所を消してみたwww

f:id:pon52ponpon:20210612152920p:plain

変更して7-Zip側でもその保存を適用してインストーラーを再度起動してみる。

一応起動後ウィンドウは出るようになった(;・∀・)

ただ、Install clientでインストールしてみると、

f:id:pon52ponpon:20210612153327p:plain

なんかエラー出たwww2つ程ライブラリがダウンロードできないみたいww

改めて、install_profile.json7-Zipで開いて中を見てみる。

f:id:pon52ponpon:20210612153718p:plain

確かにダウンロードするように定義が入っているのを確認。

 

・・・・よし、こいついらねっ(。◕ˇдˇ​◕。)/

 

このタイミングではいらないと決めつけて赤枠部分削除wwww

再度保存して再度インストーラーを起動www

なんかインストールはうまくいった気がする(∩´∀`)∩

うまくはいったけど、ライブラリ2つが欠けた状態・・・。

直接落とそうwww

調べたら、

https://repo1.maven.org/maven2/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2/
https://repo1.maven.org/maven2/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2/

ここにたどり着いたのでダウンロードして、

「.minecraft/libraries」に置く。

・libraries/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2/scala-continuations-library_2.11-1.0.2.jar
・libraries/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2/scala-continuations-plugin_2.11.1-1.0.2.jar

こんなパスになるように置く。

※他のmodで遊んだりしている人はもしかしたら既に置いてある可能性もある(;・∀・)

 

これでインストール完了でしょwww

 

あとはいつも通りForgeを起動してみたり、PixelmonのModをmodsに入れてとかして起動してみるだけかと。

 

※あくまで無理やりなやり方なので、自己責任でやるべし(。◕ˇдˇ​◕。)/

3.最終出力してみる

前回、何もしないハローワールドモッドができたので、そのまま最終出力してみようかと(;・∀・)

 

調べたらここら辺は以前のVersionとやり方が変わらない様子。

フローとしては、

①build.gradleの一部を編集。

コマンドプロンプトで「gradlew build」のコマンドを叩く。

これだけで作れるみたい。

 

①build.gradleの一部を編集

f:id:pon52ponpon:20200808140522p:plain

これを開いて、

// 16:
//version = '1.0'
//group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
//archivesBaseName = 'modid'
version = '1.0.0'
group = 'com.pon.ponmod'
archivesBaseName = 'ponmod'

正直よくわからないので3行だけ編集(;・∀・)

たぶんgroupにはパッケージ名入れて、

archivesBaseNameには最終的に出力されるjarファイルの名前を入れる。

こんな感じかな?

 

コマンドプロンプトで「gradlew build」のコマンドを叩く

①のbuild.gradleを右クリックすることでEclipseの機能でコマンドプロンプトを選択できる。

これで開けばそのパスにいる状態でコマンドプロンプトが起動できたので楽。

起動後、gradlew buildとコマンド書いて叩くだけ。

なんかいろいろ動きだすので、「BUILD SUCCESSFUL」が出たら完了。

 

完了後、プロジェクトフォルダの中に「build/libs/ponmod-1.0.0.jar」が出来上がっている。

 

 試しに、出来上がったjarファイルをいつも通りmodで遊ぶ時みたいにmodsフォルダに入れてminecraftのforgeを起動してみる。

Modが入っているか確認できたので最終出力はうまくいってそう。

2.ハローワールドしてみる

前回は環境構築してとりあえず起動までやったので、ある意味ハローワールドはできているかとwww。

 

まずはデフォルトを覗いてみる。

起動後のタイトルからModを押してみると、「Example Mod」が追加されてるのが確認できた。

f:id:pon52ponpon:20200802015850p:plain

とりあえずここの内容変えたいかと。

 

調べたらどうやら「mods.toml」を変更するみたい。

f:id:pon52ponpon:20200802021644p:plain

このファイル覗くと1行1行がパラメータになってるみたいね。

先頭の#はコメントアウトで無効にする感じですね。

ここで変更できそうなのが、

①modId

②version

③displayName

④displayURL

⑤credits

⑥authors

⑦description

これくらい?あとはよくわからんので気が向いたら調べて変更にしようかと。

 

①modId="ponmod"

今後プログラムする時にも使用するモッドのIDになる文字列を記入。

②version="1.0.0"

デフォルトで何かを参照してるみたいだけど、どこ参照してるかわからんかったので、適当な文字列いれとこww

③displayName="Pon Mod"

こっちはMod確認時に表示されるモッド名かと。

④displayURL="https://pon52ponpon.hatenablog.jp/

作成するモッドに関するホームページとかのリンク張っとけばいいのかな?

とりあえずここのリンクでも貼っとけばいいかな?

⑤#credits="Thanks for this example mod goes to Java" #Optional

クレジットは今は無効にしとこ。#Optionalがあるものは任意らしいのでコメントアウト

⑥authors="pon52"

モッド作者名

⑦description='''作成中'''

モッド説明らしい。複数行いける。

前後に「'''」を入れること。一回間違えて消してしまってエラーに・・・( ゚Д゚)

 

そして、「mods.toml」変更後一度起動してみたら見事にエラーになりましたwwww

java側のプログラムでmodIDをexamplemodで登録されてるのが原因らしい。

結局ソースファイルも修正しないといけない・・。

 

とりあえずサンプルと同じようにパッケージ・ソースを作ってみる。

ファイル → 新規 → クラスでウィンドウを開き

パッケージ名の部分にcom.pon.ponmodを記述。

名前の部分にPonModを記述。

こんな感じで完了を押して作成。

 

作成したPonMod.javaにExampleMod.javaの中身を全部コピーして修正していく。

// 1:
package com.pon.ponmod; //package com.example.examplemod;

import java.util.stream.Collectors;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.InterModComms;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent;
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

// The value here should match an entry in the META-INF/mods.toml file
@Mod("ponmod") // @Mod("examplemod")
public class PonMod // public class ExampleMod
{
    // Directly reference a log4j logger.
    private static final Logger LOGGER = LogManager.getLogger();

    public PonMod() { //public ExampleMod() {
        // Register the setup method for modloading
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        // Register the enqueueIMC method for modloading

@Modの部分が「mods.toml」のmodIdに記述したものと同じじゃないとダメらしい。

 

修正後元々あったExampleModパッケージとjavaファイルを削除。(残すと邪魔をしてエラーになる)

 

最終的に以下のファイル、パッケージの構成になる。

f:id:pon52ponpon:20200802133620p:plain

 

ここまでできたら起動してみて、エラーにならなければOK。

再度タイトルからModを押して確認。

f:id:pon52ponpon:20200802133946p:plain

とりあえず変わってくれたのでよしとしよう。

1.環境構築してみる

さっそく環境構築をしてみようかと。

準備するものとして、

Minecraft Java Edition

JDK

IDE(Eclipse)

④Forge

ここら辺を用意。

 

Minecraft Java Edition

これは購入済みなのでOK。

 

JDK

https://www.oracle.com/java/technologies/javase-downloads.html

 これ何のバージョン落とせばいいんだろ?(;・∀・)

過去の記事みたりするとJDK8が推奨みたいなのでそれに合わせておこうかと。

 

久々JDKのダウンロードで困惑・・・。いつの間にライセンス変わったんだ・・。

そしてOracleアカウント作らないとダウンロードできないし・・。

今回はJDK8の最新をダウンロード。

Java SE 8u261でした。

 

IDE(Eclipse)

 https://mergedoc.osdn.jp/

 これも何のバージョンだ・・(。´・ω・)?

よくわからないので最新の2020を使ってしまおう。

問題起きたらまた考えようw

 

・最新2020のWindows10 64ビットのJava用をダウンロード。

pleiades-2020-06-java-win-64bit_20200702.zip

・日本語化の為?にPleiades プラグインもダウンロード。

pleiades-win.zip

 

④Forge

http://files.minecraftforge.net/

イクラバージョン1.16.1向けなので、現状の最新1.16.1 - 32.0.86を使います。

※正直まだ1.16.1のForgeは開発中なんだろうな・・・。触るには早すぎるかも(;・∀・)

・installer

・Mdk

・Universal

ここら辺をダウンロードしとく。

 

用意できたのでインストールしていく。

 

JDK

古いJDKが邪魔しそうなのでJavaを全部アンインストールしてからインストール。

 

 ・Forge ~installer~

forge-1.16.1-32.0.86-installer.jarを起動。

Install client を指定したままOKでインストール完了。

ここはModやったことある人なら大丈夫やろ(;・∀・)

 

注意:Forgeはインストール後一度起動したほうがよさそう。

 

イクラの起動構成にrelease 1.16.1-forge-32.0.86がインストールされているのでこれで一度起動する。

何か初回起動時にダウンロードが走るんだよね・・。

 

 ・Forge ~Mdk~

forge-1.16.1-32.0.86-mdk.zipを解凍する。

※この解凍したものが基本的には開発で触っていくフォルダになりそう。

 

開発するにあたって作業用フォルダを作成しておいたほうがいいので、ここら辺でちゃんとしとこうかと。

 

作業用フォルダとしてPonフォルダ作って、そこに解凍しておく。

Pon

└ forge-1.16.1-32.0.86-mdk

こんな感じにしておけばおかしくなったらPonフォルダを消してやり直せばいいだろwww

 

解凍後、Eclipseのプロジェクトを作成する為?にちょっとした作業。

※一応forge-1.16.1-32.0.86-mdkフォルダ内のREADME.txtに手順が書いてある。

 

1.forge-1.16.1-32.0.86-mdkフォルダをエクスプローラで開く。

2、フォルダのパスの部分?アドレスバー?にcmdと書いてEnterを押す。

※2のやり方でforge-1.16.1-32.0.86-mdkの場所にいる状態でコマンドプロンプトが起動する。

3、コマンドプロンプトでgradlew genEclipseRuns というコマンドを書いてEnter

4、何かいろいろダウンロードしたりするので、BUILD SUCCESSFULがでるまで待つ。

5、BUILD SUCCESSFULが出たら閉じてOK。

 

Eclipse

インストーラーではなく、解凍したらすぐ使えるタイプなので自分が管理しやすい場所に適当にフォルダ作ってそこに解凍しておこう。

解凍後、eclipse.exeをデスクトップにでもショートカット置いとく。

 

プラグイン側も解凍して、setup.exeを起動。

日本語化するアプリケーションの選択でeclipse.exeを指定すれば自動でいろいろしてくれたww

 たぶん日本語化できたらこの解凍したプラグインはいらなそうなので消しとく。

 

 eclipse.exeを起動させる。

workspaceの場所を指定しないとダメなので、とりあえずPonフォルダにworkspaceフォルダ作るようにしておく。

Pon

└ forge-1.16.1-32.0.86-mdk

└ workspace

 

起動完了後、ファイル→インポートを選択。

インポート用ウィンドウが出たら、Gradle→既存のGradleプロジェクトを選んで次へ。

プロジェクト・ルート・ディレクトリーにforge-1.16.1-32.0.86-mdkフォルダを参照。

完了を押せばプロジェクトが出来上がる。

 

インポート完了後、「ランナー」タブにrunClient、runData、runServerの3つがあるので、runClientをダブルクリックで起動。

 

イクラが起動できたら環境構築終了。

 

 

ここまで調べながらやると大変(;・∀・)

とりあえず無事に起動できたから良かったwww

ブログ(メモ帳)始めました

イクラが1.16.1がリリースされたので、なんとなくmod作成をやってみたいかと思います。

※現状Forgeの1.16.1がまだ開発中?

そして情報少な目(´;ω;`)ウゥゥ

 

そもそも作り方何も知らんので0から始めていきます。

秒で飽きたり、詰んだりしたら即撤退もwww

 

どこまで気力がもつのやら・・・。誰か助けてww