使用Minecraft 14.4的Fabric API进行MOD开发备忘录 #1

目标

    • マイクラはやった事がある

 

    • Javaはなんとなくできる

 

    • maven と gradle ぐらいの存在は知ってる

 

    • MOD開発未経験

 

    VS Code 使用者

展览

准备好请从 https://github.com/FabricMC/fabric-example-mod 上fork该项目过来。

Mod的基本信息设置1

织物特性.从https://fabricmc.net/use获取最新版本的信息,并复制粘贴

模块属性maven_group に net. から始まる好きなグループ名を入れる。 net.ハンドル名.MOD名 ぐらいが適当(ほんとうに適当だから後で習慣があるか調べる

依赖可以保持现状

准备依赖资源在VS Code终端中运行gradlew genSources,gradlew vscode命令。需要相当一段时间。

Mod基本信息的设置2src/main/resources/fablic.mod.json の先頭にある id を変更する。以降これを「MOD_ID」と呼ぶ。
同ファイルの entrypoints を適当に変更する。 グループ名.mod名 とかでいいかな。
後の項は変える気になったら変える

创建入口点在src/main/java文件夹下创建与入口点相同的文件夹和类。类似于src/main/java/net/模组名称/Mod名称.java。

添加物品在入口点类中编写以下代码

package net.realanalysis.testmod;

import net.fabricmc.api.ModInitializer;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.Item;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

public class ExampleMod implements ModInitializer{

    public static final Item FABRIC_ITEM = new Item(new Item.Settings().group(ItemGroup.MISC));
    // アイテムそのものの定義

    @Override
    public void onInitialize() {
        Registry.register(Registry.ITEM, new Identifier("MOD_ID","アイテム名"), FABRIC_ITEM);
        // アイテムの登録
    }

}

これでテクスチャの無いアイテムが追加される

确认VSコードの左にある虫のマークをクリックし、サイドバーの上にあるスタートボタンをクリックするとMinecraftが立ち上がる

使用自定义类进行初始化
在与入口点相同的文件夹中创建一个继承自 ITEM 类的类。

package net.realanalysis.testmod;

import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.ActionResult;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.world.World;

public class TestItem extends Item{

    public TestItem(Settings item$Settings_1) {
        super(item$Settings_1);
                //コンストラクタはそのままスーパークラスのを呼びだす
    }

    @Override
    public TypedActionResult<ItemStack> use(World world, PlayerEntity playerEntity, Hand hand){

        playerEntity.playSound(SoundEvents.BLOCK_WOOL_BREAK, 1.0F, 1.0F);
        return new TypedActionResult<ItemStack>(ActionResult.SUCCESS, playerEntity.getStackInHand(hand));
        // 右クリックすると羊毛を壊した時の音がなる
    }

}

そしたらエントリポイントのクラスをこう書き変える

package net.realanalysis.testmod;

import net.fabricmc.api.ModInitializer;
import net.minecraft.item.ItemGroup;
import net.minecraft.item.Item;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;

public class ExampleMod implements ModInitializer{

    public static final Item FABRIC_ITEM = new TestItem(new Item.Settings().group(ItemGroup.MISC));
    // 自作クラスでの定義にした

    @Override
    public void onInitialize() {
        Registry.register(Registry.ITEM, new Identifier("MOD_ID","アイテム名"), FABRIC_ITEM);
        // アイテムの登録
    }

}

右键单击应该会发出声音。

纹理
在src\main\resources\assets\Mod_ID\models\item目录下创建以下类似的JSON文件。

{
    "parent" :"item/generated",
    "textures" : {
        "layer0" : "MOD_ID:item/アイテム名"
    }
}

如果你将一个大小为16*16的透明PNG图片放入src\main\resources\assets\testmod\textures\item目录下,那么该物品应该会变成这个图片。

bannerAds