2929public abstract class MixinTickRateManager implements Tickratechanger {
3030 @ Unique
3131 private static float tickrateSaved = 20 ;
32- private boolean advanceTickrate ;
32+ @ Unique
33+ private boolean advanceTickrateServer ;
34+ @ Unique
35+ private boolean advanceTickrateClient ;
3336 @ Unique
3437 private boolean isDisconnecting ;
3538
@@ -79,7 +82,8 @@ public float getTickrateSaved() {
7982
8083 @ Override
8184 public void toggleTickrate0 () {
82- advanceTickrate = false ;
85+ advanceTickrateServer = false ;
86+ advanceTickrateClient = false ;
8387 if (tickrate == 0 ) {
8488 setTickRate (tickrateSaved );
8589 } else {
@@ -89,28 +93,31 @@ public void toggleTickrate0() {
8993
9094 @ Override
9195 public void enableTickrate0 (boolean enable ) {
92- advanceTickrate = false ;
96+ advanceTickrateServer = false ;
97+ advanceTickrateClient = false ;
9398 if (enable ) {
9499 if (tickrate != 0 )
95100 setTickRate (0f );
96101 } else {
97102 if (tickrate == 0 )
98103 setTickRate (tickrateSaved );
99104 }
100-
101105 }
102106
103107 @ Override
104108 public void advanceTick () {
105109 if (tickrate == 0 ) {
106110 setTickRate (tickrateSaved );
107- this .advanceTickrate = true ;
111+ if (isServer ())
112+ this .advanceTickrateServer = true ;
113+ else
114+ this .advanceTickrateClient = true ;
108115 }
109116 }
110117
111118 @ Override
112119 public boolean isAdvanceTick () {
113- return advanceTickrate ;
120+ return advanceTickrateServer || advanceTickrateClient ;
114121 }
115122
116123 @ Override
@@ -124,8 +131,11 @@ public void disconnect() {
124131
125132 @ Inject (method = "tick" , at = @ At ("RETURN" ))
126133 public void inject_Tick (CallbackInfo ci ) {
127- if (advanceTickrate && !(((TickRateManager ) (Object ) this ) instanceof ServerTickRateManager )) {
128- this .advanceTickrate = false ;
134+ if (advanceTickrateServer || advanceTickrateClient ) {
135+ if (isServer ())
136+ this .advanceTickrateServer = false ;
137+ else
138+ this .advanceTickrateClient = false ;
129139 setTickRate (0 );
130140 }
131141 }
@@ -151,6 +161,10 @@ public long getAdjustedMilliseconds() {
151161 return (long ) (fakeTimeSinceTC + time );
152162 }
153163
164+ private boolean isServer () {
165+ return ((TickRateManager ) (Object ) this ) instanceof ServerTickRateManager ;
166+ }
167+
154168 @ Shadow
155169 protected abstract void setTickRate (float f );
156170
0 commit comments