うまげーむさん

ゲームの情報を主に投稿します。

【マインクラフト Modding】1.16での自作Modの作り方 #3 Modの設定

はじめに

どうも。パート3です。

今回はModの設定をしていきます。追加要素などはまた次のパートになります。

前回:
www.umagame.info

Modの構想

本題に入る前に、このシリーズで作っていくModについて少し触れておきます。

今回は、大手マインクラフトサーバー「Hypixel」のゲームの一つ「UHC(Ultra Hardcore)」に登場するアイテムをModで再現しようと思います。

UHCについての説明は省きます。気になる方のために日本語Wikiのページを貼っておきます。

w.atwiki.jp

ただUHCはレシピとアイテムが追加されているだけなので、ブロックやバイオームの解説の際にはUHCとあまり関係がないものを追加することになりそうです。

(その点でいうと、以前のシリーズ(1.15)で作った土Modはかなりやりやすかった)

名前はとりあえず「UHC Items Mod」とします。

Modの設定

リネーム

Modのメインクラスは、Forgeにもとから入っていた「ExampleMod.java」を元に作ります。

なのでまず、ExampleModからUHCItemsModに名前を変更していきましょう。

f:id:Umagame:20210114213058p:plain

パッケージの名前を変更します。「com.example.examplemod」を右クリックして、「リファクタリング」→「名前変更」をクリック。

f:id:Umagame:20210114213313p:plain

今回は「com.umagame.uhcitemsmod」にします。私はcomが何を意味しているのかわかりません。commonですかね?

f:id:Umagame:20210114213610p:plain

「ExampleMod.java」も同じようにリネームします。

f:id:Umagame:20210114213806p:plain

こんな感じ。

メインクラス

メインクラス(UHCItemsMod.java)のコードをいじっていきます。

f:id:Umagame:20210114214351p:plain

まず、画像で選択している部分はいらないのですべて消します。(メソッド「doClientStuff」、「enqueueIMC」、「processIMC」、「onServerStarting」、クラス「RegistryEvents」)

f:id:Umagame:20210114214707p:plain

消すとコンストラクタの中でエラーが起こるので(赤の波線が出ます)、エラーが起こっている部分もすべて消します。

f:id:Umagame:20210114215209p:plain

メソッド「setup」の中身も消します。「setup」は、マインクラフト起動時に呼び出されます。

f:id:Umagame:20210114215426p:plain

そして、「LOGGER」をpublicにしておきます。(「private」と書いていた部分を「public」に書き換えます)

f:id:Umagame:20210114215626p:plain

「@Mod」のところの「examplemod」を、自分のModのModIDで書き換えます。

ModIDはMod固有のIDで、他のModと被るとエラーが起こってしまいます。また、基本的に小文字で設定します。

ModIDはそのModのアイテムなどをゲーム上で指定するときに使われます。(マインクラフトの石ブロックは「minecraft:stone」となるように、〇〇Modのアイテムは「〇〇ModのModID:アイテムのID」と処理されます)

f:id:Umagame:20210114220328p:plain

使われていないimportがあるので、Ctrl+Shift+Oを押してimportのところをスッキリさせます。

package com.umagame.uhcitemsmod;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

// The value here should match an entry in the META-INF/mods.toml file
@Mod("uhcitems")
public class UHCItemsMod
{
    // Directly reference a log4j logger.
    public static final Logger LOGGER = LogManager.getLogger();

    public UHCItemsMod() {
        // Register the setup method for modloading
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);

        // Register ourselves for server and other game events we are interested in
        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event)
    {
        // some preinit code
    }
}

最終的にこんな感じになりました。これでメインクラスはOKです。

コメントは消しても大丈夫です。(私はあまりModdingに詳しくないので、一応コメントを残しています)

Modの説明欄

f:id:Umagame:20210114221149p:plain

src/main/resourcesの「META-INF」の中にある、「mods.toml」を開きます。

f:id:Umagame:20210114221741p:plain

めちゃくちゃややこしそう...と思うかもしれませんが、ほとんどコメントです。

f:id:Umagame:20210114222222p:plain

コメントと、いらない項目を削除しました。めっちゃ短くなりましたね。

このファイルで最も重要なのは、「modId」の部分です。ここはさっき設定したModIDにしましょう。

他の項目は適当に設定していきます。(今回は省きましたが、pngファイルでアイコンを設定したりすることもできます)

modLoader="javafml"
loaderVersion="[35,)"
license="All rights reserved"

[[mods]]
modId="uhcitems"
version="1.0"
displayName="UHC Items Mod"
displayURL="https://www.umagame.info"
credits="ご購読ありがとうございます"
authors="うまげーむ(Umagame)"
description='''
Hypixel UHCのアイテムを再現したModです。
'''

最終的にこんな感じになりました。

これでmods.tomlファイルはOKです。

起動して確認

実際にマインクラフトを起動して、説明欄が反映されているかチェックしましょう。

f:id:Umagame:20210114223105p:plain

ちゃんと反映されていました。

さいごに

今回はここまでです。

次回、ようやくModに要素を追加していきます。

次回:
www.umagame.info