package com.mojang.realmsclient.gui; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.AbstractSelectionList; import net.minecraft.client.gui.components.ObjectSelectionList; @Environment(EnvType.CLIENT) public abstract class RowButton { public final int width; public final int height; public final int xOffset; public final int yOffset; public RowButton(int width, int height, int xOffset, int yOffset) { this.width = width; this.height = height; this.xOffset = xOffset; this.yOffset = yOffset; } public void drawForRowAt(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { int i = x + this.xOffset; int j = y + this.yOffset; boolean bl = mouseX >= i && mouseX <= i + this.width && mouseY >= j && mouseY <= j + this.height; this.draw(guiGraphics, i, j, bl); } protected abstract void draw(GuiGraphics guiGraphics, int x, int y, boolean showTooltip); public int getRight() { return this.xOffset + this.width; } public int getBottom() { return this.yOffset + this.height; } public abstract void onClick(int index); public static void drawButtonsInRow(GuiGraphics guiGraphics, List list, AbstractSelectionList abstractSelectionList, int i, int j, int k, int l) { for (RowButton rowButton : list) { if (abstractSelectionList.getRowWidth() > rowButton.getRight()) { rowButton.drawForRowAt(guiGraphics, i, j, k, l); } } } public static void rowButtonMouseClicked( AbstractSelectionList abstractSelectionList, ObjectSelectionList.Entry entry, List list, int i, double d, double e ) { int j = abstractSelectionList.children().indexOf(entry); if (j > -1) { abstractSelectionList.setSelectedIndex(j); int k = abstractSelectionList.getRowLeft(); int l = abstractSelectionList.getRowTop(j); int m = (int)(d - k); int n = (int)(e - l); for (RowButton rowButton : list) { if (m >= rowButton.xOffset && m <= rowButton.getRight() && n >= rowButton.yOffset && n <= rowButton.getBottom()) { rowButton.onClick(j); } } } } }