mcmod.infoが存在するのに読み込まれない

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.286424)

mcmod.infoが存在するのに読み込まれない

投稿記事by mineshop » 2016年10月25日(火) 18:33

<gradle.batのあるディレクトリ>\src\main\resourcesにmcmod.infoがあるのにもかかわらず読み込まれない(読み込まれていないっぽい)んですがどうすれば読み込まれますか?
mcmod.info
コード: 全て選択
[{
  "modid": "advlig",
  "name": "AdvancedVillages",
  "description": "Construction the advanced village.",
  "version": "1.7.10-1.0",
  "mcversion": "${mcversion}",
  "url": "",
  "authorList": ["mineshop"],
  "logoFile": "",
  "requiredMods": ["Forge"],
}]

AdVlig(コア)
コード: 全て選択
package com.advilg.core;

import net.minecraft.block.Block;

import com.advilg.money.ItemMoney;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;

@Mod(modid = AdVlig.MODID, version = AdVlig.VERSION, name = "AdvancedVillages")
public class AdVlig
{
    public static final String MODID = "advlig";
    public static final String VERSION = "1.0";

    @EventHandler
    public void preInit(FMLInitializationEvent event){
        ItemMoney.loadItemMoney();
    }

    @EventHandler
    public void init (FMLInitializationEvent event) {
    }
}
mineshop
ID:86c2d2ee
石掘り
 
記事: 87
登録日時: 2015年8月07日(金) 14:22

  • (PostNo.287551)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by Ch1a » 2016年11月11日(金) 22:09

mcmod.infoが読み込まれないのは
mod名,modID,modバージョンが一致していないときが多いです
アバター
Ch1a
ID:4f1328b4
大工さん
 
記事: 54
登録日時: 2016年8月30日(火) 22:59

  • (PostNo.287559)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by C6H2Cl2 » 2016年11月11日(金) 22:54

正直言って、mcmod.infoが読み込まれないのはよくあることで、原因がわからないことも多く正直言っていちいち対策考えるのが面倒くさい(あくまで個人的な意見)ので、そもそもmcmod.infoを使わない方法を提案させてもらいます。
どうしてもmcmod.infoを使いたいのなら、この返信は無視していただいて結構です。

mcmod.infoを使わない方法ですが、ModMetadataというものを使います。
これは、mcmod.infoの様に、別のファイルではなく@Modアノテーションを付けたクラス(以下、メインクラス)の中に、Java(もしくはその他のJavaVM言語)で記述することができるので、内部の変数などを用いることができ、個人的にはmcmod.infoのほぼ完全な上位互換だと考えています。
ここに、実際にModMetadataを使っている例を貼っておきますので、正常に動作しなかった場合、ここと比較してみるといいかもしれません。(Minecraft1.7.10以降、Java/Kotlinで動作を確認)

さて、肝心の使い方について説明していきます。なお、以下のコードはJavaです。それ以外のJavaVM言語を用いる場合、適宜変換してください。
なお、すべてメインクラスに記述してください。
まず、要求されるimport。IDEで自動生成するのなら、個別に書く必要はありません。
コード: 全て選択
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

