aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/itemlist/ResultButtonWidget.java
blob: 6c7d1cbc396db676c63307bc2cd65536e8e0dd43 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package de.hysky.skyblocker.skyblock.itemlist;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.item.ItemStack;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;

import java.util.List;

public class ResultButtonWidget extends ClickableWidget {
    private static final Identifier BACKGROUND_TEXTURE = Identifier.ofVanilla("recipe_book/slot_craftable");

    protected ItemStack itemStack = null;

    public ResultButtonWidget(int x, int y) {
        super(x, y, 25, 25, Text.literal(""));
    }

    protected void setItemStack(ItemStack itemStack) {
        this.active = !itemStack.isEmpty();
        this.visible = true;
        this.itemStack = itemStack;
    }

    protected void clearItemStack() {
        this.visible = false;
        this.itemStack = null;
    }

    @Override
    public void renderWidget(DrawContext context, int mouseX, int mouseY, float delta) {
        MinecraftClient client = MinecraftClient.getInstance();
        context.drawGuiTexture(BACKGROUND_TEXTURE, this.getX(), this.getY(), this.getWidth(), this.getHeight());
        context.drawItem(this.itemStack, this.getX() + 4, this.getY() + 4);
        context.drawItemInSlot(client.textRenderer, itemStack, this.getX() + 4, this.getY() + 4);
    }

    public void renderTooltip(DrawContext context, int mouseX, int mouseY) {
        MinecraftClient client = MinecraftClient.getInstance();
        if (client.currentScreen == null) return;
        List<Text> tooltip = Screen.getTooltipFromItem(client, this.itemStack);
        client.currentScreen.setTooltip(tooltip.stream().map(Text::asOrderedText).toList());
    }

    @Override
    protected void appendClickableNarrations(NarrationMessageBuilder builder) {}
}