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 rowButtons, AbstractSelectionList pendingInvitations, int x, int y, int mouseX, int mouseY ) { for (RowButton rowButton : rowButtons) { if (pendingInvitations.getRowWidth() > rowButton.getRight()) { rowButton.drawForRowAt(guiGraphics, x, y, mouseX, mouseY); } } } public static void rowButtonMouseClicked( AbstractSelectionList pendingInvitations, ObjectSelectionList.Entry entry, List rowButtons, int button, double mouseX, double mouseY ) { int i = pendingInvitations.children().indexOf(entry); if (i > -1) { pendingInvitations.setSelectedIndex(i); int j = pendingInvitations.getRowLeft(); int k = pendingInvitations.getRowTop(i); int l = (int)(mouseX - j); int m = (int)(mouseY - k); for (RowButton rowButton : rowButtons) { if (l >= rowButton.xOffset && l <= rowButton.getRight() && m >= rowButton.yOffset && m <= rowButton.getBottom()) { rowButton.onClick(i); } } } } }