【Java + Mod開発】Minecraftでオリジナルの食料を追加する方法

Java

はじめに

今回は、マイクラのMod開発としてオリジナルの食料を追加していきたいと思います。追加する食料はハンバーガーです!

 

前提

ドロップ作成の前提として、以下記事を参考にModの開発環境が構築されていること。

【参照】
【開発環境構築】VSCodeでMinecraft(Java版)のMOD作成環境を構築する – SEもりのLog (selifemorizo.com)

【Java + Mod開発】オリジナルのアイテムを追加してみる – SEもりのLog (selifemorizo.com)

【Java + Mod開発】オリジナルのブロックをMinecraftで追加してみる – SEもりのLog (selifemorizo.com)

 

ハンバーガーのイラスト取得

いらすとやから画像取得

ハンバーガーの検索結果 | かわいいフリー素材集 いらすとや (irasutoya.com)

 

ハンバーガーをMinecraftに追加する

フォルダ構成

赤字のフォルダ・ファイルが今回必要な追加・修正対象になります。

└─src
    ├─generated
    │  └─resources
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─mori
    │  │          └─morimod
    │  │              │  Config.java
    │  │              │  MoriMod.java
    │  │              │
    │  │              ├─blocks
    │  │              │      MoriModBlock.java
    │  │              │
    │  │              └─items
    │  │                  │   MoriModItem.java
    │  │                  │   MoriModFood.java
    │  │                  └─customize
    │  │                          JudgeItem.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
    │      │      │          humbarger.json
    │      │      │          judge_rod.json
    │      │      │          moriblock.json
    │      │      │          moriitem.json
    │      │      │          moriitem2.json
    │      │      │          mo_block.json
    │      │      │          ri_block.json
    │      │      │
    │      │      └─textures
    │      │          ├─block
    │      │          │      moriblock.png
    │      │          │      mo_block.png
    │      │          │      ri_block.png
    │      │          │
    │      │          └─item
    │      │                  humbarger.png
    │      │                  judge_rod.png
    │      │                  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
    │      │              humbarger.json
    │      │              moriblock.json
    │      │              moriitem_from_block.json
    │      │
    │      └─META-INF
    │              mods.toml

 

ソース編集

MoriModFood.java

ハンバーガーの情報を定義します。

package com.mori.morimod.items;

import net.minecraft.world.effect.MobEffectInstance;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.food.FoodProperties;

public class MoriModFood {
    public static final FoodProperties HUMBARGER = new FoodProperties.Builder()
    .nutrition(4)      // 空腹回復値
    .saturationMod(0.3F)
    .effect(() -> new MobEffectInstance(MobEffects.MOVEMENT_SPEED, 400) // 20秒間速度向上バフ
    ,0.6F) // 60%の確率
    .build();
}

 

MoriModItem.java

アイテム自体の定義を実施する。

package com.mori.morimod.items;

import com.mori.morimod.MoriMod;
import com.mori.morimod.items.customize.IronSearcherItem;
import com.mori.morimod.items.customize.JudgeItem;

import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

/**
 * アイテムMod用クラス
 */
public class MoriModItem {
    // MODIDは自身で設定したものを指定します
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MoriMod.MODID);

    // アイテムオブジェクトの生成 第一引数のnemeはitemのIDを任意でつけます
    public static final RegistryObject<Item> MORIITEM = ITEMS.register("moriitem", () -> new Item(new Item.Properties()));

    // 2個目のアイテムを追加したい場合もオブジェクトを追加
    public static final RegistryObject<Item> MORIITEM2 = ITEMS.register("moriitem2", () -> new Item(new Item.Properties()));

    // ブロック鑑定ロッド
    public static final RegistryObject<Item> JUDGE_ROD = ITEMS.register("judge_rod",
    () -> new JudgeItem(new Item.Properties().durability(512)));

    // ハンバーガー
    public static final RegistryObject<Item> HUMBARGER = ITEMS.register("humbarger",
            () -> new Item(new Item.Properties().food(MoriModFood.HUMBARGER)));

    public static void register(IEventBus eventBus) {
        ITEMS.register(eventBus);
    }
}

 

設定の追加

models/item/humbarger.json

どのテクスチャをどういう形式で出力させるかを設定するファイルです。
ファイル名は自身でつけたアイテムのIDを設定します。

{
    "parent": "item/generated",
    "textures":{
        "layer0": "morimod:item/humbarger"
    }
}

 

textures

テクスチャ(画像データ)を格納します。

 

ja_jp.json

ゲーム内で表示するアイテム名を指定します。

{
    "item.morimod.moriitem": "もり アイテム",
    "item.morimod.moriitem2": "もり アイテム2",
    "item.morimod.judge_rod": "ブロック鑑定",

    "block.morimod.moriblock": "もり ブロック",
    "block.morimod.mo_block": "も ブロック",
    "block.morimod.ri_block": "り ブロック",

    "item.morimod.humbarger": "ハンバーガー",
}

 

レシピの設定

recipes/humbarger.json

ハンバーガーのレシピを設定します。

{
  "type": "minecraft:crafting_shaped",
  "category": "misc",
  "key": {
    "A": {
      "item": "minecraft:cooked_beef"
    },
    "B": {
      "item": "minecraft:egg"
    },
    "C": {
      "item": "minecraft:bread"
    }
  },
  "pattern": [
    "A",
    "B",
    "C"
  ],
  "result": {
    "item": "morimod:humbarger"
  },
  "show_notification": true
}

 

実行確認

実際にマイクラを実行してハンバーガーが追加されていることを確認しましょう!!

 

レシピの確認

レシピでハンバーガーが作成できました!

 

ハンバーガーを食べてみる

ハンバーガーを食べられることも確認します。
確認できたらオリジナルの食料の追加は完了です。

 

公式サイト

公式サイト | Minecraft

 

最後に

以上、ログになります。
これからも継続していきましょう!!

Javaゲーム趣味/その他
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました