11package se .icus .mag .modsettings .gui ;
22
3+ import java .util .Optional ;
34import net .fabricmc .fabric .api .client .screen .v1 .Screens ;
45import net .minecraft .client .MinecraftClient ;
56import net .minecraft .client .gui .screen .GameMenuScreen ;
67import net .minecraft .client .gui .screen .Screen ;
78import net .minecraft .client .gui .screen .TitleScreen ;
8- import net .minecraft .client .gui .widget .ButtonWidget ;
99import net .minecraft .client .gui .widget .ClickableWidget ;
10+ import net .minecraft .client .gui .widget .GridWidget ;
1011import net .minecraft .text .MutableText ;
1112import net .minecraft .text .Text ;
1213import net .minecraft .text .TranslatableTextContent ;
1314
1415import java .util .List ;
16+ import se .icus .mag .modsettings .mixin .GridWidgetAccessor ;
1517
1618public abstract class MenuScreensChanger {
1719 private static final int TITLE_FULL_BUTTON_WIDTH = 200 ;
@@ -21,16 +23,20 @@ public abstract class MenuScreensChanger {
2123 private static final int BUTTON_VERICAL_SPACING = 24 ;
2224
2325 public static void postTitleScreenInit (TitleScreen screen ) {
24- injectModSettingsButton (screen , TITLE_FULL_BUTTON_WIDTH , 2 , BUTTON_VERICAL_SPACING / 2 );
26+ List <ClickableWidget > buttons = Screens .getButtons (screen );
27+ injectModSettingsButton (screen , buttons , TITLE_FULL_BUTTON_WIDTH , 2 , BUTTON_VERICAL_SPACING / 2 );
2528 }
2629
2730 public static void postGameMenuScreenInit (GameMenuScreen screen ) {
28- injectModSettingsButton (screen , INGAME_FULL_BUTTON_WIDTH , 4 , 0 );
31+ Optional <ClickableWidget > gridWidgetOpt = Screens .getButtons (screen ).stream ().filter (w -> w instanceof GridWidget ).findFirst ();
32+ if (gridWidgetOpt .isEmpty ()) return ;
33+
34+ List <ClickableWidget > buttons = ((GridWidgetAccessor ) gridWidgetOpt .get ()).getChildren ();
35+ injectModSettingsButton (screen , buttons , INGAME_FULL_BUTTON_WIDTH , 4 , 0 );
2936 }
3037
31- private static void injectModSettingsButton (Screen screen , int fullButtonWidth ,
38+ private static void injectModSettingsButton (Screen screen , List < ClickableWidget > buttons , int fullButtonWidth ,
3239 int halfButtonSpacer , int verticalOffset ) {
33- List <ClickableWidget > buttons = Screens .getButtons (screen );
3440 boolean shortenModMenu = false ;
3541 ClickableWidget savedButton = null ;
3642
0 commit comments