AwAlog

めもちょー

version.properties メモ

| Comments

意外と知られていないメタ情報ファイル。自動生成と相性よさげ。

version.properties についてメモ

なにこれって思う modder のほうが多いような気がします。少なくとも日本のminecraft-modderでこれを用意してる人、見た記憶ないです。

@Mod アノテーションの version とバイバイできる version.properties

バージョンアップのたびに @Mod に設定した version を書き直し忘れて、リコンパイル、再難読化をもっかいやるハメになったことある modder は、少なくないんじゃないかなと思います。つか私はほぼ毎回更新を忘れます。だいたい zip が出来上がってから思い出します。画面殴りそうです。

きちんとクラスをわけていくと、@Mod をつけたModクラスは初期化以外での出番は殆どなくなってしまうので、あまり更新する機会がありません。そのため見る機会自体が減っていきます。また、更新のたびにバージョンを書き換えるのは意外と面倒でわすれがちです。

そうすると、プログラマーは自動更新を考えるわけです。ですが、ハードコーディングされているアノテーションを自動更新するのは、わりと大変。

そんなときにこの version.properties です。外部ファイルからバージョン情報を設定してあげることで、コード修正を行わずにバージョンを設定できるようになります。

つかいかた

前置きが無駄に長くなりましたが、なんのことはありません。ファイル名は version.properties で mcmod.info と同様にzipのルートに配置すれば読んでくれます。

プロパティファイルなのでコメントなども使えます。他の情報を追加することもできます。ただし日本語など、マルチバイト文字を使用する場合には、native2ascii などできちんと変換しないといけません。まぁ Pleiades Eclipse 使ってるならプロパティファイル用のエディタで編集するので、このあたりを意識する機会はあんまりないですが。

このプロパティファイルで、@Mod アノテーションの version を設定できます。ただし優先度はアノテーションによる設定よりも低く、アノテーションでバージョンを設定している場合、無視されるようです。

例えば、modid が “net.awairo.minecraft.tooltipplus”、バージョンが “2.3.0” であれば、こんな感じ。modid のあとに “version” を繋げたキーで値にバージョンの値です。

net.awairo.minecraft.tooltipplus.version = 2.3.0

これで @Mod(~, version = “2.3.0”) と同じ設定ができます。

ちなみに、コード上からこのプロパティファイルを取得したい場合は、FMLPreInitialiseEvent から取得出来ます。@PreInitのほうです。

バージョンアップの際にコードの修正が必要ないのと、プロパティファイルなので、自動生成が楽ちんなのがメリットですね。それに、自動生成するようにしておけばコミットする必要もなくなるので、コミットログに余計なファイルが混ざらないってメリットもあります。

IronChest なんかは自動生成用のスクリプトをもっていて、それを使ってリリース毎に自動生成しているみたいです。私も真似してます。


自動更新についても、気が向いたらそのうち書くかもしれませんが、向いたらで。

Tooltip Plus のほうはだいたい自動化しちゃってますが、いろいろ余計なことしてていま見直してる最中なので、あんま参考にはならないとおもいます。

SpawnCheckerのほうは作り直しが進んでないので、いまだにRML時代のままのクラス構成です。mod_SpawnCheckerです。毎回 getVersion() の戻り値の変更を忘れては「アアァァッ」って叫んでます。RMLバイバイしてFMLの機能つかいたいです。

つか、このあたりは IronChest 見たほうが早いです。困ったときの IronChest。IronChset is God。

Comments