2424package com .fox2code .foxloader .loader ;
2525
2626import com .fox2code .foxevents .EventHandler ;
27+ import com .fox2code .foxloader .client .gui .GuiButtonCallback ;
2728import com .fox2code .foxloader .client .gui .GuiButtonCallbackUpdate ;
2829import com .fox2code .foxloader .client .gui .GuiConfigProvider ;
2930import com .fox2code .foxloader .client .gui .GuiModMenu ;
4647import net .minecraft .common .command .Command ;
4748import net .minecraft .common .command .ICommandListener ;
4849import net .minecraft .common .networking .NetworkManager ;
50+ import net .minecraft .common .util .i18n .StringTranslate ;
4951import net .minecraft .server .MinecraftServer ;
5052import org .jetbrains .annotations .NotNull ;
5153
5456import java .util .ArrayList ;
5557import java .util .Collection ;
5658import java .util .Collections ;
59+ import java .util .Map ;
5760
5861public final class ModLoader extends Mod {
5962 private static final ArrayList <Mod > mods = new ArrayList <>();
63+ public static boolean displayServerButton = true ;
6064 private static boolean areAllModsLoaded = false ;
6165 private static boolean areAllModsFullyLoaded = false ;
6266 private static boolean constructingMods = false ;
@@ -182,7 +186,7 @@ public String commandSyntax() {
182186
183187 @ EventHandler
184188 public void onInitGui (GuiScreenInitEvent initGuiEvent ) {
185- GuiScreen guiScreen = initGuiEvent .getGuiScreen ();
189+ final GuiScreen guiScreen = initGuiEvent .getGuiScreen ();
186190 if (guiScreen instanceof GuiMainMenu ) {
187191 SidedMetadataAPI .Internal .setActiveMetaData (null );
188192 }
@@ -194,6 +198,26 @@ public void onInitGui(GuiScreenInitEvent initGuiEvent) {
194198 500 , guiScreen .width - 62 , 2 , 60 , 20 , "Mods" , () ->
195199 Minecraft .getInstance ().displayGuiScreen (new GuiModMenu (guiScreen ))));
196200 }
201+ if (guiScreen instanceof GuiIngameMenu && displayServerButton ) {
202+ final Map <String , String > metadata = SidedMetadataAPI .getActiveMetadata ();
203+ if (metadata .containsKey (SidedMetadataAPI .KEY_SERVER_BUTTON_NAME ) &&
204+ metadata .containsKey (SidedMetadataAPI .KEY_SERVER_BUTTON_LINK )) {
205+ StringTranslate st = StringTranslate .getInstance ();
206+ GuiButton guiButton ;
207+ initGuiEvent .getControlList ().add (guiButton = new GuiButtonCallback (501 ,
208+ initGuiEvent .getGuiScreen ().width / 2 - 100 ,
209+ initGuiEvent .getGuiScreen ().height / 4 + 56 ,
210+ st .translateKey (metadata .get (SidedMetadataAPI .KEY_SERVER_BUTTON_NAME )), () -> {
211+ if (metadata .containsKey (SidedMetadataAPI .KEY_SERVER_BUTTON_NAME ) &&
212+ metadata .containsKey (SidedMetadataAPI .KEY_SERVER_BUTTON_LINK )) {
213+ Minecraft .getInstance ().displayGuiScreen (new GuiLinkConfirm (guiScreen ,
214+ metadata .get (SidedMetadataAPI .KEY_SERVER_BUTTON_LINK )));
215+ }
216+ }));
217+ guiButton .canDisplayInfo = true ;
218+ guiButton .displayInfo = st .translateKey ("warning.server-controlled-button" );
219+ }
220+ }
197221 }
198222
199223 @ EventHandler
0 commit comments