minecraft-src/net/minecraft/client/telemetry/events/WorldLoadEvent.java
2025-07-04 01:41:11 +03:00

72 lines
2.4 KiB
Java

package net.minecraft.client.telemetry.events;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.client.telemetry.TelemetryEventSender;
import net.minecraft.client.telemetry.TelemetryEventType;
import net.minecraft.client.telemetry.TelemetryProperty;
import net.minecraft.client.telemetry.TelemetryPropertyMap;
import net.minecraft.world.level.GameType;
import org.jetbrains.annotations.Nullable;
@Environment(EnvType.CLIENT)
public class WorldLoadEvent {
private boolean eventSent;
@Nullable
private TelemetryProperty.GameMode gameMode;
@Nullable
private String serverBrand;
@Nullable
private final String minigameName;
public WorldLoadEvent(@Nullable String minigameName) {
this.minigameName = minigameName;
}
public void addProperties(TelemetryPropertyMap.Builder builder) {
if (this.serverBrand != null) {
builder.put(TelemetryProperty.SERVER_MODDED, !this.serverBrand.equals("vanilla"));
}
builder.put(TelemetryProperty.SERVER_TYPE, this.getServerType());
}
private TelemetryProperty.ServerType getServerType() {
ServerData serverData = Minecraft.getInstance().getCurrentServer();
if (serverData != null && serverData.isRealm()) {
return TelemetryProperty.ServerType.REALM;
} else {
return Minecraft.getInstance().hasSingleplayerServer() ? TelemetryProperty.ServerType.LOCAL : TelemetryProperty.ServerType.OTHER;
}
}
public boolean send(TelemetryEventSender sender) {
if (!this.eventSent && this.gameMode != null && this.serverBrand != null) {
this.eventSent = true;
sender.send(TelemetryEventType.WORLD_LOADED, builder -> {
builder.put(TelemetryProperty.GAME_MODE, this.gameMode);
if (this.minigameName != null) {
builder.put(TelemetryProperty.REALMS_MAP_CONTENT, this.minigameName);
}
});
return true;
} else {
return false;
}
}
public void setGameMode(GameType gameMode, boolean isHardcore) {
this.gameMode = switch (gameMode) {
case SURVIVAL -> isHardcore ? TelemetryProperty.GameMode.HARDCORE : TelemetryProperty.GameMode.SURVIVAL;
case CREATIVE -> TelemetryProperty.GameMode.CREATIVE;
case ADVENTURE -> TelemetryProperty.GameMode.ADVENTURE;
case SPECTATOR -> TelemetryProperty.GameMode.SPECTATOR;
};
}
public void setServerBrand(String serverBrand) {
this.serverBrand = serverBrand;
}
}