minecraft-src/net/minecraft/client/main/GameConfig.java
2025-07-04 03:45:38 +03:00

101 lines
3.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 path, @Nullable String singleplayer, @Nullable String multiplayer, @Nullable String realms) {
public boolean isEnabled() {
return !StringUtil.isBlank(this.singleplayer) || !StringUtil.isBlank(this.multiplayer) || !StringUtil.isBlank(this.realms);
}
}
@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;
}
}
}