#java.lang.IllegalStateException: [fabric-screen-api-v1]

2 messages · Page 1 of 1 (latest)

flat swift
#

so I want a menu to show up when you open my book item but I get this error. Im new to modding so any feedback is appreciated

Crash Report

java.lang.IllegalStateException: [fabric-screen-api-v1] The current screen (net.necrosis.allthepotions.screen.PotionBookScreen) has not been correctly initialised, please send this crash log to the mod author. This is usually caused by calling setScreen on the wrong thread.
    at knot//net.minecraft.client.gui.screen.Screen.ensureEventsAreInitialized(Screen.java:1392)
    at knot//net.minecraft.client.gui.screen.Screen.fabric_getBeforeRenderEvent(Screen.java:1415)
    at knot//net.fabricmc.fabric.api.client.screen.v1.ScreenEvents.beforeRender(ScreenEvents.java:126)
    at knot//net.minecraft.client.render.GameRenderer.wrapOperation$zjd000$fabric-screen-api-v1$onRenderScreen(GameRenderer.java:2203)
    at knot//net.minecraft.client.render.GameRenderer.render(GameRenderer.java:1030)
    at knot//net.minecraft.client.MinecraftClient.render(MinecraftClient.java:1272)
    at knot//net.minecraft.client.MinecraftClient.run(MinecraftClient.java:885)
    at knot//net.minecraft.client.main.Main.main(Main.java:228)
    at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
    at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
    at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
    at net.fabricmc.devlaunchinjector.Main.main(Main.java:86)

Potion Book:

public class PotionBook extends Item {
    public PotionBook(Settings settings) {
        super(settings);
    }

    @Override
    public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) {
        ItemStack itemStack = user.getStackInHand(hand);

        if(!world.isClient()) {
            // Server Sided
            user.useBook(itemStack, hand);
            user.incrementStat(Stats.USED.getOrCreateStat(this));
            world.playSound(null, user.getBlockPos(), SoundEvents.ITEM_BOOK_PAGE_TURN, SoundCategory.BLOCKS);
            MinecraftClient.getInstance().setScreen(
                    new PotionBookScreen(Text.empty())
            );
        }
        return TypedActionResult.success(itemStack, world.isClient());
    }
}

PotionBookScreen

public class PotionBookScreen extends Screen {
    public PotionBookScreen(Text title) {
        super(title);
    }

    @Override
    protected void init() {
        ButtonWidget buttonWidget = ButtonWidget.builder(Text.of("Hello World"), (btn) -> {
        }).dimensions(40, 40, 120, 20).build();
        this.addDrawableChild(buttonWidget);

    }

    @Override
    public void render(DrawContext context, int mouseX, int mouseY, float delta) {
        super.render(context, mouseX, mouseY, delta);
        context.drawText(this.textRenderer, "Special Button", 40, 40 - this.textRenderer.fontHeight - 10, 0xFFFFFFFF, true);
    }
}
hollow sky
#
        if(!world.isClient()) {
            // Server Sided
            ...
            // You are calling set screen on the server thread
            MinecraftClient.getInstance().setScreen(
                    new PotionBookScreen(Text.empty())
            );
        }