概要
前回、独自鉱石を作成してみました
今回はその鉱石とインゴットをクラフトに使えるようにレシピを追加してみます
環境
- macOS X 10.13.2
- Minecraft 1.12.2
- Forge 1.12.2 - 14.23.1.2555
- Forge MDK 1.12.2 - 14.23.1.2555
- Java 1.8.0_151
- eclipse Oxygen.1a Release (4.7.1a)
com.sample.mod.handlers の作成
- RecipeHandler.java
package com.sample.mod.handlers;
import com.sample.mod.init.BlockInit;
import com.sample.mod.init.ItemInit;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class RecipeHandler {
public static void registerCrafting() {
GameRegistry.addShapedRecipe(new ResourceLocation("sm:sample_ore"), new ResourceLocation("sm:sample_blocks"), new ItemStack(BlockInit.sample_ore), new Object[] {"SSS", "SIS", "SSS", 'S', Blocks.STONE, 'I', ItemInit.sample_ingot});
}
public static void registerSmelting() {
GameRegistry.addSmelting(BlockInit.sample_ore, new ItemStack(ItemInit.sample_ingot), 10);
}
}
ポイントは GameRegistry.addShapedRecipe
と GameRegistry.addSmelting
を使ってクラフトと精錬の定義を追加するという点です
まずクラフトレシピの追加に使う addShapedRecipe は 4 つの引数を使います
1 つ目はどのアイテムのレシピとして登録するか指定します
2 つ目は登録するレシピをどのグループのレシピに登録するか指定します
今回であれば sample_ore のクラフトであり sample_blocks のグループにレシピを登録します
3 つ目は実際にできる成果物です
今回はインゴットと石を使って独自鉱石を作成します
そして 4 つ目が作業台を使ってクラフトする際のレシピになります
Object クラスの配列として作成します
配列の使用するアイテムの数で上限するので可変です
new Object[] {"SSS", "SIS", "SSS", 'S', Blocks.STONE, 'I', ItemInit.sample_ingot}
今回の場合であれば S -> STONE と I -> 独自インゴットをクラフトに使うように定義しています
そして 3x3 のクラフトマスにどうやってそれらを配置するか定義します
各行ごとに String で定義する必要があり例えば "SSS"
であれば一番上は石を 3 つ配置するということになります
ちなみに今回は 3x3 全部にアイテムを置くようにレシピを作成していますがピッケルや斧のように全マスを使用しないレシピなどの場合は半角スペースを使うことで空を表現することができます
精錬はかまどを使って作成することができるレシピです
その場合は addSmelting
を使います
第一引数に精錬にしようするアイテムを指定して第二引数に作成されるアイテムを指定します
そして第三引数の数字は精錬時に取得できる経験値を指定します
- RegistyHandler.java
package com.sample.mod.handlers;
import com.sample.mod.init.BlockInit;
import com.sample.mod.init.ItemInit;
public class RegistyHandler {
public static void Client() {
RecipeHandler.registerCrafting();
RecipeHandler.registerSmelting();
}
public static void Common() {
ItemInit.init();
ItemInit.register();
BlockInit.init();
BlockInit.register();
BlockInit.registerRenders();
}
}
Client 側にレシピを登録する処理を追記します
これまでのも含めてパッケージエクスプローラは以下のようになっています
動作確認
では動作確認してみます
テストには作業台とレシピ、石、独自インゴット、燃料 (今回は石炭) が必要になるのでインベントリから取得しておきましょう
まずクラフト側ですが指定の通りに石と独自インゴットを配置すると独自鉱石が生成できるようになっています
こんな感じです
次に精錬ですができた鉱石をそのまま精錬してみましょう
すると独自インゴットが作成できます
最後に
独自のクラフトレシピと精錬レシピを作成してみました
アイテムを追加したりするよりかはずっと簡単に作成できると思います
が、基本はその前に鉱石なりインゴットなり各種アイテムを作成しておく必要があるかなと思います
今回は鉱石とインゴットのレシピだけでしたがインゴットを生成したら武器なり防具なりを生成したくなります
それも同じようにレシピを登録するだけでできます
ただ、その際は武器や防具なりのアイテムの登録が必要になるのでやってみたい方はまずそこからやってみてください
また作業台を使わないでもクラフトできる不定形レシピも登録することができその場合は addShapelessRecipe
を使います
不定形レシピとは例えば原木から木材を作成するレシピのようなことを指します
0 件のコメント:
コメントを投稿