細 ((テンプレ挿入により改行の位置が中途半端でしたので少し変えました)) |
|||
1行目: | 1行目: | ||
{{前提MOD|reqmod="ModLoader及びMinecraftForge"}} | {{前提MOD|reqmod="ModLoader及びMinecraftForge"}} | ||
− | + | 1.23からUpdateで1.24が来た場合BlockID,ItemIDの書き方に変更があるかもしれないので、1.1を基準に記述してます。<br/> | |
− | + | 設定ファイルの生成方法は3種類あり、それぞれ使い勝手が違います。<br/> | |
− | + | =ModLoaderの機能を使用した方法= | |
− | |||
− | + | 最も簡単な方法ですが、後述の事前準備が必要となります。<br/> | |
− | === | + | ==サンプルソース== |
+ | |||
+ | <source lang="java"> | ||
+ | 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 mod_hoge | ||
+ | { | ||
+ | } | ||
+ | |||
+ | 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"); | ||
+ | } | ||
+ | } | ||
+ | </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/> | ||
+ | |||
+ | ==事前準備== | ||
+ | |||
+ | デコンパイルしただけの状態では、info,min,maxを設定しなければリコンパイル時にエラーが発生します。<br/> | ||
+ | そこで、これらを設定しなくとも正常にリコンパイルできるよう、MLPropクラスを書き換えます。<br/> | ||
+ | |||
+ | =MinecraftForgeの機能を使用した方法= | ||
+ | |||
+ | MinecraftForgeの設定フアイルはModLoaderと以下の様な違いがあります。<br/> | ||
+ | ・ファイル名、配置位置を変更できる<br/> | ||
+ | ・ブロックID、アイテムID、その他のカテゴリに分類される<br/> | ||
+ | |||
+ | ==サンプルソース== | ||
<source lang="java"> | <source lang="java"> | ||
20行目: | 73行目: | ||
public class mod_hoge extends BaseMod | public class mod_hoge extends BaseMod | ||
{ | { | ||
− | + | static Configuration configuration; | |
− | + | static Block hogeBlock; | |
− | + | static int hogeBlockID; | |
− | + | static Item hogeItem; | |
− | + | static int itemHogeShiftedIndex; | |
− | + | ||
− | + | public mod_hoge() | |
− | + | { | |
− | + | } | |
− | + | 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; | |
− | + | } | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
</source> | </source> | ||
+ | ==解説== | ||
+ | <source lang="java"> | ||
+ | configuration = new Configuration(new File(Minecraft.getMinecraftDir(), "config/hoge.cfg")); | ||
+ | hogeBlockID = configurationProperties(); | ||
+ | </source> | ||
+ | configurationファイルを設定します。<br/> | ||
+ | FileメソッドでMinecraftのconfig/hoge/cfgファイルを参照することを定義しています。<br/> | ||
+ | BlockIDはconfigurationProperties();でコンフィグファイルから取って来いという宣言です。<br/> | ||
+ | <source lang="java"> | ||
+ | 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; | ||
+ | } | ||
+ | </source> | ||
+ | configuration.load()でコンフィグファイルをロードします。 | ||
+ | 2行目でコンフィグファイルで定義されているBlockIDを設定します。 | ||
+ | getOrCreateBlockIdPropertyで対象ブロックに設定するものを定義します。 | ||
+ | 数字123は初期定義値です。 | ||
+ | 3行目のgetOrCreateIntPropertyでは、前の行のgetOrCreateBlockIdPropertyの項目を使用しています。 | ||
+ | 数字の5000はhogeItemの初期ItemID(実際のデータは+256)です。 | ||
+ | configuration.save();でコンフィングファイルをセーブします。(よく忘れます。必ずセーブしましょう) | ||
+ | 最後に最初のBlockIDを返す必要があります。 | ||
+ | |||
+ | =java標準の機能だけを使用する方法= | ||
− | + | =まとめ= | |
− | + | MLPropかForgeでのConfigファイル生成かは好みが分かれると思います。<br/> | |
− | + | 今回はBlockID、ItemIDを設定させていますが、EntityIDや対象Blockの生成有無の判定にも使えますので、好きな方をお使いください。 | |
− | |||
<comments /> | <comments /> |
2012年3月26日 (月) 12:09時点における版
この記事は"ModLoader及びMinecraftForge"を前提MODとしています。 |
1.23からUpdateで1.24が来た場合BlockID,ItemIDの書き方に変更があるかもしれないので、1.1を基準に記述してます。
設定ファイルの生成方法は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 mod_hoge { } 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"); } }
解説
@MLProp(info="please assign an ID, hogeBlock", min = 1, max = 255) public static hogeBlockID = 111; @MLProp public static hogeItemID = 5000;
変更できるようにしたい変数の定義の前に"@MLProp"と記述するだけで設定ファイルから変更可能になります。
その際、infoを設定することでヘルプ用コメントを表示させることができます。
また、同じようにしてminで最小値、maxで最大値を設定することができます。
範囲外の数値が設定されている場合、初期値に変更されます。
事前準備
デコンパイルしただけの状態では、info,min,maxを設定しなければリコンパイル時にエラーが発生します。
そこで、これらを設定しなくとも正常にリコンパイルできるよう、MLPropクラスを書き換えます。
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 mod_hoge() { } 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の生成有無の判定にも使えますので、好きな方をお使いください。
コメントの自動更新を有効化