提供: Minecraft Modding Wiki
移動先: 案内検索
(リストはまたなんか考える。)
1行目: 1行目:
{{前提MOD|reqmod="Minecraft Forge4.3x"}}
+
{{前提MOD|reqmod="Minecraft Forge4.3x~"}}
  
 
==鉱石辞書の利用==
 
==鉱石辞書の利用==
 
<p>
 
<p>
 鉱石辞書(OreDictionary)は異なるmod間でのアイテム共有のための機能である. forge前提の大型modでは'''銅'''や'''錫''', '''青銅'''などが鉱石辞書に登録され共有できるようになっている. またこの鉱石辞書は鉱石に限らず, あらゆるアイテムを共有できる. 鉱石辞書は3つのクラスOreDictionary, ShapedOreRecipe, ShapelessOreRecipeから成り, それぞれ'''辞書''', '''定形レシピ''', '''不定形レシピ'''を提供する. なお今回具体的なサンプルコードはない.
+
鉱石辞書(OreDictionary)は異なるmod間でのアイテム共有のための機能である。forge前提の大型modでは'''銅'''や'''錫''', '''青銅'''などが鉱石辞書に登録され利用できるようになっている。鉱石辞書という名前ではあるものの、鉱石に限らずあらゆるアイテムを登録できる。鉱石辞書はnet.minecraftforge.oredictパッケージで提供される機能である。<br>
 +
対象となるアイテムがそれぞれの環境で存在しなくても落ちることはないため、簡易な連携要素として気軽に利用できる機能である。
 
</p>
 
</p>
  
15行目: 16行目:
 
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を指定しておけば読み込まれたときに自動で関連付けされる.
+
 すなわち、鉱石辞書は'''文字列'''をキーとして共有する機能を提供している。他のmodのBlockやItemへの参照がなくとも、文字列を指定しておけば読み込まれたときに自動で関連付けされる。
