minecraft-src/com/mojang/realmsclient/gui/RowButton.java
2025-07-04 02:00:41 +03:00

69 lines
2.1 KiB
Java

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