12
12
import net .minecraft .client .gui .screen .Screen ;
13
13
import net .minecraft .client .gui .screen .TitleScreen ;
14
14
import net .minecraft .client .gui .widget .ButtonWidget ;
15
- import net .minecraft .client .gui .widget .GridWidget ;
15
+ import net .minecraft .client .gui .widget .DirectionalLayoutWidget ;
16
16
import net .minecraft .text .Text ;
17
+ import org .spongepowered .asm .mixin .Final ;
17
18
import org .spongepowered .asm .mixin .Mixin ;
19
+ import org .spongepowered .asm .mixin .Shadow ;
18
20
import org .spongepowered .asm .mixin .Unique ;
19
21
import org .spongepowered .asm .mixin .injection .At ;
20
22
import org .spongepowered .asm .mixin .injection .Inject ;
25
27
26
28
@ Mixin (DisconnectedScreen .class )
27
29
public abstract class DisconnectedScreenMixin extends Screen {
30
+ @ Shadow
31
+ @ Final
32
+ private DirectionalLayoutWidget grid ;
28
33
@ Unique private ButtonWidget reconnectBtn ;
29
34
@ Unique private double time = Modules .get ().get (AutoReconnect .class ).time .get () * 20 ;
30
35
@@ -33,13 +38,14 @@ protected DisconnectedScreenMixin(Text title) {
33
38
}
34
39
35
40
@ Inject (method = "init" , at = @ At (value = "INVOKE" , target = "Lnet/minecraft/client/gui/widget/DirectionalLayoutWidget;refreshPositions()V" , shift = At .Shift .BEFORE ), locals = LocalCapture .CAPTURE_FAILHARD )
36
- private void addButtons (CallbackInfo ci , ButtonWidget buttonWidget , GridWidget . Adder adder ) {
41
+ private void addButtons (CallbackInfo ci , ButtonWidget buttonWidget ) {
37
42
AutoReconnect autoReconnect = Modules .get ().get (AutoReconnect .class );
38
43
39
44
if (autoReconnect .lastServerConnection != null ) {
40
- reconnectBtn = adder .add (new ButtonWidget .Builder (Text .literal (getText ()), button -> tryConnecting ()).build ());
45
+ reconnectBtn = new ButtonWidget .Builder (Text .literal (getText ()), button -> tryConnecting ()).build ();
46
+ grid .add (reconnectBtn );
41
47
42
- adder .add (
48
+ grid .add (
43
49
new ButtonWidget .Builder (Text .literal ("Toggle Auto Reconnect" ), button -> {
44
50
autoReconnect .toggle ();
45
51
reconnectBtn .setMessage (Text .literal (getText ()));
@@ -62,12 +68,14 @@ public void tick() {
62
68
}
63
69
}
64
70
71
+ @ Unique
65
72
private String getText () {
66
73
String reconnectText = "Reconnect" ;
67
74
if (Modules .get ().isActive (AutoReconnect .class )) reconnectText += " " + String .format ("(%.1f)" , time / 20 );
68
75
return reconnectText ;
69
76
}
70
77
78
+ @ Unique
71
79
private void tryConnecting () {
72
80
var lastServer = Modules .get ().get (AutoReconnect .class ).lastServerConnection ;
73
81
ConnectScreen .connect (new TitleScreen (), mc , lastServer .left (), lastServer .right (), false );
0 commit comments