summaryrefslogtreecommitdiff
path: root/src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java
diff options
context:
space:
mode:
authorRosa <rosaontheweb@proton.me>2026-05-19 17:40:02 -0400
committerRosa <rosaontheweb@proton.me>2026-05-19 17:40:02 -0400
commitcdb7b6faffa3d708a936b36197996d0beb5be82c (patch)
tree6e75255a3cb2e4f742e345f2da56d7464070bf70 /src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java
the mod works
Diffstat (limited to 'src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java')
-rw-r--r--src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java b/src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java
new file mode 100644
index 0000000..d756c23
--- /dev/null
+++ b/src/main/java/club/eviltransgenders/autoreconnect/AutoReconnect.java
@@ -0,0 +1,45 @@
+package club.eviltransgenders.autoreconnect;
+
+import net.fabricmc.api.ClientModInitializer;
+import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
+import net.minecraft.client.gui.components.Button;
+import net.minecraft.client.gui.screens.ConnectScreen;
+import net.minecraft.client.gui.screens.DisconnectedScreen;
+import net.minecraft.client.gui.screens.multiplayer.JoinMultiplayerScreen;
+import net.minecraft.client.gui.screens.Screen;
+import net.minecraft.client.gui.screens.TitleScreen;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.multiplayer.resolver.ServerAddress;
+import net.minecraft.client.multiplayer.ServerData;
+import net.minecraft.network.chat.Component;
+
+public final class AutoReconnect implements ClientModInitializer {
+ private static AutoReconnect instance;
+ private long reconnectTimer;
+ public ServerData lastServerData;
+
+ @Override
+ public void onInitializeClient() {
+ instance = this;
+ ScreenEvents.AFTER_INIT.register(this::afterScreenInit);
+ }
+
+ public void afterScreenInit(Minecraft client, Screen screen, int scaledWidth, int scaledHeight) {
+ if (screen instanceof DisconnectedScreen) {
+ this.reconnectTimer = 5 * 20;
+ ScreenEvents.afterTick(screen).register(this::afterScreenTick);
+ }
+ }
+
+ public void afterScreenTick(Screen screen) {
+ if (--this.reconnectTimer <= 0) {
+ ConnectScreen.startConnecting(new JoinMultiplayerScreen(new TitleScreen()), Minecraft.getInstance(), ServerAddress.parseString(this.lastServerData.ip), this.lastServerData, false, null);
+ } else {
+ ((Button) screen.children().getLast()).setMessage(Component.translatable("gui.autoreconnect.reconnect", this.reconnectTimer / 20));
+ }
+ }
+
+ public static AutoReconnect getInstance() {
+ return instance;
+ }
+}