はじめに
参考
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
を作成しブロックの宣言だけ記述します。
琵琶湖ブロック、略して琵ロックを追加しようと思います。(ナニソレ)
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
はブロック破壊時に再生される音を指定できる。
@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"))
);
}
アイテムの宣言
ブロックはブロックとして存在するのは当たり前ですが、アイテムとしても存在するため
同様に登録する必要があります。
package jp.yuyu.biwako_mod.lists;
import net.minecraft.item.Item;
public class ItemList {
public static Item BiwakoIngot;
public static Item BiwakoBlock;
}
アイテムの登録
ブロックの場合はBlockItem
クラスのインスタンスを登録します。
引数には、対応するBlock型のメンバ、クリエイティブタブのプロパティを渡します。
@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
です。
jsonファイルは
/src/main/resources/assets/biwako_mod/models/block/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
に配置します。
{
"variants": {
"": { "model": "biwako_mod:block/biwako_block_model" }
}
}
item model
最後にアイテムのモデルを設定します。
ブロックのモデルと同じなので、それ(jsonファイル名)を指定します。
jsonファイルは
/src/main/resources/assets/biwako_mod/models/item/biwako_block.json
に配置します。
{
"parent":"biwako_mod:block/biwako_block_model"
}
翻訳ファイル
{
"item.biwako_mod.biwako_ingot": "Biwako Ingot",
"block.biwako_mod.biwako_block": "Biwako Block"
}
{
"item.biwako_mod.biwako_ingot": "琵ンゴット",
"block.biwako_mod.biwako_block": "琵ロック"
}
Minecraftの起動
Githubにてプロジェクトを公開しています。