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

フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999

返信する

:
不正プログラムによるアクセスを防ぐため、reCaptcha 認証コードの入力を強制しています。表示されている 2 つのワードをテキストフィールドにご入力ください。

BBCode: OFF
スマイリー: OFF
トピックのレビュー
   

ファイルを添付します

展開ビュー トピックのレビュー: mcmod.infoが存在するのに読み込まれない

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

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

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


質問主と同じ状況になり、検索してこのトピックにたどり着きました。原因も質問主と同じタイプミスでしたが、一文字を間違えただけで全部が読み込まれないのにやる気を無くし、ModMetadetaを使う方法に移行しました。大変参考になりました。ありがとうございました。

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

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

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

コードが1.0、mcmodが1.7.10-1.0になっていました...
気づきませんでした。
教えてくれてありがとうございます。

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

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

コードとmcmod.infoのmodバージョンが一致していないように見えます

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内のバージョンは自分で書き換えないといけないが)

参考になりました。

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

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

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

コードの一致していないところを教えてください

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内のバージョンは自分で書き換えないといけないが)

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

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

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

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) {
    }
}

ページトップ

x