]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/client/gui/ListScreen.java
Get 1.17.1 building
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / client / gui / ListScreen.java
index 2339ac86ba846f51d6334415c0afd0b6e8409bf6..d97b546182b179b2e5bef69da6983292f38b17ed 100644 (file)
@@ -1,18 +1,25 @@
 package com.irtimaled.bbor.client.gui;
 
+import com.irtimaled.bbor.Versions;
 import com.irtimaled.bbor.client.interop.ClientInterop;
-import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.client.resources.I18n;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.client.resource.language.I18n;
+import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.text.LiteralText;
 
-public abstract class ListScreen extends GuiScreen {
-    private final GuiScreen lastScreen;
+import java.util.List;
+
+public abstract class ListScreen extends Screen {
+    private final Screen lastScreen;
+    private static final String version = Versions.build;
 
     private AbstractButton doneButton;
-    private String title;
     private ControlList controlList;
     private SearchField searchField;
 
-    ListScreen(GuiScreen lastScreen) {
+    ListScreen(Screen lastScreen) {
+        super(new LiteralText("Bounding Box Outline Reloaded"));
         this.lastScreen = lastScreen;
     }
 
@@ -25,36 +32,38 @@ public abstract class ListScreen extends GuiScreen {
     }
 
     @Override
-    protected void initGui() {
-        this.title = "Bounding Box Outline Reloaded";
-        this.controlList = new ControlList(this.width, this.height, 48, this.height - 28);
-        this.searchField = new SearchField(this.fontRenderer, this.width / 2 - 100, 22, 200, 20, this.controlList);
-        this.doneButton = new AbstractButton(this.width / 2 - 100, this.height - 24, 200, I18n.format("gui.done")) {
+    protected void init() {
+        this.controlList = this.buildList(48, this.height - 28);
+        this.searchField = new SearchField(this.textRenderer, this.width / 2 - 100, 22, 200, 20, this.controlList);
+        this.doneButton = new AbstractButton(this.width / 2 - 100, this.height - 24, 200, I18n.translate("gui.done")) {
             @Override
             public void onPressed() {
                 onDoneClicked();
             }
         };
 
-        this.children.add(this.doneButton);
-        this.children.add(this.controlList);
-        this.children.add(this.searchField);
-        this.setup();
+        this.addDrawableChild(this.searchField);
+        ((List<Element>)this.children()).add(controlList);
+        this.addDrawableChild(this.doneButton);
     }
 
-    protected abstract void setup();
+    protected abstract ControlList buildList(int top, int bottom);
 
     @Override
-    public void render(int mouseX, int mouseY, float unknown) {
-        render(mouseX, mouseY);
+    public void render(MatrixStack matrixStack, int mouseX, int mouseY, float unknown) {
+        render(matrixStack, mouseX, mouseY);
     }
 
-    protected void render(int mouseX, int mouseY) {
-        this.controlList.render(mouseX, mouseY);
+    protected void render(MatrixStack matrixStack, int mouseX, int mouseY) {
+        this.controlList.render(matrixStack, mouseX, mouseY);
+
+        this.drawCenteredText(matrixStack, this.textRenderer, this.title.asString(), this.width / 2, 8, 16777215);
+        this.searchField.render(matrixStack, mouseX, mouseY);
+        this.doneButton.render(matrixStack, mouseX, mouseY);
 
-        this.drawCenteredString(this.fontRenderer, this.title, this.width / 2, 8, 16777215);
-        this.searchField.render(mouseX, mouseY);
-        this.doneButton.render(mouseX, mouseY);
+        int left = this.width - this.textRenderer.getWidth(version) - 2;
+        int top = this.height - 10;
+        this.drawStringWithShadow(matrixStack, this.textRenderer, version, left, top, -10658467);
     }
 
     @Override
@@ -73,20 +82,32 @@ public abstract class ListScreen extends GuiScreen {
     }
 
     @Override
-    public boolean mouseScrolled(double scrollAmount) {
-        return this.controlList.mouseScrolled(scrollAmount);
+    public boolean mouseScrolled(double mouseX, double mouseY, double scrollAmount) {
+        return this.controlList.mouseScrolled(mouseX, mouseY, scrollAmount);
     }
 
     @Override
-    public void onGuiClosed() {
+    public void removed() {
         this.controlList.close();
     }
 
-    ControlList getControlList() {
-        return this.controlList;
+    protected void setCanExit(boolean canExit) {
+        this.doneButton.active = canExit;
     }
 
-    AbstractButton getDoneButton() {
-        return doneButton;
+    @Override
+    public boolean mouseClicked(double mouseX, double mouseY, int button) {
+        for (Element control : this.children()) {
+            if (control.mouseClicked(mouseX, mouseY, button)) {
+                Element focused = getFocused();
+                if (focused instanceof IFocusableControl && focused != control) {
+                    ((IFocusableControl) focused).clearFocus();
+                }
+                this.setFocused(control);
+                if (button == 0) this.setDragging(true);
+                return true;
+            }
+        }
+        return false;
     }
 }