blob: d756c237e504c0c20051474a097a9d7df4135f69 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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;
}
}
|