Edited at

Minecraft 1.12.2 Forge Modの作成 その4 【ブロックの追加】


はじめに

琵琶湖ツールを完成させる予定でしたが、予定を変更して、

今回は、ブロックの追加をしてみたいと思います。

MODの作成において主に以下のサイトを参考にさせていただきます。

チュートリアル一覧


💻開発環境


  • Windows 10

  • JDK 8u211

  • Minecraft 1.12.2

  • Minecraft Forge 1.12.2 (14.23.5.2838)

  • IntelliJ IDEA 2019.1.3


メンバーの追加

今までの無機能アイテム、ツールは、どちらもアイテムという扱いでした。

今回のブロックについては、アイテムとしても存在し、ブロックとしても存在します。

ということで、2つ追加します。


Biwako_mod.java

    @GameRegistry.ObjectHolder(MOD_ID)

public static class Blocks {
public static final Block biwakoBlock = null; /** 琵琶湖ブロック */
}

@GameRegistry.ObjectHolder(MOD_ID)
public static class Items {
public static final Item biwakoBlock = null; /** 琵琶湖ブロック */
}



アイテムの登録

ブロックのアイテムの登録をします。

ブロックの場合、ItemBlockのインスタンスを引数として渡します。

ItemBlockの引数には、Blocksのメンバーを渡し、

setRegistryNameメソッドで、登録名だけ設定しておきます。


Biwako_mod.java

    @Mod.EventBusSubscriber

public static class ObjectRegistryHandler {
@SubscribeEvent
public static void addItems(RegistryEvent.Register<Item> event) {
event.getRegistry().registerAll(
new ItemBlock(Blocks.biwakoBlock).setRegistryName("biwakoblock")
);
}
}


ブロックの登録

ブロックとしてのパラメータをここで追加します。

基本的な記述方法はアイテムの時と同じ。

Blockの引数にはMaterialを渡すのですが、どうやらいろんなパラメータがあるそうです。

透明とか、破壊にツールを必要とするとか。ここでは無難にMaterial.ROCKを設定しています。

(オリジナルのMaterialも追加できるのかな)

情報はver 1.6.4のものですが、参考に。

Minecraft 1.6.4 Material


Biwako_mod.java

    @Mod.EventBusSubscriber

public static class ObjectRegistryHandler {
@SubscribeEvent
public static void addBlocks(RegistryEvent.Register<Block> event) {
event.getRegistry().registerAll(
new Block(Material.ROCK)
.setRegistryName(MOD_ID, "biwakoblock")/*登録名の設定*/
.setCreativeTab(CreativeTabs.BUILDING_BLOCKS)/*クリエイティブタブの選択*/
.setTranslationKey("biwakoblock")/*システム名の設定*/
.setHardness(1.5F) /*硬さ*/
.setResistance(1.0F) /*爆破耐性*/

);
}
}



モデルの登録

いつも通り。


Biwako_mod.java

    @Mod.EventBusSubscriber

public static class ObjectRegistryHandler {
@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomModelResourceLocation(Items.biwakoBlock, 0, new ModelResourceLocation(Items.biwakoBlock.getRegistryName(), "inventory"));
}
}


リソース

アイテムとは異なり、いくつか設定する項目があります。

ver 1.8のブロック追加の解説を参考に。


blockmodel

ブロックのモデルをここで設定する。

適用したいテクスチャの配置場所は、

/src/main/resources/assets/biwako_mod/textures/blocks/biwakoblock.png

です。

今回は、全面同じテクスチャのブロックにしますが、

ビーコンみたいな、複雑なテクスチャも(jsonファイル覗いてみた感じおそらく)ここで設定するっぽい。

jsonファイルは

/src/main/resources/assets/biwako_mod/models/block/biwakoblock_model.json

に配置します。


biwakoblock_model.json

{

"parent":"block/cube_all",
"textures":{"all":"biwako_mod:blocks/biwakoblock"}
}


blockstates

ブロックの状態。

作物の成長過程別にリソースを設定したい場合など。

今回は状態が1つしかないので、normalを指定する。

指定するmodelは上のblockmodelで作成したjsonファイルの名前です。

jsonファイルは

/src/main/resources/assets/biwako_mod/blockstates/biwakoblock.json

に配置します。


biwakoblock.json

{

"variants": {
"normal": { "model": "biwako_mod:biwakoblock_model" }
}
}


item model

最後にアイテムのモデルを設定します。

ブロックのモデルと同じなので、それ(jsonファイル名)を指定します。

jsonファイルは

/src/main/resources/assets/biwako_mod/models/item/biwakoblock.json

に配置します。


biwakoblock.json

{

"parent":"biwako_mod:block/biwakoblock_model"
}


レシピの追加

砂を琵琶湖の水で固めるイメージ。


biwakoblock_recipe.json

{

"type": "minecraft:crafting_shaped",
"pattern": [
"BBB",
"BSB",
"BBB"
],
"key": {
"B": [
{
"item": "biwako_mod:biwakowater",
"data": 0
}
],
"S": [
{
"item": "minecraft:sand",
"data": 0
}
]
},
"result": {
"item": "biwako_mod:biwakoblock",
"data": 0,
"count": 1
}
}


lang


en_US.lang

tile.biwakoblock.name=Biwako Block



ja_JP.lang

tile.biwakoblock.name=琵琶湖ブロック



minecraftの起動

2019-08-27_22.24.54.png

2019-08-27_22.25.37.png

真っ青なブロック...。テクスチャ、まじでどうしよう...。

このテクスチャは、毎度のことながらバニラの水ブロックのものをお借りしたのですが、

手持ちしか半透明になってないですね...。

うーん。とりあえず、目標は達成です。


おわりに

ブロックの追加ができました。

単にアイテムやブロックの追加をしてきただけで、パラメータの設定を適当にしてきてしまっている感じ。

テクスチャも適当なので、そこら辺をなんとかしたいな、と思いつつもプログラミングが楽しくって...。

MODのネタもいくつか新しく増えたので、書き方の情報集めて勉強しないと...!

頑張ります!!

現在開発中の琵琶湖MODですが、Githubにてプロジェクトを公開しています。


次回こそはツールを完成させる?

Minecraft 1.12.2 Forge Modの作成 その1 【開発環境の準備 IntelliJ IDEA】

Minecraft 1.12.2 Forge Modの作成 その2 【mcmod.infoの編集と無機能アイテムの追加】

Minecraft 1.12.2 Forge Modの作成 その3 【剣の追加とレシピ登録,クラフト後に返ってくるアイテムの設定】

Minecraft 1.12.2 Forge Modの作成 その4 【ブロックの追加】

2018/08/27 初版