82 lines
No EOL
3.6 KiB
Java
82 lines
No EOL
3.6 KiB
Java
package com.axolotlmaid.optionsprofiles.profiles;
|
|
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.GsonBuilder;
|
|
import me.jellysquid.mods.sodium.client.SodiumClientMod;
|
|
import me.jellysquid.mods.sodium.client.gui.SodiumGameOptions;
|
|
|
|
import java.io.FileReader;
|
|
import java.io.IOException;
|
|
import java.nio.file.Path;
|
|
|
|
public class SodiumConfigLoader {
|
|
public static void load(Path file) {
|
|
try (FileReader reader = new FileReader(file.toFile())) {
|
|
Gson gson = new GsonBuilder().create();
|
|
ConfigData configData = gson.fromJson(reader, ConfigData.class);
|
|
|
|
apply(configData);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
private static void apply(ConfigData configData) {
|
|
SodiumClientMod.options().quality.weatherQuality = SodiumGameOptions.GraphicsQuality.valueOf(configData.quality.weather_quality);
|
|
SodiumClientMod.options().quality.leavesQuality = SodiumGameOptions.GraphicsQuality.valueOf(configData.quality.leaves_quality);
|
|
SodiumClientMod.options().quality.enableVignette = configData.quality.enable_vignette;
|
|
|
|
SodiumClientMod.options().advanced.enableMemoryTracing = configData.advanced.enable_memory_tracing;
|
|
SodiumClientMod.options().advanced.useAdvancedStagingBuffers = configData.advanced.use_advanced_staging_buffers;
|
|
SodiumClientMod.options().advanced.cpuRenderAheadLimit = configData.advanced.cpu_render_ahead_limit;
|
|
|
|
SodiumClientMod.options().performance.chunkBuilderThreads = configData.performance.chunk_builder_threads;
|
|
SodiumClientMod.options().performance.alwaysDeferChunkUpdates = configData.performance.always_defer_chunk_updates_v2;
|
|
SodiumClientMod.options().performance.animateOnlyVisibleTextures = configData.performance.animate_only_visible_textures;
|
|
SodiumClientMod.options().performance.useEntityCulling = configData.performance.use_entity_culling;
|
|
SodiumClientMod.options().performance.useFogOcclusion = configData.performance.use_fog_occlusion;
|
|
SodiumClientMod.options().performance.useBlockFaceCulling = configData.performance.use_block_face_culling;
|
|
SodiumClientMod.options().performance.useNoErrorGLContext = configData.performance.use_no_error_g_l_context;
|
|
|
|
SodiumClientMod.options().notifications.hideDonationButton = configData.notifications.hide_donation_button;
|
|
|
|
try {
|
|
SodiumClientMod.options().writeChanges();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static class ConfigData {
|
|
public Quality quality;
|
|
public Advanced advanced;
|
|
public Performance performance;
|
|
public Notifications notifications;
|
|
|
|
public static class Quality {
|
|
public String weather_quality;
|
|
public String leaves_quality;
|
|
public boolean enable_vignette;
|
|
}
|
|
|
|
public static class Advanced {
|
|
public boolean enable_memory_tracing;
|
|
public boolean use_advanced_staging_buffers;
|
|
public int cpu_render_ahead_limit;
|
|
}
|
|
|
|
public static class Performance {
|
|
public int chunk_builder_threads;
|
|
public boolean always_defer_chunk_updates_v2;
|
|
public boolean animate_only_visible_textures;
|
|
public boolean use_entity_culling;
|
|
public boolean use_fog_occlusion;
|
|
public boolean use_block_face_culling;
|
|
public boolean use_no_error_g_l_context;
|
|
}
|
|
|
|
public static class Notifications {
|
|
public boolean hide_donation_button;
|
|
}
|
|
}
|
|
} |