「Minecraft」1.21 Fabric Mod 开发记录(随缘更新)

总体按照此图文教程设置,本文侧重记录中间的小问题

环境配置与基本设置

Java 采用 JDK21

构建模组模板:https://fabricmc.net/develop/template/

第一次启动需要构建 Gradle,如果无法使用梯子可以采用镜像构建:

  • 将文件 gradle-wrapper.properties 中的 distributionUrl=https\://services.gradle.org/distributions/xxx.zip 改为 distributionUrl=https\://mirrors.cloud.tencent.com/gradle/xxx.zip

mod 编写

孩子们,NBT 标签死了,附魔需要另寻出路。

2025.8.24

学会一种利用 stack.addEnchantment 添加附魔的方法,所以选择在物品类里重写 onCraft 函数,在制作的一瞬间为物品添加附魔(描述等也可这么添加)。代码如下(以一把剑为例):

public class EonSwordItem extends SwordItem {

    public EonSwordItem(ToolMaterial toolMaterial, Settings settings) {
        super(toolMaterial, settings);
    }

    @Override
    public void onCraft(ItemStack stack, World world) {
        stack.addEnchantment(ModFunction.getEntry(world, Enchantments.LOOTING), 10);
        stack.addEnchantment(ModFunction.getEntry(world, Enchantments.SWEEPING_EDGE), 10);
        stack.set(DataComponentTypes.UNBREAKABLE, new UnbreakableComponent(true));
        List<Text> TempLore = new ArrayList<>();
        Text TempText = Text.literal("星火淬刃,一剑虚实").formatted(Formatting.DARK_RED).formatted(Formatting.BOLD);
        TempText = TempText.copy().setStyle(TempText.getStyle().withItalic(false));
        TempLore.add(TempText);
        stack.set(DataComponentTypes.LORE, new LoreComponent(TempLore));


        TempText = Text.literal("幻空").formatted(Formatting.DARK_RED).formatted(Formatting.BOLD);
        TempText = TempText.copy().setStyle(TempText.getStyle().withItalic(false));
        stack.set(DataComponentTypes.CUSTOM_NAME, TempText);
    }
}

缺点是无法直接获取带有描述以及附魔的物品,只可合成获取

2025.8.28

经网友指点了解到另一种添加附魔以及标签的方式,可以直接在合成表里写(参考暮色的代码)。
c4db36f3aa4bdf465892c7155b2258d5

posted @ 2025-08-13 14:44  Eon_Sky  阅读(90)  评论(0)    收藏  举报