(→事前準備) |
細 (→ModLoaderの機能を使用した方法: 事前準備と解説の順番の入れ替え 下まで見ない人が間違える可能性があるので(俺だなんて言ぇ…ゲフンゲフン) |
||
36行目: | 36行目: | ||
} | } | ||
</source> | </source> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==事前準備== | ==事前準備== | ||
66行目: | 54行目: | ||
… | … | ||
</source> | </source> | ||
+ | |||
+ | ==解説== | ||
+ | <source lang="java"> | ||
+ | @MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255) | ||
+ | public static hogeBlockID = 111; | ||
+ | @MLProp | ||
+ | public static hogeItemID = 5000; | ||
+ | </source> | ||
+ | 変更できるようにしたい変数の定義の前に"@MLProp"と記述するだけで設定ファイルから変更可能になります。<br/> | ||
+ | その際、infoを設定することでヘルプ用コメントを表示させることができます。<br/> | ||
+ | また、同じようにしてminで最小値、maxで最大値を設定することができます。<br/> | ||
+ | 範囲外の数値が設定されている場合、初期値に変更されます。<br/> | ||
=MinecraftForgeの機能を使用した方法= | =MinecraftForgeの機能を使用した方法= |
2012年7月28日 (土) 21:08時点における版
設定ファイルの生成方法は3種類あり、それぞれ使い勝手が違います。
目次
ModLoaderの機能を使用した方法
最も簡単な方法ですが、後述の事前準備が必要となります。
サンプルソース
package net.minecraft.src; public class mod_hoge extends BaseMod { @MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255) public static hogeBlockID = 111; @MLProp public static hogeItemID = 5000; public static Block hogeBlock; public static Item hogeItem; public String getVersion() { return "1.1"; } public void load { hogeBlock = new Block(hogeBlockID, 1, Material.rock) ModLoader.RegisterBlock(hogeBlock); ModLoader.AddName(hogeBlockID, "Hoge Block"); hogeItem = new Item(hogeItemID).setItemName("hogeItem"); hogeItem.iconIndex = ModLoader.addOverride("/gui/items.png", "/item/hogeitem.png"); ModLoader.AddName(hogeItem, "Hoge Item"); } }
事前準備
デコンパイルしただけの状態では、info,min,maxを設定しなければリコンパイル時にエラーが発生します。
そこで、これらを設定しなくとも正常にリコンパイルできるよう、MLPropクラスを書き換えます。
ModLoader の 公式フォーラムのページで Modloader - Decompile Fixes の順にたどる
ダウンロードしてきた zip を McRoot\src\minecraft\net\minecraft\src\ に解凍
MLProp.java の 1行目 にあるスラッシュ2つを消して上書き保存
//package net.minecraft.src; …
↓
package net.minecraft.src; …
解説
@MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255) public static hogeBlockID = 111; @MLProp public static hogeItemID = 5000;
変更できるようにしたい変数の定義の前に"@MLProp"と記述するだけで設定ファイルから変更可能になります。
その際、infoを設定することでヘルプ用コメントを表示させることができます。
また、同じようにしてminで最小値、maxで最大値を設定することができます。
範囲外の数値が設定されている場合、初期値に変更されます。
MinecraftForgeの機能を使用した方法
MinecraftForgeの設定フアイルはModLoaderと以下の様な違いがあります。
・ファイル名、配置位置を変更できる
・ブロックID、アイテムID、その他のカテゴリに分類される
サンプルソース
package net.minecraft.src; import java.io.File; import java.util.*; import net.minecraft.client.Minecraft; import net.minecraft.src.forge.*; public class mod_hoge extends BaseMod { static Configuration configuration; static Block hogeBlock; static int hogeBlockID; static Item hogeItem; static int itemHogeShiftedIndex; public String getVersion() { return "1.1"; } public void load() { configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg")); hogeBlockID = configurationProperties(); hogeBlock = new Block(hogeBlockID, ModLoader.addOverride("/terrain.png", "/block/hogeBlock.png")); //ItemIDはBlockIDのMAX値256から減算した値がItemIDになるので-256をしています。 hogeItem = new Item(itemHogeShiftedIndex - 256, "/gui/items.png", "/item/hogeItem.png").setItemName("hogeItem"); ModLoader.RegisterBlock(hogeBlock); ModLoader.AddName(hogeBlock, "Hoge Block"); ModLoader.AddName(hogeItem, "Hoge Item"); } public String getVersion() { return "1.0.0"; } private int configurationProperties() { configuration.load(); hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value); itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value); configuration.save(); return hogeBlockID; } }
解説
configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg")); hogeBlockID = configurationProperties();
configurationファイルを設定します。
FileメソッドでMinecraftのconfig/hoge/cfgファイルを参照することを定義しています。
BlockIDはconfigurationProperties();でコンフィグファイルから取って来いという宣言です。
private int configurationProperties() { configuration.load(); hogeBlockID = Integer.parseInt(configuration.getOrCreateBlockIdProperty("Hoge Block", 123).value); itemHogeShiftedIndex = Integer.parseInt(configuration.getOrCreateIntProperty("Hoge Item", Configuration.ITEM_PROPERTY, 5000).value); configuration.save(); return hogeBlockID; }
configuration.load()でコンフィグファイルをロードします。
2行目でコンフィグファイルで定義されているBlockIDを設定します。
getOrCreateBlockIdPropertyで対象ブロックに設定するものを定義します。
数字123は初期定義値です。
3行目のgetOrCreateIntPropertyでは、前の行のgetOrCreateBlockIdPropertyの項目を使用しています。
数字の5000はhogeItemの初期ItemID(実際のデータは+256)です。
configuration.save();でコンフィングファイルをセーブします。(忘れやすいので注意)
最後に最初のBlockIDを返す必要があります。
java標準の機能だけを使用する方法
まとめ
MLPropかForgeでのConfigファイル生成かは好みが分かれると思います。
今回はBlockID、ItemIDを設定させていますが、EntityIDや対象Blockの生成有無の判定にも使えますので、好きな方をお使いください。
コメントの自動更新を有効化