Edited at

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


はじめに

ブロックの追加をしてみます。

2019-09-16_23.34.09.png

参考

Minecraft Modding Tutorial for MC 1.14/1.14.3 - Basic Blocks


💻開発環境

ここでは環境は以下のようにします。


  • Windows 10

  • JDK 8u211

  • Minecraft 1.14.4

  • Minecraft Forge 1.14.4 (28.1.0)

  • IntelliJ IDEA 2019.1.4


ブロックの宣言

前回同様、listフォルダ内にBlockList.javaを作成しブロックの宣言だけ記述します。

琵琶湖ブロック、略して琵ロックを追加しようと思います。(ナニソレ)


BiwakoBlock.java

package jp.yuyu.biwako_mod.lists;

import net.minecraft.block.Block;

public class BlockList {
public static Block BiwakoBlock;
}



ブロックの登録

ブロックの登録と同時にパラメータの指定も行います。

今回のブロックにはMaterial.IRONを指定しましが、これは、


  • マッピングにおけるカラー(MaterialColor.IRON)

  • 破壊にツールを必要とする

が指定されたMaterialです。他にもプロパティがあり、


  • ブロックが燃えるかどうか

  • ブロックがピストンなどで押すことができるかどうか

  • ブロックが雪や葉っぱのように半透明かどうか

などを指定したMaterialを自作することもできます。

詳しくはBasic blocks - Minecraft Modding Wiki

net.minecraft.block.material.Material.javaに書かれています。

hardnessは採掘時のブロックの硬さ、Resistanceはブロックの爆発耐性です。

lightValueは0以外の時光源として働く。おそらく値の範囲は0~15である。

soundはブロック破壊時に再生される音を指定できる。


BiwakoMod.java

        @SubscribeEvent

public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
LOGGER.info("HELLO from Register Block");
blockRegistryEvent.getRegistry().registerAll(
BlockList.BiwakoBlock = new Block(Block.Properties.create(Material.IRON)
.hardnessAndResistance(2.0f, 3.0f)
.lightValue(5)
.sound(SoundType.METAL))
.setRegistryName(new ResourceLocation(MOD_ID, "biwako_block"))
);
}


アイテムの宣言

ブロックはブロックとして存在するのは当たり前ですが、アイテムとしても存在するため

同様に登録する必要があります。


ItemList.java

package jp.yuyu.biwako_mod.lists;

import net.minecraft.item.Item;

public class ItemList {
public static Item BiwakoIngot;
public static Item BiwakoBlock;
}



アイテムの登録

ブロックの場合はBlockItemクラスのインスタンスを登録します。

引数には、対応するBlock型のメンバ、クリエイティブタブのプロパティを渡します。


BiwakoMod.java

    @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)

public static class RegistryEvents {
@SubscribeEvent
public static void onItemsRegistry(final RegistryEvent.Register<Item> itemRegistryEvent) {
LOGGER.info("HELLO from Register Item");
itemRegistryEvent.getRegistry().registerAll(
ItemList.BiwakoIngot = new Item(new Item.Properties().group(ItemGroup.MISC))
.setRegistryName(new ResourceLocation(MOD_ID, "biwako_ingot")),
ItemList.BiwakoBlock = new BlockItem(BlockList.BiwakoBlock, new Item.Properties().group(ItemGroup.MISC))
.setRegistryName(BlockList.BiwakoBlock.getRegistryName())
);
}


リソース

ブロックの場合は3つのjsonファイルを記述する必要があります。

今回は、最初なので基本的なテクスチャのブロックを追加します。


フォルダの作成

以下の3つのフォルダを作成します。

/src/main/resources/assets/biwako_mod/blockstates

/src/main/resources/assets/biwako_mod/models/block

/src/main/resources/assets/biwako_mod/textures/blocks

        └─resources

│ logo.png
│ pack.mcmeta

├─assets
│ └─biwako_mod
│ ├─*blockstates
│ │ biwako_block.json
│ │
│ ├─lang
│ │ en_us.json
│ │ ja_jp.json
│ │
│ ├─models
│ │ ├─*block
│ │ │ biwako_block_model.json
│ │ │
│ │ └─item
│ │ biwako_block.json
│ │ biwako_ingot.json
│ │
│ └─textures
│ ├─*blocks
│ │ biwako_block.png
│ │
│ └─items
│ biwako_ingot.png


block model

ブロックの見た目のこと。

ビーコンのような複雑なテクスチャもblock modelで設定するようです。

RSランプのように点滅するブロックは、点灯時と消灯時のmodelをそれぞれ別で用意し、

次のblock statesで状態とblock modelを指定することで実装します。

今回は全面同じテクスチャのブロックとします。

テクスチャの配置場所は

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

です。

biwako_block.png

jsonファイルは

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

です。


biwako_block_model.json

{

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


block states

ブロックの状態に合わせてblock modelを指定します。

今回は状態が1つしかないブロックにするので、空欄にしておきます。

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

jsonファイルは

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

に配置します。


biwako_block.json

{

"variants": {
"": { "model": "biwako_mod:block/biwako_block_model" }
}
}


item model

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

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

jsonファイルは

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

に配置します。


biwako_block.json

{

"parent":"biwako_mod:block/biwako_block_model"
}


翻訳ファイル


en_us.json

{

"item.biwako_mod.biwako_ingot": "Biwako Ingot",
"block.biwako_mod.biwako_block": "Biwako Block"
}


ja_jp.json

{

"item.biwako_mod.biwako_ingot": "琵ンゴット",
"block.biwako_mod.biwako_block": "琵ロック"
}


Minecraftの起動

2019-09-16_23.33.46.png

2019-09-16_23.34.09.png

ちょっとだけ発光しているのが分かりますね


Githubにてプロジェクトを公開しています。