]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/blob - src/main/java/com/irtimaled/bbor/mixin/client/gui/screen/MixinOptionsScreen.java
3edd2126070bb97ba74c0daa53ea8ae6768f19a2
[BoundingBoxOutlineReloaded.git] / src / main / java / com / irtimaled / bbor / mixin / client / gui / screen / MixinOptionsScreen.java
1 package com.irtimaled.bbor.mixin.client.gui.screen;
2
3 import com.google.common.collect.Lists;
4 import com.irtimaled.bbor.client.gui.SettingsScreenButton;
5 import com.irtimaled.bbor.common.TypeHelper;
6 import net.minecraft.client.gui.Drawable;
7 import net.minecraft.client.gui.Element;
8 import net.minecraft.client.gui.Selectable;
9 import net.minecraft.client.gui.screen.Screen;
10 import net.minecraft.client.gui.screen.option.OptionsScreen;
11 import net.minecraft.client.gui.widget.ClickableWidget;
12 import org.spongepowered.asm.mixin.Mixin;
13 import org.spongepowered.asm.mixin.injection.At;
14 import org.spongepowered.asm.mixin.injection.Inject;
15 import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
16
17 import java.util.List;
18
19 @Mixin(OptionsScreen.class)
20 public class MixinOptionsScreen extends Screen {
21     private MixinOptionsScreen() {
22         super(null);
23     }
24
25     private final List<ClickableWidget> buttons = Lists.newArrayList();
26
27     @Override
28     protected <T extends Element & Drawable & Selectable> T addDrawableChild(T drawableElement) {
29         ClickableWidget widget = TypeHelper.as(drawableElement, ClickableWidget.class);
30         if(widget != null) {
31             buttons.add(widget);
32         }
33
34         return super.addDrawableChild(drawableElement);
35     }
36
37     @Inject(method = "init", at = @At("RETURN"))
38     private void initGui(CallbackInfo ci) {
39         //shuffle middle buttons up by 12 px to make space
40         int top = this.height / 6 + 42;
41         int bottom = this.height / 6 + 168;
42         for (ClickableWidget button : buttons) {
43             if (button.y >= top && button.y < bottom)
44                 button.y -= 12;
45         }
46         SettingsScreenButton button = new SettingsScreenButton(this.width / 2 - 155, top + 84, 150, "BBOR", this);
47         this.addDrawableChild(button);
48     }
49 }