72 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			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;
 | |
| 	}
 | |
| }
 |