LoginSignup
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-09-16

はじめに

ブロックの追加をしてみます。
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にてプロジェクトを公開しています。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3