MOD製作チュートリアル > MODの情報の登録

概要

minecraftのタイトル画面にある「mods」ボタンを押すと表示されるリストで使われる情報を設定する。
ここではjavaで設定しているが、"C:/forge/src/main/resources/mcmod.info"で設定することも可能。

ソースコード

  • AluminiumMod.java
package tutorial.aluminiummod;
 
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Metadata;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
 
@Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION)
public class AluminiumMod {
 
	//MODのIDなどを定義
	public static final String MODID = "AluminiumMod";
	public static final String MODNAME = "Aluminium Mod";
	public static final String VERSION = "1.0.0";
 
	//ModMetadataを格納するための変数を宣言
	@Metadata(MODID)
	public static ModMetadata meta;
 
	public static Item aluminium;
 
	public static Block blockAluminium;
 
	@EventHandler
	public void perInit(FMLPreInitializationEvent event) {
 
		//Infoファイルを読み込む
		ModInfo.loadInfo(meta);
 
		aluminium = new Item()
		.setCreativeTab(CreativeTabs.tabMaterials)
		.setUnlocalizedName("aluminium")
		.setTextureName("aluminiummod:aluminium");
		GameRegistry.registerItem(aluminium, "aluminium");
 
		blockAluminium = new AluminiumBlock(Material.rock)
		.setBlockName("blockAluminium")
		.setBlockTextureName("aluminiummod:aluminium_block");
		GameRegistry.registerBlock(blockAluminium, "blockAluminium");
	}
 
/*略*/
 
}
 

  • ModInfo.java
package tutorial.aluminiummod;
 
import cpw.mods.fml.common.ModMetadata;
 
public class ModInfo {
 
	public static void loadInfo(ModMetadata meta) {
		meta.modId = AluminiumMod.MODID;
		meta.name = AluminiumMod.MODNAME;
		meta.description ="This mod adds Aluminium.";
		meta.version =AluminiumMod.VERSION ;
		meta.url = "http://www63.atwiki.jp/akasatanahama/pages/17.html";
		meta.authorList.add("Akasata Nahama");
		meta.credits = "";
		meta.logoFile ="assets/aluminiummod/logo.png";
		meta.autogenerated = false;
	}
 
}
 

解説

Metadata

String modid
@Modで使用したmodidを渡すことで、このアノテーションをつけたModMetadata変数を設定に使えるようになる。

ModMetadata

modsリストで表示される情報を格納する変数が宣言されているクラス。

String modId

@Modで使用したものと同じmodidを指定する。

String name

MODの名前。
@Modで指定したものと同じでよい。

String version

MODのバージョン。
@Modで設定したものと併記される。
@Modで指定したものと同じでよい。

String description

MODの説明文。

String url

MODの配布場所のURL。

List<String> authorList

作者名のリスト。

String credits

クレジット。
作者以外で記しておきたい人の名前などを指定する。(?)

String logoFile

ロゴ画像を指定する。
ここで指定した場所に画像を置いておけば、読み込んでくれる。

boolean autogenerated

falseにすることでmcmod.infoを使用せず、こちらを読み込んでくれる。

ModInfo

AluminiumModの情報を登録するためのクラス。

void loadInfo(ModMetadata meta)

AluminiumModの情報をmetaに指定するためのメソッド。

使用例

このチュートリアルに関係ない部分は省略した。
+ オファレンMOD

コメント

この項目に関する質問などをどうぞ。
  • mcmod.infoを利用するのをやめて、この方法に移行しました。 - 飽き性 2016-12-29 23:16:55
    • すみません、上は誤爆です。 続きから書きます。しかしいざgradlew buildをしてmodsに入れてもZip file ExapleMod-1.0.jar failed to read properly, it will be ignoredと出て読み込まれません。どのようにすると読み込まれるのでしょうか、教えてくださると助かります。必要ならpastebinなどでソースも公開します - 飽き性 2016-12-29 23:21:22
  • 原因として考えられるもののとして、@Modアノテーションの記述が間違っている、もしくはModInfo.loadInfo(meta);を忘れているというものが考えられます。二つに当てはまらない場合は、お手数ですが返信下さい。 - Tom Kate 2016-12-30 18:08:02
    • ModInfoのURL等の少し省略していたものを追加したりなどしましたが、今までと同様のメッセージが表示され読み込まれませんでした。 - 飽き性 2016-12-30 21:38:43
      • ワークスペースを作り直してみると解決しました。返信ありがとうございました! - 飽き性 2017-01-06 11:31:48
名前: