はじめに
今回は、マイクラのMod開発として追加したオリジナルブロックに対して硬度の設定や採掘可能な道具の設定をしていきたいと思います。
前提
以下記事を参考にModの開発環境が構築されていること。
【参照】
【開発環境構築】VSCodeでMinecraft(Java版)のMOD作成環境を構築する – SEもりのLog (selifemorizo.com)
【Java + Mod開発】Minecraftで作成するModの名前を変更してみる – SEもりのLog (selifemorizo.com)
【Java + Mod開発】オリジナルのアイテムを追加してみる – SEもりのLog (selifemorizo.com)
フォルダ構成
赤字のフォルダ・ファイルが今回必要な追加・修正対象になります。
│ .gitattributes
│ .gitignore
│ build.gradle
│ changelog.txt
│ CREDITS.txt
│ gradle.properties
│ gradlew
│ gradlew.bat
│ LICENSE.txt
│ README.txt
│ runClient.launch
│ runData.launch
│ runGameTestServer.launch
│ runServer.launch
│ settings.gradle
│
├─.vscode
│ settings.json
└─src
├─generated
│ └─resources
├─main
│ ├─java
│ │ └─com
│ │ └─mori
│ │ └─morimod
│ │ │ Config.java
│ │ │ MoriMod.java
│ │ │
│ │ ├─blocks
│ │ │ MoriModBlock.java
│ │ │
│ │ └─items
│ │ MoriModItem.java
│ │
│ └─resources
│ │ pack.mcmeta
│ │
│ ├─assets
│ │ └─morimod
│ │ ├─blockstates
│ │ │ moriblock.json
│ │ │ mo_block.json
│ │ │ ri_block.json
│ │ │
│ │ ├─lang
│ │ │ en_us.json
│ │ │ ja_jp.json
│ │ │
│ │ ├─models
│ │ │ ├─block
│ │ │ │ moriblock.json
│ │ │ │ mo_block.json
│ │ │ │ ri_block.json
│ │ │ │
│ │ │ └─item
│ │ │ moriblock.json
│ │ │ moriitem.json
│ │ │ moriitem2.json
│ │ │ mo_block.json
│ │ │ ri_block.json
│ │ │
│ │ └─textures
│ │ ├─block
│ │ │ moriblock.png
│ │ │ mo_block.png
│ │ │ ri_block.png
│ │ │
│ │ └─item
│ │ moriitem.png
│ │ moriitem2.png
│ │
│ ├─data
│ │ ├─minecraft
│ │ │ └─tags
│ │ │ └─blocks
│ │ │ │ needs_diamond_tool.json
│ │ │ │ needs_iron_tool.json
│ │ │ │ needs_stone_tool.json
│ │ │ │
│ │ │ └─mineable
│ │ │ axe.json
│ │ │ hoe.json
│ │ │ pickaxe.json
│ │ │ shovel.json
│ │ │
│ │ └─morimod
│ │ ├─loot_tables
│ │ │ └─blocks
│ │ │ moriblock.json
│ │ │ mo_block.json
│ │ │ ri_block.json
│ │ │
│ │ └─recipes
│ │ moriblock.json
│ │ moriitem_from_block.json
│ │
│ └─META-INF
│ mods.toml
│
ソース編集
MoriModBlock.java
ブロック追加を参考に2つのブロックを新たに追加します。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/**
* ブロックMod用クラス
*/
public class MoriModBlock {
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// もブロック
public static final RegistryObject<Block> MO_BLOCK =
registerBlock("mo_block",
() -> new Block(BlockBehaviour.Properties.of().
mapColor(MapColor.METAL)
.requiresCorrectToolForDrops() // 道具の設定が必要になるメソッド
.strength(2.0F, 3.0F) // 硬度の設定
.sound(SoundType.METAL)));
// りブロック
public static final RegistryObject<Block> RI_BLOCK =
registerBlock("ri_block",
() -> new DropExperienceBlock(BlockBehaviour.Properties.of()
.mapColor(MapColor.DIAMOND)
.requiresCorrectToolForDrops() // 道具の設定が必要になるメソッド
.strength(5.0F, 6.0F) // 硬度の設定
.sound(SoundType.METAL),
UniformInt.of(3, 6)));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
MoriMod.java
Modの大元のクラスでブロックMod用のクラスを読み込みます。
@Mod(MoriMod.MODID)
public class MoriMod
{
~~~~~~~~~~~~~~~
// Add the example block item to the building blocks tab
private void addCreative(BuildCreativeModeTabContentsEvent event)
{
// クリエイティブモードのタブにアイテムをセット
// INGREDIENTSは材料のグループになる
if (event.getTabKey() == CreativeModeTabs.INGREDIENTS) {
event.accept(MoriModItem.MORIITEM.get());
}
// クリエイティブモードのタブにアイテムをセット
// BUILDING_BLOCKSは建材
if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) {
event.accept(MoriModBlock.MORIBLOCK.get());
event.accept(MoriModBlock.MO_BLOCK.get());
event.accept(MoriModBlock.RI_BLOCK.get());
}
}
~~~~~~~~~~~~~~~
}
設定の追加
ブロック追加設定
blockstates/mo_block.json と ri_block.json
{
"variants": {
"": {
"model": "morimod:block/mo_block"
}
}
}
block/mo_block.json と ri_block.json
{
"parent": "block/cube_all",
"textures":{
"all": "morimod:block/mo_block"
}
}
item/mo_block.json と ri_block.json
{
"parent": "morimod:block/mo_block"
}
テクスチャ格納
画像サイズは、できる限り小さくしたほうが良いです。
ルートテーブル設定
ルートテーブル追加を参考に設定を追加します。
loot_tables/blocks/mo_block.json と ri_block.json
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "morimod:mo_block"
}
],
"rolls": 2.0
}
],
"random_sequence": "minecraft:blocks/mo_block"
}
採掘可能な道具の設定
data/minecraft/tags/blocks/mineable/pickaxe.json
採掘可能道具をピッケルに設定します。
{
"replace": false,
"values":[
"morimod:mo_block",
"morimod:ri_block"
]
}
data/minecraft/tags/blocks/needs_stone_tool.json
石ツールで採掘可能設定をします。
{
"replace": false,
"values": [
"morimod:mo_block"
]
}
data/minecraft/tags/blocks/needs_iron_tool.json
鉄ツールで採掘可能設定をします。
{
"replace": false,
"values": [
"morimod:ri_block"
]
}
実行確認
実際にマイクラを実行してアイテムを採掘してみましょう!
鉄ピッケルと石ピッケルで採掘速度とドロップの可否が分かれていたら成功です。
公式サイト
最後に
以上、ログになります。
これからも継続していきましょう!!
コメント