是否可以在不注册药水的情况下创建具有多种效果的药水并将其放入酿造配方中?

问题描述 投票:0回答:1

我正在制作一个仅服务器端的 Fabric 1.21.1 mod,它添加了具有香草效果的自定义药水。 我在没有注册物品/药水的情况下制作配方失败,这导致香草玩家在遇到物品时被踢,而布料玩家无法加入。

最初,我尝试使用

builder.registerPotionRecipe()
注册药水配方,但这会采用
RegistryEntry<Potion>
而不是我创建的
Potion
。 然后我开始使用
builder.registerItemRecipe()
,但这导致服务器无法启动。 注册物品或药水会导致普通客户端在游戏中遇到该物品时被踢,而织物玩家将无法加入,因为客户端缺少注册表。 我确实看到了酿造配方的存在,因为我能够将翡翠块放入配料槽中,并且酿造台启动了。

    @Override
    public void onInitializeServer() {
        ArrayList<StatusEffectInstance> RICH_POTION_EFFECTS = new ArrayList<>();
        RICH_POTION_EFFECTS.add(new StatusEffectInstance(StatusEffects.HERO_OF_THE_VILLAGE, 480, 5));
        RICH_POTION_EFFECTS.add(new StatusEffectInstance(StatusEffects.LUCK, 480, 3));
        Item RICH_POTION = new Item(new Item.Settings().component(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(Optional.empty(),Optional.empty(), RICH_POTION_EFFECTS)));

        Item AWKWARD_POTION = new Item(new Item.Settings().component(DataComponentTypes.POTION_CONTENTS, new PotionContentsComponent(Potions.AWKWARD)));
            FabricBrewingRecipeRegistryBuilder.BUILD.register(builder -> {
                builder.registerItemRecipe(
                        AWKWARD_POTION,
                        Items.EMERALD_BLOCK,
                        RICH_POTION
                );
            });
    }
[17:10:46] [main/ERROR] (Minecraft) Failed to start the minecraft server
 java.lang.IllegalStateException: Some intrusive holders were not registered: [Reference{null=[unregistered]}, Reference{null=[unregistered]}]
    at net.minecraft.registry.SimpleRegistry.freeze(SimpleRegistry.java:359) ~[minecraft-common-c2b31d572c-1.21.1-net.fabricmc.yarn.1_21_1.1.21.1+build.3-v2.jar:?]
    at net.minecraft.registry.Registries.freezeRegistries(Registries.java:264) ~[minecraft-common-c2b31d572c-1.21.1-net.fabricmc.yarn.1_21_1.1.21.1+build.3-v2.jar:?]
    at net.minecraft.registry.Registries.bootstrap(Registries.java:248) ~[minecraft-common-c2b31d572c-1.21.1-net.fabricmc.yarn.1_21_1.1.21.1+build.3-v2.jar:?]
    at net.minecraft.server.Main.handler$zhp000$fabric-registry-sync-v0$afterModInit(Main.java:1547) ~[minecraft-common-c2b31d572c-1.21.1-net.fabricmc.yarn.1_21_1.1.21.1+build.3-v2.jar:?]
    at net.minecraft.server.Main.main(Main.java:111) [minecraft-common-c2b31d572c-1.21.1-net.fabricmc.yarn.1_21_1.1.21.1+build.3-v2.jar:?]
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) [fabric-loader-0.16.5.jar:?]
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.16.5.jar:?]
    at net.fabricmc.loader.impl.launch.knot.KnotServer.main(KnotServer.java:23) [fabric-loader-0.16.5.jar:?]
    at net.fabricmc.devlaunchinjector.Main.main(Main.java:86) [dev-launch-injector-0.2.1+build.8.jar:?]
java minecraft minecraft-fabric
1个回答
0
投票

唯一的方法是使用

/give
定制药水,这不会注册该物品并且不会制作酿造配方。如果您想要带有酿造配方的药水,则需要注册。

© www.soinside.com 2019 - 2024. All rights reserved.