78 lines
3.2 KiB
Java
78 lines
3.2 KiB
Java
package net.minecraft.client.telemetry;
|
|
|
|
import java.time.Duration;
|
|
import java.util.UUID;
|
|
import javax.annotation.Nullable;
|
|
import net.minecraft.advancements.AdvancementHolder;
|
|
import net.minecraft.client.telemetry.events.PerformanceMetricsEvent;
|
|
import net.minecraft.client.telemetry.events.WorldLoadEvent;
|
|
import net.minecraft.client.telemetry.events.WorldLoadTimesEvent;
|
|
import net.minecraft.client.telemetry.events.WorldUnloadEvent;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.world.level.GameType;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
|
|
|
@OnlyIn(Dist.CLIENT)
|
|
public class WorldSessionTelemetryManager {
|
|
private final UUID worldSessionId = UUID.randomUUID();
|
|
private final TelemetryEventSender eventSender;
|
|
private final WorldLoadEvent worldLoadEvent;
|
|
private final WorldUnloadEvent worldUnloadEvent = new WorldUnloadEvent();
|
|
private final PerformanceMetricsEvent performanceMetricsEvent;
|
|
private final WorldLoadTimesEvent worldLoadTimesEvent;
|
|
|
|
public WorldSessionTelemetryManager(TelemetryEventSender p_286529_, boolean p_286429_, @Nullable Duration p_286727_, @Nullable String p_286633_) {
|
|
this.worldLoadEvent = new WorldLoadEvent(p_286633_);
|
|
this.performanceMetricsEvent = new PerformanceMetricsEvent();
|
|
this.worldLoadTimesEvent = new WorldLoadTimesEvent(p_286429_, p_286727_);
|
|
this.eventSender = p_286529_.decorate(p_261981_ -> {
|
|
this.worldLoadEvent.addProperties(p_261981_);
|
|
p_261981_.put(TelemetryProperty.WORLD_SESSION_ID, this.worldSessionId);
|
|
});
|
|
}
|
|
|
|
public void tick() {
|
|
this.performanceMetricsEvent.tick(this.eventSender);
|
|
}
|
|
|
|
public void onPlayerInfoReceived(GameType p_261768_, boolean p_261669_) {
|
|
this.worldLoadEvent.setGameMode(p_261768_, p_261669_);
|
|
this.worldUnloadEvent.onPlayerInfoReceived();
|
|
this.worldSessionStart();
|
|
}
|
|
|
|
public void onServerBrandReceived(String p_261520_) {
|
|
this.worldLoadEvent.setServerBrand(p_261520_);
|
|
this.worldSessionStart();
|
|
}
|
|
|
|
public void setTime(long p_261878_) {
|
|
this.worldUnloadEvent.setTime(p_261878_);
|
|
}
|
|
|
|
public void worldSessionStart() {
|
|
if (this.worldLoadEvent.send(this.eventSender)) {
|
|
this.worldLoadTimesEvent.send(this.eventSender);
|
|
this.performanceMetricsEvent.start();
|
|
}
|
|
}
|
|
|
|
public void onDisconnect() {
|
|
this.worldLoadEvent.send(this.eventSender);
|
|
this.performanceMetricsEvent.stop();
|
|
this.worldUnloadEvent.send(this.eventSender);
|
|
}
|
|
|
|
public void onAdvancementDone(Level p_286825_, AdvancementHolder p_298119_) {
|
|
ResourceLocation resourcelocation = p_298119_.id();
|
|
if (p_298119_.value().sendsTelemetryEvent() && "minecraft".equals(resourcelocation.getNamespace())) {
|
|
long i = p_286825_.getGameTime();
|
|
this.eventSender.send(TelemetryEventType.ADVANCEMENT_MADE, p_286184_ -> {
|
|
p_286184_.put(TelemetryProperty.ADVANCEMENT_ID, resourcelocation.toString());
|
|
p_286184_.put(TelemetryProperty.ADVANCEMENT_GAME_TIME, i);
|
|
});
|
|
}
|
|
}
|
|
} |