ClientClockManager.java
net.minecraft.client.ClientClockManager
信息
- 全限定名:net.minecraft.client.ClientClockManager
- 类型:public class
- 包:net.minecraft.client
- 源码路径:src/main/java/net/minecraft/client/ClientClockManager.java
- 起始行号:L14
- 实现:ClockManager
- 职责:
TODO
字段/常量
-
clocks- 类型:
Map<Holder<WorldClock>,ClientClockManager.ClockInstance> - 修饰符:
private final - 源码定位:
L15 - 说明:
TODO
- 类型:
-
lastTickGameTime- 类型:
long - 修饰符:
private - 源码定位:
L16 - 说明:
TODO
- 类型:
内部类/嵌套类型
net.minecraft.client.ClientClockManager.ClockInstance- 类型:
class - 修饰符:
private static - 源码定位:
L50 - 说明:
TODO
- 类型:
构造器
- 无
方法
下面的方法块按源码顺序生成。
private ClientClockManager.ClockInstance getInstance(Holder<WorldClock> definition) @ L18
- 方法名:getInstance
- 源码定位:L18
- 返回类型:ClientClockManager.ClockInstance
- 修饰符:private
参数:
- definition: Holder
说明:
TODO
public void tick(long gameTime) @ L22
- 方法名:tick
- 源码定位:L22
- 返回类型:void
- 修饰符:public
参数:
- gameTime: long
说明:
TODO
public void handleUpdates(long gameTime, Map<Holder<WorldClock>,ClockNetworkState> updates) @ L34
- 方法名:handleUpdates
- 源码定位:L34
- 返回类型:void
- 修饰符:public
参数:
- gameTime: long
- updates: Map<Holder
,ClockNetworkState>
说明:
TODO
public long getTotalTicks(Holder<WorldClock> definition) @ L44
- 方法名:getTotalTicks
- 源码定位:L44
- 返回类型:long
- 修饰符:public
参数:
- definition: Holder
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ClientClockManager implements ClockManager {
private final Map<Holder<WorldClock>, ClientClockManager.ClockInstance> clocks = new HashMap<>();
private long lastTickGameTime;
private ClientClockManager.ClockInstance getInstance(Holder<WorldClock> definition) {
return this.clocks.computeIfAbsent(definition, var0 -> new ClientClockManager.ClockInstance());
}
public void tick(long gameTime) {
long gameTimeDelta = gameTime - this.lastTickGameTime;
this.lastTickGameTime = gameTime;
for (ClientClockManager.ClockInstance instance : this.clocks.values()) {
double newPartialTicks = instance.partialTick + (double)gameTimeDelta * instance.rate;
long fullTicks = Mth.floor(newPartialTicks);
instance.partialTick = (float)(newPartialTicks - fullTicks);
instance.totalTicks += fullTicks;
}
}
public void handleUpdates(long gameTime, Map<Holder<WorldClock>, ClockNetworkState> updates) {
this.tick(gameTime);
updates.forEach((definition, state) -> {
ClientClockManager.ClockInstance clock = this.getInstance((Holder<WorldClock>)definition);
clock.totalTicks = state.totalTicks();
clock.partialTick = state.partialTick();
clock.rate = state.rate();
});
}
@Override
public long getTotalTicks(Holder<WorldClock> definition) {
return this.getInstance(definition).totalTicks;
}
@OnlyIn(Dist.CLIENT)
private static class ClockInstance {
private long totalTicks;
private float partialTick;
private float rate = 1.0F;
}
}引用的其他类
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Mth.floor()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置: