8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 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にてプロジェクトを公開しています。

8
3
0

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
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?