60 lines
2.5 KiB
Java
60 lines
2.5 KiB
Java
package io.gitlab.jfronny.libjf.config.impl.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.Selectable;
|
|
import net.minecraft.client.gui.widget.ClickableWidget;
|
|
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 ConfigScreenEntry extends ElementListWidget.Entry<ConfigScreenEntry> {
|
|
private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
|
|
public final List<ClickableWidget> buttons = new ArrayList<>();
|
|
private final List<ClickableWidget> resetButtons = new ArrayList<>();
|
|
private final List<Text> texts = new ArrayList<>();
|
|
private final List<ClickableWidget> buttonsWithResetButtons = new ArrayList<>();
|
|
public static final Map<ClickableWidget, Text> buttonsWithText = new HashMap<>();
|
|
|
|
private ConfigScreenEntry(ClickableWidget button, Text text, ClickableWidget 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 ConfigScreenEntry create(ClickableWidget button, Text text, ClickableWidget resetButton) {
|
|
return new ConfigScreenEntry(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;
|
|
}
|
|
|
|
@Override
|
|
public List<? extends Selectable> selectableChildren() {
|
|
return buttons;
|
|
}
|
|
}
|