Spaces:
Build error
Build error
File size: 3,836 Bytes
d46f4a3 |
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
package net.minecraft.client;
import it.unimi.dsi.fastutil.floats.FloatUnaryOperator;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public interface DeltaTracker {
DeltaTracker ZERO = new DeltaTracker.DefaultValue(0.0F);
DeltaTracker ONE = new DeltaTracker.DefaultValue(1.0F);
float getGameTimeDeltaTicks();
float getGameTimeDeltaPartialTick(boolean p_345465_);
float getRealtimeDeltaTicks();
@OnlyIn(Dist.CLIENT)
public static class DefaultValue implements DeltaTracker {
private final float value;
DefaultValue(float p_343701_) {
this.value = p_343701_;
}
@Override
public float getGameTimeDeltaTicks() {
return this.value;
}
@Override
public float getGameTimeDeltaPartialTick(boolean p_344036_) {
return this.value;
}
@Override
public float getRealtimeDeltaTicks() {
return this.value;
}
}
@OnlyIn(Dist.CLIENT)
public static class Timer implements DeltaTracker {
private float deltaTicks;
private float deltaTickResidual;
private float realtimeDeltaTicks;
private float pausedDeltaTickResidual;
private long lastMs;
private long lastUiMs;
private final float msPerTick;
private final FloatUnaryOperator targetMsptProvider;
private boolean paused;
private boolean frozen;
public Timer(float p_343882_, long p_344080_, FloatUnaryOperator p_343677_) {
this.msPerTick = 1000.0F / p_343882_;
this.lastUiMs = this.lastMs = p_344080_;
this.targetMsptProvider = p_343677_;
}
public int advanceTime(long p_343106_, boolean p_342855_) {
this.advanceRealTime(p_343106_);
return p_342855_ ? this.advanceGameTime(p_343106_) : 0;
}
private int advanceGameTime(long p_342679_) {
this.deltaTicks = (float)(p_342679_ - this.lastMs) / this.targetMsptProvider.apply(this.msPerTick);
this.lastMs = p_342679_;
this.deltaTickResidual = this.deltaTickResidual + this.deltaTicks;
int i = (int)this.deltaTickResidual;
this.deltaTickResidual -= (float)i;
return i;
}
private void advanceRealTime(long p_342368_) {
this.realtimeDeltaTicks = (float)(p_342368_ - this.lastUiMs) / this.msPerTick;
this.lastUiMs = p_342368_;
}
public void updatePauseState(boolean p_342098_) {
if (p_342098_) {
this.pause();
} else {
this.unPause();
}
}
private void pause() {
if (!this.paused) {
this.pausedDeltaTickResidual = this.deltaTickResidual;
}
this.paused = true;
}
private void unPause() {
if (this.paused) {
this.deltaTickResidual = this.pausedDeltaTickResidual;
}
this.paused = false;
}
public void updateFrozenState(boolean p_344005_) {
this.frozen = p_344005_;
}
@Override
public float getGameTimeDeltaTicks() {
return this.deltaTicks;
}
@Override
public float getGameTimeDeltaPartialTick(boolean p_344876_) {
if (!p_344876_ && this.frozen) {
return 1.0F;
} else {
return this.paused ? this.pausedDeltaTickResidual : this.deltaTickResidual;
}
}
@Override
public float getRealtimeDeltaTicks() {
return this.realtimeDeltaTicks > 7.0F ? 0.5F : this.realtimeDeltaTicks;
}
}
} |