首页 > 解决方案 > Fabric 两次注册一个项目

问题描述

每当我从 vsc 运行客户端时,它就会崩溃,因为它无法执行由于尝试两次注册项目而导致的入口点,

Caused by: java.lang.RuntimeException: Attempted to register ID ResourceKey[minecraft:item / cauldrons:gold-base] at different raw IDs (1100, 1102)! If you're trying to override an item, use .set(), not .register()!

我在 .java 文件中的代码是:

package net.cauldrons;

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

public class cauldrons implements ModInitializer {

    // bases
    public static final Item GOLD_BASE = new Item(new FabricItemSettings().group(ItemGroup.BREWING));
    public static final Item IRON_BASE = new Item(new FabricItemSettings().group(ItemGroup.BREWING));
    public static final Item DIAMOND_BASE = new Item(new FabricItemSettings().group(ItemGroup.BREWING));
    public static final Item NETHERITE_BASE = new Item(new FabricItemSettings().group(ItemGroup.BREWING));

    @Override
    public void onInitialize() {
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "gold-base"), GOLD_BASE);
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "iron-base"), IRON_BASE);
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "gold-base"), DIAMOND_BASE);
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "iron-base"), NETHERITE_BASE);
    } 
}

有谁知道这可能是什么原因造成的?

标签: minecraftminecraft-fabric

解决方案


您正在尝试注册cauldrons:gold-base两次cauldrons:iron-base。您可能尝试做的是注册cauldrons:diamond_basecauldrons:netherite_base,但看起来您复制粘贴注册而没有实际设置这些值。

固定代码:

    @Override
    public void onInitialize() {
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "gold-base"), GOLD_BASE);
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "iron-base"), IRON_BASE);
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "diamond-base"), DIAMOND_BASE);
        Registry.register(Registry.ITEM, new Identifier("cauldrons", "netherite-base"), NETHERITE_BASE);
    } 

推荐阅读