はじめに
どうも。
皆さんはマインクラフトをサバイバルでやってて、エンチャなしの石・鉄ツルハシの遅さにイライラした経験ってありますか?
私は数え切れないぐらいありますね。
効率5とビーコンがあればストレスフリーに作業ができるんですが、用意するのが結構めんどくさいんですよね。(特にビーコンのための鉱石ブロック)
ということで今回はこれをどうにかModの力で解決しようと思います。
1.16とか1.15のときの記事とは違ってこのシリーズはModを作るのがメインなので、解説は少なめです。
作り方自体は1.16のときとほぼ同じなので、詳しいModの作り方の解説がみたい方は1.16の記事をご覧ください。
www.umagame.info
もちろん、仕様が1.16のときと違っていたりした場合はその都度解説します。多分無いと思いますが。。。
このシリーズで作るMod
まず、このシリーズで作っていくModの概要を紹介しておきます。
サバイバルを快適にするModなので、とりあえずコスパの良いツールを追加します。
丸石とか石炭とか、簡単に手に入る素材でできるようにします。
流石に数個で作れちゃうとバランスが崩壊するので、大量のアイテムを圧縮したやつを素材にしようと思います。
(そういえば1.15のModding解説のときも圧縮レシピ作ってましたね。。。)
あと、村人厳選があまりにもめんどくさいので簡単に効率強化や修繕のエンチャントをつけれるようにもしたいと思います。
これは多分新しく鉱石を追加して、それを使ってエンチャント付与できるようにする的な感じになると思います。
ちなみに名前は「BetterToolsMod」にします。めっちゃ適当に決めました。(次回までにレシピなどをちゃんと決めておきます)
Modを作る
1.環境準備
Mod開発環境の構築は1.16のときと同じです。
Forgeの公式サイトから、1.17.1のMdkをダウンロードします。
解凍して、setup.batでセットアップを済ませておきます。
Eclipseを起動して、インポートします。
runClientでマインクラフトを起動できるか確認してみましょう...あれ?
なんか起動できません。「JREはプロジェクト .class ファイル互換性と矛盾します: 16」と表示されていますね。
JREに問題がありそうです。とりあえずJREのバージョンを16に変えてみます。
起動できましたが、なんか色々おかしくなりました。
原因がよくわからないので、Eclipseを入れ直してもう一回やることにします。
Full EditionならすべてのバージョンのJREが一緒に入っているらしいので、Eclipse 2021-06のJava Full Editionをダウンロードします。
エラーがなくなりました。やっぱりJREの不具合っぽかったですね。
ちゃんと起動できました。良かった。
2.Modの設定
Modの設定をしていきます。
Modのメインクラスと、それが入っているパッケージの名前を変えて(com.umagame.bettertoolsmod.BetterToolsMod.java)、コードをすっきりさせました。
src/main/resources/META-INF内のmods.tomlもすっきりさせておきます。
やったことは1.16のときと同じです。詳しくは1.16Modding解説パート3を参照。
また、ソースコードは記事の一番下に貼っておきます。
ちゃんと反映されました。
さいごに
ちょっと短いですが今回はここまでです。
次回からアイテムの追加をしていきます。(投稿日時は未定です)
次回:
www.umagame.info
BetterToolsMod.java
package com.umagame.bettertoolsmod;
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;
@Mod("bettertoolsmod")
public class BetterToolsMod
{
public static final Logger LOGGER = LogManager.getLogger();
public BetterToolsMod() {
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
MinecraftForge.EVENT_BUS.register(this);
}
private void setup(final FMLCommonSetupEvent event)
{
}
}
mods.toml
modLoader="javafml" #mandatory
loaderVersion="[37,)" #mandatory
license="All rights reserved"
[[mods]] #mandatory
modId="bettertoolsmod" #mandatory
version="1.0" #mandatory
displayName="Better Tools Mod" #mandatory
#updateJSONURL="https://change.me.example.invalid/updates.json" #optional
displayURL="https://www.umagame.info" #optional
#logoFile="examplemod.png" #optional
#credits="" #optional
authors="うまげーむ(Umagame)" #optional
description='''
快適なサバイバルライフのために作られたModです。
'''