Skip to content

Commit 208a872

Browse files
committed
Timer system
1 parent 35e3d7d commit 208a872

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.lambda.mixin.render;
2+
3+
import com.lambda.core.TimerManager;
4+
import net.minecraft.client.render.RenderTickCounter;
5+
import org.spongepowered.asm.mixin.Mixin;
6+
import org.spongepowered.asm.mixin.Shadow;
7+
import org.spongepowered.asm.mixin.injection.At;
8+
import org.spongepowered.asm.mixin.injection.Inject;
9+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
10+
11+
@Mixin(RenderTickCounter.class)
12+
public class RenderTickCounterMixin {
13+
14+
@Shadow
15+
public float lastFrameDuration;
16+
@Shadow
17+
public float tickDelta;
18+
@Shadow
19+
private long prevTimeMillis;
20+
21+
@Inject(method = "beginRenderTick", at = @At("HEAD"), cancellable = true)
22+
private void beginRenderTick(long timeMillis, CallbackInfoReturnable<Integer> ci) {
23+
lastFrameDuration = (timeMillis - prevTimeMillis) / TimerManager.getTickLength();
24+
prevTimeMillis = timeMillis;
25+
tickDelta += lastFrameDuration;
26+
int i = (int) tickDelta;
27+
tickDelta -= i;
28+
29+
ci.setReturnValue(i);
30+
}
31+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.lambda.core
2+
3+
import com.lambda.event.EventFlow.post
4+
import com.lambda.event.events.ClientEvent
5+
import com.lambda.event.events.TickEvent
6+
import com.lambda.event.listener.UnsafeListener.Companion.unsafeListener
7+
8+
object TimerManager {
9+
@JvmStatic var tickLength = 50f; private set
10+
11+
init {
12+
unsafeListener<TickEvent.Post> {
13+
ClientEvent.Timer(1.0).post {
14+
tickLength = 50f / speed.toFloat()
15+
}
16+
}
17+
}
18+
}

common/src/main/kotlin/com/lambda/event/events/ClientEvent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ import com.lambda.event.Event
66
abstract class ClientEvent : Event {
77
class Shutdown : ClientEvent()
88
class Startup : ClientEvent()
9+
class Timer(var speed: Double) : Event
910
}

0 commit comments

Comments
 (0)