使用Minecraft 14.4 Fabric API#1的MOD开发说明


目标

  • 米克拉做到了
  • Java可以通过某种方式完成
  • 我知道有关于Maven和Gradle的信息
  • 没有经验的mod开发
  • VS Code用户

展示

https://www.youtube.com/watch?v=SqMGHoBOeYY

准备

从https://github.com/FabricMC/fabric-example-mod

分叉项目

Mod基本信息设置1

织物性能

从https://fabricmc.net/获得最新版本信息,并复制并粘贴

Mod属性

  • maven_group中输入以net.开头的任何组名。 net.ハンドル名.MOD名是合适的(确实很合适,因此请稍后检查是否有习惯)

依存关系

您可以将其保留为

依赖源准备

VS代码的终端执行gradlew genSourcesgradlew vscode。这需要很多时间。

Mod基本信息设置2

  • src/main/resources/fablic.mod.json的开头更改id。以下,将其称为" MOD_ID"。

  • 适当更改同一文件的entrypoints。我想知道グループ名.mod名是否还可以。
    如果您想更改后一部分,请进行更改

创建一个入口点

创建与

src/main/java下的入口点相同的文件夹和类。 src/main/java/net/ハンドル名/mod名/Mod名.java喜欢。

添加项目

在入口点类

中编写以下代码

ExampleMod.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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类的类

TestItem.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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));
        // 右クリックすると羊毛を壊した時の音がなる
    }

}

然后按如下所示重写入口点类

ExampleMod.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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文件。

项目名称.json

1
2
3
4
5
6
{
    "parent" :"item/generated",
    "textures" : {
        "layer0" : "MOD_ID:item/アイテム名"
    }
}

如果在

src\main\resources\assets\testmod\textures\item中放置了16 * 16透明PNG图像,则该项目应为该图像。