54 lines
2.3 KiB
Java
54 lines
2.3 KiB
Java
![]() |
package io.gitlab.jfronny.libjf.config.gui;
|
||
|
|
||
|
import net.fabricmc.api.EnvType;
|
||
|
import net.fabricmc.api.Environment;
|
||
|
import net.minecraft.client.MinecraftClient;
|
||
|
import net.minecraft.client.font.TextRenderer;
|
||
|
import net.minecraft.client.gui.DrawableHelper;
|
||
|
import net.minecraft.client.gui.Element;
|
||
|
import net.minecraft.client.gui.widget.AbstractButtonWidget;
|
||
|
import net.minecraft.client.gui.widget.ElementListWidget;
|
||
|
import net.minecraft.client.util.math.MatrixStack;
|
||
|
import net.minecraft.text.Text;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.List;
|
||
|
import java.util.Map;
|
||
|
|
||
|
@Environment(EnvType.CLIENT)
|
||
|
public class ButtonEntry extends ElementListWidget.Entry<ButtonEntry> {
|
||
|
private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
|
||
|
public final List<AbstractButtonWidget> buttons = new ArrayList<>();
|
||
|
private final List<AbstractButtonWidget> resetButtons = new ArrayList<>();
|
||
|
private final List<Text> texts = new ArrayList<>();
|
||
|
private final List<AbstractButtonWidget> buttonsWithResetButtons = new ArrayList<>();
|
||
|
public static final Map<AbstractButtonWidget, Text> buttonsWithText = new HashMap<>();
|
||
|
|
||
|
private ButtonEntry(AbstractButtonWidget button, Text text, AbstractButtonWidget resetButton) {
|
||
|
buttonsWithText.put(button,text);
|
||
|
this.buttons.add(button);
|
||
|
this.resetButtons.add(resetButton);
|
||
|
this.texts.add(text);
|
||
|
this.buttonsWithResetButtons.add(button);
|
||
|
this.buttonsWithResetButtons.add(resetButton);
|
||
|
}
|
||
|
public static ButtonEntry create(AbstractButtonWidget button, Text text, AbstractButtonWidget resetButton) {
|
||
|
return new ButtonEntry(button, text, resetButton);
|
||
|
}
|
||
|
public void render(MatrixStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
|
||
|
this.buttons.forEach((button) -> {
|
||
|
button.y = y;
|
||
|
button.render(matrices, mouseX, mouseY, tickDelta);
|
||
|
});
|
||
|
this.texts.forEach((text) -> DrawableHelper.drawTextWithShadow(matrices,textRenderer, text,12,y+5,0xFFFFFF));
|
||
|
this.resetButtons.forEach((button) -> {
|
||
|
button.y = y;
|
||
|
button.render(matrices, mouseX, mouseY, tickDelta);
|
||
|
});
|
||
|
}
|
||
|
public List<? extends Element> children() {
|
||
|
return buttonsWithResetButtons;
|
||
|
}
|
||
|
}
|