提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | {{前提MOD|reqmod="Minecraft Forge4. | + | {{前提MOD|reqmod="Minecraft Forge4.3x"}} |
==Forge式コンフィグファイルの利用== | ==Forge式コンフィグファイルの利用== | ||
7行目: | 7行目: | ||
</p> | </p> | ||
− | ==ソースコード== | + | ===ソースコード=== |
− | + | *ConfigSampleCore.java | |
<source lang = "java"> | <source lang = "java"> | ||
package mods.configsample; | package mods.configsample; | ||
105行目: | 105行目: | ||
==解説== | ==解説== | ||
− | + | ===ConfigSampleCoreクラス=== | |
<source lang = "java"> | <source lang = "java"> | ||
import java.util.logging.Level; | import java.util.logging.Level; | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | 後述のFMLLogで利用するクラス. | ||
+ | </blockquote> | ||
116行目: | 118行目: | ||
import net.minecraftforge.common.Property; | import net.minecraftforge.common.Property; | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | Forge式コンフィグファイルの機能を提供するAPI. コンフィグ自体はConfigurationクラスが行い, Propertyクラスは設定項目のコメントや実体を扱う. | ||
+ | </blockquote> | ||
122行目: | 126行目: | ||
import cpw.mods.fml.common.FMLLog; | import cpw.mods.fml.common.FMLLog; | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | FML(ForgeModLoader)が提供するログ表示用API. 開発環境でのプロンプト画面に表示される他, 実行ログにも記録されるようになる. | ||
+ | </blockquote> | ||
128行目: | 134行目: | ||
import cpw.mods.fml.common.event.FMLPreInitializationEvent; | import cpw.mods.fml.common.event.FMLPreInitializationEvent; | ||
</source> | </source> | ||
− | + | <blockquote | |
+ | ModLoaderにはなかった前処理(pre init)を行うためのイベント. 基本的な使い方はFMLInitializationEventと同じ. | ||
+ | </blockquote> | ||
135行目: | 143行目: | ||
import mods.blocksample.BlockSample; | import mods.blocksample.BlockSample; | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | 以前解説したItemSampleクラスとBlockSampleクラスを利用するため, インポートする. 同パッケージ内で作成している場合, このimport文は不要. | ||
+ | </blockquote> | ||
163行目: | 173行目: | ||
} | } | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | @Mod.Initと同様に, @Mod.PreInitアノテーションを付与し, 引数にFMLPreInitializationEventを指定すると前処理専用のメソッドとなる. 基本的にはコンフィグファイルの生成や, コンフィグファイルから値を持ってくる処理を行う. | ||
+ | </blockquote> | ||
169行目: | 181行目: | ||
Configuration cfg = new Configuration(event.getSuggestedConfigurationFile()); | Configuration cfg = new Configuration(event.getSuggestedConfigurationFile()); | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | Configurationのインスタンスを作成する. 引数のevent.getSuggestedConfigurationFile()は, @Modで指定したmodid.cfg(この場合はConfigSampleCore.cfg)というファイルオブジェクトを返す. | ||
+ | </blockquote> | ||
175行目: | 189行目: | ||
cfg.load(); | cfg.load(); | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | Configurationの処理を開始させるメソッド. 必ずsave()と対になる. | ||
+ | </blockquote> | ||
182行目: | 198行目: | ||
Property itemProp = cfg.getItem("ConfigSampleItem", 4001); | Property itemProp = cfg.getItem("ConfigSampleItem", 4001); | ||
</source> | </source> | ||
− | + | <blockquote> | |
− | + | コンフィグファイルに項目とデフォルト値を設定し, その要素をPropetryインスタンスに返す処理. | |
+ | この時, このModよりも前に読み込まれたModのブロック, アイテムIDと重複していた場合, '''自動でIDの末尾からIDの再割り当てを行う.''' | ||
+ | </blockquote> | ||
190行目: | 208行目: | ||
itemProp.comment = "This comment is Item Property"; | itemProp.comment = "This comment is Item Property"; | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | コンフィグファイルでの項目に対するコメント. | ||
+ | </blockquote> | ||
197行目: | 217行目: | ||
itemIdSample = itemProp.getInt(); | itemIdSample = itemProp.getInt(); | ||
</source> | </source> | ||
− | + | <blockquote> | |
− | + | コンフィグファイルで設定した値をint型にして取得するメソッド. | |
+ | アイテムIDに関しては自動で-256してくれるようになった. これは4.1.4.281からの機能. | ||
+ | </blockquote> | ||
207行目: | 229行目: | ||
} | } | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | ファイルへの書き込み, 読み込みが失敗したときに呼ばれる, 例外. ログファイルにエラーメッセージを出力し, ゲームを強制終了させる. | ||
+ | </blockquote> | ||
216行目: | 240行目: | ||
} | } | ||
</source> | </source> | ||
− | + | <blockquote> | |
+ | tryブロックの後で必ず呼ばれる. コンフィグファイルを保存する. | ||
+ | </blockquote> | ||
==実際の挙動== | ==実際の挙動== |