Fix custom language files.
- Now actually using custom language file when indicated in the config file. - Set default language file to read-only. - Added warning message to not alter the default language file as it'll be regenerated.
This commit is contained in:
parent
45d5f90fef
commit
ecd0340cd6
@ -92,9 +92,6 @@ public class ArmoredElytra extends JavaPlugin implements Listener
|
|||||||
// Y u do dis? :(
|
// Y u do dis? :(
|
||||||
myLogger(Level.INFO, "Stats disabled, not loading stats :(... Please consider enabling it! I am a simple man, seeing higher user numbers helps me stay motivated!");
|
myLogger(Level.INFO, "Stats disabled, not loading stats :(... Please consider enabling it! I am a simple man, seeing higher user numbers helps me stay motivated!");
|
||||||
|
|
||||||
locale = config.getString("languageFile");
|
|
||||||
|
|
||||||
|
|
||||||
// Load the files for the correct version of Minecraft.
|
// Load the files for the correct version of Minecraft.
|
||||||
if (compatibleMCVer())
|
if (compatibleMCVer())
|
||||||
{
|
{
|
||||||
@ -139,6 +136,8 @@ public class ArmoredElytra extends JavaPlugin implements Listener
|
|||||||
|
|
||||||
// Check if the plugin should go into uninstall mode.
|
// Check if the plugin should go into uninstall mode.
|
||||||
uninstallMode = config.getBool("uninstallMode");
|
uninstallMode = config.getBool("uninstallMode");
|
||||||
|
|
||||||
|
locale = config.getString("languageFile");
|
||||||
}
|
}
|
||||||
|
|
||||||
public Messages getMyMessages()
|
public Messages getMyMessages()
|
||||||
@ -223,6 +222,10 @@ public class ArmoredElytra extends JavaPlugin implements Listener
|
|||||||
|
|
||||||
public String getLocale()
|
public String getLocale()
|
||||||
{
|
{
|
||||||
|
if (locale == null)
|
||||||
|
System.out.println("locale is null!");
|
||||||
|
else
|
||||||
|
System.out.println("Locale is " + locale);
|
||||||
return locale == null ? "en_US" : locale;
|
return locale == null ? "en_US" : locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,6 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
import nl.pim16aap2.armoredElytra.ArmoredElytra;
|
import nl.pim16aap2.armoredElytra.ArmoredElytra;
|
||||||
import nl.pim16aap2.armoredElytra.util.ConfigOption;
|
|
||||||
|
|
||||||
public class ConfigLoader
|
public class ConfigLoader
|
||||||
{
|
{
|
||||||
@ -28,17 +27,17 @@ public class ConfigLoader
|
|||||||
private int DIAMONDS_TO_FULL;
|
private int DIAMONDS_TO_FULL;
|
||||||
private boolean noFlightDurability;
|
private boolean noFlightDurability;
|
||||||
private List<String> allowedEnchantments;
|
private List<String> allowedEnchantments;
|
||||||
|
|
||||||
private ArrayList<ConfigOption> configOptionsList;
|
private ArrayList<ConfigOption> configOptionsList;
|
||||||
private ArmoredElytra plugin;
|
private ArmoredElytra plugin;
|
||||||
|
|
||||||
public ConfigLoader(ArmoredElytra plugin)
|
public ConfigLoader(ArmoredElytra plugin)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
configOptionsList = new ArrayList<ConfigOption>();
|
configOptionsList = new ArrayList<>();
|
||||||
makeConfig();
|
makeConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Read the current config, the make a new one based on the old one or default values, whichever is applicable.
|
// Read the current config, the make a new one based on the old one or default values, whichever is applicable.
|
||||||
public void makeConfig()
|
public void makeConfig()
|
||||||
{
|
{
|
||||||
@ -53,12 +52,12 @@ public class ConfigLoader
|
|||||||
"Setting this to true will cause armored elytras to not lose any durability while flying.",
|
"Setting this to true will cause armored elytras to not lose any durability while flying.",
|
||||||
"This is not a permanent option and will affect ALL elytras."
|
"This is not a permanent option and will affect ALL elytras."
|
||||||
};
|
};
|
||||||
String[] repairComment =
|
String[] repairComment =
|
||||||
{
|
{
|
||||||
"Amount of items it takes to fully repair an armored elytra",
|
"Amount of items it takes to fully repair an armored elytra",
|
||||||
"Repair cost for every tier of armored elytra in number of items to repair 100%."
|
"Repair cost for every tier of armored elytra in number of items to repair 100%."
|
||||||
};
|
};
|
||||||
String[] enchantmentsComment =
|
String[] enchantmentsComment =
|
||||||
{
|
{
|
||||||
"List of enchantments that are allowed to be put on an armored elytra.",
|
"List of enchantments that are allowed to be put on an armored elytra.",
|
||||||
"If you do not want to allow any enchantments at all, remove them all and add \"NONE\"",
|
"If you do not want to allow any enchantments at all, remove them all and add \"NONE\"",
|
||||||
@ -66,11 +65,11 @@ public class ConfigLoader
|
|||||||
"https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html",
|
"https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html",
|
||||||
"Note that only 1 protection enchantment (PROTECTION_FIRE, PROTECTION_ENVIRONMENTAL etc) can be active on an elytra."
|
"Note that only 1 protection enchantment (PROTECTION_FIRE, PROTECTION_ENVIRONMENTAL etc) can be active on an elytra."
|
||||||
};
|
};
|
||||||
String[] updateComment =
|
String[] updateComment =
|
||||||
{
|
{
|
||||||
"Allow this plugin to check for updates on startup. It will not download new versions!"
|
"Allow this plugin to check for updates on startup. It will not download new versions!"
|
||||||
};
|
};
|
||||||
String[] bStatsComment =
|
String[] bStatsComment =
|
||||||
{
|
{
|
||||||
"Allow this plugin to send (anonymised) stats using bStats. Please consider keeping it enabled.",
|
"Allow this plugin to send (anonymised) stats using bStats. Please consider keeping it enabled.",
|
||||||
"It has a negligible impact on performance and more users on stats keeps me more motivated to support this plugin!"
|
"It has a negligible impact on performance and more users on stats keeps me more motivated to support this plugin!"
|
||||||
@ -91,18 +90,18 @@ public class ConfigLoader
|
|||||||
{
|
{
|
||||||
"Specify a language file to be used. Note that en_US.txt will get regenerated!"
|
"Specify a language file to be used. Note that en_US.txt will get regenerated!"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FileConfiguration config = plugin.getConfig();
|
FileConfiguration config = plugin.getConfig();
|
||||||
|
|
||||||
// Read all the options from the config, then put them in a configOption with their name, value and comment.
|
// Read all the options from the config, then put them in a configOption with their name, value and comment.
|
||||||
// THen put all configOptions into an ArrayList.
|
// THen put all configOptions into an ArrayList.
|
||||||
unbreakable = config.getBoolean ("unbreakable" , false);
|
unbreakable = config.getBoolean ("unbreakable" , false);
|
||||||
configOptionsList.add(new ConfigOption ("unbreakable" , unbreakable , unbreakableComment ));
|
configOptionsList.add(new ConfigOption ("unbreakable" , unbreakable , unbreakableComment ));
|
||||||
noFlightDurability = config.getBoolean ("noFlightDurability", false);
|
noFlightDurability = config.getBoolean ("noFlightDurability", false);
|
||||||
configOptionsList.add(new ConfigOption ("noFlightDurability", noFlightDurability, flyDurabilityComment));
|
configOptionsList.add(new ConfigOption ("noFlightDurability", noFlightDurability, flyDurabilityComment));
|
||||||
|
|
||||||
LEATHER_TO_FULL = config.getInt ("leatherRepair" , 6);
|
LEATHER_TO_FULL = config.getInt ("leatherRepair" , 6);
|
||||||
configOptionsList.add(new ConfigOption ("leatherRepair" , LEATHER_TO_FULL, repairComment));
|
configOptionsList.add(new ConfigOption ("leatherRepair" , LEATHER_TO_FULL, repairComment));
|
||||||
GOLD_TO_FULL = config.getInt ("goldRepair" , 5);
|
GOLD_TO_FULL = config.getInt ("goldRepair" , 5);
|
||||||
@ -111,10 +110,10 @@ public class ConfigLoader
|
|||||||
configOptionsList.add(new ConfigOption ("ironRepair" , IRON_TO_FULL));
|
configOptionsList.add(new ConfigOption ("ironRepair" , IRON_TO_FULL));
|
||||||
DIAMONDS_TO_FULL = config.getInt ("diamondsRepair", 3);
|
DIAMONDS_TO_FULL = config.getInt ("diamondsRepair", 3);
|
||||||
configOptionsList.add(new ConfigOption ("diamondsRepair", DIAMONDS_TO_FULL));
|
configOptionsList.add(new ConfigOption ("diamondsRepair", DIAMONDS_TO_FULL));
|
||||||
|
|
||||||
allowedEnchantments = config.getStringList("allowedEnchantments");
|
allowedEnchantments = config.getStringList("allowedEnchantments");
|
||||||
configOptionsList.add(new ConfigOption ("allowedEnchantments", allowedEnchantments, enchantmentsComment));
|
configOptionsList.add(new ConfigOption ("allowedEnchantments", allowedEnchantments, enchantmentsComment));
|
||||||
|
|
||||||
checkForUpdates = config.getBoolean ("checkForUpdates", true );
|
checkForUpdates = config.getBoolean ("checkForUpdates", true );
|
||||||
configOptionsList.add(new ConfigOption ("checkForUpdates", checkForUpdates, updateComment));
|
configOptionsList.add(new ConfigOption ("checkForUpdates", checkForUpdates, updateComment));
|
||||||
allowStats = config.getBoolean ("allowStats" , true );
|
allowStats = config.getBoolean ("allowStats" , true );
|
||||||
@ -125,10 +124,10 @@ public class ConfigLoader
|
|||||||
configOptionsList.add(new ConfigOption ("uninstallMode" , uninstallMode, uninstallComment));
|
configOptionsList.add(new ConfigOption ("uninstallMode" , uninstallMode, uninstallComment));
|
||||||
languageFile = config.getString ("languageFile" , "en_US");
|
languageFile = config.getString ("languageFile" , "en_US");
|
||||||
configOptionsList.add(new ConfigOption ("languageFile" , languageFile, languageFileComment));
|
configOptionsList.add(new ConfigOption ("languageFile" , languageFile, languageFileComment));
|
||||||
|
|
||||||
writeConfig();
|
writeConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write new config file.
|
// Write new config file.
|
||||||
public void writeConfig()
|
public void writeConfig()
|
||||||
{
|
{
|
||||||
@ -149,10 +148,10 @@ public class ConfigLoader
|
|||||||
}
|
}
|
||||||
FileWriter fw = new FileWriter(saveTo, true);
|
FileWriter fw = new FileWriter(saveTo, true);
|
||||||
PrintWriter pw = new PrintWriter(fw);
|
PrintWriter pw = new PrintWriter(fw);
|
||||||
|
|
||||||
for (ConfigOption configOption : configOptionsList)
|
for (ConfigOption configOption : configOptionsList)
|
||||||
pw.println(configOption.toString());
|
pw.println(configOption.toString());
|
||||||
|
|
||||||
pw.flush();
|
pw.flush();
|
||||||
pw.close();
|
pw.close();
|
||||||
}
|
}
|
||||||
@ -162,7 +161,7 @@ public class ConfigLoader
|
|||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Integer getInt(String path)
|
public Integer getInt(String path)
|
||||||
{
|
{
|
||||||
for (ConfigOption configOption : configOptionsList)
|
for (ConfigOption configOption : configOptionsList)
|
||||||
@ -170,7 +169,7 @@ public class ConfigLoader
|
|||||||
return configOption.getInt();
|
return configOption.getInt();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getBool(String path)
|
public Boolean getBool(String path)
|
||||||
{
|
{
|
||||||
for (ConfigOption configOption : configOptionsList)
|
for (ConfigOption configOption : configOptionsList)
|
||||||
@ -178,7 +177,7 @@ public class ConfigLoader
|
|||||||
return configOption.getBool();
|
return configOption.getBool();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getString(String path)
|
public String getString(String path)
|
||||||
{
|
{
|
||||||
for (ConfigOption configOption : configOptionsList)
|
for (ConfigOption configOption : configOptionsList)
|
||||||
@ -186,7 +185,7 @@ public class ConfigLoader
|
|||||||
return configOption.getString();
|
return configOption.getString();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getStringList(String path)
|
public List<String> getStringList(String path)
|
||||||
{
|
{
|
||||||
for (ConfigOption configOption : configOptionsList)
|
for (ConfigOption configOption : configOptionsList)
|
||||||
|
@ -15,22 +15,30 @@ public class Messages
|
|||||||
{
|
{
|
||||||
private Map<String, String> messageMap = new HashMap<>();
|
private Map<String, String> messageMap = new HashMap<>();
|
||||||
private ArmoredElytra plugin;
|
private ArmoredElytra plugin;
|
||||||
private String locale;
|
|
||||||
private File textFile;
|
private File textFile;
|
||||||
|
|
||||||
public Messages(ArmoredElytra plugin)
|
public Messages(ArmoredElytra plugin)
|
||||||
{
|
{
|
||||||
this.plugin = plugin;
|
this.plugin = plugin;
|
||||||
locale = plugin.getLocale();
|
textFile = new File(plugin.getDataFolder(), plugin.getLocale() + ".txt");
|
||||||
textFile = new File(plugin.getDataFolder(), locale + ".txt");
|
|
||||||
readFile();
|
readFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void writeDefaultFile()
|
||||||
|
{
|
||||||
|
File defaultFile = new File(plugin.getDataFolder(), "en_US.txt");
|
||||||
|
if (!defaultFile.setWritable(true))
|
||||||
|
plugin.myLogger(Level.SEVERE, "Failed to make file \"" + defaultFile + "\" writable!");
|
||||||
|
|
||||||
|
// Load the default en_US from the resources.
|
||||||
|
plugin.saveResource("en_US.txt", true);
|
||||||
|
defaultFile.setWritable(false);
|
||||||
|
}
|
||||||
|
|
||||||
// Read locale file.
|
// Read locale file.
|
||||||
private void readFile()
|
private void readFile()
|
||||||
{
|
{
|
||||||
// Load the default en_US from the resources.
|
writeDefaultFile();
|
||||||
plugin.saveResource("en_US.txt", true);
|
|
||||||
|
|
||||||
try (BufferedReader br = new BufferedReader(new FileReader(textFile)))
|
try (BufferedReader br = new BufferedReader(new FileReader(textFile)))
|
||||||
{
|
{
|
||||||
@ -38,6 +46,9 @@ public class Messages
|
|||||||
|
|
||||||
while ((sCurrentLine = br.readLine()) != null)
|
while ((sCurrentLine = br.readLine()) != null)
|
||||||
{
|
{
|
||||||
|
// Ignore comments.
|
||||||
|
if (sCurrentLine.startsWith("#"))
|
||||||
|
continue;
|
||||||
String key, value;
|
String key, value;
|
||||||
String[] parts = sCurrentLine.split("=", 2);
|
String[] parts = sCurrentLine.split("=", 2);
|
||||||
key = parts[0];
|
key = parts[0];
|
||||||
@ -55,11 +66,11 @@ public class Messages
|
|||||||
}
|
}
|
||||||
catch (FileNotFoundException e)
|
catch (FileNotFoundException e)
|
||||||
{
|
{
|
||||||
plugin.myLogger(Level.SEVERE, "Locale file " + locale + ".txt does not exist!");
|
plugin.myLogger(Level.SEVERE, "Locale file \"" + textFile + "\" does not exist!");
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
{
|
{
|
||||||
plugin.myLogger(Level.SEVERE, "Could not read locale file! (" + locale + ".txt)");
|
plugin.myLogger(Level.SEVERE, "Could not read locale file: \"" + textFile + "\"");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -71,9 +82,18 @@ public class Messages
|
|||||||
value = messageMap.get(key);
|
value = messageMap.get(key);
|
||||||
if (value == null)
|
if (value == null)
|
||||||
{
|
{
|
||||||
value = "ArmoredElytra: Translation not found! Contact server admin!";
|
value = "BigDoors: Translation not found! Contact server admin!";
|
||||||
plugin.myLogger(Level.WARNING, "Failed to get translation for key " + key);
|
plugin.myLogger(Level.WARNING, "Failed to get translation for key " + key);
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getStringReverse(String value)
|
||||||
|
{
|
||||||
|
return messageMap.entrySet().stream()
|
||||||
|
.filter(e -> e.getValue().equals(value))
|
||||||
|
.map(Map.Entry::getKey)
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
# This file contains all the (partial) sentences used in this plugin.
|
||||||
|
# If you want to modify anything, make sure to do so in a copy, as this file will be regenerated on startup!
|
||||||
|
# You can change which file will be used in the config.yml.
|
||||||
|
# The format is "key=value" (without quotation marks). You can modify the values, but not the keys.
|
||||||
|
# Order doesn't matter and you can use comments if you so desire.
|
||||||
|
# Please do note that white space does matter! (so spaces at the end of lines, for example).
|
||||||
TIER.Leather=&2Leather Armored Elytra
|
TIER.Leather=&2Leather Armored Elytra
|
||||||
TIER.Gold=&EGolden Armored Elytra
|
TIER.Gold=&EGolden Armored Elytra
|
||||||
TIER.Chain=&8Chain Armored Elytra
|
TIER.Chain=&8Chain Armored Elytra
|
||||||
|
Loading…
x
Reference in New Issue
Block a user