ブログタイトルMOD

今回はアイテムじゃなくてブロックを追加していきたいと思います。
バイオームには関係なくクリエイトで作るタイプの簡単なものです。
アイテムが作れたら、ブロックも余裕で作ることができます。

今回もScratchとは関係ない記事です。

先生じゃなくて画像作ってる人が書いてるので
プログラミングはあんまり…な感じですが、がんばります!

なるべく小学生高学年ぐらいでわかるように図解していきたいと思います。

前回に引き続き、IntelliJ IDEAをつかって作っていきます。
Forgeのバージョンは1.8.9です。 


環境構築がまだのかたはこちら
デザイナがマイクラのmodをつくる-環境構築編-

mod初心者のかたは、このへんから試してみて下さい
デザイナがマイクラのmodをつくる -たべもの追加編-  

IntelliJ IDEAでマイクラModding-ブロック追加編-

まずはブロック用のjavaを作る

アイテムをついかするときにやった手順とほぼ同じなのですが
まずはブロック用のjavaをつくりましょう。
今回は内装に使えるような

CheckPat

こんなパターンのブロックを作りたいと思います。

まずはsrc/main/javaフォルダの中の、自分のパッケージ名のフォルダの上で
右クリックして、あたらしいjavaを作ります。
WS0102

ファイルの名前は「CheckPatternBlock」(チェックパターンブロック)という名前にしました。
そして、このファイルの中に、こんな感じのソースをかきます。

まずCheckPatternBlockクラスは、blockクラスを継承します。

最近知ったのですが、継承元のクラスを見たい時は
いちいちforgesrcの中の…とフォルダを開いていかなくても
WS0103
このクラス名の上で(今回ならBlockの上で)Ctrlキーを押しながらクリックすると
継承元のクラスが開きます。便利!

で、super(Material.rock);で何をしてるかっていうと
このBlockのなかの public Block()を呼び出してます。

WS0104
(クリックで拡大)

Blockクラスはめっちゃ長いので、検索窓でさがします。
Superなので自分の名前です。「public block(」で探してみて下さい。

すると2つでてきますね。引数の違いによって処理分けしてますがやってることは同じ。
今回は引数1こなので、まずマップのマテリアルカラー(マップ上のブロックの色)を設定してから
引数2このほうを実行してます。

ここではブロックのデフォルト値を設定しています。

さて、デフォルト値の設定がおわったら、チェックパターンブロック独自の設定をしていきましょう。
wikiの1.8ブロックの追加という記事を参考に、自分の好きな設定にします。

        setCreativeTab(CreativeTabs.tabBlock);/*クリエイティブタブの選択*/
        setUnlocalizedName("blockSample");/*システム名の設定*/
        /*以下のものは消しても結構です*/
        setHardness(1.5F);/*硬さ*/
        setResistance(1.0F);/*爆破耐性*/
        setStepSound(Block.soundTypeStone);/*ブロックの上を歩いた時の音*/
	/*setBlockUnbreakable();*//*ブロックを破壊不可に設定*/
	/*setTickRandomly(true);*//*ブロックのtick処理をランダムに。デフォルトfalse*/
	/*disableStats();*//*ブロックの統計情報を保存しない*/
        setLightOpacity(1);/*ブロックの透過係数。デフォルト0(不透過)*/
        setLightLevel(1.0F);/*明るさ 1.0F = 15*/



定型レシピと不定形レシピ

さて、メインのjavaにもどって、ワールドに追加していきましょう。

もうまったくアイテムの手順とおなじです。

preInitでブロックオブジェクトを作って。レジストリに登録して
クライアントの設定でモデルのリソースの場所を設定して

initでレシピの設定をする。
おわり!

だと寂しいので、今回はレシピにこだわってみました。
前回フライドポテトでやったレシピは「定型レシピ」といって、形が決まっているレシピでした。
WS0109

で、この書き方だと、クラフトの中央にポテトを置いたときしか
フライドポテトを作れないんですね。
WS0068

でも材料は同じなのにフライドポテトにならないなんておかしいですよね。
というわけで、ポテトは「不定形レシピ」にしてみました。形が決まってないレシピです。

WS0110

この部分ですね。このようにかくと
WS0108
こう置いても

WS0107
こう置いても
クラフトのどの位置においてもポテトができるようになります。

そして、定型レシピも、スペースなしの状態で書くと
("CC "じゃなくて”CC”にする)
WS0111

WS0106
こう置いたときも

WS0105
こう置いたときも
同じアイテムが作られるようになります。

ちなみに、不定形レシピは1つの素材だけじゃなく、複数の素材を指定することもできます。

GameRegistry.addShapelessRecipe(new ItemStack(friedPotato, 8), Items.potato,Items.potato,Items.potato);

こんな感じで、アイテムを続けて書くと
クラフトのマスが3つ、このアイテムで埋まったときにフライドポテトができるようになります。
場所はどこに置いてもOKです。


リソースの追加

ブロックのリソースはなんか多いです。
まず、フォルダを以下のようにつくって、それぞれにjsonファイルと画像ファイルを入れていきましょう。
WS0113

めんどくさいですが、がんばって追加していきます。
リソースの追加作業が一番だるいです。

blockstatesのjson

modelsのblockのjson

modelsのitemのjson


画像はこれをつかいます。
CheckPat

ランゲージファイルは、あってもなくてもいいですがこんな感じ。

これで全部完了です!「Run」して試してみましょう。

WS0114

ジャン!でました。

簡単に出たみたいに見えますけど、途中めっちゃ失敗してますからねw
でもポテトを出せた人は、比較的カンタンにブロックも出せたのではないでしょうか。

次回は植物の追加をやろうかなって思ってます。
調べつつなので結構時間かかると思いますが、お楽しみに~