]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blobdiff - src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java
Get 1.17.1 building
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / mixin / client / gui / screen / MixinOptionsScreen.java
index bb03b7a20b8a704d4b7e6ebcf84736591dd970d2..3edd2126070bb97ba74c0daa53ea8ae6768f19a2 100644 (file)
@@ -1,31 +1,49 @@
 package com.irtimaled.bbor.mixin.client.gui.screen;
 
+import com.google.common.collect.Lists;
 import com.irtimaled.bbor.client.gui.SettingsScreenButton;
+import com.irtimaled.bbor.common.TypeHelper;
+import net.minecraft.client.gui.Drawable;
+import net.minecraft.client.gui.Element;
+import net.minecraft.client.gui.Selectable;
 import net.minecraft.client.gui.screen.Screen;
-import net.minecraft.client.gui.screen.options.OptionsScreen;
-import net.minecraft.client.gui.widget.AbstractButtonWidget;
+import net.minecraft.client.gui.screen.option.OptionsScreen;
+import net.minecraft.client.gui.widget.ClickableWidget;
 import org.spongepowered.asm.mixin.Mixin;
 import org.spongepowered.asm.mixin.injection.At;
 import org.spongepowered.asm.mixin.injection.Inject;
 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
 
+import java.util.List;
+
 @Mixin(OptionsScreen.class)
 public class MixinOptionsScreen extends Screen {
     private MixinOptionsScreen() {
         super(null);
     }
 
+    private final List<ClickableWidget> buttons = Lists.newArrayList();
+
+    @Override
+    protected <T extends Element & Drawable & Selectable> T addDrawableChild(T drawableElement) {
+        ClickableWidget widget = TypeHelper.as(drawableElement, ClickableWidget.class);
+        if(widget != null) {
+            buttons.add(widget);
+        }
+
+        return super.addDrawableChild(drawableElement);
+    }
+
     @Inject(method = "init", at = @At("RETURN"))
     private void initGui(CallbackInfo ci) {
         //shuffle middle buttons up by 12 px to make space
         int top = this.height / 6 + 42;
         int bottom = this.height / 6 + 168;
-        for (AbstractButtonWidget button : buttons) {
+        for (ClickableWidget button : buttons) {
             if (button.y >= top && button.y < bottom)
                 button.y -= 12;
         }
         SettingsScreenButton button = new SettingsScreenButton(this.width / 2 - 155, top + 84, 150, "BBOR", this);
-        this.buttons.add(this.buttons.size() - 1, button);
-        this.children.add(this.children.size() - 1, button);
+        this.addDrawableChild(button);
     }
 }