@@ -41,6 +41,9 @@ public AutoLogMixin(Category category, String name, String description) {
41
41
@ Shadow
42
42
@ Final
43
43
private Setting <Boolean > toggleOff ;
44
+ @ Shadow
45
+ @ Final
46
+ private Setting <Boolean > smartToggle ;
44
47
45
48
@ Unique
46
49
private boolean didLog = false ;
@@ -53,7 +56,7 @@ public AutoLogMixin(Category category, String name, String description) {
53
56
54
57
@ Override
55
58
public void onDeactivate () {
56
- if (toggleOff .get () && didLog ) {
59
+ if (toggleOff .get () || smartToggle . get () && didLog ) {
57
60
MeteorClient .EVENT_BUS .subscribe (this );
58
61
}
59
62
}
@@ -71,16 +74,15 @@ private void addIllegalDisconnectSetting(CallbackInfo ci) {
71
74
72
75
@ Inject (method = "onTick" ,at = @ At ("HEAD" ), cancellable = true )
73
76
private void preventNullPointerExceptions (CallbackInfo ci ) {
74
- if (!Utils .canUpdate ()) ci .cancel ();
77
+ if (!Utils .canUpdate () || ! isActive () ) ci .cancel ();
75
78
}
76
79
77
- @ Inject (method = "disconnect" , at = @ At ("HEAD" ), cancellable = true )
78
- private void maybeForceKick ( String reason , CallbackInfo ci ) {
80
+ @ Inject (method = "disconnect(Lnet/minecraft/text/Text;)V " , at = @ At ("HEAD" ), cancellable = true , remap = true )
81
+ private void maybeIllegalDisconnect ( Text reason , CallbackInfo ci ) {
79
82
if (forceKick != null && forceKick .get ()) {
80
83
ci .cancel ();
81
84
didLog = true ;
82
- if (toggleOff .get ()) toggle ();
83
- disconnectReason = Text .literal ("§8[§aAutoLog§8] §f" + reason );
85
+ disconnectReason = Text .literal ("§8[§a§oAutoLog§8] §f" + reason .getString ());
84
86
StardustUtil .illegalDisconnect (true , Stardust .illegalDisconnectMethodSetting .get ());
85
87
}
86
88
}
@@ -91,7 +93,7 @@ private void onPacketReceive(PacketEvent.Receive event) {
91
93
if (disconnectReason == null || !(event .packet instanceof DisconnectS2CPacket packet )) return ;
92
94
if (didLog ) {
93
95
((DisconnectS2CPacketAccessor )(Object ) packet ).setReason (disconnectReason );
94
- MeteorClient .EVENT_BUS .unsubscribe (this );
96
+ if (! isActive ()) MeteorClient .EVENT_BUS .unsubscribe (this );
95
97
disconnectReason = null ;
96
98
didLog = false ;
97
99
}
0 commit comments