diff --git a/Changelog.txt b/Changelog.txt index c768e4ce3..5d7139249 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,6 @@ +Version 2.1.112 + Correct locale usage for enum access, now enforces using the english locale to prevent issues with oddball locales for configs/commands + Version 2.1.111 mcMMO is compatible with the following versions of MC: 1.15 / 1.14.4 / 1.14.3 / 1.14.2 / 1.14.1 / 1.14 / 1.13.2 Further prevent nesting of bleed damage calls diff --git a/src/main/java/com/gmail/nossr50/commands/experience/ConvertExperienceCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/ConvertExperienceCommand.java index 973214a78..147212bd0 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/ConvertExperienceCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/ConvertExperienceCommand.java @@ -11,13 +11,15 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Locale; + public class ConvertExperienceCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { switch (args.length) { case 2: FormulaType previousType = mcMMO.getFormulaManager().getPreviousFormulaType(); - FormulaType newType = FormulaType.getFormulaType(args[1].toUpperCase()); + FormulaType newType = FormulaType.getFormulaType(args[1].toUpperCase(Locale.ENGLISH)); if (newType == FormulaType.UNKNOWN) { sender.sendMessage(LocaleLoader.getString("Commands.mcconvert.Experience.Invalid")); diff --git a/src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java b/src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java index e8d8db40d..15f18bf73 100644 --- a/src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/party/PartyItemShareCommand.java @@ -14,6 +14,8 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.Locale; + public class PartyItemShareCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { @@ -32,7 +34,7 @@ public class PartyItemShareCommand implements CommandExecutor { switch (args.length) { case 2: - ShareMode mode = ShareMode.getShareMode(args[1].toUpperCase()); + ShareMode mode = ShareMode.getShareMode(args[1].toUpperCase(Locale.ENGLISH)); if (mode == null) { sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "itemshare", "")); @@ -57,7 +59,7 @@ public class PartyItemShareCommand implements CommandExecutor { } try { - handleToggleItemShareCategory(party, ItemShareType.valueOf(args[1].toUpperCase()), toggle); + handleToggleItemShareCategory(party, ItemShareType.valueOf(args[1].toUpperCase(Locale.ENGLISH)), toggle); } catch (IllegalArgumentException ex) { sender.sendMessage(LocaleLoader.getString("Commands.Usage.2", "party", "itemshare", " ")); diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index fcbd75545..69e0dc30a 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -12,6 +12,7 @@ import org.bukkit.configuration.ConfigurationSection; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Set; public class Config extends AutoUpdateConfigLoader { @@ -277,7 +278,7 @@ public class Config extends AutoUpdateConfigLoader { /* Mob Healthbar */ public MobHealthbarType getMobHealthbarDefault() { try { - return MobHealthbarType.valueOf(config.getString("Mob_Healthbar.Display_Type", "HEARTS").toUpperCase().trim()); + return MobHealthbarType.valueOf(config.getString("Mob_Healthbar.Display_Type", "HEARTS").toUpperCase(Locale.ENGLISH).trim()); } catch (IllegalArgumentException ex) { return MobHealthbarType.HEARTS; diff --git a/src/main/java/com/gmail/nossr50/config/party/ItemWeightConfig.java b/src/main/java/com/gmail/nossr50/config/party/ItemWeightConfig.java index 6e84bd8f6..50af1065b 100644 --- a/src/main/java/com/gmail/nossr50/config/party/ItemWeightConfig.java +++ b/src/main/java/com/gmail/nossr50/config/party/ItemWeightConfig.java @@ -5,6 +5,7 @@ import com.gmail.nossr50.util.StringUtils; import org.bukkit.Material; import java.util.HashSet; +import java.util.Locale; public class ItemWeightConfig extends ConfigLoader { private static ItemWeightConfig instance; @@ -29,7 +30,7 @@ public class ItemWeightConfig extends ConfigLoader { HashSet miscItems = new HashSet(); for (String item : config.getStringList("Party_Shareables.Misc_Items")) { - Material material = Material.getMaterial(item.toUpperCase()); + Material material = Material.getMaterial(item.toUpperCase(Locale.ENGLISH)); if (material != null) { miscItems.add(material); diff --git a/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java b/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java index 2975e6316..dc802c468 100644 --- a/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java +++ b/src/main/java/com/gmail/nossr50/config/skills/salvage/SalvageConfig.java @@ -14,6 +14,7 @@ import org.bukkit.inventory.ItemStack; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Set; public class SalvageConfig extends ConfigLoader { @@ -78,7 +79,7 @@ public class SalvageConfig extends ConfigLoader { } else { try { - salvageMaterialType = MaterialType.valueOf(salvageMaterialTypeString.replace(" ", "_").toUpperCase()); + salvageMaterialType = MaterialType.valueOf(salvageMaterialTypeString.replace(" ", "_").toUpperCase(Locale.ENGLISH)); } catch (IllegalArgumentException ex) { reason.add(key + " has an invalid MaterialType of " + salvageMaterialTypeString); @@ -112,7 +113,7 @@ public class SalvageConfig extends ConfigLoader { } else { try { - salvageItemType = ItemType.valueOf(salvageItemTypeString.replace(" ", "_").toUpperCase()); + salvageItemType = ItemType.valueOf(salvageItemTypeString.replace(" ", "_").toUpperCase(Locale.ENGLISH)); } catch (IllegalArgumentException ex) { reason.add(key + " has an invalid ItemType of " + salvageItemTypeString); diff --git a/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java b/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java index 91a0c419f..a2cf127a8 100644 --- a/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java +++ b/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java @@ -6,6 +6,7 @@ import com.gmail.nossr50.util.StringUtils; import org.bukkit.configuration.file.YamlConfiguration; import java.util.EnumSet; +import java.util.Locale; public class ChildConfig extends AutoUpdateConfigLoader { public ChildConfig() { @@ -27,7 +28,7 @@ public class ChildConfig extends AutoUpdateConfigLoader { for (String name : config.getStringList(StringUtils.getCapitalized(skill.name()))) { try { - PrimarySkillType parentSkill = PrimarySkillType.valueOf(name.toUpperCase()); + PrimarySkillType parentSkill = PrimarySkillType.valueOf(name.toUpperCase(Locale.ENGLISH)); FamilyTree.enforceNotChildSkill(parentSkill); parentSkills.add(parentSkill); } @@ -45,7 +46,7 @@ public class ChildConfig extends AutoUpdateConfigLoader { * If they're dedicated enough to have modified it, they can have the errors it may produce. * Alternatively, this can be used to allow child skills to be parent skills, provided there are no circular dependencies this is an advanced sort of configuration. */ - parentSkills.add(PrimarySkillType.valueOf(name.toUpperCase())); + parentSkills.add(PrimarySkillType.valueOf(name.toUpperCase(Locale.ENGLISH))); } } diff --git a/src/main/java/com/gmail/nossr50/util/StringUtils.java b/src/main/java/com/gmail/nossr50/util/StringUtils.java index 31d1e77d4..24527bc2b 100644 --- a/src/main/java/com/gmail/nossr50/util/StringUtils.java +++ b/src/main/java/com/gmail/nossr50/util/StringUtils.java @@ -7,6 +7,8 @@ import org.bukkit.block.data.Ageable; import org.bukkit.block.data.BlockData; import org.bukkit.entity.EntityType; +import java.util.Locale; + public class StringUtils { /**