</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'''を利用する.
+
 鉱石辞書を利用したレシピを追加する場合、'''ShapedOreRecipe'''か'''ShapelessOreRecipe'''を利用する。
 
</p>
 
</p>
 
<source lang = "java">
 
<source lang = "java">
 
GameRegistry.addRecipe(
 
GameRegistry.addRecipe(
new ShapedOreRecipe(
+
    new ShapedOreRecipe(
new ItemStack(silvershovel, 1),
+
        new ItemStack(silvershovel, 1),
new Object[]
+
        "X", "Y", "Y",
{
+
        'X', "ingotSilver",
"X", "Y", "Y",
+
        'Y', "stickWood"
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 ShapelessOreRecipe(
new ItemStack(ingotSilverIron, 1),
+
        new ItemStack(ingotSilverIron, 1),
new Object[]
+
        "ingotSilver", "ingotIron"
{
+
    )
"ingotSilver", Item.ingotIron
+
);
}));
 
 
 
 
</source>
 
</source>
 
<p>
 
<p>
 不定形レシピの例, 基本的には定形レシピと同じ. 注意点は不定形でも'''addRecipe'''に渡す点. これはGameRegistryのaddRecipeの引数を見れば自明である.
+
 不定形レシピの例、基本的には定形レシピと同じ。
 
</p>
 
</p>
  
 
==鉱石辞書に登録する際のルール==
 
==鉱石辞書に登録する際のルール==
 
<p>
 
<p>
 現在鉱石辞書を利用しているのはいわゆる工業系mod, すなわちIndustrialCraft2, BulidCraft, RedPower2, Forestry for Minecraftが主流である. 従って後発のmodもこれらの鉱石を共有するために同じ整形ルールで追加, 参照している. わかっている登録名は以下のとおりである.
+
基本的にはプレフィックス+アイテム名と言う形式になっている。鉱石なら'''oreXXX'''、インゴットなら'''ingotXXX'''と言った具合である。プレフィックスで種類を判定しているModも多々あるため、ある程度一般的なアイテムであるならば鉱石辞書に登録するべきである。<br>
</p>
+
以下にMinecraftForge(1.11.2-13.20.0.2210現在)によって追加されている鉱石辞書名を挙げる。
*oreTin, oreCopper, oreSilver, oreLead, oreNickel, oreUranium, oreSulfur, oreSaltpeter
 
*ingotRefinedIron, ingotTin, ingotCopper, ingotSilver, ingotBrass, ingotBronze, ingotLead, ingotNickel, ingotPlatinum, ingotElectrum, ingotInvar
 
*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
84行目: 63行目:
 
*stairWood
 
*stairWood
 
*stickWood
 
*stickWood
*dyeBlack
+
*treeSapling
*dyeRed
+
*treeLeaves
*dyeGreen
+
*vine
*dyeBrown
+
鉱石
*dyeBlue
+
*oreGold
*dyePurple
+
*oreIron
*dyeCyan
+
*oreLapis
*dyeLightGray
+
*oreDiamond
*dyeGray
+
*oreRedstone
*dyePink
+
*oreEmerald
*dyeLime
+
*oreQuartz
*dyeYellow
+
*oreCoal
*dyeLightBlue
+
インゴット/ナゲット
*dyeMagenta
+
*ingotIron
*dyeOrange
+
*ingotGold
*dyeWhite
+
*ingotBrick
 
+
*ingotBrickNether
==まとめ==
+
*nuggetGold
<p>
+
*nuggetIron
 鉱石辞書は他のmodとのアイテムの共有を実現するAPIである. それ以外にもメタデータを使った煩雑な(可読性の低い)コードを回避する手段としても利用可能である.
+
宝石/粉
</p>
+
*gemDiamond
 +
*gemEmerald
 +
*gemQuartz
 +
*gemPrismarine
 +
*dustPrismarine
 +
*dustRedstone
 +
*dustGlowstone
 +
*gemLapis
 +
貯蔵用ブロック
 +
*blockGold
 +
*blockIron
 +
*blockLapis
 +
*blockDiamond
 +
*blockRedstone
 +
*blockEmerald
 +
*blockQuartz
 +
*blockCoal
 +
作物
 +
*cropWheat
 +
*cropPotato
 +
*cropCarrot
 +
*cropNetherWart
 +
*sugarcane
 +
*blockCactus
 +
素材
 +
*dye
 +
*dye{色名}
 +
*paper
 +
モブのドロップ品
 +
*slimeball
 +
*enderpearl
 +
*bone
 +
*gunpowder
 +
*string
 +
*netherStar
 +
*leather
 +
*feather
 +
*egg
 +
レコード
 +
*record
 +
ブロック
 +
*dirt
 +
*grass
 +
*stone
 +
*cobblestone
 +
*gravel
 +
*sand
 +
*sandstone
 +
*netherrack
 +
*obsidian
 +
*glowstone
 +
*endstone
 +
*torch
 +
*workbench
 +
*blockSlime
 +
*blockPrismarine
 +
*blockPrismarineBrick
 +
*blockPrismarineDark
 +
*stoneGranite
 +
*stoneGranitePolished
 +
*stoneDiorite
 +
*stoneDioritePolished
 +
*stoneAndesite
 +
*stoneAndesitePolished
 +
*blockGlassColorless
 +
*blockGlass
 +
*blockGlass{色名}
 +
*paneGlassColorless
 +
*paneGlass
 +
*paneGlass{色名}
 +
チェスト
 +
*chest
 +
*chestWood
 +
*chestEnder
 +
*chestTrapped
  
 
==各種MODで登録されるアイテム==
 
==各種MODで登録されるアイテム==

2017年3月15日 (水) 18:47時点における版

この記事は"Minecraft Forge4.3x~"を前提MODとしています。

鉱石辞書の利用

鉱石辞書(OreDictionary)は異なるmod間でのアイテム共有のための機能である。forge前提の大型modでは, 青銅などが鉱石辞書に登録され利用できるようになっている。鉱石辞書という名前ではあるものの、鉱石に限らずあらゆるアイテムを登録できる。鉱石辞書はnet.minecraftforge.oredictパッケージで提供される機能である。
対象となるアイテムがそれぞれの環境で存在しなくても落ちることはないため、簡易な連携要素として気軽に利用できる機能である。

基本的な使い方

  • 鉱石辞書への登録

 鉱石辞書への登録はOreDictionaryクラスのregisterOreメソッドを利用する. registerOreメソッドはBlock, Item, ItemStackのどの形式でも登録できることが特徴である.

public static void registerOre(String name, Item      ore)
public static void registerOre(String name, Block     ore)
public static void registerOre(String name, ItemStack ore)

 すなわち、鉱石辞書は文字列をキーとして共有する機能を提供している。他のmodのBlockやItemへの参照がなくとも、文字列を指定しておけば読み込まれたときに自動で関連付けされる。

鉱石辞書を利用したレシピの追加

 鉱石辞書を利用したレシピを追加する場合、ShapedOreRecipeShapelessOreRecipeを利用する。

GameRegistry.addRecipe(
    new ShapedOreRecipe(
        new ItemStack(silvershovel, 1),
        "X", "Y", "Y",
        'X', "ingotSilver",
        'Y', "stickWood"
    )
);

 定形レシピの例である。つまりは、今まで直接していた箇所を鉱石辞書で登録した文字列にするだけでできる。

GameRegistry.addRecipe(
    new ShapelessOreRecipe(
        new ItemStack(ingotSilverIron, 1),
        "ingotSilver", "ingotIron"
    )
);

 不定形レシピの例、基本的には定形レシピと同じ。

鉱石辞書に登録する際のルール

基本的にはプレフィックス+アイテム名と言う形式になっている。鉱石ならoreXXX、インゴットならingotXXXと言った具合である。プレフィックスで種類を判定しているModも多々あるため、ある程度一般的なアイテムであるならば鉱石辞書に登録するべきである。
以下にMinecraftForge(1.11.2-13.20.0.2210現在)によって追加されている鉱石辞書名を挙げる。

木/材木関係

  • logWood
  • plankWood
  • slabWood
  • stairWood
  • stickWood
  • treeSapling
  • treeLeaves
  • vine

鉱石

  • oreGold
  • oreIron
  • oreLapis
  • oreDiamond
  • oreRedstone
  • oreEmerald
  • oreQuartz
  • oreCoal

インゴット/ナゲット

  • ingotIron
  • ingotGold
  • ingotBrick
  • ingotBrickNether
  • nuggetGold
  • nuggetIron

宝石/粉

  • gemDiamond
  • gemEmerald
  • gemQuartz
  • gemPrismarine
  • dustPrismarine
  • dustRedstone
  • dustGlowstone
  • gemLapis

貯蔵用ブロック

  • blockGold
  • blockIron
  • blockLapis
  • blockDiamond
  • blockRedstone
  • blockEmerald
  • blockQuartz
  • blockCoal

作物

  • cropWheat
  • cropPotato
  • cropCarrot
  • cropNetherWart
  • sugarcane
  • blockCactus

素材

  • dye
  • dye{色名}
  • paper

モブのドロップ品

  • slimeball
  • enderpearl
  • bone
  • gunpowder
  • string
  • netherStar
  • leather
  • feather
  • egg

レコード

  • record

ブロック

  • dirt
  • grass
  • stone
  • cobblestone
  • gravel
  • sand
  • sandstone
  • netherrack
  • obsidian
  • glowstone
  • endstone
  • torch
  • workbench
  • blockSlime
  • blockPrismarine
  • blockPrismarineBrick
  • blockPrismarineDark
  • stoneGranite
  • stoneGranitePolished
  • stoneDiorite
  • stoneDioritePolished
  • stoneAndesite
  • stoneAndesitePolished
  • blockGlassColorless
  • blockGlass
  • blockGlass{色名}
  • paneGlassColorless
  • paneGlass
  • paneGlass{色名}

チェスト

  • chest
  • chestWood
  • chestEnder
  • chestTrapped

各種MODで登録されるアイテム

Forestry For Minecraftで登録されるアイテム(確認バージョン2.0.0.0)

  • oreCopper
  • oreTin
  • oreApatite
  • ingotTin
  • ingotCopper
  • ingotBronze
  • dustAsh
  • gearBronze
  • gearTin
  • gearCopper
  • itemPollen
  • itemBeeswax
  • dropHoneydew
  • dropHoney
  • dropRoyalJelly
  • pulpWood
  • brickPeat

IndustrialCraft2で登録されるアイテム(確認バージョン1.112.170)

  • oreCopper
  • oreTin
  • oreUranium
  • ingotTin
  • ingotBronze
  • ingotRefinedIron
  • ingotUranium
  • ingotCopper
  • dustSilver
  • dustTin
  • dustCoal
  • dustBronze
  • dustIron
  • dustClay
  • dustGold
  • dustCopper
  • dropUranium
  • woodRubber
  • itemRubber

RailCraftで登録されるアイテム(確認バージョン1.112.170)

  • oreSulfur
  • oreSaltpeter
  • ingotSteel
  • nuggetIron
  • nuggetSteel
  • dustObsidian
  • dustSulfur
  • dustSaltpeter
  • dustCharcoal
  • blockSteel
  • fuelCoke

Red Power2で登録されるアイテム(確認バージョン2.0pr6)

  • oreCopper
  • oreGreenSapphire
  • oreRuby
  • oreTungsten
  • oreTin
  • oreNikolite
  • oreSilver
  • oreSapphire
  • ingotTin
  • ingotSilver
  • ingotBrass
  • ingotCopper
  • nuggetTin
  • nuggetSilver
  • nuggetIron
  • nuggetCopper
  • dustNikolite
  • gemGreenSapphire
  • gemRuby
  • gemSapphire
  • woodRubber

Thaumcraft3で登録されるアイテム(確認バージョン3.0.2c)

  • nuggetTin
  • nuggetLead
  • nuggetSilver
  • nuggetIron
  • nuggetCopper

ThermalExpansionで登録されるアイテム(確認バージョン2.2.0)

  • oreLead
  • oreTin
  • oreCopper
  • oreSilver
  • oreNickel
  • ingotNickel
  • ingotSilver
  • ingotElectrum
  • ingotPlatinum
  • ingotTin
  • ingotLead
  • ingotInvar
  • ingotCopper
  • dustObsidian
  • dustTin
  • dustElectrum
  • dustLead
  • dustBrass
  • dustPlatinum
  • dustNickel
  • dustSilver
  • dustInvar
  • dustBronze
  • dustCopper
  • dustIron
  • dustGold
  • gearInvar
  • gearTin
  • gearCopper