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);
}
}