提供: Minecraft Modding Wiki
この編集を取り消せます。
下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | {{前提MOD|reqmod="Minecraft Forge4. | + | {{前提MOD|reqmod="Minecraft Forge4.3x"}} |
==鉱石辞書の利用== | ==鉱石辞書の利用== | ||
<p> | <p> | ||
− | + | 鉱石辞書(OreDictionary)は異なるmod間でのアイテム共有のための機能である. forge前提の大型modでは'''銅'''や'''錫''', '''青銅'''などが鉱石辞書に登録され共有できるようになっている. またこの鉱石辞書は鉱石に限らず, あらゆるアイテムを共有できる. 鉱石辞書は3つのクラスOreDictionary, ShapedOreRecipe, ShapelessOreRecipeから成り, それぞれ'''辞書''', '''定形レシピ''', '''不定形レシピ'''を提供する. なお今回具体的なサンプルコードはない. | |
− | |||
</p> | </p> | ||
10行目: | 9行目: | ||
*鉱石辞書への登録 | *鉱石辞書への登録 | ||
<p> | <p> | ||
− | + | 鉱石辞書への登録はOreDictionaryクラスのregisterOreメソッドを利用する. registerOreメソッドはBlock, Item, ItemStackのどの形式でも登録できることが特徴である. | |
</p> | </p> | ||
<source lang = "java"> | <source lang = "java"> | ||
16行目: | 15行目: | ||
public static void registerOre(String name, Block ore) | public static void registerOre(String name, Block ore) | ||
public static void registerOre(String name, ItemStack ore) | public static void registerOre(String name, ItemStack ore) | ||
+ | public static void registerOre(int id, Item ore) | ||
+ | public static void registerOre(int id, Block ore) | ||
+ | public static void registerOre(int id, ItemStack ore) | ||
</source> | </source> | ||
<p> | <p> | ||
− | + | すなわち, 鉱石辞書は'''文字列'''か'''ユニークID'''で共有される. 他のmodのBlockやItemへの参照がなくとも, 文字列かユニークIDを指定しておけば読み込まれたときに自動で関連付けされる. | |
+ | </p> | ||
+ | <source lang = "java"> | ||
+ | OreDictionary.registerOre("oreSilver", new ItemStack(blockNewOre, 1, 0)); | ||
+ | OreDictionary.registerOre("ingotSilver", new ItemStack(itemNewIngot, 1, 0)); | ||
+ | </source> | ||
+ | <p> | ||
+ | このようにItemStackを用いて登録すればメタデータを利用することで消費IDの抑止にもつながる. 参照の際は文字列だけわかればよいというのも大きなメリットである. | ||
</p> | </p> | ||
==鉱石辞書を利用したレシピの追加== | ==鉱石辞書を利用したレシピの追加== | ||
<p> | <p> | ||
− | + | 鉱石辞書を利用したレシピを追加する場合, 先述した'''ShapedOreRecipe'''か'''ShapelessOreRecipe'''を利用する. | |
</p> | </p> | ||
<source lang = "java"> | <source lang = "java"> | ||
GameRegistry.addRecipe( | GameRegistry.addRecipe( | ||
− | + | new ShapedOreRecipe( | |
− | + | new ItemStack(silvershovel, 1), | |
− | + | new Object[] | |
− | + | { | |
− | + | "X", "Y", "Y", | |
− | + | Character.valueOf('X'), "ingotSilver", | |
− | ); | + | Character.valueOf('Y'), Item.stick |
+ | })); | ||
</source> | </source> | ||
<p> | <p> | ||
− | + | 定形レシピの例である. 要は, 今までBlock, Item, ItemStackにしていた箇所を鉱石辞書で登録した文字列にするだけでできる. 注意すべきは'''addRecipe()の引数にnew ShapedOreRecipe()を渡すこと'''である. | |
</p> | </p> | ||
<source lang = "java"> | <source lang = "java"> | ||
GameRegistry.addRecipe( | GameRegistry.addRecipe( | ||
− | + | new ShapelessOreRecipe( | |
− | + | new ItemStack(ingotSilverIron, 1), | |
− | + | new Object[] | |
− | + | { | |
− | ); | + | "ingotSilver", Item.ingotIron |
+ | })); | ||
+ | |||
</source> | </source> | ||
<p> | <p> | ||
− | + | 不定形レシピの例, 基本的には定形レシピと同じ. 注意点は不定形でも'''addRecipe'''に渡す点. これはGameRegistryのaddRecipeの引数を見れば自明である. | |
</p> | </p> | ||
==鉱石辞書に登録する際のルール== | ==鉱石辞書に登録する際のルール== | ||
<p> | <p> | ||
− | + | 現在鉱石辞書を利用しているのはいわゆる工業系mod, すなわちIndustrialCraft2, BulidCraft, RedPower2, Forestry for Minecraftが主流である. 従って後発のmodもこれらの鉱石を共有するために同じ整形ルールで追加, 参照している. わかっている登録名は以下のとおりである. | |
− | + | </p> | |
+ | *oreTin, oreCopper, oreSilver, oreUranium | ||
+ | *ingotTin, ingotCopper, ingotSilver, ingotBrass, ingotBronze | ||
+ | *ingotUranium, ingotRefinedIron | ||
+ | *dyeBlue | ||
+ | *gemRuby, gemEmerald, gemSapphire | ||
+ | *itemDropUranium | ||
+ | *woodRubber | ||
+ | *itemRubber | ||
+ | <p> | ||
+ | 命名則はプレフィックス+アイテム名である. 鉱石なら'''oreXXX''', インゴットなら'''ingotXXX'''となっている. FFMのバックパックやmystcraftの鉱石倍加などもこの命名に従っているアイテムを自動で登録するため, '''forge前提で鉱石を追加する場合は鉱石辞書に登録することが推奨される'''. また6.3.0.363時点で, バニラの一部アイテムが鉱石辞書に登録されレシピを作成しやすくなった. 追加されたのはメタデータを使う原木や木材, 染料などである. | ||
</p> | </p> | ||
− | |||
*logWood | *logWood | ||
*plankWood | *plankWood | ||
63行目: | 84行目: | ||
*stairWood | *stairWood | ||
*stickWood | *stickWood | ||
− | * | + | *dyeBlack |
− | * | + | *dyeRed |
− | * | + | *dyeGreen |
− | + | *dyeBrown | |
− | + | *dyeBlue | |
− | + | *dyePurple | |
− | + | *dyeCyan | |
− | + | *dyeLightGray | |
− | + | *dyeGray | |
− | + | *dyePink | |
− | + | *dyeLime | |
− | + | *dyeYellow | |
− | + | *dyeLightBlue | |
− | + | *dyeMagenta | |
− | + | *dyeOrange | |
− | + | *dyeWhite | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | * | ||
− | * | ||
− | * | ||
− | * | ||
− | == | + | ==まとめ== |
− | + | <p> | |
− | + | 鉱石辞書は他のmodとのアイテムの共有を実現するAPIである. それ以外にもメタデータを使った煩雑な(可読性の低い)コードを回避する手段としても利用可能である. | |
− | + | </p> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |