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 { private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; public final List buttons = new ArrayList<>(); private final List resetButtons = new ArrayList<>(); private final List texts = new ArrayList<>(); private final List buttonsWithResetButtons = new ArrayList<>(); public static final Map 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 children() { return buttonsWithResetButtons; } @Override public List selectableChildren() { return buttons; } }