Fixed the forge and fabric not building and made the gradlew an executable
This commit is contained in:
@@ -142,14 +142,14 @@ public class ClientProxy
|
||||
boolean PreDebugToggle = false;
|
||||
boolean PreDrawToggle = false;
|
||||
public void onKeyInput() {
|
||||
if (Config.Client.AdvancedModOptions.Debugging.enableDebugKeybindings)
|
||||
if (Config.Client.Advanced.Debugging.enableDebugKeybindings)
|
||||
{
|
||||
// Only activates when you press the key
|
||||
if (DebugToggle.isDown() && DebugToggle.isDown() != PreDebugToggle)
|
||||
Config.Client.AdvancedModOptions.Debugging.debugMode = Config.Client.AdvancedModOptions.Debugging.debugMode.getNext();
|
||||
Config.Client.Advanced.Debugging.debugMode = Config.Client.Advanced.Debugging.debugMode.getNext();
|
||||
|
||||
if (DrawToggle.isDown() && DrawToggle.isDown() != PreDebugToggle)
|
||||
Config.Client.AdvancedModOptions.Debugging.drawLods = !Config.Client.AdvancedModOptions.Debugging.drawLods;
|
||||
Config.Client.Advanced.Debugging.drawLods = !Config.Client.Advanced.Debugging.drawLods;
|
||||
}
|
||||
PreDebugToggle = DebugToggle.isDown();
|
||||
PreDrawToggle = DrawToggle.isDown();
|
||||
|
||||
@@ -25,34 +25,35 @@ import com.seibel.lod.core.enums.rendering.*;
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IAdvanced.*;
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.*;
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IWorldGenerator;
|
||||
import com.seibel.lod.fabric.wrappers.config.ConfigGui;
|
||||
import me.shedaniel.autoconfig.ConfigData;
|
||||
import me.shedaniel.autoconfig.annotation.ConfigEntry;
|
||||
|
||||
/**
|
||||
* This handles any configuration the user has access to.
|
||||
* @author coolGi2007
|
||||
* @version 11-29-2021
|
||||
* @version 12-02-2021
|
||||
*/
|
||||
@me.shedaniel.autoconfig.annotation.Config(name = ModInfo.ID)
|
||||
public class Config implements ConfigData
|
||||
//public class Config extends ConfigGui
|
||||
{
|
||||
// CONFIG STRUCTURE
|
||||
// -> Client
|
||||
// |
|
||||
// |-> Graphics
|
||||
// | |-> QualityOption
|
||||
// | |-> FogQualityOption
|
||||
// | |-> AdvancedGraphicsOption
|
||||
// | |-> Quality
|
||||
// | |-> FogQuality
|
||||
// | |-> AdvancedGraphics
|
||||
// |
|
||||
// |-> World Generation
|
||||
// |
|
||||
// |-> Advanced Mod Option
|
||||
// |-> Advanced
|
||||
// |-> Threads
|
||||
// |-> Buffers
|
||||
// |-> Debugging
|
||||
|
||||
// Since the original config system uses forge stuff, that means we have to rewrite the whole config system
|
||||
// TODO: Stop using autoconfig and use manual config for cloth config
|
||||
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public Client client = new Client();
|
||||
@@ -66,22 +67,22 @@ public class Config implements ConfigData
|
||||
public WorldGenerator worldGenerator = new WorldGenerator();
|
||||
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public AdvancedModOptions advancedModOptions = new AdvancedModOptions();
|
||||
public Advanced advanced = new Advanced();
|
||||
|
||||
|
||||
public static class Graphics
|
||||
{
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public QualityOption qualityOption = new QualityOption();
|
||||
public Quality quality = new Quality();
|
||||
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public FogQualityOption fogQualityOption = new FogQualityOption();
|
||||
public FogQuality fogQuality = new FogQuality();
|
||||
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public AdvancedGraphicsOption advancedGraphicsOption = new AdvancedGraphicsOption();
|
||||
public AdvancedGraphics advancedGraphicsOption = new AdvancedGraphics();
|
||||
|
||||
|
||||
public static class QualityOption
|
||||
public static class Quality
|
||||
{
|
||||
@ConfigEntry.Category("lod.Graphics.QualityOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
@@ -104,8 +105,8 @@ public class Config implements ConfigData
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static HorizontalQuality horizontalQuality = IQuality.HORIZONTAL_QUALITY_DEFAULT;
|
||||
}
|
||||
|
||||
public static class FogQualityOption
|
||||
|
||||
public static class FogQuality
|
||||
{
|
||||
@ConfigEntry.Category("lod.Graphics.FogQualityOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
@@ -123,8 +124,8 @@ public class Config implements ConfigData
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static boolean disableVanillaFog = IFogQuality.DISABLE_VANILLA_FOG_DEFAULT;
|
||||
}
|
||||
|
||||
public static class AdvancedGraphicsOption
|
||||
|
||||
public static class AdvancedGraphics
|
||||
{
|
||||
@ConfigEntry.Category("lod.Graphics.AdvancedGraphicsOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
@@ -142,22 +143,13 @@ public class Config implements ConfigData
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static VanillaOverdraw vanillaOverdraw = IAdvancedGraphics.VANILLA_OVERDRAW_DEFAULT;
|
||||
|
||||
@ConfigEntry.Category("lod.Graphics.AdvancedGraphicsOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static GpuUploadMethod gpuUploadMethod = IAdvancedGraphics.GPU_UPLOAD_METHOD_DEFAULT;
|
||||
|
||||
@ConfigEntry.Category("lod.Graphics.AdvancedGraphicsOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
@ConfigEntry.BoundedDiscrete(min = 0, max = 5000)
|
||||
public static int gpuUploadTimeoutInMilleseconds = IAdvancedGraphics.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DEFAULT.defaultValue;
|
||||
|
||||
@ConfigEntry.Category("lod.Graphics.AdvancedGraphicsOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static boolean useExtendedNearClipPlane = IAdvancedGraphics.USE_EXTENDED_NEAR_CLIP_PLANE_DEFAULT;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//========================//
|
||||
// WorldGenerator Configs //
|
||||
//========================//
|
||||
@@ -185,12 +177,12 @@ public class Config implements ConfigData
|
||||
public static boolean useExperimentalPreGenLoading = false;
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
//============================//
|
||||
// AdvancedModOptions Configs //
|
||||
//============================//
|
||||
public static class AdvancedModOptions
|
||||
|
||||
|
||||
//==================//
|
||||
// Advanced Configs //
|
||||
//==================//
|
||||
public static class Advanced
|
||||
{
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public Threading threading = new Threading();
|
||||
@@ -201,7 +193,7 @@ public class Config implements ConfigData
|
||||
@ConfigEntry.Gui.CollapsibleObject
|
||||
public Buffers buffers = new Buffers();
|
||||
|
||||
|
||||
|
||||
public static class Threading
|
||||
{
|
||||
@ConfigEntry.Category("lod.AdvancedModOptions.Threading")
|
||||
@@ -217,9 +209,9 @@ public class Config implements ConfigData
|
||||
public static int numberOfBufferBuilderThreads = IThreading.NUMBER_OF_BUFFER_BUILDER_THREADS_MIN_DEFAULT_MAX.defaultValue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//===============//
|
||||
// Debug Options //
|
||||
//===============//
|
||||
@@ -237,10 +229,19 @@ public class Config implements ConfigData
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static boolean enableDebugKeybindings = IDebugging.DEBUG_KEYBINDINGS_ENABLED_DEFAULT;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static class Buffers
|
||||
{
|
||||
@ConfigEntry.Category("lod.Graphics.AdvancedGraphicsOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static GpuUploadMethod gpuUploadMethod = IBuffers.GPU_UPLOAD_METHOD_DEFAULT;
|
||||
|
||||
@ConfigEntry.Category("lod.Graphics.AdvancedGraphicsOption")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
@ConfigEntry.BoundedDiscrete(min = 0, max = 5000)
|
||||
public static int gpuUploadTimeoutInMilleseconds = IBuffers.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DEFAULT.defaultValue;
|
||||
|
||||
@ConfigEntry.Category("lod.AdvancedModOptions.Buffers")
|
||||
@ConfigEntry.Gui.Tooltip
|
||||
public static BufferRebuildTimes rebuildTimes = IBuffers.REBUILD_TIMES_DEFAULT;
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.seibel.lod.core.ModInfo;
|
||||
import com.seibel.lod.core.api.ClientApi;
|
||||
import com.seibel.lod.fabric.wrappers.DependencySetup;
|
||||
|
||||
import com.seibel.lod.fabric.wrappers.config.ConfigGui;
|
||||
import me.shedaniel.autoconfig.AutoConfig;
|
||||
import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
@@ -59,6 +60,7 @@ public class Main implements ClientModInitializer
|
||||
|
||||
// This loads the mod after minecraft loads which doesn't causes a lot of issues
|
||||
public static void init() {
|
||||
// ConfigGui.init(ModInfo.ID, Config.class);
|
||||
LodCommonMain.startup(null);
|
||||
DependencySetup.createInitialBindings();
|
||||
ClientApi.LOGGER.info(ModInfo.READABLE_NAME + ", Version: " + ModInfo.VERSION);
|
||||
|
||||
@@ -17,6 +17,12 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Adds a button to the menu to goto the config
|
||||
*
|
||||
* @author coolGi2007
|
||||
* @version 12-02-2021
|
||||
*/
|
||||
@Mixin(OptionsScreen.class)
|
||||
public class MixinOptionsScreen extends Screen {
|
||||
// Get the texture for the button
|
||||
@@ -29,7 +35,7 @@ public class MixinOptionsScreen extends Screen {
|
||||
private void lodconfig$init(CallbackInfo ci) {
|
||||
this.addRenderableWidget(new TexturedButtonWidget(
|
||||
// Where the button is on the screen
|
||||
this.width / 2 - 180, this.height / 6 - 12,
|
||||
this.width / 2 + 159, this.height / 6 - 12,
|
||||
// Width and height of the button
|
||||
20, 20,
|
||||
// Offset
|
||||
@@ -38,6 +44,7 @@ public class MixinOptionsScreen extends Screen {
|
||||
20, ICON_TEXTURE, 20, 40,
|
||||
// Create the button and tell it where to go
|
||||
(buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(AutoConfig.getConfigScreen(Config.class, this).get()),
|
||||
// (buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(Config.getScreen(this, ModInfo.ID)),
|
||||
// Add a title to the screen
|
||||
new TranslatableComponent("text.autoconfig." + ModInfo.ID + ".title")));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,458 @@
|
||||
package com.seibel.lod.fabric.wrappers.config;
|
||||
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
import com.google.gson.FieldAttributes;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.seibel.lod.core.ModInfo;
|
||||
import com.seibel.lod.fabric.Config;
|
||||
import jdk.dynalink.beans.StaticClass;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.Font;
|
||||
import net.minecraft.client.gui.GuiComponent;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.components.Button;
|
||||
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
|
||||
import net.minecraft.client.gui.components.EditBox;
|
||||
import net.minecraft.client.gui.components.events.GuiEventListener;
|
||||
import net.minecraft.client.gui.narration.NarratableEntry;
|
||||
import net.minecraft.client.gui.screens.Screen;
|
||||
import net.minecraft.client.resources.language.I18n;
|
||||
import net.minecraft.network.chat.CommonComponents;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.TextComponent;
|
||||
import net.minecraft.network.chat.TranslatableComponent;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* Handles the configs gui
|
||||
* Based upon MidnightConfig
|
||||
* https://github.com/TeamMidnightDust/MidnightLib/blob/main/src/main/java/eu/midnightdust/lib/config/
|
||||
* which is based upon TinyConfig
|
||||
* https://github.com/Minenash/TinyConfig
|
||||
*
|
||||
* Credits to Minenash, TeamMidnightDust & Motschen
|
||||
*
|
||||
* @author coolGi2007
|
||||
* @version 11-28-2021
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public abstract class ConfigGui {
|
||||
|
||||
/*
|
||||
Small wiki on how to use this config
|
||||
|
||||
Create a new class that extends this class
|
||||
Every time you want to add a button put a @Entry before it and if you want it to be within a range then do @Entry(min = 0, max = 10)
|
||||
MAKE SURE THE VARIABLE YOU ARE PUTTING IN IS A STATIC VARIABLE
|
||||
|
||||
If you want to make a config asking if you want coolness then do this
|
||||
|
||||
public class Config extends ConfigGui {
|
||||
@Entry
|
||||
public static bool coolness = false;
|
||||
}
|
||||
|
||||
If you want a comment then do this
|
||||
@Comment public static Comment text1;
|
||||
|
||||
FOR THE CONFIG TO SHOW
|
||||
you need to have this somewhere in the main class
|
||||
ConfigGui.init(ModInfo.ID, Config.class);
|
||||
*/
|
||||
private static final Pattern INTEGER_ONLY = Pattern.compile("(-?[0-9]*)");
|
||||
private static final Pattern DECIMAL_ONLY = Pattern.compile("-?([\\d]+\\.?[\\d]*|[\\d]*\\.?[\\d]+|\\.)");
|
||||
|
||||
private static final List<EntryInfo> entries = new ArrayList<>();
|
||||
|
||||
protected static class EntryInfo {
|
||||
Field field;
|
||||
Object widget;
|
||||
int width;
|
||||
int max;
|
||||
Map.Entry<EditBox, Component> error;
|
||||
Object defaultValue;
|
||||
Object value;
|
||||
String tempValue;
|
||||
boolean inLimits = true;
|
||||
String id;
|
||||
TranslatableComponent name;
|
||||
int index;
|
||||
}
|
||||
|
||||
public static final Map<String,Class<?>> configClass = new HashMap<>();
|
||||
private static Path path;
|
||||
|
||||
private static final Gson gson = new GsonBuilder().excludeFieldsWithModifiers(Modifier.TRANSIENT).excludeFieldsWithModifiers(Modifier.PRIVATE).addSerializationExclusionStrategy(new HiddenAnnotationExclusionStrategy()).setPrettyPrinting().create();
|
||||
|
||||
public static void init(String modid, Class<?> config) {
|
||||
path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json");
|
||||
configClass.put(modid, config);
|
||||
|
||||
for (Field field : config.getFields()) {
|
||||
EntryInfo info = new EntryInfo();
|
||||
if (field.isAnnotationPresent(Entry.class) || field.isAnnotationPresent(Comment.class))
|
||||
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) initEntry(modid, field, info);
|
||||
else if (field.isAnnotationPresent(ScreenEntry.class))
|
||||
if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) initScreen(modid, field, info);
|
||||
if (field.isAnnotationPresent(Entry.class))
|
||||
try {
|
||||
info.defaultValue = field.get(null);
|
||||
} catch (IllegalAccessException ignored) {}
|
||||
}
|
||||
try { gson.fromJson(Files.newBufferedReader(path), config); }
|
||||
catch (Exception e) { write(modid); }
|
||||
|
||||
for (EntryInfo info : entries) {
|
||||
if (info.field.isAnnotationPresent(Entry.class))
|
||||
try {
|
||||
info.value = info.field.get(null);
|
||||
info.tempValue = info.value.toString();
|
||||
} catch (IllegalAccessException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@Environment(EnvType.CLIENT)
|
||||
private static void initEntry(String modid, Field field, EntryInfo info) {
|
||||
Class<?> type = field.getType();
|
||||
Entry e = field.getAnnotation(Entry.class);
|
||||
info.width = e != null ? e.width() : 0;
|
||||
info.field = field;
|
||||
info.id = modid;
|
||||
|
||||
if (e != null) {
|
||||
if (!e.name().equals("")) info.name = new TranslatableComponent(e.name());
|
||||
if (type == int.class) textField(info, Integer::parseInt, INTEGER_ONLY, e.min(), e.max(), true);
|
||||
else if (type == double.class) textField(info, Double::parseDouble, DECIMAL_ONLY, e.min(), e.max(), false);
|
||||
else if (type == String.class || type == List.class) {
|
||||
info.max = e.max() == Double.MAX_VALUE ? Integer.MAX_VALUE : (int) e.max();
|
||||
textField(info, String::length, null, Math.min(e.min(), 0), Math.max(e.max(), 1), true);
|
||||
} else if (type == boolean.class) {
|
||||
Function<Object, Component> func = value -> new TextComponent((Boolean) value ? "True" : "False").withStyle((Boolean) value ? ChatFormatting.GREEN : ChatFormatting.RED);
|
||||
info.widget = new AbstractMap.SimpleEntry<Button.OnPress, Function<Object, Component>>(button -> {
|
||||
info.value = !(Boolean) info.value;
|
||||
button.setMessage(func.apply(info.value));
|
||||
}, func);
|
||||
} else if (type.isEnum()) {
|
||||
List<?> values = Arrays.asList(field.getType().getEnumConstants());
|
||||
Function<Object, Component> func = value -> new TranslatableComponent(modid + ".config." + "enum." + type.getSimpleName() + "." + info.value.toString());
|
||||
info.widget = new AbstractMap.SimpleEntry<Button.OnPress, Function<Object, Component>>(button -> {
|
||||
int index = values.indexOf(info.value) + 1;
|
||||
info.value = values.get(index >= values.size() ? 0 : index);
|
||||
button.setMessage(func.apply(info.value));
|
||||
}, func);
|
||||
}
|
||||
}
|
||||
entries.add(info);
|
||||
}
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static void initScreen(String modid, Field field, EntryInfo info) {
|
||||
// entries.add(new Button(this.width / 2 - 100, this.height - 28, 200, 20, new TranslatableComponent(modid +".config.title"), (button) ->
|
||||
// Objects.requireNonNull(minecraft).setScreen(ConfigGui.getScreen(this, modid))));
|
||||
// ButtonEntry.create(
|
||||
// new Button(this.width / 2 - 100, this.height - 28, 200, 20, new TranslatableComponent(modid +".config.title"), (button) ->
|
||||
// Objects.requireNonNull(minecraft).setScreen(ConfigGui.getScreen(this, modid))),
|
||||
// new TranslatableComponent(modid +".config.title"),
|
||||
//
|
||||
// );
|
||||
}
|
||||
|
||||
private static void textField(EntryInfo info, Function<String,Number> f, Pattern pattern, double min, double max, boolean cast) {
|
||||
boolean isNumber = pattern != null;
|
||||
info.widget = (BiFunction<EditBox, Button, Predicate<String>>) (t, b) -> s -> {
|
||||
s = s.trim();
|
||||
if (!(s.isEmpty() || !isNumber || pattern.matcher(s).matches())) return false;
|
||||
|
||||
Number value = 0;
|
||||
boolean inLimits = false;
|
||||
info.error = null;
|
||||
if (!(isNumber && s.isEmpty()) && !s.equals("-") && !s.equals(".")) {
|
||||
value = f.apply(s);
|
||||
inLimits = value.doubleValue() >= min && value.doubleValue() <= max;
|
||||
info.error = inLimits? null : new AbstractMap.SimpleEntry<>(t, new TextComponent(value.doubleValue() < min ?
|
||||
"§cMinimum " + (isNumber? "value" : "length") + (cast? " is " + (int)min : " is " + min) :
|
||||
"§cMaximum " + (isNumber? "value" : "length") + (cast? " is " + (int)max : " is " + max)));
|
||||
}
|
||||
|
||||
info.tempValue = s;
|
||||
t.setTextColor(inLimits? 0xFFFFFFFF : 0xFFFF7777);
|
||||
info.inLimits = inLimits;
|
||||
b.active = entries.stream().allMatch(e -> e.inLimits);
|
||||
|
||||
if (inLimits && info.field.getType() != List.class)
|
||||
info.value = isNumber? value : s;
|
||||
else if (inLimits) {
|
||||
if (((List<String>) info.value).size() == info.index) ((List<String>) info.value).add("");
|
||||
((List<String>) info.value).set(info.index, Arrays.stream(info.tempValue.replace("[", "").replace("]", "").split(", ")).toList().get(0));
|
||||
}
|
||||
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
// TODO[CONFIG]: Change to .toml
|
||||
public static void write(String modid) {
|
||||
path = FabricLoader.getInstance().getConfigDir().resolve(modid + ".json");
|
||||
try {
|
||||
if (!Files.exists(path)) Files.createFile(path);
|
||||
Files.write(path, gson.toJson(configClass.get(modid).getDeclaredConstructor().newInstance()).getBytes());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static Screen getScreen(Screen parent, String modid) {
|
||||
return new ConfigScreen(parent, modid);
|
||||
}
|
||||
@Environment(EnvType.CLIENT)
|
||||
private static class ConfigScreen extends Screen {
|
||||
protected ConfigScreen(Screen parent, String modid) {
|
||||
super(new TranslatableComponent(modid + ".config.title"));
|
||||
this.parent = parent;
|
||||
this.modid = modid;
|
||||
this.translationPrefix = modid + ".config.";
|
||||
}
|
||||
private final String translationPrefix;
|
||||
private final Screen parent;
|
||||
private final String modid;
|
||||
private ConfigListWidget list;
|
||||
private boolean reload = false;
|
||||
|
||||
// Real Time config update //
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
for (EntryInfo info : entries) {
|
||||
try {info.field.set(null, info.value);} catch (IllegalAccessException ignored) {}
|
||||
}
|
||||
}
|
||||
private void loadValues() {
|
||||
try { gson.fromJson(Files.newBufferedReader(path), configClass.get(modid)); }
|
||||
catch (Exception e) { write(modid); }
|
||||
|
||||
for (EntryInfo info : entries) {
|
||||
if (info.field.isAnnotationPresent(Entry.class))
|
||||
try {
|
||||
info.value = info.field.get(null);
|
||||
info.tempValue = info.value.toString();
|
||||
} catch (IllegalAccessException ignored) {}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void init() {
|
||||
super.init();
|
||||
if (!reload) loadValues();
|
||||
|
||||
this.addRenderableWidget(new Button(this.width / 2 - 154, this.height - 28, 150, 20, CommonComponents.GUI_CANCEL, button -> {
|
||||
loadValues();
|
||||
Objects.requireNonNull(minecraft).setScreen(parent);
|
||||
}));
|
||||
|
||||
Button done = this.addRenderableWidget(new Button(this.width / 2 + 4, this.height - 28, 150, 20, CommonComponents.GUI_DONE, (button) -> {
|
||||
for (EntryInfo info : entries)
|
||||
if (info.id.equals(modid)) {
|
||||
try {
|
||||
info.field.set(null, info.value);
|
||||
} catch (IllegalAccessException ignored) {}
|
||||
}
|
||||
write(modid);
|
||||
Objects.requireNonNull(minecraft).setScreen(parent);
|
||||
}));
|
||||
|
||||
this.list = new ConfigListWidget(this.minecraft, this.width, this.height, 32, this.height - 32, 25);
|
||||
if (this.minecraft != null && this.minecraft.level != null) this.list.setRenderBackground(false);
|
||||
this.addWidget(this.list);
|
||||
for (EntryInfo info : entries) {
|
||||
if (info.id.equals(modid)) {
|
||||
TranslatableComponent name = Objects.requireNonNullElseGet(info.name, () -> new TranslatableComponent(translationPrefix + info.field.getName()));
|
||||
Button resetButton = new Button(width - 205, 0, 40, 20, new TextComponent("Reset").withStyle(ChatFormatting.RED), (button -> {
|
||||
info.value = info.defaultValue;
|
||||
info.tempValue = info.defaultValue.toString();
|
||||
info.index = 0;
|
||||
double scrollAmount = list.getScrollAmount();
|
||||
this.reload = true;
|
||||
Objects.requireNonNull(minecraft).setScreen(this);
|
||||
list.setScrollAmount(scrollAmount);
|
||||
}));
|
||||
|
||||
if (info.widget instanceof Map.Entry) {
|
||||
Map.Entry<Button.OnPress, Function<Object, Component>> widget = (Map.Entry<Button.OnPress, Function<Object, Component>>) info.widget;
|
||||
if (info.field.getType().isEnum()) widget.setValue(value -> new TranslatableComponent(translationPrefix + "enum." + info.field.getType().getSimpleName() + "." + info.value.toString()));
|
||||
this.list.addButton(new Button(width - 160, 0,150, 20, widget.getValue().apply(info.value), widget.getKey()),resetButton, null,name);
|
||||
} else if (info.field.getType() == List.class) {
|
||||
if (!reload) info.index = 0;
|
||||
EditBox widget = new EditBox(font, width - 160, 0, 150, 20, null);
|
||||
widget.setMaxLength(info.width);
|
||||
if (info.index < ((List<String>)info.value).size()) widget.insertText((String.valueOf(((List<String>)info.value).get(info.index))));
|
||||
else widget.insertText("");
|
||||
Predicate<String> processor = ((BiFunction<EditBox, Button, Predicate<String>>) info.widget).apply(widget, done);
|
||||
widget.setFilter(processor);
|
||||
resetButton.setWidth(20);
|
||||
resetButton.setMessage(new TextComponent("R").withStyle(ChatFormatting.RED));
|
||||
Button cycleButton = new Button(width - 185, 0, 20, 20, new TextComponent(String.valueOf(info.index)).withStyle(ChatFormatting.GOLD), (button -> {
|
||||
((List<String>)info.value).remove("");
|
||||
double scrollAmount = list.getScrollAmount();
|
||||
this.reload = true;
|
||||
info.index = info.index + 1;
|
||||
if (info.index > ((List<String>)info.value).size()) info.index = 0;
|
||||
Objects.requireNonNull(minecraft).setScreen(this);
|
||||
list.setScrollAmount(scrollAmount);
|
||||
}));
|
||||
this.list.addButton(widget, resetButton, cycleButton, name);
|
||||
} else if (info.widget != null) {
|
||||
EditBox widget = new EditBox(font, width - 160, 0, 150, 20, null);
|
||||
widget.setMaxLength(info.width);
|
||||
widget.insertText(info.tempValue);
|
||||
Predicate<String> processor = ((BiFunction<EditBox, Button, Predicate<String>>) info.widget).apply(widget, done);
|
||||
widget.setFilter(processor);
|
||||
this.list.addButton(widget, resetButton, null, name);
|
||||
} else {
|
||||
this.list.addButton(null,null,null,name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void render(PoseStack matrices, int mouseX, int mouseY, float delta) {
|
||||
this.renderBackground(matrices);
|
||||
this.list.render(matrices, mouseX, mouseY, delta);
|
||||
drawCenteredString(matrices, font, title, width / 2, 15, 0xFFFFFF);
|
||||
|
||||
for (EntryInfo info : entries) {
|
||||
if (info.id.equals(modid)) {
|
||||
if (list.getHoveredButton(mouseX,mouseY).isPresent()) {
|
||||
AbstractWidget buttonWidget = list.getHoveredButton(mouseX,mouseY).get();
|
||||
Component text = ButtonEntry.buttonsWithText.get(buttonWidget);
|
||||
TranslatableComponent name = new TranslatableComponent(this.translationPrefix + info.field.getName());
|
||||
String key = translationPrefix + info.field.getName() + ".tooltip";
|
||||
|
||||
if (info.error != null && text.equals(name)) renderTooltip(matrices, info.error.getValue(), mouseX, mouseY);
|
||||
else if (I18n.exists(key) && text.equals(name)) {
|
||||
List<Component> list = new ArrayList<>();
|
||||
for (String str : I18n.get(key).split("\n"))
|
||||
list.add(new TextComponent(str));
|
||||
renderTooltip(matrices, (Component) list, mouseX, mouseY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
super.render(matrices,mouseX,mouseY,delta);
|
||||
}
|
||||
}
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static class ConfigListWidget extends ContainerObjectSelectionList<ButtonEntry> {
|
||||
Font textRenderer;
|
||||
|
||||
public ConfigListWidget(Minecraft minecraftClient, int i, int j, int k, int l, int m) {
|
||||
super(minecraftClient, i, j, k, l, m);
|
||||
this.centerListVertically = false;
|
||||
textRenderer = minecraftClient.font;
|
||||
}
|
||||
// @Override
|
||||
public int getScrollbarPositionX() { return this.width -7; }
|
||||
|
||||
public void addButton(AbstractWidget button, AbstractWidget resetButton, AbstractWidget indexButton, Component text) {
|
||||
this.addEntry(ButtonEntry.create(button, text, resetButton, indexButton));
|
||||
}
|
||||
@Override
|
||||
public int getRowWidth() { return 10000; }
|
||||
public Optional<AbstractWidget> getHoveredButton(double mouseX, double mouseY) {
|
||||
for (ButtonEntry buttonEntry : this.children()) {
|
||||
if (buttonEntry.button != null && buttonEntry.button.isMouseOver(mouseX, mouseY)) {
|
||||
return Optional.of(buttonEntry.button);
|
||||
}
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
public static class ButtonEntry extends ContainerObjectSelectionList.Entry<ButtonEntry> {
|
||||
private static final Font textRenderer = Minecraft.getInstance().font;
|
||||
public final AbstractWidget button;
|
||||
private final AbstractWidget resetButton;
|
||||
private final AbstractWidget indexButton;
|
||||
private final Component text;
|
||||
private final List<AbstractWidget> children = new ArrayList<>();
|
||||
public static final Map<AbstractWidget, Component> buttonsWithText = new HashMap<>();
|
||||
|
||||
private ButtonEntry(AbstractWidget button, Component text, AbstractWidget resetButton, AbstractWidget indexButton) {
|
||||
buttonsWithText.put(button,text);
|
||||
this.button = button;
|
||||
this.resetButton = resetButton;
|
||||
this.text = text;
|
||||
this.indexButton = indexButton;
|
||||
if (button != null) children.add(button);
|
||||
if (resetButton != null) children.add(resetButton);
|
||||
if (indexButton != null) children.add(indexButton);
|
||||
}
|
||||
public static ButtonEntry create(AbstractWidget button, Component text, AbstractWidget resetButton, AbstractWidget indexButton) {
|
||||
return new ButtonEntry(button, text, resetButton, indexButton);
|
||||
}
|
||||
public void render(PoseStack matrices, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
|
||||
if (button != null) {
|
||||
button.y = y;
|
||||
button.render(matrices, mouseX, mouseY, tickDelta);
|
||||
}
|
||||
if (resetButton != null) {
|
||||
resetButton.y = y;
|
||||
resetButton.render(matrices, mouseX, mouseY, tickDelta);
|
||||
}
|
||||
if (indexButton != null) {
|
||||
indexButton.y = y;
|
||||
indexButton.render(matrices, mouseX, mouseY, tickDelta);
|
||||
}
|
||||
if (text != null && (!text.getString().contains("spacer") || button != null))
|
||||
GuiComponent.drawString(matrices,textRenderer, text,12,y+5,0xFFFFFF);
|
||||
}
|
||||
@Override
|
||||
public List<? extends GuiEventListener> children() {return children;}
|
||||
@Override
|
||||
public List<? extends NarratableEntry> narratables() {return children;}
|
||||
}
|
||||
|
||||
// Where the @Entry is defined
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface Entry {
|
||||
int width() default 100;
|
||||
double min() default Double.MIN_NORMAL;
|
||||
double max() default Double.MAX_VALUE;
|
||||
String name() default "";
|
||||
}
|
||||
|
||||
// Where the @ScreenEntry is defined
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface ScreenEntry {
|
||||
}
|
||||
|
||||
// Where the @Comment is defined
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.FIELD)
|
||||
public @interface Comment {}
|
||||
|
||||
public static class HiddenAnnotationExclusionStrategy implements ExclusionStrategy {
|
||||
public boolean shouldSkipClass(Class<?> clazz) { return false; }
|
||||
public boolean shouldSkipField(FieldAttributes fieldAttributes) {
|
||||
return fieldAttributes.getAnnotation(Entry.class) == null;
|
||||
}
|
||||
}
|
||||
}
|
||||
+64
-63
@@ -105,60 +105,60 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public HorizontalResolution getDrawResolution()
|
||||
{
|
||||
return Config.Client.Graphics.QualityOption.drawResolution;
|
||||
return Config.Client.Graphics.Quality.drawResolution;
|
||||
}
|
||||
@Override
|
||||
public void setDrawResolution(HorizontalResolution newHorizontalResolution)
|
||||
{
|
||||
Config.Client.Graphics.QualityOption.drawResolution = newHorizontalResolution;
|
||||
Config.Client.Graphics.Quality.drawResolution = newHorizontalResolution;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLodChunkRenderDistance()
|
||||
{
|
||||
return Config.Client.Graphics.QualityOption.lodChunkRenderDistance;
|
||||
return Config.Client.Graphics.Quality.lodChunkRenderDistance;
|
||||
}
|
||||
@Override
|
||||
public void setLodChunkRenderDistance(int newLodChunkRenderDistance)
|
||||
{
|
||||
Config.Client.Graphics.QualityOption.lodChunkRenderDistance = newLodChunkRenderDistance;
|
||||
Config.Client.Graphics.Quality.lodChunkRenderDistance = newLodChunkRenderDistance;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VerticalQuality getVerticalQuality()
|
||||
{
|
||||
return Config.Client.Graphics.QualityOption.verticalQuality;
|
||||
return Config.Client.Graphics.Quality.verticalQuality;
|
||||
}
|
||||
@Override
|
||||
public void setVerticalQuality(VerticalQuality newVerticalQuality)
|
||||
{
|
||||
Config.Client.Graphics.QualityOption.verticalQuality = newVerticalQuality;
|
||||
Config.Client.Graphics.Quality.verticalQuality = newVerticalQuality;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HorizontalScale getHorizontalScale()
|
||||
{
|
||||
return Config.Client.Graphics.QualityOption.horizontalScale;
|
||||
return Config.Client.Graphics.Quality.horizontalScale;
|
||||
}
|
||||
@Override
|
||||
public void setHorizontalScale(HorizontalScale newHorizontalScale)
|
||||
{
|
||||
Config.Client.Graphics.QualityOption.horizontalScale = newHorizontalScale;
|
||||
Config.Client.Graphics.Quality.horizontalScale = newHorizontalScale;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HorizontalQuality getHorizontalQuality()
|
||||
{
|
||||
return Config.Client.Graphics.QualityOption.horizontalQuality;
|
||||
return Config.Client.Graphics.Quality.horizontalQuality;
|
||||
}
|
||||
@Override
|
||||
public void setHorizontalQuality(HorizontalQuality newHorizontalQuality)
|
||||
{
|
||||
Config.Client.Graphics.QualityOption.horizontalQuality = newHorizontalQuality;
|
||||
Config.Client.Graphics.Quality.horizontalQuality = newHorizontalQuality;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,50 +168,50 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public FogDistance getFogDistance()
|
||||
{
|
||||
return Config.Client.Graphics.FogQualityOption.fogDistance;
|
||||
return Config.Client.Graphics.FogQuality.fogDistance;
|
||||
}
|
||||
@Override
|
||||
public void setFogDistance(FogDistance newFogDistance)
|
||||
{
|
||||
Config.Client.Graphics.FogQualityOption.fogDistance = newFogDistance;
|
||||
Config.Client.Graphics.FogQuality.fogDistance = newFogDistance;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public FogDrawMode getFogDrawMode()
|
||||
{
|
||||
return Config.Client.Graphics.FogQualityOption.fogDrawMode;
|
||||
return Config.Client.Graphics.FogQuality.fogDrawMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFogDrawMode(FogDrawMode setFogDrawMode)
|
||||
{
|
||||
Config.Client.Graphics.FogQualityOption.fogDrawMode = setFogDrawMode;
|
||||
Config.Client.Graphics.FogQuality.fogDrawMode = setFogDrawMode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public FogColorMode getFogColorMode()
|
||||
{
|
||||
return Config.Client.Graphics.FogQualityOption.fogColorMode;
|
||||
return Config.Client.Graphics.FogQuality.fogColorMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFogColorMode(FogColorMode newFogColorMode)
|
||||
{
|
||||
Config.Client.Graphics.FogQualityOption.fogColorMode = newFogColorMode;
|
||||
Config.Client.Graphics.FogQuality.fogColorMode = newFogColorMode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getDisableVanillaFog()
|
||||
{
|
||||
return Config.Client.Graphics.FogQualityOption.disableVanillaFog;
|
||||
return Config.Client.Graphics.FogQuality.disableVanillaFog;
|
||||
}
|
||||
@Override
|
||||
public void setDisableVanillaFog(boolean newDisableVanillaFog)
|
||||
{
|
||||
Config.Client.Graphics.FogQualityOption.disableVanillaFog = newDisableVanillaFog;
|
||||
Config.Client.Graphics.FogQuality.disableVanillaFog = newDisableVanillaFog;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -221,83 +221,60 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public LodTemplate getLodTemplate()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.lodTemplate;
|
||||
return Config.Client.Graphics.AdvancedGraphics.lodTemplate;
|
||||
}
|
||||
@Override
|
||||
public void setLodTemplate(LodTemplate newLodTemplate)
|
||||
{
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.lodTemplate = newLodTemplate;
|
||||
Config.Client.Graphics.AdvancedGraphics.lodTemplate = newLodTemplate;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getDisableDirectionalCulling()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.disableDirectionalCulling;
|
||||
return Config.Client.Graphics.AdvancedGraphics.disableDirectionalCulling;
|
||||
}
|
||||
@Override
|
||||
public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling)
|
||||
{
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.disableDirectionalCulling = newDisableDirectionalCulling;
|
||||
Config.Client.Graphics.AdvancedGraphics.disableDirectionalCulling = newDisableDirectionalCulling;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getAlwaysDrawAtMaxQuality()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.alwaysDrawAtMaxQuality;
|
||||
return Config.Client.Graphics.AdvancedGraphics.alwaysDrawAtMaxQuality;
|
||||
}
|
||||
@Override
|
||||
public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality)
|
||||
{
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.alwaysDrawAtMaxQuality = newAlwaysDrawAtMaxQuality;
|
||||
Config.Client.Graphics.AdvancedGraphics.alwaysDrawAtMaxQuality = newAlwaysDrawAtMaxQuality;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VanillaOverdraw getVanillaOverdraw()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.vanillaOverdraw;
|
||||
return Config.Client.Graphics.AdvancedGraphics.vanillaOverdraw;
|
||||
}
|
||||
@Override
|
||||
public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw)
|
||||
{
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.vanillaOverdraw = newVanillaOverdraw;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public GpuUploadMethod getGpuUploadMethod()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.gpuUploadMethod;
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog)
|
||||
{
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.gpuUploadMethod = newDisableVanillaFog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getGpuUploadTimeoutInMilliseconds()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.gpuUploadTimeoutInMilleseconds;
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadTimeoutInMilliseconds(int newTimeoutInMilliseconds) {
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.gpuUploadTimeoutInMilleseconds = newTimeoutInMilliseconds;
|
||||
Config.Client.Graphics.AdvancedGraphics.vanillaOverdraw = newVanillaOverdraw;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getUseExtendedNearClipPlane()
|
||||
{
|
||||
return Config.Client.Graphics.AdvancedGraphicsOption.useExtendedNearClipPlane;
|
||||
return Config.Client.Graphics.AdvancedGraphics.useExtendedNearClipPlane;
|
||||
}
|
||||
@Override
|
||||
public void setUseExtendedNearClipPlane(boolean newUseExtendedNearClipPlane)
|
||||
{
|
||||
Config.Client.Graphics.AdvancedGraphicsOption.useExtendedNearClipPlane = newUseExtendedNearClipPlane;
|
||||
Config.Client.Graphics.AdvancedGraphics.useExtendedNearClipPlane = newUseExtendedNearClipPlane;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -404,24 +381,24 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public int getNumberOfWorldGenerationThreads()
|
||||
{
|
||||
return Config.Client.AdvancedModOptions.Threading.numberOfWorldGenerationThreads;
|
||||
return Config.Client.Advanced.Threading.numberOfWorldGenerationThreads;
|
||||
}
|
||||
@Override
|
||||
public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads)
|
||||
{
|
||||
Config.Client.AdvancedModOptions.Threading.numberOfWorldGenerationThreads = newNumberOfWorldGenerationThreads;
|
||||
Config.Client.Advanced.Threading.numberOfWorldGenerationThreads = newNumberOfWorldGenerationThreads;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getNumberOfBufferBuilderThreads()
|
||||
{
|
||||
return Config.Client.AdvancedModOptions.Threading.numberOfBufferBuilderThreads;
|
||||
return Config.Client.Advanced.Threading.numberOfBufferBuilderThreads;
|
||||
}
|
||||
@Override
|
||||
public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads)
|
||||
{
|
||||
Config.Client.AdvancedModOptions.Threading.numberOfBufferBuilderThreads = newNumberOfWorldBuilderThreads;
|
||||
Config.Client.Advanced.Threading.numberOfBufferBuilderThreads = newNumberOfWorldBuilderThreads;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -436,51 +413,75 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public boolean getDrawLods()
|
||||
{
|
||||
return Config.Client.AdvancedModOptions.Debugging.drawLods;
|
||||
return Config.Client.Advanced.Debugging.drawLods;
|
||||
}
|
||||
@Override
|
||||
public void setDrawLods(boolean newDrawLods)
|
||||
{
|
||||
Config.Client.AdvancedModOptions.Debugging.drawLods = newDrawLods;
|
||||
Config.Client.Advanced.Debugging.drawLods = newDrawLods;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public DebugMode getDebugMode()
|
||||
{
|
||||
return Config.Client.AdvancedModOptions.Debugging.debugMode;
|
||||
return Config.Client.Advanced.Debugging.debugMode;
|
||||
}
|
||||
@Override
|
||||
public void setDebugMode(DebugMode newDebugMode)
|
||||
{
|
||||
Config.Client.AdvancedModOptions.Debugging.debugMode = newDebugMode;
|
||||
Config.Client.Advanced.Debugging.debugMode = newDebugMode;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getDebugKeybindingsEnabled()
|
||||
{
|
||||
return Config.Client.AdvancedModOptions.Debugging.enableDebugKeybindings;
|
||||
return Config.Client.Advanced.Debugging.enableDebugKeybindings;
|
||||
}
|
||||
@Override
|
||||
public void setDebugKeybindingsEnabled(boolean newEnableDebugKeybindings)
|
||||
{
|
||||
Config.Client.AdvancedModOptions.Debugging.enableDebugKeybindings = newEnableDebugKeybindings;
|
||||
Config.Client.Advanced.Debugging.enableDebugKeybindings = newEnableDebugKeybindings;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class Buffers implements IBuffers
|
||||
{
|
||||
|
||||
@Override
|
||||
public GpuUploadMethod getGpuUploadMethod()
|
||||
{
|
||||
return Config.Client.Advanced.Buffers.gpuUploadMethod;
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog)
|
||||
{
|
||||
Config.Client.Advanced.Buffers.gpuUploadMethod = newDisableVanillaFog;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getGpuUploadTimeoutInMilliseconds()
|
||||
{
|
||||
return Config.Client.Advanced.Buffers.gpuUploadTimeoutInMilleseconds;
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadTimeoutInMilliseconds(int newTimeoutInMilliseconds) {
|
||||
Config.Client.Advanced.Buffers.gpuUploadTimeoutInMilleseconds = newTimeoutInMilliseconds;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BufferRebuildTimes getRebuildTimes()
|
||||
{
|
||||
return Config.Client.AdvancedModOptions.Buffers.rebuildTimes;
|
||||
return Config.Client.Advanced.Buffers.rebuildTimes;
|
||||
}
|
||||
@Override
|
||||
public void setRebuildTimes(BufferRebuildTimes newBufferRebuildTimes)
|
||||
{
|
||||
Config.Client.AdvancedModOptions.Buffers.rebuildTimes = newBufferRebuildTimes;
|
||||
Config.Client.Advanced.Buffers.rebuildTimes = newBufferRebuildTimes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,9 @@ import me.shedaniel.autoconfig.AutoConfig;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* For making the config show up in modmenu
|
||||
*/
|
||||
@@ -16,4 +19,19 @@ public class ModMenuIntegration implements ModMenuApi {
|
||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||
return parent -> AutoConfig.getConfigScreen(Config.class, parent).get();
|
||||
}
|
||||
|
||||
// For the custom config code
|
||||
/*
|
||||
@Override
|
||||
public ConfigScreenFactory<?> getModConfigScreenFactory() {
|
||||
return parent -> Config.getScreen(parent, ModInfo.ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, ConfigScreenFactory<?>> getProvidedConfigScreenFactories() {
|
||||
HashMap<String, ConfigScreenFactory<?>> map = new HashMap<>();
|
||||
Config.configClass.forEach((modid, cClass) -> map.put(modid, parent -> ConfigGui.getScreen(parent, modid)));
|
||||
return map;
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
@@ -3,24 +3,26 @@
|
||||
"text.autoconfig.lod.title": "Distant Horizons config",
|
||||
"text.autoconfig.lod.option.client": "Client",
|
||||
"text.autoconfig.lod.option.client.graphics": "Graphics",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption": "Quality option",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.drawResolution": "Draw resolution",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.drawResolution.@Tooltip": "What is the maximum detail fake chunks should be drawn at?",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.lodChunkRenderDistance": "Chunk render distance",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.lodChunkRenderDistance.@Tooltip": "The mod's render distance, measured in chunks",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.verticalQuality": "Vertical quality",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.verticalQuality.@Tooltip": "This indicates how detailed fake chunks will represent overhangs, caves, floating islands, ect. \nHigher options will use more memory and increase GPU usage",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.horizontalScale": "Horizontal scale",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.horizontalScale.@Tooltip": "This indicates how quickly fake chunks drop off in quality",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.horizontalQuality": "Horizontal quality",
|
||||
"text.autoconfig.lod.option.client.graphics.qualityOption.horizontalQuality.@Tooltip": "This indicates the exponential base of the quadratic drop-off",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption": "Fog quality option",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption.fogDistance": "Fog distance",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption.fogDistance.@Tooltip": "At what distance should Fog be drawn on the fake chunks?",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption.fogDrawOverride": "Fog draw override",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption.fogDrawOverride.@Tooltip": "When should fog be drawn?",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption.disableVanillaFog": "Disable vanilla fog",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQualityOption.disableVanillaFog.@Tooltip": "If true disable Minecraft's fog. \nMay cause issues with other mods that edit fog. \nMay cause errors with other fog editing mods",
|
||||
"text.autoconfig.lod.option.client.graphics.quality": "Quality options",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.drawResolution": "Draw resolution",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.drawResolution.@Tooltip": "What is the maximum detail fake chunks should be drawn at?",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.lodChunkRenderDistance": "Chunk render distance",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.lodChunkRenderDistance.@Tooltip": "The mod's render distance, measured in chunks",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.verticalQuality": "Vertical quality",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.verticalQuality.@Tooltip": "This indicates how detailed fake chunks will represent overhangs, caves, floating islands, ect. \nHigher options will use more memory and increase GPU usage",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.horizontalScale": "Horizontal scale",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.horizontalScale.@Tooltip": "This indicates how quickly fake chunks drop off in quality",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.horizontalQuality": "Horizontal quality",
|
||||
"text.autoconfig.lod.option.client.graphics.quality.horizontalQuality.@Tooltip": "This indicates the exponential base of the quadratic drop-off",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality": "Fog options",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.fogDistance": "Fog distance",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.fogDistance.@Tooltip": "At what distance should Fog be drawn on the fake chunks?",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.fogDrawMode": "Fog draw mode",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.fogDrawMode.@Tooltip": "When should fog be drawn?",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.fogColorMode": "Fog color mode",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.fogColorMode.@Tooltip": "What color should fog use?",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.disableVanillaFog": "Disable vanilla fog",
|
||||
"text.autoconfig.lod.option.client.graphics.fogQuality.disableVanillaFog.@Tooltip": "If true disable Minecraft's fog. \nMay cause issues with other mods that edit fog. \nMay cause errors with other fog editing mods",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption": "Advanced quality option",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.lodTemplate": "LOD template",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.lodTemplate.@Tooltip": "How should the LODs be drawn? \nNOTE: Currently only CUBIC is implemented!",
|
||||
@@ -30,8 +32,6 @@
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.@Tooltip": "Disable quality falloff, all fake chunks will be drawn at the highest available detail level",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.vanillaOverdraw": "Vanilla overdraw",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.vanillaOverdraw.@Tooltip": "How often should LODs be drawn on top of regular chunks? \nHALF and ALWAYS will prevent holes in the world, but may look odd for transparent blocks or in caves.",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.gpuUploadMethod": "GPU upload method",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.gpuUploadMethod.@Tooltip": "What method should be used to upload geometry to the GPU?",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.useExtendedNearClipPlane": "Use extended near clip plane",
|
||||
"text.autoconfig.lod.option.client.graphics.advancedGraphicsOption.useExtendedNearClipPlane.@Tooltip": "Will prevent some overdraw issues, but may cause nearby fake chunks to render incorrectly especially when in/near an ocean",
|
||||
"text.autoconfig.lod.option.client.worldGenerator": "World generator",
|
||||
@@ -41,24 +41,28 @@
|
||||
"text.autoconfig.lod.option.client.worldGenerator.distanceGenerationMode.@Tooltip": "How much of the generation should be used when generating fake chunks",
|
||||
"text.autoconfig.lod.option.client.worldGenerator.allowUnstableFeatureGeneration": "Allow unstable feature generation",
|
||||
"text.autoconfig.lod.option.client.worldGenerator.allowUnstableFeatureGeneration.@Tooltip": "Some features may not be thread safe. \nCould cause instability and crashes",
|
||||
"text.autoconfig.lod.option.client.worldGenerator.blockToAvoid": "Block to avoid",
|
||||
"text.autoconfig.lod.option.client.worldGenerator.blockToAvoid.@Tooltip": "What block to avoid when generating fake chunks",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions": "Advance mod options",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.threading": "Threading",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.threading.numberOfWorldGenerationThreads": "NO. of world generation threads",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.threading.numberOfWorldGenerationThreads.@Tooltip": "This is how many threads are used when generating LODs outside the normal render distance. \nIf you experience stuttering when generating distant LODs, decrease this number. If you want to increase LOD generation speed, increase this number \nCan only be between 1 and your current number of threads",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.threading.numberOfBufferBuilderThreads": "NO. of buffer builder threads",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.threading.numberOfBufferBuilderThreads.@Tooltip": "This is how many threads are used when building vertex buffers (The things sent to your GPU to draw the fake chunks) \nCan only be between 1 and your current number of threads",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.buffers": "Buffers",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.buffers.rebuildTimes": "Rebuild times",
|
||||
"text.autoconfig.lod.option.client.advancedModOptions.buffers.rebuildTimes.@Tooltip": "Rebuild times",
|
||||
"text.autoconfig.lod.option.client.debug": "Debug",
|
||||
"text.autoconfig.lod.option.client.debug.drawLods": "Draw LOD's",
|
||||
"text.autoconfig.lod.option.client.debug.drawLods.@Tooltip": "If true, the mod is enabled and fake chunks will be drawn.",
|
||||
"text.autoconfig.lod.option.client.debug.debugMode": "Debug mode",
|
||||
"text.autoconfig.lod.option.client.debug.debugMode.@Tooltip": "What type of debug mode do you want",
|
||||
"text.autoconfig.lod.option.client.debug.enableDebugKeybindings": "Enable debug keybindings",
|
||||
"text.autoconfig.lod.option.client.debug.enableDebugKeybindings.@Tooltip": "Enable debug keybindings to change the Debug mode on the fly in game",
|
||||
"text.autoconfig.lod.option.client.worldGenerator.blocksToAvoid": "Block to avoid",
|
||||
"text.autoconfig.lod.option.client.worldGenerator.blocksToAvoid.@Tooltip": "What block to avoid when generating fake chunks",
|
||||
"text.autoconfig.lod.option.client.advanced": "Advance options",
|
||||
"text.autoconfig.lod.option.client.advanced.threading": "Threading",
|
||||
"text.autoconfig.lod.option.client.advanced.threading.numberOfWorldGenerationThreads": "NO. of world generation threads",
|
||||
"text.autoconfig.lod.option.client.advanced.threading.numberOfWorldGenerationThreads.@Tooltip": "This is how many threads are used when generating LODs outside the normal render distance. \nIf you experience stuttering when generating distant LODs, decrease this number. If you want to increase LOD generation speed, increase this number \nCan only be between 1 and your current number of threads",
|
||||
"text.autoconfig.lod.option.client.advanced.threading.numberOfBufferBuilderThreads": "NO. of buffer builder threads",
|
||||
"text.autoconfig.lod.option.client.advanced.threading.numberOfBufferBuilderThreads.@Tooltip": "This is how many threads are used when building vertex buffers (The things sent to your GPU to draw the fake chunks) \nCan only be between 1 and your current number of threads",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers": "Buffers",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers.gpuUploadMethod": "GPU upload method",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers.gpuUploadMethod.@Tooltip": "What method should be used to upload geometry to the GPU?",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers.gpuUploadTimeoutInMilleseconds": "GPU upload timeout (milliseconds)",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers.gpuUploadTimeoutInMilleseconds.@Tooltip": "How long should we wait before uploading a buffer to the GPU? \nHelpful resource for frame times: https://fpstoms.com",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers.rebuildTimes": "Rebuild times",
|
||||
"text.autoconfig.lod.option.client.advanced.buffers.rebuildTimes.@Tooltip": "Rebuild times",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging": "Debug",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging.drawLods": "Draw LOD's",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging.drawLods.@Tooltip": "If true, the mod is enabled and fake chunks will be drawn.",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging.debugMode": "Debug mode",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging.debugMode.@Tooltip": "What type of debug mode do you want",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging.enableDebugKeybindings": "Enable debug keybindings",
|
||||
"text.autoconfig.lod.option.client.advanced.debugging.enableDebugKeybindings.@Tooltip": "Enable debug keybindings to change the Debug mode on the fly in game",
|
||||
"toast.lod.title": "Distant Horizons",
|
||||
"key.lod.category": "Distant Horizons",
|
||||
"key.lod.DebugToggle": "Debug toggle",
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"mixins": [],
|
||||
"client": [
|
||||
"MixinMinecraft",
|
||||
"MixinOptionsScreen",
|
||||
"MixinWorldRenderer",
|
||||
"events.MixinClientLevel",
|
||||
"events.MixinMinecraft",
|
||||
|
||||
@@ -19,10 +19,27 @@
|
||||
|
||||
package com.seibel.lod.forge;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
|
||||
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
import com.electronwill.nightconfig.core.file.CommentedFileConfig;
|
||||
import com.electronwill.nightconfig.core.io.WritingMode;
|
||||
import com.seibel.lod.core.ModInfo;
|
||||
import com.seibel.lod.core.enums.config.*;
|
||||
import com.seibel.lod.core.enums.config.BlocksToAvoid;
|
||||
import com.seibel.lod.core.enums.config.BufferRebuildTimes;
|
||||
import com.seibel.lod.core.enums.config.DistanceGenerationMode;
|
||||
import com.seibel.lod.core.enums.config.GenerationPriority;
|
||||
import com.seibel.lod.core.enums.config.GpuUploadMethod;
|
||||
import com.seibel.lod.core.enums.config.HorizontalQuality;
|
||||
import com.seibel.lod.core.enums.config.HorizontalResolution;
|
||||
import com.seibel.lod.core.enums.config.HorizontalScale;
|
||||
import com.seibel.lod.core.enums.config.LodTemplate;
|
||||
import com.seibel.lod.core.enums.config.VanillaOverdraw;
|
||||
import com.seibel.lod.core.enums.config.VerticalQuality;
|
||||
import com.seibel.lod.core.enums.rendering.DebugMode;
|
||||
import com.seibel.lod.core.enums.rendering.FogColorMode;
|
||||
import com.seibel.lod.core.enums.rendering.FogDistance;
|
||||
@@ -37,21 +54,17 @@ import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.I
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.IFogQuality;
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IGraphics.IQuality;
|
||||
import com.seibel.lod.core.wrapperInterfaces.config.ILodConfigWrapperSingleton.IClient.IWorldGenerator;
|
||||
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import net.minecraftforge.fml.config.ModConfig;
|
||||
|
||||
/**
|
||||
* This handles any configuration the user has access to.
|
||||
* @author Leonardo Amato
|
||||
* @author James Seibel
|
||||
* @version 11-29-2021
|
||||
* @version 12-1-2021
|
||||
*/
|
||||
@Mod.EventBusSubscriber
|
||||
public class ForgeConfig
|
||||
@@ -60,13 +73,13 @@ public class ForgeConfig
|
||||
// -> Client
|
||||
// |
|
||||
// |-> Graphics
|
||||
// | |-> QualityOption
|
||||
// | |-> FogQualityOption
|
||||
// | |-> AdvancedGraphicsOption
|
||||
// | |-> Quality
|
||||
// | |-> FogQuality
|
||||
// | |-> AdvancedGraphics
|
||||
// |
|
||||
// |-> World Generation
|
||||
// |
|
||||
// |-> Advanced Mod Option
|
||||
// |-> Advanced
|
||||
// |-> Threads
|
||||
// |-> Buffers
|
||||
// |-> Debugging
|
||||
@@ -77,7 +90,7 @@ public class ForgeConfig
|
||||
{
|
||||
public final Graphics graphics;
|
||||
public final WorldGenerator worldGenerator;
|
||||
public final AdvancedModOptions advancedModOptions;
|
||||
public final Advanced advanced;
|
||||
|
||||
|
||||
//================//
|
||||
@@ -89,7 +102,7 @@ public class ForgeConfig
|
||||
{
|
||||
graphics = new Graphics(builder);
|
||||
worldGenerator = new WorldGenerator(builder);
|
||||
advancedModOptions = new AdvancedModOptions(builder);
|
||||
advanced = new Advanced(builder);
|
||||
}
|
||||
builder.pop();
|
||||
}
|
||||
@@ -100,23 +113,23 @@ public class ForgeConfig
|
||||
//==================//
|
||||
public static class Graphics
|
||||
{
|
||||
public final QualityOption qualityOption;
|
||||
public final FogQualityOption fogQuality;
|
||||
public final AdvancedGraphicsOption advancedGraphicsOption;
|
||||
public final Quality quality;
|
||||
public final FogQuality fogQuality;
|
||||
public final AdvancedGraphics advancedGraphics;
|
||||
|
||||
Graphics(ForgeConfigSpec.Builder builder)
|
||||
{
|
||||
builder.comment(IGraphics.DESC).push("Graphics");
|
||||
{
|
||||
qualityOption = new QualityOption(builder);
|
||||
advancedGraphicsOption = new AdvancedGraphicsOption(builder);
|
||||
fogQuality = new FogQualityOption(builder);
|
||||
quality = new Quality(builder);
|
||||
advancedGraphics = new AdvancedGraphics(builder);
|
||||
fogQuality = new FogQuality(builder);
|
||||
}
|
||||
builder.pop();
|
||||
}
|
||||
|
||||
|
||||
public static class QualityOption
|
||||
public static class Quality
|
||||
{
|
||||
public final ForgeConfigSpec.EnumValue<HorizontalResolution> drawResolution;
|
||||
public final ForgeConfigSpec.IntValue lodChunkRenderDistance;
|
||||
@@ -124,7 +137,7 @@ public class ForgeConfig
|
||||
public final ForgeConfigSpec.EnumValue<HorizontalScale> horizontalScale;
|
||||
public final ForgeConfigSpec.EnumValue<HorizontalQuality> horizontalQuality;
|
||||
|
||||
QualityOption(ForgeConfigSpec.Builder builder)
|
||||
Quality(ForgeConfigSpec.Builder builder)
|
||||
{
|
||||
builder.comment(IQuality.DESC).push(this.getClass().getSimpleName());
|
||||
|
||||
@@ -159,14 +172,14 @@ public class ForgeConfig
|
||||
}
|
||||
|
||||
|
||||
public static class FogQualityOption
|
||||
public static class FogQuality
|
||||
{
|
||||
public final ForgeConfigSpec.EnumValue<FogDistance> fogDistance;
|
||||
public final ForgeConfigSpec.EnumValue<FogDrawMode> fogDrawMode;
|
||||
public final ForgeConfigSpec.EnumValue<FogColorMode> fogColorMode;
|
||||
public final ForgeConfigSpec.BooleanValue disableVanillaFog;
|
||||
|
||||
FogQualityOption(ForgeConfigSpec.Builder builder)
|
||||
FogQuality(ForgeConfigSpec.Builder builder)
|
||||
{
|
||||
builder.comment(IFogQuality.DESC).push(this.getClass().getSimpleName());
|
||||
|
||||
@@ -195,17 +208,15 @@ public class ForgeConfig
|
||||
}
|
||||
|
||||
|
||||
public static class AdvancedGraphicsOption
|
||||
public static class AdvancedGraphics
|
||||
{
|
||||
public final ForgeConfigSpec.EnumValue<LodTemplate> lodTemplate;
|
||||
public final ForgeConfigSpec.BooleanValue disableDirectionalCulling;
|
||||
public final ForgeConfigSpec.BooleanValue alwaysDrawAtMaxQuality;
|
||||
public final ForgeConfigSpec.EnumValue<VanillaOverdraw> vanillaOverdraw;
|
||||
public final ForgeConfigSpec.EnumValue<GpuUploadMethod> gpuUploadMethod;
|
||||
public final ForgeConfigSpec.IntValue gpuUploadTimeoutInMilleseconds;
|
||||
public final ForgeConfigSpec.BooleanValue useExtendedNearClipPlane;
|
||||
|
||||
AdvancedGraphicsOption(ForgeConfigSpec.Builder builder)
|
||||
AdvancedGraphics(ForgeConfigSpec.Builder builder)
|
||||
{
|
||||
builder.comment(IAdvancedGraphics.DESC).push(this.getClass().getSimpleName());
|
||||
|
||||
@@ -229,17 +240,6 @@ public class ForgeConfig
|
||||
+ IAdvancedGraphics.VANILLA_OVERDRAW_DESC)
|
||||
.defineEnum("Vanilla Overdraw", IAdvancedGraphics.VANILLA_OVERDRAW_DEFAULT);
|
||||
|
||||
gpuUploadMethod = builder
|
||||
.comment("\n\n"
|
||||
+ IAdvancedGraphics.GPU_UPLOAD_METHOD_DESC)
|
||||
.defineEnum("GPU Upload Method", IAdvancedGraphics.GPU_UPLOAD_METHOD_DEFAULT);
|
||||
|
||||
MinDefaultMax<Integer> minDefaultMax = IAdvancedGraphics.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DEFAULT;
|
||||
gpuUploadTimeoutInMilleseconds = builder
|
||||
.comment("\n\n"
|
||||
+ IAdvancedGraphics.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DESC)
|
||||
.defineInRange("GPU Upload Timeout in Milleseconds", minDefaultMax.defaultValue, minDefaultMax.minValue, minDefaultMax.maxValue);
|
||||
|
||||
// This is a temporary fix (like vanilla overdraw)
|
||||
// hopefully we can remove both once we get individual chunk rendering figured out
|
||||
useExtendedNearClipPlane = builder
|
||||
@@ -303,16 +303,16 @@ public class ForgeConfig
|
||||
|
||||
|
||||
|
||||
//============================//
|
||||
// AdvancedModOptions Configs //
|
||||
//============================//
|
||||
public static class AdvancedModOptions
|
||||
//==================//
|
||||
// Advanced Configs //
|
||||
//==================//
|
||||
public static class Advanced
|
||||
{
|
||||
public final Threading threading;
|
||||
public final Debugging debugging;
|
||||
public final Buffers buffers;
|
||||
|
||||
public AdvancedModOptions(ForgeConfigSpec.Builder builder)
|
||||
public Advanced(ForgeConfigSpec.Builder builder)
|
||||
{
|
||||
builder.comment(IAdvanced.DESC).push(this.getClass().getSimpleName());
|
||||
{
|
||||
@@ -387,12 +387,27 @@ public class ForgeConfig
|
||||
|
||||
public static class Buffers
|
||||
{
|
||||
|
||||
public final ForgeConfigSpec.EnumValue<GpuUploadMethod> gpuUploadMethod;
|
||||
public final ForgeConfigSpec.IntValue gpuUploadTimeoutInMilleseconds;
|
||||
public final ForgeConfigSpec.EnumValue<BufferRebuildTimes> rebuildTimes;
|
||||
|
||||
Buffers(ForgeConfigSpec.Builder builder)
|
||||
{
|
||||
builder.comment(IBuffers.DESC).push(this.getClass().getSimpleName());
|
||||
|
||||
gpuUploadMethod = builder
|
||||
.comment("\n\n"
|
||||
+ IBuffers.GPU_UPLOAD_METHOD_DESC)
|
||||
.defineEnum("GPU Upload Method", IBuffers.GPU_UPLOAD_METHOD_DEFAULT);
|
||||
|
||||
MinDefaultMax<Integer> minDefaultMax = IBuffers.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DEFAULT;
|
||||
gpuUploadTimeoutInMilleseconds = builder
|
||||
.comment("\n\n"
|
||||
+ IBuffers.GPU_UPLOAD_TIMEOUT_IN_MILLISECONDS_DESC)
|
||||
.defineInRange("GPU Upload Timeout in Milleseconds", minDefaultMax.defaultValue, minDefaultMax.minValue, minDefaultMax.maxValue);
|
||||
|
||||
|
||||
rebuildTimes = builder
|
||||
.comment("\n\n"
|
||||
+ IBuffers.REBUILD_TIMES_DESC)
|
||||
@@ -437,4 +452,3 @@ public class ForgeConfig
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
+56
-57
@@ -134,60 +134,60 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public HorizontalResolution getDrawResolution()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.qualityOption.drawResolution.get();
|
||||
return ForgeConfig.CLIENT.graphics.quality.drawResolution.get();
|
||||
}
|
||||
@Override
|
||||
public void setDrawResolution(HorizontalResolution newHorizontalResolution)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.qualityOption.drawResolution.set(newHorizontalResolution);
|
||||
ForgeConfig.CLIENT.graphics.quality.drawResolution.set(newHorizontalResolution);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getLodChunkRenderDistance()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.get();
|
||||
return ForgeConfig.CLIENT.graphics.quality.lodChunkRenderDistance.get();
|
||||
}
|
||||
@Override
|
||||
public void setLodChunkRenderDistance(int newLodChunkRenderDistance)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.qualityOption.lodChunkRenderDistance.set(newLodChunkRenderDistance);
|
||||
ForgeConfig.CLIENT.graphics.quality.lodChunkRenderDistance.set(newLodChunkRenderDistance);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VerticalQuality getVerticalQuality()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.qualityOption.verticalQuality.get();
|
||||
return ForgeConfig.CLIENT.graphics.quality.verticalQuality.get();
|
||||
}
|
||||
@Override
|
||||
public void setVerticalQuality(VerticalQuality newVerticalQuality)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.qualityOption.verticalQuality.set(newVerticalQuality);
|
||||
ForgeConfig.CLIENT.graphics.quality.verticalQuality.set(newVerticalQuality);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HorizontalScale getHorizontalScale()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.qualityOption.horizontalScale.get();
|
||||
return ForgeConfig.CLIENT.graphics.quality.horizontalScale.get();
|
||||
}
|
||||
@Override
|
||||
public void setHorizontalScale(HorizontalScale newHorizontalScale)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.qualityOption.horizontalScale.set(newHorizontalScale);
|
||||
ForgeConfig.CLIENT.graphics.quality.horizontalScale.set(newHorizontalScale);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public HorizontalQuality getHorizontalQuality()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.qualityOption.horizontalQuality.get();
|
||||
return ForgeConfig.CLIENT.graphics.quality.horizontalQuality.get();
|
||||
}
|
||||
@Override
|
||||
public void setHorizontalQuality(HorizontalQuality newHorizontalQuality)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.qualityOption.horizontalQuality.set(newHorizontalQuality);
|
||||
ForgeConfig.CLIENT.graphics.quality.horizontalQuality.set(newHorizontalQuality);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,84 +248,60 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public LodTemplate getLodTemplate()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.lodTemplate.get();
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphics.lodTemplate.get();
|
||||
}
|
||||
@Override
|
||||
public void setLodTemplate(LodTemplate newLodTemplate)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.lodTemplate.set(newLodTemplate);
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphics.lodTemplate.set(newLodTemplate);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getDisableDirectionalCulling()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.disableDirectionalCulling.get();
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphics.disableDirectionalCulling.get();
|
||||
}
|
||||
@Override
|
||||
public void setDisableDirectionalCulling(boolean newDisableDirectionalCulling)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.disableDirectionalCulling.set(newDisableDirectionalCulling);
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphics.disableDirectionalCulling.set(newDisableDirectionalCulling);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getAlwaysDrawAtMaxQuality()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.get();
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphics.alwaysDrawAtMaxQuality.get();
|
||||
}
|
||||
@Override
|
||||
public void setAlwaysDrawAtMaxQuality(boolean newAlwaysDrawAtMaxQuality)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.alwaysDrawAtMaxQuality.set(newAlwaysDrawAtMaxQuality);
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphics.alwaysDrawAtMaxQuality.set(newAlwaysDrawAtMaxQuality);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public VanillaOverdraw getVanillaOverdraw()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.get();
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphics.vanillaOverdraw.get();
|
||||
}
|
||||
@Override
|
||||
public void setVanillaOverdraw(VanillaOverdraw newVanillaOverdraw)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.vanillaOverdraw.set(newVanillaOverdraw);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public GpuUploadMethod getGpuUploadMethod()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.get();
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadMethod.set(newDisableVanillaFog);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getGpuUploadTimeoutInMilliseconds()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadTimeoutInMilleseconds.get();
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadTimeoutInMilliseconds(int newTimeoutInMilliseconds)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.gpuUploadTimeoutInMilleseconds.set(newTimeoutInMilliseconds);
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphics.vanillaOverdraw.set(newVanillaOverdraw);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getUseExtendedNearClipPlane()
|
||||
{
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphicsOption.useExtendedNearClipPlane.get();
|
||||
return ForgeConfig.CLIENT.graphics.advancedGraphics.useExtendedNearClipPlane.get();
|
||||
}
|
||||
@Override
|
||||
public void setUseExtendedNearClipPlane(boolean newUseExtendedNearClipPlane)
|
||||
{
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphicsOption.useExtendedNearClipPlane.set(newUseExtendedNearClipPlane);
|
||||
ForgeConfig.CLIENT.graphics.advancedGraphics.useExtendedNearClipPlane.set(newUseExtendedNearClipPlane);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -432,24 +408,24 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public int getNumberOfWorldGenerationThreads()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advancedModOptions.threading.numberOfWorldGenerationThreads.get();
|
||||
return ForgeConfig.CLIENT.advanced.threading.numberOfWorldGenerationThreads.get();
|
||||
}
|
||||
@Override
|
||||
public void setNumberOfWorldGenerationThreads(int newNumberOfWorldGenerationThreads)
|
||||
{
|
||||
ForgeConfig.CLIENT.advancedModOptions.threading.numberOfWorldGenerationThreads.set(newNumberOfWorldGenerationThreads);
|
||||
ForgeConfig.CLIENT.advanced.threading.numberOfWorldGenerationThreads.set(newNumberOfWorldGenerationThreads);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getNumberOfBufferBuilderThreads()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advancedModOptions.threading.numberOfBufferBuilderThreads.get();
|
||||
return ForgeConfig.CLIENT.advanced.threading.numberOfBufferBuilderThreads.get();
|
||||
}
|
||||
@Override
|
||||
public void setNumberOfBufferBuilderThreads(int newNumberOfWorldBuilderThreads)
|
||||
{
|
||||
ForgeConfig.CLIENT.advancedModOptions.threading.numberOfBufferBuilderThreads.set(newNumberOfWorldBuilderThreads);
|
||||
ForgeConfig.CLIENT.advanced.threading.numberOfBufferBuilderThreads.set(newNumberOfWorldBuilderThreads);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -464,54 +440,77 @@ public class LodConfigWrapperSingleton implements ILodConfigWrapperSingleton
|
||||
@Override
|
||||
public boolean getDrawLods()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advancedModOptions.debugging.drawLods.get();
|
||||
return ForgeConfig.CLIENT.advanced.debugging.drawLods.get();
|
||||
}
|
||||
@Override
|
||||
public void setDrawLods(boolean newDrawLods)
|
||||
{
|
||||
ForgeConfig.CLIENT.advancedModOptions.debugging.drawLods.set(newDrawLods);
|
||||
ForgeConfig.CLIENT.advanced.debugging.drawLods.set(newDrawLods);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public DebugMode getDebugMode()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advancedModOptions.debugging.debugMode.get();
|
||||
return ForgeConfig.CLIENT.advanced.debugging.debugMode.get();
|
||||
}
|
||||
@Override
|
||||
public void setDebugMode(DebugMode newDebugMode)
|
||||
{
|
||||
ForgeConfig.CLIENT.advancedModOptions.debugging.debugMode.set(newDebugMode);
|
||||
ForgeConfig.CLIENT.advanced.debugging.debugMode.set(newDebugMode);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean getDebugKeybindingsEnabled()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.get();
|
||||
return ForgeConfig.CLIENT.advanced.debugging.enableDebugKeybindings.get();
|
||||
}
|
||||
@Override
|
||||
public void setDebugKeybindingsEnabled(boolean newEnableDebugKeybindings)
|
||||
{
|
||||
ForgeConfig.CLIENT.advancedModOptions.debugging.enableDebugKeybindings.set(newEnableDebugKeybindings);
|
||||
ForgeConfig.CLIENT.advanced.debugging.enableDebugKeybindings.set(newEnableDebugKeybindings);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static class Buffers implements IBuffers
|
||||
{
|
||||
@Override
|
||||
public GpuUploadMethod getGpuUploadMethod()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advanced.buffers.gpuUploadMethod.get();
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadMethod(GpuUploadMethod newDisableVanillaFog)
|
||||
{
|
||||
ForgeConfig.CLIENT.advanced.buffers.gpuUploadMethod.set(newDisableVanillaFog);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getGpuUploadTimeoutInMilliseconds()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advanced.buffers.gpuUploadTimeoutInMilleseconds.get();
|
||||
}
|
||||
@Override
|
||||
public void setGpuUploadTimeoutInMilliseconds(int newTimeoutInMilliseconds)
|
||||
{
|
||||
ForgeConfig.CLIENT.advanced.buffers.gpuUploadTimeoutInMilleseconds.set(newTimeoutInMilliseconds);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public BufferRebuildTimes getRebuildTimes()
|
||||
{
|
||||
return ForgeConfig.CLIENT.advancedModOptions.buffers.rebuildTimes.get();
|
||||
return ForgeConfig.CLIENT.advanced.buffers.rebuildTimes.get();
|
||||
}
|
||||
@Override
|
||||
public void setRebuildTimes(BufferRebuildTimes newBufferRebuildTimes)
|
||||
{
|
||||
ForgeConfig.CLIENT.advancedModOptions.buffers.rebuildTimes.set(newBufferRebuildTimes);
|
||||
ForgeConfig.CLIENT.advanced.buffers.rebuildTimes.set(newBufferRebuildTimes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user