#create screen in 1.21.5

7 messages · Page 1 of 1 (latest)

little heath
#

hey, im new to coding fabric mods and cant find a working tutorial on how to create screens, does anyone know how to do it?

#

heres what i tried:

package de.xaaronzz105.playerscalepro.client;

import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.text.Text;

public class ClientScreen extends Screen {
    protected ClientScreen() {
        super(Text.literal("Player scaler"));
    }

    public ButtonWidget button1;
    public ButtonWidget button2;

    @Override
    protected void init() {
        button1 = ButtonWidget.builder(Text.literal("Button 1"), (button) -> {
            System.out.println("Clicked button 1");
        })
                        .dimensions(width / 2 - 200, 20, 200, 20)
                        .tooltip(Tooltip.of(Text.literal("Tooltip of Button 1")))
                        .build();

        button1 = ButtonWidget.builder(Text.literal("Button 2"), (button) -> {
                    System.out.println("Clicked button 2");
                })
                .dimensions(width / 2 + 5, 20, 200, 20)
                .tooltip(Tooltip.of(Text.literal("Tooltip of Button 2")))
                .build();

        addDrawableChild(button1);
        addDrawableChild(button2);
    }

    @Override
    public void render(DrawContext context, int mouseX, int mouseY, float delta) {
        super.render(context, mouseX, mouseY, delta);

        // Minecraft doesn't have a "label" widget, so we'll have to draw our own text.
        // We'll subtract the font height from the Y position to make the text appear above the button.
        // Subtracting an extra 10 pixels will give the text some padding.
        // textRenderer, text, x, y, color, hasShadow
        context.drawText(this.textRenderer, "Special Button", 40, 40 - this.textRenderer.fontHeight - 10, 0xFFFFFFFF, true);
    }

    @Override
    public boolean shouldPause() {
        return false;
    }
}
#

and heres the error till the only part of my code mentioned:
(the line where the screen gets opened)

java.lang.NullPointerException: Cannot invoke "net.minecraft.client.gui.Selectable.getNarratedParts()" because "selectable" is null
    at knot//net.minecraft.client.gui.screen.Screen.method_65517(Screen.java:506)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    at knot//net.minecraft.client.gui.screen.Screen.addElementNarrations(Screen.java:509)
    at knot//net.minecraft.client.gui.screen.Screen.addScreenNarrations(Screen.java:501)
    at knot//net.minecraft.client.gui.screen.narration.ScreenNarrator.buildNarrations(ScreenNarrator.java:34)
    at knot//net.minecraft.client.gui.screen.Screen.narrateScreen(Screen.java:485)
    at knot//net.minecraft.client.gui.screen.Screen.narrateScreenIfNarrationEnabled(Screen.java:480)
    at knot//net.minecraft.client.gui.screen.Screen.init(Screen.java:302)
    at knot//net.minecraft.client.MinecraftClient.setScreen(MinecraftClient.java:1203)
    at knot//de.xaaronzz105.playerscalepro.client.mainClient.lambda$onInitializeClient$0(mainClient.java:70)
severe dagger
#

Instead of button2 on the second one

little heath
#

omg 😭, im sorry

severe dagger
#

😂😂Get some sleep bro