Skip to content

Commit a46dea9

Browse files
committed
Bring back the server link button feature!
1 parent c3f7e5c commit a46dea9

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

loader/src/main/java/com/fox2code/foxloader/loader/ModLoader.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
package com.fox2code.foxloader.loader;
2525

2626
import com.fox2code.foxevents.EventHandler;
27+
import com.fox2code.foxloader.client.gui.GuiButtonCallback;
2728
import com.fox2code.foxloader.client.gui.GuiButtonCallbackUpdate;
2829
import com.fox2code.foxloader.client.gui.GuiConfigProvider;
2930
import com.fox2code.foxloader.client.gui.GuiModMenu;
@@ -46,6 +47,7 @@
4647
import net.minecraft.common.command.Command;
4748
import net.minecraft.common.command.ICommandListener;
4849
import net.minecraft.common.networking.NetworkManager;
50+
import net.minecraft.common.util.i18n.StringTranslate;
4951
import net.minecraft.server.MinecraftServer;
5052
import org.jetbrains.annotations.NotNull;
5153

@@ -54,9 +56,11 @@
5456
import java.util.ArrayList;
5557
import java.util.Collection;
5658
import java.util.Collections;
59+
import java.util.Map;
5760

5861
public 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

loader/src/main/java/com/fox2code/foxloader/network/SidedMetadataAPI.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public final class SidedMetadataAPI {
3636
public static final String KEY_FOXLOADER_VERSION = "foxloader_version";
3737
public static final String KEY_FOXBUCKET_VERSION = "foxbucket_version";
3838
public static final String KEY_ALLOW_MISSING_REGISTRY_KEYS = "allow_missing_registry_keys";
39+
public static final String KEY_SERVER_BUTTON_NAME = "server_button_name";
40+
public static final String KEY_SERVER_BUTTON_LINK = "server_button_link";
3941
private static final HashMap<String, String> selfMetadata = new HashMap<>();
4042
private static final Map<String, String> publicSelfMetaData = Collections.unmodifiableMap(selfMetadata);
4143
private static final ArrayList<Runnable> onActiveMetadataChangedHandlers = new ArrayList<>();
@@ -62,9 +64,15 @@ public static boolean getBoolean(@Nullable String key) {
6264
return Boolean.parseBoolean(getActiveMetadata().get(key));
6365
}
6466

67+
public static boolean isPrivilegedKey(String key) {
68+
return KEY_REINDEV_VERSION.equals(key) ||
69+
KEY_FOXLOADER_VERSION.equals(key) ||
70+
KEY_FOXBUCKET_VERSION.equals(key);
71+
}
72+
6573
public static void putSelfMetadata(@NotNull String key, @Nullable String value) {
6674
Objects.requireNonNull(key, "key");
67-
if (KEY_REINDEV_VERSION.equals(key) || KEY_FOXLOADER_VERSION.equals(key) || KEY_FOXBUCKET_VERSION.equals(key)) {
75+
if (isPrivilegedKey(key)) {
6876
// As we may use these fields in the future for compatibility, don't allow change
6977
throw new IllegalArgumentException("Cannot change privileged key");
7078
}

0 commit comments

Comments
 (0)