144 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.client.main;
 | |
| 
 | |
| import com.mojang.authlib.properties.PropertyMap;
 | |
| import com.mojang.blaze3d.platform.DisplayData;
 | |
| import java.io.File;
 | |
| import java.net.Proxy;
 | |
| import java.nio.file.Path;
 | |
| import net.fabricmc.api.EnvType;
 | |
| import net.fabricmc.api.Environment;
 | |
| import net.minecraft.client.User;
 | |
| import net.minecraft.client.resources.IndexedAssetSource;
 | |
| import net.minecraft.util.StringUtil;
 | |
| import org.jetbrains.annotations.Nullable;
 | |
| 
 | |
| @Environment(EnvType.CLIENT)
 | |
| public class GameConfig {
 | |
| 	public final GameConfig.UserData user;
 | |
| 	public final DisplayData display;
 | |
| 	public final GameConfig.FolderData location;
 | |
| 	public final GameConfig.GameData game;
 | |
| 	public final GameConfig.QuickPlayData quickPlay;
 | |
| 
 | |
| 	public GameConfig(GameConfig.UserData user, DisplayData display, GameConfig.FolderData location, GameConfig.GameData game, GameConfig.QuickPlayData quickPlay) {
 | |
| 		this.user = user;
 | |
| 		this.display = display;
 | |
| 		this.location = location;
 | |
| 		this.game = game;
 | |
| 		this.quickPlay = quickPlay;
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public static class FolderData {
 | |
| 		public final File gameDirectory;
 | |
| 		public final File resourcePackDirectory;
 | |
| 		public final File assetDirectory;
 | |
| 		@Nullable
 | |
| 		public final String assetIndex;
 | |
| 
 | |
| 		public FolderData(File gameDirectory, File resourcePackDirectory, File assetDirectory, @Nullable String assetIndex) {
 | |
| 			this.gameDirectory = gameDirectory;
 | |
| 			this.resourcePackDirectory = resourcePackDirectory;
 | |
| 			this.assetDirectory = assetDirectory;
 | |
| 			this.assetIndex = assetIndex;
 | |
| 		}
 | |
| 
 | |
| 		public Path getExternalAssetSource() {
 | |
| 			return this.assetIndex == null ? this.assetDirectory.toPath() : IndexedAssetSource.createIndexFs(this.assetDirectory.toPath(), this.assetIndex);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public static class GameData {
 | |
| 		public final boolean demo;
 | |
| 		public final String launchVersion;
 | |
| 		public final String versionType;
 | |
| 		public final boolean disableMultiplayer;
 | |
| 		public final boolean disableChat;
 | |
| 		public final boolean captureTracyImages;
 | |
| 		public final boolean renderDebugLabels;
 | |
| 
 | |
| 		public GameData(
 | |
| 			boolean demo,
 | |
| 			String launchVersion,
 | |
| 			String versionType,
 | |
| 			boolean disableMultiplayer,
 | |
| 			boolean disableChat,
 | |
| 			boolean captureTracyImages,
 | |
| 			boolean renderDebugLabels
 | |
| 		) {
 | |
| 			this.demo = demo;
 | |
| 			this.launchVersion = launchVersion;
 | |
| 			this.versionType = versionType;
 | |
| 			this.disableMultiplayer = disableMultiplayer;
 | |
| 			this.disableChat = disableChat;
 | |
| 			this.captureTracyImages = captureTracyImages;
 | |
| 			this.renderDebugLabels = renderDebugLabels;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public record QuickPlayData(@Nullable String logPath, GameConfig.QuickPlayVariant variant) {
 | |
| 		public boolean isEnabled() {
 | |
| 			return this.variant.isEnabled();
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public record QuickPlayDisabled() implements GameConfig.QuickPlayVariant {
 | |
| 		@Override
 | |
| 		public boolean isEnabled() {
 | |
| 			return false;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public record QuickPlayMultiplayerData(String serverAddress) implements GameConfig.QuickPlayVariant {
 | |
| 		@Override
 | |
| 		public boolean isEnabled() {
 | |
| 			return !StringUtil.isBlank(this.serverAddress);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public record QuickPlayRealmsData(String realmId) implements GameConfig.QuickPlayVariant {
 | |
| 		@Override
 | |
| 		public boolean isEnabled() {
 | |
| 			return !StringUtil.isBlank(this.realmId);
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public record QuickPlaySinglePlayerData(@Nullable String worldId) implements GameConfig.QuickPlayVariant {
 | |
| 		@Override
 | |
| 		public boolean isEnabled() {
 | |
| 			return true;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public sealed interface QuickPlayVariant
 | |
| 		permits GameConfig.QuickPlaySinglePlayerData,
 | |
| 		GameConfig.QuickPlayMultiplayerData,
 | |
| 		GameConfig.QuickPlayRealmsData,
 | |
| 		GameConfig.QuickPlayDisabled {
 | |
| 		GameConfig.QuickPlayVariant DISABLED = new GameConfig.QuickPlayDisabled();
 | |
| 
 | |
| 		boolean isEnabled();
 | |
| 	}
 | |
| 
 | |
| 	@Environment(EnvType.CLIENT)
 | |
| 	public static class UserData {
 | |
| 		public final User user;
 | |
| 		public final PropertyMap userProperties;
 | |
| 		public final PropertyMap profileProperties;
 | |
| 		public final Proxy proxy;
 | |
| 
 | |
| 		public UserData(User user, PropertyMap userProperties, PropertyMap profileProperties, Proxy proxy) {
 | |
| 			this.user = user;
 | |
| 			this.userProperties = userProperties;
 | |
| 			this.profileProperties = profileProperties;
 | |
| 			this.proxy = proxy;
 | |
| 		}
 | |
| 	}
 | |
| }
 |