aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-05-12 17:47:18 +0800
committerGitHub <noreply@github.com>2022-05-12 11:47:18 +0200
commite1d382876b552ff5d01b8d2cdc5152dd799fd1b5 (patch)
treed8d67bf778dbccc2c2603151d0f5e736f48debcb /src/main/java
parenta8a1b46c00cd8086dc175e4d828d0c2048eec586 (diff)
downloadGT5-Unofficial-e1d382876b552ff5d01b8d2cdc5152dd799fd1b5.tar.gz
GT5-Unofficial-e1d382876b552ff5d01b8d2cdc5152dd799fd1b5.tar.bz2
GT5-Unofficial-e1d382876b552ff5d01b8d2cdc5152dd799fd1b5.zip
Don't save unchanged file several hundred times per second (#1047)
* Don't save unchanged file several hundred times per second * Revise implementation It turns out Configuration#hasChanged is a nontrivial method, especially in a huge configuration file such as language file
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/api/util/GT_LanguageManager.java98
1 files changed, 51 insertions, 47 deletions
diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java
index 2c2324aedd..b71fc7ca2b 100644
--- a/src/main/java/gregtech/api/util/GT_LanguageManager.java
+++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java
@@ -12,9 +12,12 @@ import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import java.lang.reflect.Field;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import static gregtech.api.enums.GT_Values.E;
@@ -24,18 +27,18 @@ public class GT_LanguageManager {
public static String sLanguage = "en_US";
public static boolean sUseEnglishFile = false;
public static boolean i18nPlaceholder = true;
-
+
public static String
- FACE_ANY = "gt.lang.face.any",
- FACE_BOTTOM = "gt.lang.face.bottom",
- FACE_TOP = "gt.lang.face.top",
- FACE_LEFT = "gt.lang.face.left",
- FACE_FRONT = "gt.lang.face.front",
- FACE_RIGHT = "gt.lang.face.right",
- FACE_BACK = "gt.lang.face.back",
+ FACE_ANY = "gt.lang.face.any",
+ FACE_BOTTOM = "gt.lang.face.bottom",
+ FACE_TOP = "gt.lang.face.top",
+ FACE_LEFT = "gt.lang.face.left",
+ FACE_FRONT = "gt.lang.face.front",
+ FACE_RIGHT = "gt.lang.face.right",
+ FACE_BACK = "gt.lang.face.back",
FACE_NONE = "gt.lang.face.none";
-
- public static String[]
+
+ public static String[]
FACES = {FACE_BOTTOM, FACE_TOP, FACE_LEFT, FACE_FRONT, FACE_RIGHT, FACE_BACK, FACE_NONE};
@@ -45,10 +48,11 @@ public class GT_LanguageManager {
public static synchronized String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) {
if (aKey == null) return E;
- if (aWriteIntoLangFile){ aEnglish = writeToLangFile(aKey, aEnglish);
- if(!LANGMAP.containsKey(aKey)){
- LANGMAP.put(aKey, aEnglish);
- }
+ if (aWriteIntoLangFile && (!LANGMAP.containsKey(aKey) || (sEnglishFile != null && !BUFFERMAP.isEmpty()))) {
+ aEnglish = writeToLangFile(aKey, aEnglish);
+ if (!LANGMAP.containsKey(aKey)) {
+ LANGMAP.put(aKey, aEnglish);
+ }
}
TEMPMAP.put(aKey.trim(), aEnglish);
LanguageRegistry.instance().injectLanguage(sLanguage, TEMPMAP);
@@ -135,13 +139,13 @@ public class GT_LanguageManager {
}
return aStack.getUnlocalizedName() + ".name";
}
-
+
public static void writePlaceholderStrings(){
addStringLocalization("Interaction_DESCRIPTION_Index_001", "Puts out into adjacent Slot #");
- addStringLocalization("Interaction_DESCRIPTION_Index_002", "Grabs in for own Slot #");
+ addStringLocalization("Interaction_DESCRIPTION_Index_002", "Grabs in for own Slot #");
addStringLocalization("Interaction_DESCRIPTION_Index_003", "Normal");
addStringLocalization("Interaction_DESCRIPTION_Index_004", "Inverted");
- addStringLocalization("Interaction_DESCRIPTION_Index_005", "No Work at all");
+ addStringLocalization("Interaction_DESCRIPTION_Index_005", "No Work at all");
addStringLocalization("Interaction_DESCRIPTION_Index_006", "Export");
addStringLocalization("Interaction_DESCRIPTION_Index_007", "Import");
addStringLocalization("Interaction_DESCRIPTION_Index_008", "Export (conditional)");
@@ -153,20 +157,20 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_014", "Export allow Input (conditional)");
addStringLocalization("Interaction_DESCRIPTION_Index_015", "Import allow Output (conditional)");
addStringLocalization("Interaction_DESCRIPTION_Index_016", "Export allow Input (invert cond)");
- addStringLocalization("Interaction_DESCRIPTION_Index_017", "Import allow Output (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_017", "Import allow Output (invert cond)");
addStringLocalization("Interaction_DESCRIPTION_Index_018", "Normal");
addStringLocalization("Interaction_DESCRIPTION_Index_019", "Inverted");
addStringLocalization("Interaction_DESCRIPTION_Index_020", "Ready to work");
- addStringLocalization("Interaction_DESCRIPTION_Index_021", "Not ready to work");
+ addStringLocalization("Interaction_DESCRIPTION_Index_021", "Not ready to work");
addStringLocalization("Interaction_DESCRIPTION_Index_022", "Import");
addStringLocalization("Interaction_DESCRIPTION_Index_023", "Import (conditional)");
addStringLocalization("Interaction_DESCRIPTION_Index_024", "Import (invert cond)");
addStringLocalization("Interaction_DESCRIPTION_Index_025", "Keep Liquids Away");
addStringLocalization("Interaction_DESCRIPTION_Index_026", "Keep Liquids Away (conditional)");
- addStringLocalization("Interaction_DESCRIPTION_Index_027", "Keep Liquids Away (invert cond)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_027", "Keep Liquids Away (invert cond)");
addStringLocalization("Interaction_DESCRIPTION_Index_028", "Allow");
addStringLocalization("Interaction_DESCRIPTION_Index_029", "Allow (conditional)");
- addStringLocalization("Interaction_DESCRIPTION_Index_030", "Disallow (conditional)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_030", "Disallow (conditional)");
addStringLocalization("Interaction_DESCRIPTION_Index_031", "Normal Universal Storage");
addStringLocalization("Interaction_DESCRIPTION_Index_032", "Inverted Universal Storage");
addStringLocalization("Interaction_DESCRIPTION_Index_033", "Normal Electricity Storage");
@@ -178,20 +182,20 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_039", "Normal Average Electric Output");
addStringLocalization("Interaction_DESCRIPTION_Index_040", "Inverted Average Electric Output");
addStringLocalization("Interaction_DESCRIPTION_Index_041", "Normal Electricity Storage(Including Batteries)");
- addStringLocalization("Interaction_DESCRIPTION_Index_042", "Inverted Electricity Storage(Including Batteries)");
+ addStringLocalization("Interaction_DESCRIPTION_Index_042", "Inverted Electricity Storage(Including Batteries)");
addStringLocalization("Interaction_DESCRIPTION_Index_043", "Allow input, no output");
addStringLocalization("Interaction_DESCRIPTION_Index_044", "Deny input, no output");
addStringLocalization("Interaction_DESCRIPTION_Index_045", "Allow input, permit any output");
addStringLocalization("Interaction_DESCRIPTION_Index_046", "Deny input, permit any output");
- addStringLocalization("Interaction_DESCRIPTION_Index_047", "Filter Fluid: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_047", "Filter Fluid: ");
addStringLocalization("Interaction_DESCRIPTION_Index_048", "Pump speed: ");
addStringLocalization("Interaction_DESCRIPTION_Index_049", "L/tick ");
- addStringLocalization("Interaction_DESCRIPTION_Index_050", "L/sec");
+ addStringLocalization("Interaction_DESCRIPTION_Index_050", "L/sec");
addStringLocalization("Interaction_DESCRIPTION_Index_051", "Normal");
addStringLocalization("Interaction_DESCRIPTION_Index_052", "Inverted");
- addStringLocalization("Interaction_DESCRIPTION_Index_053", "Slot: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_053", "Slot: ");
addStringLocalization("Interaction_DESCRIPTION_Index_054", "Inverted");
- addStringLocalization("Interaction_DESCRIPTION_Index_055", "Normal");
+ addStringLocalization("Interaction_DESCRIPTION_Index_055", "Normal");
addStringLocalization("Interaction_DESCRIPTION_Index_056", "Emit if 1 Maintenance Needed");
addStringLocalization("Interaction_DESCRIPTION_Index_057", "Emit if 1 Maintenance Needed(inverted)");
addStringLocalization("Interaction_DESCRIPTION_Index_058", "Emit if 2 Maintenance Needed");
@@ -206,22 +210,22 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_067", "Emit if rotor needs maintenance(inverted)");
addStringLocalization("Interaction_DESCRIPTION_Index_068", "Emit if any Player is close");
addStringLocalization("Interaction_DESCRIPTION_Index_069", "Emit if other player is close");
- addStringLocalization("Interaction_DESCRIPTION_Index_070", "Emit if you are close");
+ addStringLocalization("Interaction_DESCRIPTION_Index_070", "Emit if you are close");
addStringLocalization("Interaction_DESCRIPTION_Index_071", "Conducts strongest Input");
addStringLocalization("Interaction_DESCRIPTION_Index_072", "Conducts from bottom Input");
addStringLocalization("Interaction_DESCRIPTION_Index_073", "Conducts from top Input");
addStringLocalization("Interaction_DESCRIPTION_Index_074", "Conducts from north Input");
addStringLocalization("Interaction_DESCRIPTION_Index_075", "Conducts from south Input");
addStringLocalization("Interaction_DESCRIPTION_Index_076", "Conducts from west Input");
- addStringLocalization("Interaction_DESCRIPTION_Index_077", "Conducts from east Input");
+ addStringLocalization("Interaction_DESCRIPTION_Index_077", "Conducts from east Input");
addStringLocalization("Interaction_DESCRIPTION_Index_078", "Signal = ");
addStringLocalization("Interaction_DESCRIPTION_Index_079", "Conditional Signal = ");
- addStringLocalization("Interaction_DESCRIPTION_Index_080", "Inverted Conditional Signal = ");
- addStringLocalization("Interaction_DESCRIPTION_Index_081", "Frequency: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_080", "Inverted Conditional Signal = ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_081", "Frequency: ");
addStringLocalization("Interaction_DESCRIPTION_Index_082", "Open if work enabled");
addStringLocalization("Interaction_DESCRIPTION_Index_083", "Open if work disabled");
addStringLocalization("Interaction_DESCRIPTION_Index_084", "Only Output allowed");
- addStringLocalization("Interaction_DESCRIPTION_Index_085", "Only Input allowed");
+ addStringLocalization("Interaction_DESCRIPTION_Index_085", "Only Input allowed");
addStringLocalization("Interaction_DESCRIPTION_Index_086", "Auto-Input: ");
addStringLocalization("Interaction_DESCRIPTION_Index_087", "Disabled");
addStringLocalization("Interaction_DESCRIPTION_Index_088", "Enabled");
@@ -230,12 +234,12 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_091", "Redstone Output at Side ");
addStringLocalization("Interaction_DESCRIPTION_Index_092", " set to: ");
addStringLocalization("Interaction_DESCRIPTION_Index_093", "Strong");
- addStringLocalization("Interaction_DESCRIPTION_Index_094", "Weak");
+ addStringLocalization("Interaction_DESCRIPTION_Index_094", "Weak");
addStringLocalization("Interaction_DESCRIPTION_Index_095", "Input from Output Side allowed");
- addStringLocalization("Interaction_DESCRIPTION_Index_096", "Input from Output Side forbidden");
+ addStringLocalization("Interaction_DESCRIPTION_Index_096", "Input from Output Side forbidden");
addStringLocalization("Interaction_DESCRIPTION_Index_097", "It's dangerous to go alone! Take this.");
addStringLocalization("Interaction_DESCRIPTION_Index_098", "Do not regulate Item Stack Size");
- addStringLocalization("Interaction_DESCRIPTION_Index_099", "Regulate Item Stack Size to: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_099", "Regulate Item Stack Size to: ");
addStringLocalization("Interaction_DESCRIPTION_Index_100", "This is ");//Spartaaaaaaa!!!
addStringLocalization("Interaction_DESCRIPTION_Index_101", " Ore.");
addStringLocalization("Interaction_DESCRIPTION_Index_102", "There is Lava behind this Rock.");
@@ -243,7 +247,7 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_104", "There is an Air Pocket behind this Rock.");
addStringLocalization("Interaction_DESCRIPTION_Index_105", "Material is changing behind this Rock.");
addStringLocalization("Interaction_DESCRIPTION_Index_106", "Found traces of ");
- addStringLocalization("Interaction_DESCRIPTION_Index_107", "No Ores found.");
+ addStringLocalization("Interaction_DESCRIPTION_Index_107", "No Ores found.");
addStringLocalization("Interaction_DESCRIPTION_Index_108", "Outputs Liquids, Steam and Items");
addStringLocalization("Interaction_DESCRIPTION_Index_109", "Outputs Steam and Items");
addStringLocalization("Interaction_DESCRIPTION_Index_110", "Outputs Steam and Liquids");
@@ -251,23 +255,23 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_112", "Outputs Liquids and Items");
addStringLocalization("Interaction_DESCRIPTION_Index_113", "Outputs only Items");
addStringLocalization("Interaction_DESCRIPTION_Index_114", "Outputs only Liquids");
- addStringLocalization("Interaction_DESCRIPTION_Index_115", "Outputs nothing");
+ addStringLocalization("Interaction_DESCRIPTION_Index_115", "Outputs nothing");
addStringLocalization("Interaction_DESCRIPTION_Index_116", "Emit Energy to Outputside");
addStringLocalization("Interaction_DESCRIPTION_Index_117", "Don't emit Energy");
addStringLocalization("Interaction_DESCRIPTION_Index_118", "Emit Redstone if no Slot is free");
addStringLocalization("Interaction_DESCRIPTION_Index_119", "Don't emit Redstone");
addStringLocalization("Interaction_DESCRIPTION_Index_120", "Invert Redstone");
- addStringLocalization("Interaction_DESCRIPTION_Index_121", "Don't invert Redstone");
+ addStringLocalization("Interaction_DESCRIPTION_Index_121", "Don't invert Redstone");
addStringLocalization("Interaction_DESCRIPTION_Index_122", "Emit Redstone if slots contain something");
addStringLocalization("Interaction_DESCRIPTION_Index_123", "Don't emit Redstone");
addStringLocalization("Interaction_DESCRIPTION_Index_124", "Invert Filter");
addStringLocalization("Interaction_DESCRIPTION_Index_125", "Don't invert Filter");
addStringLocalization("Interaction_DESCRIPTION_Index_126", "Ignore NBT");
- addStringLocalization("Interaction_DESCRIPTION_Index_127", "NBT has to match");
+ addStringLocalization("Interaction_DESCRIPTION_Index_127", "NBT has to match");
addStringLocalization("Interaction_DESCRIPTION_Index_128", "Redstone ");
addStringLocalization("Interaction_DESCRIPTION_Index_129", "Energy ");
addStringLocalization("Interaction_DESCRIPTION_Index_130", "Fluids ");
- addStringLocalization("Interaction_DESCRIPTION_Index_131", "Items ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_131", "Items ");
addStringLocalization("Interaction_DESCRIPTION_Index_132", "Pipe is loose.");
addStringLocalization("Interaction_DESCRIPTION_Index_133", "Screws are loose.");
addStringLocalization("Interaction_DESCRIPTION_Index_134", "Something is stuck.");
@@ -280,12 +284,12 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_141", "if it doesn't start.");
addStringLocalization("Interaction_DESCRIPTION_Index_142", "Running perfectly.");
addStringLocalization("Interaction_DESCRIPTION_Index_143", "Missing Mining Pipe");
- addStringLocalization("Interaction_DESCRIPTION_Index_144", "Missing Turbine Rotor");
+ addStringLocalization("Interaction_DESCRIPTION_Index_144", "Missing Turbine Rotor");
addStringLocalization("Interaction_DESCRIPTION_Index_145", "Step Down, In: ");
- addStringLocalization("Interaction_DESCRIPTION_Index_146", "Step Up, In: ");
- addStringLocalization("Interaction_DESCRIPTION_Index_147", "Amp, Out: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_146", "Step Up, In: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_147", "Amp, Out: ");
addStringLocalization("Interaction_DESCRIPTION_Index_148", " V at ");
- addStringLocalization("Interaction_DESCRIPTION_Index_149", " Amp");
+ addStringLocalization("Interaction_DESCRIPTION_Index_149", " Amp");
addStringLocalization("Interaction_DESCRIPTION_Index_150", "Chance: ");
addStringLocalization("Interaction_DESCRIPTION_Index_151", "Does not get consumed in the process");
addStringLocalization("Interaction_DESCRIPTION_Index_152", "Total: ");
@@ -296,8 +300,8 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_157", "Amperage: unspecified");
addStringLocalization("Interaction_DESCRIPTION_Index_158", "Time: ");
addStringLocalization("Interaction_DESCRIPTION_Index_159", "Needs Low Gravity");
- addStringLocalization("Interaction_DESCRIPTION_Index_160", "Needs Cleanroom");
- addStringLocalization("Interaction_DESCRIPTION_Index_161", " secs");
+ addStringLocalization("Interaction_DESCRIPTION_Index_160", "Needs Cleanroom");
+ addStringLocalization("Interaction_DESCRIPTION_Index_161", " secs");
addStringLocalization("Interaction_DESCRIPTION_Index_162", "Name: ");
addStringLocalization("Interaction_DESCRIPTION_Index_163", " MetaData: ");
addStringLocalization("Interaction_DESCRIPTION_Index_164", "Hardness: ");
@@ -306,7 +310,7 @@ public class GT_LanguageManager {
addStringLocalization("Interaction_DESCRIPTION_Index_167", "Tank ");
addStringLocalization("Interaction_DESCRIPTION_Index_168", "Heat: ");
addStringLocalization("Interaction_DESCRIPTION_Index_169", " HEM: ");
- addStringLocalization("Interaction_DESCRIPTION_Index_170", " Base EU Output: ");
+ addStringLocalization("Interaction_DESCRIPTION_Index_170", " Base EU Output: ");
addStringLocalization("Interaction_DESCRIPTION_Index_171", "Facing: ");
addStringLocalization("Interaction_DESCRIPTION_Index_172", " / Chance: ");
addStringLocalization("Interaction_DESCRIPTION_Index_173", "You can remove this with a Wrench");
@@ -384,7 +388,7 @@ public class GT_LanguageManager {
addStringLocalization("Item_DESCRIPTION_Index_018", "State: %s");
addStringLocalization("Item_DESCRIPTION_Index_500", "Turbine Efficiency (Loose): %s");
addStringLocalization("Item_DESCRIPTION_Index_501", "Optimal Steam flow (Loose): %s L/t");
-
+
addStringLocalization(FACE_ANY, "Any Side");
addStringLocalization(FACE_BOTTOM, "Bottom");
addStringLocalization(FACE_TOP, "Top");