まず。@アノテーション部分に、useMetadata = trueを追加します。
コード: 全て選択
@Mod(modid = YourModID,useMetadata = true

次に、ModMetadataの変数を宣言します。
コード: 全て選択
@Mod.Metadata
public static ModMetadata modMetadata;

この変数は、Forgeによって代入されるので、自身で初期化する必要はありません。
次に、FMLPreInirializetionEvent(以下preinit)にて、先程の変数に情報を書き込んでいきます。
コード: 全て選択
@Mod.EventHandler
public void preinit(FMLPreInitializationEvent event) {
   loadMeta(modMetadata);
        //Any Codes
}

コード: 全て選択
private void loadMeta(ModMetadata metadata){
   metadata.modId = MOD_ID;
   metadata.name = MOD_NAME;
   metadata.version = MOD_VERSION;
   metadata.authorList.add("Your Name");
   metadata.description = "Some Descriptions";
        metadata.autogenerated = false;
}

ここで、必ず書かないといけないのは、
metadata.autogenerated = false;
の部分です。これをfalseにしないと、ModMetadataの更新処理が行われていないとみなされ、mcmod.infoのデータが使われます。コレでは意味がありません。
他の部分は、基本的に任意です。まぁ、最低限ModID,Name,Version,authorListは更新しておいたほうがいいでしょう。
ここに書かれている以外にも、色々変数があり、mcmod.infoで指定できるものは、全てできるようになっています。

以上で、ModMetadataの使い方は終わりです。
慣れればこっちのほうがかなり楽です。特に、バージョンなんかは変数一つにまとめることができるので、場所によって情報が違うということは起こりにくくなります。(build.gradle内のバージョンは自分で書き換えないといけないが)
CurseForgeという海外サイトで、modをいくつか公開しています。
祝・ReinforcedTools10万DL突破!
連絡や、更新予定の確認などは、Twitter@PDB_Yukariへ。
Twitterなんかではパラジって名前でやってます。
結月ゆかりはいいぞ
最近、Kotlinという言語にハマってる。
アバター
C6H2Cl2
ID:5dd024a4
石掘り
 
記事: 127
登録日時: 2015年9月03日(木) 11:23
お住まい: 鹿県鹿市付近

  • (PostNo.287729)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by mineshop » 2016年11月14日(月) 08:16

Ch1a さんが書きました:mcmod.infoが読み込まれないのは
mod名,modID,modバージョンが一致していないときが多いです

コードの一致していないところを教えてください
mineshop
ID:c7e1a3d7
石掘り
 
記事: 87
登録日時: 2015年8月07日(金) 14:22

  • (PostNo.287730)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by mineshop » 2016年11月14日(月) 08:18

C6H2Cl2 さんが書きました:正直言って、mcmod.infoが読み込まれないのはよくあることで、原因がわからないことも多く正直言っていちいち対策考えるのが面倒くさい(あくまで個人的な意見)ので、そもそもmcmod.infoを使わない方法を提案させてもらいます。
どうしてもmcmod.infoを使いたいのなら、この返信は無視していただいて結構です。

mcmod.infoを使わない方法ですが、ModMetadataというものを使います。
これは、mcmod.infoの様に、別のファイルではなく@Modアノテーションを付けたクラス(以下、メインクラス)の中に、Java(もしくはその他のJavaVM言語)で記述することができるので、内部の変数などを用いることができ、個人的にはmcmod.infoのほぼ完全な上位互換だと考えています。
ここに、実際にModMetadataを使っている例を貼っておきますので、正常に動作しなかった場合、ここと比較してみるといいかもしれません。(Minecraft1.7.10以降、Java/Kotlinで動作を確認)

さて、肝心の使い方について説明していきます。なお、以下のコードはJavaです。それ以外のJavaVM言語を用いる場合、適宜変換してください。
なお、すべてメインクラスに記述してください。
まず、要求されるimport。IDEで自動生成するのなら、個別に書く必要はありません。
コード: 全て選択
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

まず。@アノテーション部分に、useMetadata = trueを追加します。
コード: 全て選択
@Mod(modid = YourModID,useMetadata = true

次に、ModMetadataの変数を宣言します。
コード: 全て選択
@Mod.Metadata
public static ModMetadata modMetadata;

この変数は、Forgeによって代入されるので、自身で初期化する必要はありません。
次に、FMLPreInirializetionEvent(以下preinit)にて、先程の変数に情報を書き込んでいきます。
コード: 全て選択
@Mod.EventHandler
public void preinit(FMLPreInitializationEvent event) {
   loadMeta(modMetadata);
        //Any Codes
}

コード: 全て選択
private void loadMeta(ModMetadata metadata){
   metadata.modId = MOD_ID;
   metadata.name = MOD_NAME;
   metadata.version = MOD_VERSION;
   metadata.authorList.add("Your Name");
   metadata.description = "Some Descriptions";
        metadata.autogenerated = false;
}

ここで、必ず書かないといけないのは、
metadata.autogenerated = false;
の部分です。これをfalseにしないと、ModMetadataの更新処理が行われていないとみなされ、mcmod.infoのデータが使われます。コレでは意味がありません。
他の部分は、基本的に任意です。まぁ、最低限ModID,Name,Version,authorListは更新しておいたほうがいいでしょう。
ここに書かれている以外にも、色々変数があり、mcmod.infoで指定できるものは、全てできるようになっています。

以上で、ModMetadataの使い方は終わりです。
慣れればこっちのほうがかなり楽です。特に、バージョンなんかは変数一つにまとめることができるので、場所によって情報が違うということは起こりにくくなります。(build.gradle内のバージョンは自分で書き換えないといけないが)

参考になりました。
mineshop
ID:c7e1a3d7
石掘り
 
記事: 87
登録日時: 2015年8月07日(金) 14:22

  • (PostNo.287740)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by Ch1a » 2016年11月14日(月) 13:13

コードとmcmod.infoのmodバージョンが一致していないように見えます
アバター
Ch1a
ID:ba2ad693
大工さん
 
記事: 54
登録日時: 2016年8月30日(火) 22:59

  • (PostNo.287977)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by mineshop » 2016年11月17日(木) 13:36

Ch1a さんが書きました:コードとmcmod.infoのmodバージョンが一致していないように見えます

コードが1.0、mcmodが1.7.10-1.0になっていました...
気づきませんでした。
教えてくれてありがとうございます。
mineshop
ID:c7e1a3d7
石掘り
 
記事: 87
登録日時: 2015年8月07日(金) 14:22

  • (PostNo.291150)

Re: mcmod.infoが存在するのに読み込まれない

投稿記事by sosuu235 » 2016年12月24日(土) 12:33

C6H2Cl2 さんが書きました:正直言って、mcmod.infoが読み込まれないのはよくあることで、原因がわからないことも多く正直言っていちいち対策考えるのが面倒くさい(あくまで個人的な意見)ので、そもそもmcmod.infoを使わない方法を提案させてもらいます。
どうしてもmcmod.infoを使いたいのなら、この返信は無視していただいて結構です。


質問主と同じ状況になり、検索してこのトピックにたどり着きました。原因も質問主と同じタイプミスでしたが、一文字を間違えただけで全部が読み込まれないのにやる気を無くし、ModMetadetaを使う方法に移行しました。大変参考になりました。ありがとうございました。
クリエイティブか、マルチのサバイバルしかプレイできないチキンです。
sosuu235
ID:ad4320cf
大工さん
 
記事: 46
登録日時: 2013年3月28日(木) 17:38
お住まい: 日本


Return to 質問:開発・制作関連

x