diff --git a/src/main/java/com/seibel/lod/core/JarMain.java b/src/main/java/com/seibel/lod/core/JarMain.java index 1f9ff107c..50440e001 100644 --- a/src/main/java/com/seibel/lod/core/JarMain.java +++ b/src/main/java/com/seibel/lod/core/JarMain.java @@ -5,6 +5,7 @@ import com.seibel.lod.core.jar.JarDependencySetup; import javax.swing.*; import java.io.*; import java.nio.charset.StandardCharsets; +import java.util.Locale; /** * The main class when you run the standalone jar @@ -12,7 +13,13 @@ import java.nio.charset.StandardCharsets; * @author coolGi */ public class JarMain { - public static void main(String[] args){ + public static void main(String[] args) { + // Sets up the local + if (JarMain.accessFile("assets/lod/lang/"+Locale.getDefault().toString().toLowerCase()+".json") == null) { + System.out.println("The language setting ["+Locale.getDefault().toString().toLowerCase()+"] isn't allowed yet. Defaulting to ["+Locale.US.toString().toLowerCase()+"]."); + Locale.setDefault(Locale.US); + } + JarDependencySetup.createInitialBindings(); System.out.println("WARNING: The standalone jar still work in progress"); JOptionPane.showMessageDialog(null, "The GUI for the standalone jar isn't made yet\nIf you want to use the mod then put it in your mods folder", "Distant Horizons", JOptionPane.WARNING_MESSAGE); diff --git a/src/main/java/com/seibel/lod/core/config/ConfigBase.java b/src/main/java/com/seibel/lod/core/config/ConfigBase.java index 35c001050..4d7d6c239 100644 --- a/src/main/java/com/seibel/lod/core/config/ConfigBase.java +++ b/src/main/java/com/seibel/lod/core/config/ConfigBase.java @@ -46,11 +46,11 @@ public class ConfigBase { acceptableInputs.add(HashMap.class); // TODO[CONFIG]: This is handled separately to check the first input is String and the second input is valid } + public static boolean disableMinMax = false; public static final List> entries = new ArrayList<>(); public static void init(Class config) { addAcceptableInputs(); // Add all of the acceptable stuff to the acceptableInputs list -// categories.add(""); // Add root category to category list initNestedClass(config, ""); // Init root category // File handling (load from file) diff --git a/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java b/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java index 6d4d99528..bb272d8d2 100644 --- a/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java +++ b/src/main/java/com/seibel/lod/core/config/file/ConfigFileHandling.java @@ -2,6 +2,7 @@ package com.seibel.lod.core.config.file; import com.electronwill.nightconfig.core.file.CommentedFileConfig; import com.seibel.lod.core.ModInfo; +import com.seibel.lod.core.api.ClientApi; import com.seibel.lod.core.config.ConfigBase; import com.seibel.lod.core.config.types.AbstractConfigType; import com.seibel.lod.core.config.types.ConfigEntry; @@ -112,16 +113,28 @@ public class ConfigFileHandling { if (!entry.getAppearance().showInFile) return; if (workConfig.contains(entry.getNameWCategory())) { - if (entry.get().getClass().isEnum()) { - // Safe cast due to above checking that is indeed a Enum - // And the second cast back to is safe due to the template - entry.setWTSave((T) ( - workConfig.getEnum(entry.getNameWCategory(), (Class) entry.get().getClass()) - )); - } else if (entry.get().getClass().isAssignableFrom(HashMap.class)) { - entry.setWTSave((T) getHashMapFromString(workConfig.get(entry.getNameWCategory()))); - } else { - entry.setWTSave(workConfig.get(entry.getNameWCategory())); + try { + if (entry.get().getClass().isEnum()) { + // Safe cast due to above checking that is indeed a Enum + // And the second cast back to is safe due to the template + entry.setWTSave((T) ( + workConfig.getEnum(entry.getNameWCategory(), (Class) entry.get().getClass()) + )); + } else if (entry.getType().isAssignableFrom(HashMap.class)) { + entry.setWTSave((T) getHashMapFromString(workConfig.get(entry.getNameWCategory()))); + } else { // TODO: Made a way to make the number be castable to the correct type + entry.setWTSave((T) workConfig.get(entry.getNameWCategory())); + if (entry.isValid() == 0) + return; + else if (entry.isValid() == -1) + entry.setWTSave(entry.getMin()); + else if (entry.isValid() == 1) + entry.setWTSave(entry.getMax()); + } + } catch (Exception e) { + e.printStackTrace(); + ClientApi.LOGGER.warn("Entry ["+entry.getNameWCategory()+"] had an invalid value when loading the config"); + saveEntry(entry, workConfig); } } else { saveEntry(entry, workConfig); diff --git a/src/main/java/com/seibel/lod/core/config/types/ConfigCategory.java b/src/main/java/com/seibel/lod/core/config/types/ConfigCategory.java index ace30d6c6..b15e41dc7 100644 --- a/src/main/java/com/seibel/lod/core/config/types/ConfigCategory.java +++ b/src/main/java/com/seibel/lod/core/config/types/ConfigCategory.java @@ -15,6 +15,13 @@ public class ConfigCategory extends AbstractConfigType { return this.destination; } + @Override + @Deprecated + /** Use get() instead for category */ + public Class getType() { + return value; + } + public static class Builder extends AbstractConfigType.Builder { private String tmpDestination = null; diff --git a/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java b/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java index 901515b65..f6dc48b05 100644 --- a/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java +++ b/src/main/java/com/seibel/lod/core/config/types/ConfigEntry.java @@ -1,5 +1,6 @@ package com.seibel.lod.core.config.types; +import com.seibel.lod.core.config.ConfigBase; import com.seibel.lod.core.config.ConfigEntryAppearance; import com.seibel.lod.core.config.file.ConfigFileHandling; @@ -9,19 +10,22 @@ import com.seibel.lod.core.config.file.ConfigFileHandling; * @author coolGi2007 */ public class ConfigEntry extends AbstractConfigType { - private T defaultValue; private String comment; private T min; private T max; + // Stuff for server overwrites + private final boolean useApiOverwrite; + private T apiValue; /** Creates the entry */ - private ConfigEntry(ConfigEntryAppearance appearance, T value, String comment, T min, T max) { + private ConfigEntry(ConfigEntryAppearance appearance, T value, String comment, T min, T max, boolean useApiOverwrite) { super(appearance, value); this.defaultValue = value; this.comment = comment; this.min = min; this.max = max; + this.useApiOverwrite = useApiOverwrite; } @@ -35,6 +39,12 @@ public class ConfigEntry extends AbstractConfigType { this.value = newValue; save(); } + @Override + public T get() { + if (useApiOverwrite && apiValue != null) + return apiValue; + return value; + } /** Sets the value without saving */ public void setWTSave(T newValue) { @@ -76,6 +86,8 @@ public class ConfigEntry extends AbstractConfigType { * -1 == number too low */ public byte isValid() { + if (ConfigBase.disableMinMax) + return 0; if (Number.class.isAssignableFrom(this.value.getClass())) { // Only check min max if it is a number if (this.max != null && (Double) this.value > (Double) this.max) return 1; @@ -117,6 +129,7 @@ public class ConfigEntry extends AbstractConfigType { private String tmpComment; private T tmpMin; private T tmpMax; + private boolean tmpUseApiOverwrite; public Builder comment(String newComment) { this.tmpComment = newComment; @@ -129,9 +142,14 @@ public class ConfigEntry extends AbstractConfigType { return this; } + public Builder setUseApiOverwrite(boolean newUseApiOverwrite) { + this.tmpUseApiOverwrite = newUseApiOverwrite; + return this; + } + public ConfigEntry build() { - return new ConfigEntry(tmpAppearance, tmpValue, tmpComment, tmpMin, tmpMax); + return new ConfigEntry(tmpAppearance, tmpValue, tmpComment, tmpMin, tmpMax, tmpUseApiOverwrite); } } } diff --git a/src/main/java/com/seibel/lod/core/jar/wrapperInterfaces/config/ConfigWrapper.java b/src/main/java/com/seibel/lod/core/jar/wrapperInterfaces/config/ConfigWrapper.java index 6f873ad8d..6dc5336ea 100644 --- a/src/main/java/com/seibel/lod/core/jar/wrapperInterfaces/config/ConfigWrapper.java +++ b/src/main/java/com/seibel/lod/core/jar/wrapperInterfaces/config/ConfigWrapper.java @@ -6,13 +6,15 @@ import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; +import java.util.Locale; + public class ConfigWrapper implements IConfigWrapper { public static final ConfigWrapper INSTANCE = new ConfigWrapper(); private static JSONObject jsonObject = new JSONObject(); public static void init() { try { - Object obj = new JSONParser().parse(JarMain.convertInputStreamToString(JarMain.accessFile("assets/lod/lang/en_us.json"))); + Object obj = new JSONParser().parse(JarMain.convertInputStreamToString(JarMain.accessFile("assets/lod/lang/"+ Locale.getDefault().toString().toLowerCase()+".json"))); jsonObject = (JSONObject) obj; } catch (ParseException e) { e.printStackTrace(); diff --git a/src/main/resources/assets/lod/lang/en_au.json b/src/main/resources/assets/lod/lang/en_au.json deleted file mode 100644 index b312fdd89..000000000 --- a/src/main/resources/assets/lod/lang/en_au.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "DistantHorizons.config.client.graphics.fogQuality.fogColorMode": - "Fog colour mode", - "DistantHorizons.config.client.graphics.fogQuality.fogColorMode.@tooltip": - "The colour of the fog on fake chunks.", - "DistantHorizons.config.enum.FogColorMode.USE_SKY_COLOR": - "Use sky colour" -} diff --git a/src/main/resources/assets/lod/lang/en_ud.json b/src/main/resources/assets/lod/lang/en_ud.json deleted file mode 100644 index a59d4356a..000000000 --- a/src/main/resources/assets/lod/lang/en_ud.json +++ /dev/null @@ -1,276 +0,0 @@ -{ - "lod.title": - "suozᴉɹoH ʇuɐʇsᴉp", - "DistantHorizons.config.title": - "ƃᴉɟuoɔ suozᴉɹoH ʇuɐʇsᴉp", - "DistantHorizons.config.optionsButton": - "uoʇʇnq suoᴉʇdo ʍoɥS", - "DistantHorizons.config.optionsButton.@tooltip": - "uoʇʇnq ʌoɟ ǝɥʇ ɟo ʇɟǝl ǝɥʇ oʇ uoʇʇnq ƃᴉɟuoɔ ǝɥʇ ʍoɥS", - "DistantHorizons.config.client": - "ʇuǝᴉlƆ", - "DistantHorizons.config.client.graphics": - "sɔᴉɥdɐɹפ", - "DistantHorizons.config.client.graphics.quality": - "suoᴉʇdo ʎʇᴉlɐnQ", - "DistantHorizons.config.client.graphics.quality.drawResolution": - "uoᴉʇnlosǝɹ ʍɐɹp", - "DistantHorizons.config.client.graphics.quality.drawResolution.@tooltip": - "ʞɔolq §6:ʇsǝᴉɔuɐℲ§r\nʞunɥƆ §6:ʇsǝʇsɐℲ§r\n\n˙ʇɐ pǝɹǝpuǝɹ ǝɹɐ sʞunɥɔ ǝʞɐɟ lᴉɐʇǝp ɯnɯᴉxɐɯ ǝɥ┴", - "DistantHorizons.config.client.graphics.quality.lodChunkRenderDistance": - "ǝɔuɐʇsᴉp ɹǝpuǝɹ ʞunɥƆ", - "DistantHorizons.config.client.graphics.quality.lodChunkRenderDistance.@tooltip": - "˙sʞunɥɔ uᴉ pǝɹnsɐǝɯ 'ǝɔuɐʇsᴉp ɹǝpuǝɹ s,poɯ ǝɥ┴", - "DistantHorizons.config.client.graphics.quality.verticalQuality": - "ʎʇᴉlɐnb lɐɔᴉʇɹǝΛ", - "DistantHorizons.config.client.graphics.quality.verticalQuality.@tooltip": - "˙ǝƃɐsn ∩Ԁפ puɐ ʎɹoɯǝɯ ǝsɐǝɹɔuᴉ llᴉʍ suoᴉʇdo ɹǝɥƃᴉH\n\n˙ɔʇǝ 'sǝpᴉsɟɟᴉlɔ 'sǝʌɐɔ 'sƃuɐɥɹǝʌo ʇuǝsǝɹdǝɹ sʞunɥɔ ǝʞɐɟ llǝʍ ʍoH", - "DistantHorizons.config.client.graphics.quality.horizontalScale": - "ǝlɐɔs lɐʇuozᴉɹoH", - "DistantHorizons.config.client.graphics.quality.horizontalScale.@tooltip": - "˙ǝƃɐsn ∩Ԁפ puɐ ʎɹoɯǝɯ ǝsɐǝɹɔuᴉ llᴉʍ ʇnq\nsdoɹp uǝǝʍʇǝq ǝɔuɐʇsᴉp ǝɥʇ ǝsɐǝɹɔuᴉ llᴉʍ sƃuᴉʇʇǝs ɹǝɥƃᴉH\n\n˙ǝɹɐ ʎʇᴉlɐnb uᴉ sdoɹp ʇɹɐddɐ ɹɐɟ ʍoH", - "DistantHorizons.config.client.graphics.quality.horizontalQuality": - "ʎʇᴉlɐnb lɐʇuozᴉɹoH", - "DistantHorizons.config.client.graphics.quality.horizontalQuality.@tooltip": - "˙ǝƃɐsn ∩Ԁפ puɐ ʎɹoɯǝɯ ǝsɐǝɹɔuᴉ llᴉʍ ʇnq\nsdoɹp uǝǝʍʇǝq ǝɔuɐʇsᴉp ǝɥʇ ǝsɐǝɹɔuᴉ llᴉʍ sƃuᴉʇʇǝs ɹǝɥƃᴉH\n\n˙ǝɹɐ ʎʇᴉlɐnb uᴉ sdoɹp ʇɹɐddɐ ɹɐɟ ʍoH", - "DistantHorizons.config.client.graphics.quality.dropoffQuality": - "ʎʇᴉlɐnb ɟɟodoɹp", - "DistantHorizons.config.client.graphics.quality.dropoffQuality.@tooltip": - "˙ƃuᴉɹǝʇʇnʇs ɟo ǝɔuɐɥɔ ǝɥʇ puɐ ǝƃɐsn ∩ԀƆ ƃuᴉsɐǝɹɔuᴉ\n'ʇlᴉnqǝɹ ǝq oʇ sɐɥ ʎɹʇǝɯoǝƃ ǝɥʇ uǝʇɟo ʍoɥ ǝsɐǝɹɔuᴉ llᴉʍ ʇnq\nǝlqɐɔᴉʇou ssǝl ɟɟodoɹp ǝɥʇ ǝʞɐɯ llᴉʍ sƃuᴉʇʇǝs ɹǝɥƃᴉH\n\n˙pǝʇɐlnɔlɐɔ sᴉ ɟɟodoɹp lᴉɐʇǝp ʍoH", - "DistantHorizons.config.client.graphics.fogQuality": - "suoᴉʇdo ƃoℲ", - "DistantHorizons.config.client.graphics.fogQuality.fogDistance": - "ǝɔuɐʇsᴉp ƃoℲ", - "DistantHorizons.config.client.graphics.fogQuality.fogDistance.@tooltip": - "˙sʞunɥɔ ǝʞɐɟ uo pǝɹǝpuǝɹ ǝq llᴉʍ ƃoℲ (s)ǝɔuɐʇsᴉp ǝɥ┴", - "DistantHorizons.config.client.graphics.fogQuality.fogDrawMode": - "ǝpoɯ ʍɐɹp ƃoℲ", - "DistantHorizons.config.client.graphics.fogQuality.fogDrawMode.@tooltip": - "˙sʞunɥɔ ǝʞɐɟ uo pǝɹǝpuǝɹ ǝq llᴉʍ ƃoɟ uǝɥM", - "DistantHorizons.config.client.graphics.fogQuality.fogColorMode": - "ǝpoɯ ɹoloɔ ƃoℲ", - "DistantHorizons.config.client.graphics.fogQuality.fogColorMode.@tooltip": - "˙sʞunɥɔ ǝʞɐɟ uo ƃoɟ ǝɥʇ ɟo ɹoloɔ ǝɥ┴", - "DistantHorizons.config.client.graphics.fogQuality.disableVanillaFog": - "ƃoɟ ɐllᴉuɐʌ ǝlqɐsᴉp", - "DistantHorizons.config.client.graphics.fogQuality.disableVanillaFog.@tooltip": - "˙ƃoɟ uᴉ pǝɹǝʌoɔ ʎlǝʇǝldɯoɔ ǝɹɐ sʞunɥɔ ɐllᴉuɐʌ ɟᴉ ǝlqɐsᴉp\n˙ƃoɟ ʇᴉpǝ ʇɐɥʇ spoɯ ɹǝɥʇo ɥʇᴉʍ sǝnssᴉ ǝsnɐɔ ʎɐW\n\n˙lɐɯɹou ǝʞᴉl ƃoɟ sɹǝpuǝɹ ʇɟɐɹɔǝuᴉW §6:ǝslɐℲ§r\n˙sʞunɥɔ ɐllᴉuɐʌ uo ƃoɟ s,ʇɟɐɹɔǝuᴉW sǝlqɐsᴉp §6:ǝnɹ┴§r", - "DistantHorizons.config.client.graphics.advancedGraphics": - "uoᴉʇdo ʎʇᴉlɐnb pǝɔuɐʌp∀", - "DistantHorizons.config.client.graphics.advancedGraphics.lodTemplate": - "ǝʇɐldɯǝʇ pO˥", - "DistantHorizons.config.client.graphics.advancedGraphics.lodTemplate.@tooltip": - "¡pǝʇuǝɯǝldɯᴉ sᴉ ƆIq∩Ɔ ʎluo ʎlʇuǝɹɹnƆ :Ǝ┴ON\n¿pǝɹǝpuǝɹ ǝq spO˥ ǝɥʇ plnoɥs ʍoH", - "DistantHorizons.config.client.graphics.advancedGraphics.disableDirectionalCulling": - "ƃuᴉllnɔ lɐuoᴉʇɔǝɹᴉp ǝlqɐsᴉp", - "DistantHorizons.config.client.graphics.advancedGraphics.disableDirectionalCulling.@tooltip": - "˙uoᴉsᴉʌ ɹnoʎ ɟo ǝƃpǝ ǝɥʇ ʇɐ ƃuᴉɹɐǝddɐsᴉp sʞunɥɔ ǝʞɐɟ ǝǝs noʎ ssǝlun ǝslɐℲ ǝʌɐǝ˥\n\n˙pǝɹǝpuǝɹ sʎɐʍlɐ ǝɹɐ sʞunɥɔ ǝʞɐɟ §6:ǝnɹ┴§r\n˙ǝɔuɐɯɹoɟɹǝd ƃuᴉʌoɹdɯᴉ 'pǝɹǝpuǝɹ ʇ,uǝɹɐ ɐɹǝɯɐɔ s,ɹǝʎɐld ǝɥʇ puᴉɥǝq sʞunɥɔ ǝʞɐɟ 6§:ǝslɐℲ§r", - "DistantHorizons.config.client.graphics.advancedGraphics.alwaysDrawAtMaxQuality": - "ʎʇᴉlɐnb xɐɯ ʇɐ ʍɐɹp sʎɐʍl∀", - "DistantHorizons.config.client.graphics.advancedGraphics.alwaysDrawAtMaxQuality.@tooltip": - "˙ǝƃɐsn ∩Ԁפ puɐ ʎɹoɯǝɯ ǝsɐǝɹɔuᴉ ʎllɐɔᴉʇsɐɹp llᴉʍ sᴉɥʇ ƃuᴉlqɐuƎ\n\n˙lǝʌǝl lᴉɐʇǝp ǝlqɐlᴉɐʌɐ ʇsǝɥƃᴉɥ ǝɥʇ ʇɐ pǝɹǝpuǝɹ ǝq llᴉʍ sʞunɥɔ ǝʞɐɟ llɐ §6:ǝnɹ┴§r\n˙ǝɔuɐɯɹoɟɹǝd ƃuᴉʌoɹdɯᴉ 'ǝɹɐ ʎǝɥʇ ɹǝʎɐld ǝɥʇ ɯoɹɟ ɹǝɥʇɹɐɟ ǝɥʇ ʎʇᴉlɐnb uᴉ ɟɟo doɹp llᴉʍ sʞunɥɔ ǝʞɐɟ §6:ǝslɐℲ§r", - "DistantHorizons.config.client.graphics.advancedGraphics.vanillaOverdraw": - "ʍɐɹpɹǝʌo ɐllᴉuɐΛ", - "DistantHorizons.config.client.graphics.advancedGraphics.vanillaOverdraw.@tooltip": - "˙plɹoʍ ǝɥʇ uᴉ sǝloɥ ǝq ʎɐɯ ǝɹǝɥʇ ʇnq 'ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ ǝɥʇ dɐlɹǝʌo ɹǝʌǝu llᴉʍ sʞunɥɔ ǝʞɐɟ §6:ɹǝʌǝN§r\n˙ƃuᴉʌoɯ ʇ,usᴉ ɹǝʎɐld ǝɥʇ uǝɥʍ sdɐƃ ƃuᴉʇuǝʌǝɹd 'ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ ǝɥʇ ɟo ɹǝpɹoq ǝɥʇ uo sʞunɥɔ ǝʞɐɟ sɹǝpuǝɹ §6:ɹǝpɹoq§r\n˙sǝʌɐɔ uᴉ ɹo sʞɔolq ʇuǝɹɐdsuɐɹʇ ɹoɟ ppo ʞool ʎɐɯ ʇnq 'plɹoʍ ǝɥʇ uᴉ sǝloɥ sʇuǝʌǝɹd §6:sʎɐʍl∀§r\n˙uoᴉsuǝɯᴉp puɐ ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ uo pǝsɐq uoᴉʇdo ʇsǝq ǝɥʇ ʞɔᴉd oʇ sʇdɯǝʇʇɐ §6:ɔᴉɯɐuʎp§r\n\n˙sʞunɥɔ ɹɐlnƃǝɹ ɟo doʇ uo pǝɹǝpuǝɹ ǝq llᴉʍ sʞunɥɔ ǝʞɐɟ uǝʇɟo ʍoɥ sǝuᴉɯɹǝʇǝp", - "DistantHorizons.config.client.graphics.advancedGraphics.useExtendedNearClipPlane": - "ǝuɐld dᴉlɔ ɹɐǝu pǝpuǝʇxǝ ǝs∩", - "DistantHorizons.config.client.graphics.advancedGraphics.useExtendedNearClipPlane.@tooltip": - "˙ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ ɹǝƃuol ɐ ɥʇᴉʍ ǝlqɐɔᴉʇou ssǝ˥\n˙sǝʌɐǝl ʎɔuɐɟ ɹɐǝu uǝɥʍ ʎllɐᴉɔǝdsǝ 'ʎlʇɔǝɹɹoɔuᴉ ɹǝpuǝɹ oʇ sʞunɥɔ ǝʞɐɟ ʎqɹɐǝu ǝsnɐɔ ʎɐɯ ʇnq\n'sǝnssᴉ ʍɐɹpɹǝʌo ǝɯos ʇuǝʌǝɹd llᴉM", - "DistantHorizons.config.client.graphics.advancedGraphics.backsideCullingRange": - "ǝƃuɐɹ ƃuᴉllnƆ ǝpᴉsʞɔɐq", - "DistantHorizons.config.client.graphics.advancedGraphics.backsideCullingRange.@tooltip": - "˙ǝɔuɐɯɹoɟɹǝd ǝʌoɹdɯᴉ oʇ pǝɹǝpuǝɹ ʇ,uǝɹɐ sʞunɥɔ ǝʞɐɟ ɟo ǝpᴉs ʞɔɐq ǝɥʇ ǝɹǝɥʍ ǝɔuɐʇsᴉp ǝɥ┴", - "DistantHorizons.config.client.worldGenerator": - "ɹoʇɐɹǝuǝƃ plɹoM", - "DistantHorizons.config.client.worldGenerator.generationPriority": - "ʎʇᴉɹoᴉɹd uoᴉʇɐɹǝuǝפ", - "DistantHorizons.config.client.worldGenerator.generationPriority.@tooltip": - "˙ɹǝʎɐld ǝɥʇ punoɹɐ pǝʇɐɹǝuǝƃ ƃuᴉǝq sʞunɥɔ ɹoɟ ʎʇᴉɹoᴉɹd ǝɥ┴", - "DistantHorizons.config.client.worldGenerator.distanceGenerationMode": - "ǝpoɯ uoᴉʇɐɹǝuǝƃ ǝɔuɐʇsᴉp", - "DistantHorizons.config.client.worldGenerator.distanceGenerationMode.@tooltip": - "(˙ʎlʇɔǝɹɹoɔuᴉ ǝʇɐɹǝuǝƃ sʞunɥɔ ǝʞɐɟ ǝɥʇ ssǝlun ǝsn ʇ,uop 'ʍols ʎɹǝΛ) llnℲ §6:ʎʇᴉlᴉqɐʇɐdɯoɔ ʇsǝq§r\n(pǝʇsǝƃƃns) sǝɹnʇɐǝℲ §6:ʎʇᴉlɐnQ ʇsǝq§r\nʎluo ǝɯoᴉq §6:ʇsǝʇsɐℲ§r\n\n˙ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ ǝɥʇ ǝpᴉsʇno sʞunɥɔ ǝʞɐɟ ƃuᴉʇɐɹǝuǝƃ uǝɥʍ ǝq plnoɥs uoᴉʇɐɹǝuǝƃ ǝɥʇ pǝʇɐɔᴉldɯoɔ ʍoH", - "DistantHorizons.config.client.worldGenerator.allowUnstableFeatureGeneration": - "uoᴉʇɐɹǝuǝƃ ǝɹnʇɐǝɟ ǝlqɐʇsun ʍoll∀", - "DistantHorizons.config.client.worldGenerator.allowUnstableFeatureGeneration.@tooltip": - "Some features may not be thread safe.\nCould cause instability and crashes", - "DistantHorizons.config.client.worldGenerator.blocksToAvoid": - "pᴉoʌɐ oʇ ʞɔolq", - "DistantHorizons.config.client.worldGenerator.blocksToAvoid.@tooltip": - "˙sʞunɥɔ ǝʞɐɟ ƃuᴉʇɐɹǝuǝƃ uǝɥʍ ǝɹouƃᴉ oʇ sʞɔolq ɟo sǝdʎʇ ǝɥʇ sǝuᴉɟǝp", - "DistantHorizons.config.client.worldGenerator.enableDistantGeneration": - "uoᴉʇɐɹǝuǝפ ʇuɐʇsᴉp ǝlqɐuƎ", - "DistantHorizons.config.client.worldGenerator.enableDistantGeneration.@tooltip": - "˙ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ ǝɥʇ uᴉɥʇᴉʍ ǝʇɐɹǝuǝƃ ʎluo llᴉʍ sʞunɥɔ ǝʞɐɟ §6:ǝslɐℲ§r\n\n˙∩ԀƆ ɟo ʇunoɯɐ ǝƃɹɐl ɐ ǝsn uɐɔ sᴉɥʇ :ǝʇoN\n˙ǝɔuɐʇsᴉp ɹǝpuǝɹ ɐllᴉuɐʌ ǝɥʇ ǝpᴉsʇno pǝʇɐɹǝuǝƃ ǝq llᴉʍ sʞunɥɔ ǝʞɐɟ ɹǝʎɐld ǝlƃuᴉs uᴉ §6:ǝnɹ┴§r", - "DistantHorizons.config.client.worldGenerator.lightGenerationMode": - "ǝpoW uoᴉʇɐɹǝuǝפ ʇɥƃᴉ˥", - "DistantHorizons.config.client.worldGenerator.lightGenerationMode.@tooltip": - "˙§6:ʇsɐℲ§r oʇ sᴉɥʇ ʇǝs 'ʞɔɐlq ɹɐǝddɐ sʞunɥɔ ǝʞɐɟ ǝɥʇ ɟI\n\n˙ɥʇooɯs sɐ ǝq ʇ,uoʍ sʍopɐɥs 'ƃuᴉʇɥƃᴉl ʞɔolq ǝʇɐɯᴉʇsǝ §6:ʇsɐℲ§r\n˙ƃuᴉʇɥƃᴉl ǝʇɐɹnɔɔɐ sǝʌᴉƃ 'ǝuᴉƃuǝ ƃuᴉʇɥƃᴉl s,ʇɟɐɹɔǝuᴉW ǝsn §6:ʎɔuɐℲ§r", - "DistantHorizons.config.client.advanced": - "suoᴉʇdo ǝɔuɐʌp∀", - "DistantHorizons.config.client.advanced.threading": - "ƃuᴉpɐǝɹɥ┴", - "DistantHorizons.config.client.advanced.threading.numberOfWorldGenerationThreads": - "spɐǝɹɥʇ uoᴉʇɐɹǝuǝƃ plɹoʍ ɟo ˙ON", - "DistantHorizons.config.client.advanced.threading.numberOfWorldGenerationThreads.@tooltip": - "˙ʇunoɔ ɹossǝɔoɹd s,∩ԀƆ ɹnoʎ puɐ Ɩ uǝǝʍʇǝq ǝq ʎluo uɐƆ\n\n˙ɹǝqɯnu sᴉɥʇ ǝsɐǝɹɔuᴉ :pǝǝds uoᴉʇɐɹǝuǝƃ pO˥ ǝsɐǝɹɔuᴉ oʇ ʇuɐʍ noʎ ɟI\n˙ɹǝqɯnu sᴉɥʇ ǝsɐǝɹɔǝp :sʞunɥɔ ǝʞɐɟ ƃuᴉʇɐɹǝuǝƃ uǝɥʍ ƃuᴉɹǝʇʇnʇs ǝɔuǝᴉɹǝdxǝ noʎ ɟI\n˙ǝɔuɐʇsᴉp ɹǝpuǝɹ lɐɯɹou ǝɥʇ ǝpᴉsʇno\nsʞunɥɔ ǝʞɐɟ ǝʇɐɹǝuǝƃ oʇ pǝsn spɐǝɹɥʇ ɟo ɹǝqɯnu ǝɥ┴", - "DistantHorizons.config.client.advanced.threading.numberOfBufferBuilderThreads": - "spɐǝɹɥʇ ɹǝplᴉnq ɹǝɟɟnq ɟo ˙ON", - "DistantHorizons.config.client.advanced.threading.numberOfBufferBuilderThreads.@tooltip": - "The number of threads used when building vertex buffers\n(The things sent to your GPU to draw the fake chunks).\nCan only be between 1 and your CPU's processor count.", - "DistantHorizons.config.client.advanced.buffers": - "sɹǝɟɟnq", - "DistantHorizons.config.client.advanced.buffers.gpuUploadMethod": - "poɥʇǝɯ pɐoldn ∩Ԁפ", - "DistantHorizons.config.client.advanced.buffers.gpuUploadMethod.@tooltip": - "˙ʇɔǝɟɟǝ llnɟ ǝɥʇ ǝǝs oʇ uᴉoɾǝɹ puɐ ƃuᴉʌɐǝl oʇ ǝʌɐɥ ʎɐɯ noʎ ploʍ ɐ uᴉ ǝɹɐ noʎ ɟᴉ :ǝʇoN\n˙ƃuᴉʇʇǝs sᴉɥʇ ƃuᴉƃuɐɥɔ ʎɹʇ 'ʍol sᴉ ǝƃɐsn ∩Ԁפ puɐ ∩ԀƆ ɹnoʎ ǝlᴉɥʍ ƃuᴉɹǝʇʇnʇs ǝɔuǝᴉɹǝdxǝ noʎ ɟI\n\n˙∩Ԁפ ǝɥʇ oʇ ʎɹʇǝɯoǝƃ ƃuᴉpɐoldn ɹoɟ poɥʇǝɯ ǝɥ┴", - "DistantHorizons.config.client.advanced.buffers.gpuUploadPerMegabyteInMilliseconds": - "(spuoɔǝsᴉllᴉɯ) pǝǝds pɐoldn ∩Ԁפ", - "DistantHorizons.config.client.advanced.buffers.gpuUploadPerMegabyteInMilliseconds.@tooltip": - "˙ƃuᴉɹǝʇʇnʇs ǝɯɐɹɟ sᴉ ǝɹǝɥʇ ɟᴉ pǝsɐǝɹɔuᴉ ǝq ʎɐW\n¿pǝpɐoldn ɐʇɐp ɟo ǝʇʎqɐƃǝW ɹǝd ʇᴉɐʍ ɹǝɟɟnq ɐ plnoɥs ƃuol ʍoH", - "DistantHorizons.config.client.advanced.buffers.rebuildTimes": - "sǝɯᴉʇ plᴉnqǝɹ", - "DistantHorizons.config.client.advanced.buffers.rebuildTimes.@tooltip": - "¿∩Ԁפ ǝɥʇ oʇ ʇuǝs puɐ ʇlᴉnqǝɹ ǝq (ʎɹʇǝɯoǝƃ) sɹǝɟɟnq xǝʇɹǝʌ plnoɥs ʎlʇuǝnbǝɹɟ ʍoH", - "DistantHorizons.config.client.advanced.debugging": - "ƃnqǝp", - "DistantHorizons.config.client.advanced.debugging.drawLods": - "s,pO˥ ʍɐɹp", - "DistantHorizons.config.client.advanced.debugging.drawLods.@tooltip": - "˙ǝlᴉɟ oʇ pǝʌɐs puɐ pǝʇɐɹǝuǝƃ ǝq llᴉʇs llᴉʍ ʎǝɥʇ ɹǝʌǝʍoɥ 'pǝɹǝpuǝɹ ǝq ʇou llᴉʍ sʞunɥɔ ǝʞɐɟ §6:ǝslɐℲ§r\n˙pǝɹǝpuǝɹ ǝq llᴉʍ sʞunɥɔ ǝʞɐɟ §6:ǝnɹ┴§r", - "DistantHorizons.config.client.advanced.debugging.debugMode": - "ǝpoɯ ƃnqǝp", - "DistantHorizons.config.client.advanced.debugging.debugMode.@tooltip": - "˙ǝpoɯ ƃnqǝp ǝʌᴉʇɔɐ ǝɥ┴", - "DistantHorizons.config.client.advanced.debugging.enableDebugKeybindings": - "sƃuᴉpuᴉqʎǝʞ ƃnqǝp ǝlqɐuƎ", - "DistantHorizons.config.client.advanced.debugging.enableDebugKeybindings.@tooltip": - "§6True:§r debug keybindings can be used to change the Debug mode in game.", - "DistantHorizons.config.enum.HorizontalResolution.BLOCK": - "ʞɔolq", - "DistantHorizons.config.enum.HorizontalResolution.TWO_BLOCKS": - "sʞɔolq ᄅ", - "DistantHorizons.config.enum.HorizontalResolution.FOUR_BLOCKS": - "sʞɔolq ㄣ", - "DistantHorizons.config.enum.HorizontalResolution.HALF_CHUNK": - "ʞunɥɔ ɐ ɟlɐH", - "DistantHorizons.config.enum.HorizontalResolution.CHUNK": - "ʞunɥƆ", - "DistantHorizons.config.enum.VerticalQuality.LOW": - "ʍo˥", - "DistantHorizons.config.enum.VerticalQuality.MEDIUM": - "ɯnᴉpǝW", - "DistantHorizons.config.enum.VerticalQuality.HIGH": - "ɥƃᴉH", - "DistantHorizons.config.enum.HorizontalScale.LOW": - "ʍo˥", - "DistantHorizons.config.enum.HorizontalScale.MEDIUM": - "ɯnᴉpǝW", - "DistantHorizons.config.enum.HorizontalScale.HIGH": - "ɥƃᴉH", - "DistantHorizons.config.enum.HorizontalQuality.LOWEST": - "Lowest", - "DistantHorizons.config.enum.HorizontalQuality.LOW": - "ʍo˥", - "DistantHorizons.config.enum.HorizontalQuality.MEDIUM": - "ɯnᴉpǝW", - "DistantHorizons.config.enum.HorizontalQuality.HIGH": - "ɥƃᴉH", - "DistantHorizons.config.enum.FogDistance.NEAR": - "ɹɐǝN", - "DistantHorizons.config.enum.FogDistance.FAR": - "ɹɐℲ", - "DistantHorizons.config.enum.FogDistance.NEAR_AND_FAR": - "ɹɐɟ puɐ ɹɐǝN", - "DistantHorizons.config.enum.FogDrawMode.USE_OPTIFINE_SETTING": - "sƃuᴉʇʇǝs pǝppoɯ ǝs∩", - "DistantHorizons.config.enum.FogDrawMode.FOG_ENABLED": - "pǝlqɐuƎ", - "DistantHorizons.config.enum.FogDrawMode.FOG_DISABLED": - "pǝlqɐsᴉp", - "DistantHorizons.config.enum.FogColorMode.USE_WORLD_FOG_COLOR": - "ƃoɟ plɹoʍ ǝs∩", - "DistantHorizons.config.enum.FogColorMode.USE_SKY_COLOR": - "ɹoloɔ ʎʞs ǝs∩", - "DistantHorizons.config.enum.LodTemplate.CUBIC": - "ɔᴉqnƆ", - "DistantHorizons.config.enum.LodTemplate.TRIANGULAR": - "ɹɐlnƃuɐᴉɹ┴", - "DistantHorizons.config.enum.LodTemplate.DYNAMIC": - "ɔᴉɯɐuʎp", - "DistantHorizons.config.enum.VanillaOverdraw.NEVER": - "ɹǝʌǝN", - "DistantHorizons.config.enum.VanillaOverdraw.DYNAMIC": - "ɔᴉɯɐuʎp", - "DistantHorizons.config.enum.VanillaOverdraw.ALWAYS": - "sʎɐʍl∀", - "DistantHorizons.config.enum.VanillaOverdraw.BORDER": - "ɹǝpɹoq", - "DistantHorizons.config.enum.GenerationPriority.AUTO": - "oʇn∀", - "DistantHorizons.config.enum.GenerationPriority.NEAR_FIRST": - "ʇsɹᴉɟ ɹɐǝN", - "DistantHorizons.config.enum.GenerationPriority.BALANCED": - "pǝɔuɐlɐq", - "DistantHorizons.config.enum.GenerationPriority.FAR_FIRST": - "ʇsɹᴉɟ ɹɐℲ", - "DistantHorizons.config.enum.DistanceGenerationMode.NONE": - "ǝuoN", - "DistantHorizons.config.enum.DistanceGenerationMode.BIOME_ONLY": - "ʎluo ǝɯoᴉq", - "DistantHorizons.config.enum.DistanceGenerationMode.BIOME_ONLY_SIMULATE_HEIGHT": - "ʇɥƃᴉǝɥ ǝʇɐlnɯᴉs ʎluo ǝɯoᴉq", - "DistantHorizons.config.enum.DistanceGenerationMode.SURFACE": - "ǝɔɐɟɹnS", - "DistantHorizons.config.enum.DistanceGenerationMode.FEATURES": - "sǝɹnʇɐǝℲ", - "DistantHorizons.config.enum.DistanceGenerationMode.FULL": - "llnℲ", - "DistantHorizons.config.enum.BlocksToAvoid.NONE": - "ǝuoN", - "DistantHorizons.config.enum.BlocksToAvoid.NON_FULL": - "llnɟ uoN", - "DistantHorizons.config.enum.BlocksToAvoid.NO_COLLISION": - "uoᴉsᴉlloɔ oN", - "DistantHorizons.config.enum.BlocksToAvoid.BOTH": - "ɥʇoq", - "DistantHorizons.config.enum.DebugMode.OFF": - "ɟɟO", - "DistantHorizons.config.enum.DebugMode.SHOW_WIREFRAME": - "ǝɯɐɹɟǝɹᴉʍ ʍoɥS", - "DistantHorizons.config.enum.DebugMode.SHOW_DETAIL": - "lᴉɐʇǝp ʍoɥS", - "DistantHorizons.config.enum.DebugMode.SHOW_DETAIL_WIREFRAME": - "ǝɯɐɹɟǝɹᴉʍ ɥʇᴉʍ lᴉɐʇǝp ʍoɥS", - "DistantHorizons.config.enum.DebugMode.SHOW_GENMODE": - "ǝpoɯ uoᴉʇɐɹǝuǝƃ ʍoɥS", - "DistantHorizons.config.enum.DebugMode.SHOW_GENMODE_WIREFRAME": - "ǝɯɐɹɟǝɹᴉʍ ɥʇᴉʍ ǝpoɯ uoᴉʇɐɹǝuǝƃ ʍoɥS", - "DistantHorizons.config.enum.GpuUploadMethod.AUTO": - "oʇn∀", - "DistantHorizons.config.enum.GpuUploadMethod.BUFFER_STORAGE": - "ǝƃɐɹoʇs ɹǝɟɟnq", - "DistantHorizons.config.enum.GpuUploadMethod.SUB_DATA": - "ɐʇɐp qnS", - "DistantHorizons.config.enum.GpuUploadMethod.BUFFER_MAPPING": - "ƃuᴉddɐɯ ɹǝɟɟnq", - "DistantHorizons.config.enum.GpuUploadMethod.DATA": - "ɐʇɐp", - "DistantHorizons.config.enum.BufferRebuildTimes.FREQUENT": - "ʇuǝnbǝɹℲ", - "DistantHorizons.config.enum.BufferRebuildTimes.NORMAL": - "lɐɯɹoN", - "DistantHorizons.config.enum.BufferRebuildTimes.RARE": - "ǝɹɐɹ", - "DistantHorizons.config.enum.DropoffQuality.AUTO": - "oʇn∀", - "DistantHorizons.config.enum.DropoffQuality.SMOOTH_DROPOFF": - "ɟɟodoɹp ɥʇooɯS", - "DistantHorizons.config.enum.DropoffQuality.PERFORMANCE_FOCUSED": - "pǝsnɔoɟ ǝɔuɐɯɹoɟɹǝԀ", - "DistantHorizons.config.enum.LightGenerationMode.FAST": - "ʇsɐℲ", - "DistantHorizons.config.enum.LightGenerationMode.FANCY": - "ʎɔuɐℲ" -}