1 package com.irtimaled.bbor.mixin.client.gui.screen;
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;
17 import java.util.List;
19 @Mixin(OptionsScreen.class)
20 public class MixinOptionsScreen extends Screen {
21 private MixinOptionsScreen() {
25 private final List<ClickableWidget> buttons = Lists.newArrayList();
28 protected <T extends Element & Drawable & Selectable> T addDrawableChild(T drawableElement) {
29 ClickableWidget widget = TypeHelper.as(drawableElement, ClickableWidget.class);
34 return super.addDrawableChild(drawableElement);
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)
46 SettingsScreenButton button = new SettingsScreenButton(this.width / 2 - 155, top + 84, 150, "BBOR", this);
47 this.addDrawableChild(button);