AwAlog

めもちょー

mcmod.info の要素と機能についてのメモ

| Comments

各項目の説明とか。

mcmod.infoの要素と機能についてのメモ

FML645現在、mcmod.info からは以下の項目がロードされていました。

[
{
  "modid": "net.awairo.minecraft.xxx",
  "name": "awa sample mod",
  "description": "this mod is sample.",
  "url": "http://alalwww.github.io/",
  "updateUrl": "http://alalwww.github.io/",
  "logoFile": "logo.png",
  "version": "1.0.0",
  "credits": "By alalwww",
  "parent": "",
  "authors": ["alalwww"],
  "requiredMods": [],
  "dependencies": [],
  "dependants": [],
  "useDependencyInformation": "true"
}
]

mcmod.info 各項目の簡単な解説

mcmod.info は単純な json ファイルです。jsonの仕様については他文献などを漁ってください。javascriptのオブジェクトと似た書式なので、触ったことある人ならすぐに分かると思います。

値に指定できるのは「文字列」値と「配列」値の2種があり、項目ごとに決まっています。

modid

  • 文字列

mod の識別子を設定します。

@Modアノテーションの modId で指定したものと一致させる必要があります。

id は必ずユニーク値でないといけないため、mod 固有のパッケージ名を指定するのがオススメ。

蛇足ですが、javaにおけるパッケージ名は、ユニークであることが保証されているドメイン名を利用するのが一般的です。とはいえ、最近は「どうせ重複することなんかねーよ!うちのドメイン長いから冗長になるんだよボケェ!」って界隈も増えてきているので、必ずドメインを使わないといけないわけではありません。

ドメインを使いたいけど持っていないって場合は GitHub Pages のURLを利用する手や、DDNSをとってそれを使う手もあります。modの名前と同じでも大丈夫ですが、世界中で常に一意であることが保証されているドメインと違い、重複する可能性は残ります。とはいえ現実的に考えて、minecraft の userid + mod名 とかなら重複する可能性はないと思いますので、そういうのでもOK。

さらに蛇足ですが、FMLがmodの情報を出力する際に指定しているロガーの名前も、modidが使用されています。そのため、logging.properties でmod毎にログ出力の制御なんかも可能みたいです。試してないけど。

name

  • 文字列

mod の名称を設定します。

こちらは重複してもOKな値ですが、紛らわしいのでなるべく他と被らない「ステキ」で「ナイス」な名前を指定しましょう。ここで指定した名前が mod 一覧に表示されます。@Modアノテーションで指定した名前よりも優先されるようです。日本語も使えるようですが、英数のみのほうが無難じゃないかなと思います。

description

  • 文字列

modの概要の説明文を設定します。

英文のほうが無難だとは思いますが、現在は日本語も大丈夫みたいです(昔はダメだった気がします)。Mod一覧でModを選択した際に、一番したに表示されます。長い文章も改行されて表示されます。

url

  • 文字列

mod のサイトを示すURLです。ここ見れば最新版DLできるよ的なURLを設定しておきましょう。

updateUrl

  • 文字列

mod のアップデートサイトを示すURLです。現在のところmod一覧に表示される以外では使われていません。

今後自動更新などに対応する目的で用意されているものかもしれません。(FMLのissueでそういった話題が出てた気がします。)

logoFile

  • 文字列

mod一覧で表示されるmodのロゴファイルパスを設定します。

mod の zip ファイルのルートからのパスを指定します。対応している画像フォーマットは不明ですが、png では表示できるのを確認しています。画像サイズの制限があるのかも不明ですが、他modに合わせて 200 x 72 とするのが無難ではないかと思います。

version

  • 文字列

modのバージョンを設定します。(多分表示のみで使われるバージョン。)

このバージョンは mod のメタデータに持つバージョンで、@Mod アノテーションで指定されるバージョン(version.propertiesからも指定可能)とは別のものとして扱われています。また、依存関係チェックの際のバージョンとしては使用されない値のようです。

mod一覧でにVersionはこのように表示されています。

Version: [mcmod.infoで設定したバージョン] ([Modアノテーションまたはversion.propertiesで設定したバージョン])

先に表示されているのが、mcmod.info で指定したバージョンです。括弧書きのほうが @Mod アノテーションで設定されているバージョンとなります。おそらくユーザーライクな表示用バージョンと、依存関係のチェックなどでも使用する内部的なバージョンを分けるためのに分けてあるのだと思います。

なお、先にも記載していますが、@Modアノテーションで設定するバージョン値は version.properties ファイルから指定することができます。別記事で書きます。

credits

  • 文字列

クレジットを設定します。

なんとなく馴染みが薄い感がありますが、個人開発のmodであれば個人名など、グループで開発しているのであれば、グループ名などを指定するような感じです。

アニメのEDの最後とかに表示される「○○製作委員会」とか、そういう感じです。

parent

  • 文字列

親 mod のidを設定します。

他mod の add-on を作成する場合などに利用するものです。

ここで親modを指定した場合、mod一覧には表示されないようになり、親として指定したmodの情報に、子 mod 名として表示されるようになります。

authors

  • 配列

modの作者の一覧を設定します。

配列で指定します。

requiredMods

  • 配列

必須 mod の一覧を設定します。

useDependencyInformation を有効に指定しないと意味がありません。

「modid」または「modid@バージョン」という書式(別記事で解説予定)の文字列で複数指定ができます。ただし、ここで指定したバージョンはFML645現在チェックには使用されません。しかし、必須チェックが下記の依存関係チェックよりも先に行われ、エラーメッセージにもバージョンが表示されるようになります。そのため、必須modのバージョンも指定したいのであれば、ここにもバージョンを指定しておくほうが無難です。

dependencies

  • 配列

自身より先に初期化が行われる必要がある mod の一覧を設定します。

useDependencyInformation を有効に指定しないと意味がありません。

ここで指定したmodは、自身より先に初期化が行われます。「modid」または「modid@バージョン」という書式(別記事で解説予定)の文字列で複数指定ができます。依存するModのバージョンによる条件の指定が有効です。

dependants

  • 配列

自身より後に初期化が行われる必要がある mod の一覧を設定します。

useDependencyInformation を有効に指定しないと意味がありません。

ここで指定したmodは、自身より後に初期化が行われます。「modid」または「modid@バージョン」という書式(別記事で解説予定)の文字列で複数指定ができます。依存するModのバージョンによる条件の指定が有効です。

useDependencyInformation

  • 文字列

mcmod.info に書かれた依存関係の情報をmodの読み込み時に使用するかの設定です。

文字列 “true” を指定した場合のみ有効になります。それ以外の値が指定されたか、何も指定されていない場合、mcmod.infoの情報は実行時に全てクリアされます。つまり、この値をtrueにしないと依存関係チェックは行われません。ただし、@Mod の useMetadata より優先度が低いため、あちらが true に設定された場合は mcmod.info の情報はクリアされます。


20 June, 2013 誤記を修正(つやぴん氏thx)

Comments