package net.codingguy32.developermod; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiComponent; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.ObjectSelectionList; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.CommonComponents; import net.minecraft.network.chat.Component; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import javax.annotation.Nullable; import java.util.Random; public class DataMenuScreen extends Screen { Minecraft mc; @Nullable private ObjectSelectionList activeList; private DataList dataList; public DataMenuScreen() { super(Component.literal("Data Menu")); this.mc = Minecraft.getInstance(); } public void setActiveList(@Nullable ObjectSelectionList objectSelectionList) { if (this.activeList != null) { this.removeWidget(this.activeList); } if (objectSelectionList != null) { this.addWidget(objectSelectionList); this.activeList = objectSelectionList; } } @Override public void init() { super.init(); this.dataList = new DataList(this.minecraft); int x = this.width / 2 - 155; int y = this.height / 6 - 12; this.addRenderableWidget(new Button(this.width / 2 + 40, this.height - 52, 80, 20, Component.literal("stats"), (p_96949_) -> { this.setActiveList(this.dataList); })); this.addRenderableWidget(new Button(this.width / 2 - 100, y, 200, 20, CommonComponents.GUI_DONE, (p_97535_) -> { this.minecraft.popGuiLayer(); })); } @Override public void render(PoseStack p_97530_, int p_97531_, int p_97532_, float p_97533_) { this.renderBackground(p_97530_); drawCenteredString(p_97530_, this.font, this.title, this.width / 2, 15, 16777215); super.render(p_97530_, p_97531_, p_97532_, p_97533_); } @OnlyIn(Dist.CLIENT) class DataList extends ObjectSelectionList { public DataList(Minecraft mc) { super(mc, DataMenuScreen.this.width, DataMenuScreen.this.height, 32, DataMenuScreen.this.height - 64, 10); DeveloperMOD.LOGGER.info(DataMenuScreen.this.width + ""); Random r = new Random(); for (int i = 0; i < 20; i++) { int x = r.nextInt(100000); this.addEntry(new DataRow(String.valueOf((char) i), x)); } } @Override public void renderBackground(PoseStack poseStack) { DataMenuScreen.this.renderBackground(poseStack); } } @OnlyIn(Dist.CLIENT) class DataRow extends ObjectSelectionList.Entry { private final Component name, value; DataRow(String name, Object value) { this.name = Component.literal(name); this.value = Component.literal(value.toString()); } private String getValueText() { return value.getString(); } @Override public void render(PoseStack p_97011_, int p_97012_, int p_97013_, int p_97014_, int p_97015_, int p_97016_, int p_97017_, int p_97018_, boolean p_97019_, float p_97020_) { GuiComponent.drawString(p_97011_, DataMenuScreen.this.font, this.name, p_97014_ + 2, p_97013_ + 1, p_97012_ % 2 == 0 ? 16777215 : 9474192); String s = this.getValueText(); GuiComponent.drawString(p_97011_, DataMenuScreen.this.font, s, p_97014_ + 2 + 213 - DataMenuScreen.this.font.width(s), p_97013_ + 1, p_97012_ % 2 == 0 ? 16777215 : 9474192); } @Override public Component getNarration() { return Component.translatable("narrator.select", Component.empty().append(this.name).append(" ").append(this.getValueText())); } } }