From eefb891b0815469300d34ba43ba27b00606d1283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Can=20Elmac=C4=B1?= Date: Sun, 27 Jan 2019 00:14:21 +0300 Subject: [PATCH 1/2] Fix the infamous Turkish locale bug. http://mattryall.net/blog/2009/02/the-infamous-turkish-locale-bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mustafa Can Elmacı --- .../src/main/java/com/rwtema/extrautils2/IMCHandler.java | 2 +- .../rwtema/extrautils2/backend/PropertyEnumSimple.java | 2 +- .../rwtema/extrautils2/backend/XUBlockStateCreator.java | 6 +++--- .../rwtema/extrautils2/backend/entries/EntryHandler.java | 2 +- .../rwtema/extrautils2/backend/entries/XU2Entries.java | 8 ++++---- .../com/rwtema/extrautils2/blocks/BlockCompressed.java | 2 +- .../java/com/rwtema/extrautils2/book/BookHandler.java | 6 +++--- .../com/rwtema/extrautils2/entity/XUEntityManager.java | 2 +- .../com/rwtema/extrautils2/items/ItemIngredients.java | 4 ++-- .../java/com/rwtema/extrautils2/machine/PinkRecipe.java | 2 +- .../extrautils2/resources/RedirectResourcePack.java | 2 +- .../com/rwtema/extrautils2/transfernodes/TileIndexer.java | 4 ++-- .../src/main/java/com/rwtema/extrautils2/utils/Lang.java | 6 +++--- .../rwtema/extrautils2/utils/helpers/StringHelper.java | 4 ++-- 1.10.2/src/test/java/Test.java | 2 +- 15 files changed, 27 insertions(+), 27 deletions(-) diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java b/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java index 23812a6..b279fcf 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java @@ -65,7 +65,7 @@ public static void handle(FMLInterModComms.IMCMessage message) { public static void addMachine(NBTTagCompound tag, ModContainer modContainer) { String machine = tag.getString("machine"); - String energy_mode = tag.getString(tag.getString("energy_mode")).toUpperCase(); + String energy_mode = tag.getString(tag.getString("energy_mode")).toUpperCase(Locale.ENGLISH)); Machine.EnergyMode energyMode = Machine.EnergyMode.valueOf(energy_mode); int energyBufferSize = tag.getInteger("energy_buffer"); diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/PropertyEnumSimple.java b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/PropertyEnumSimple.java index 659d5b4..bdabcb3 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/PropertyEnumSimple.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/PropertyEnumSimple.java @@ -22,7 +22,7 @@ public PropertyEnumSimple(Class valueClass, String name) { Collections.sort(allowedValues); propertyNames = new EnumMap<>(valueClass); for (T t : allowedValues) { - String key = t.toString().toLowerCase(); + String key = t.toString().toLowerCase(Locale.ENGLISH); nameToValue.put(key, t); propertyNames.put(t, key); } diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/XUBlockStateCreator.java b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/XUBlockStateCreator.java index 0f810e8..4270477 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/XUBlockStateCreator.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/XUBlockStateCreator.java @@ -135,7 +135,7 @@ protected XUBlockStateCreator(XUBlock block, @Nonnull IProperty metaProperty : hiddenProperties) { @@ -145,7 +145,7 @@ protected XUBlockStateCreator(XUBlock block, @Nonnull IProperty> EnumMap createDirect MapPopulator.createMap( Lists.newArrayList(EnumFacing.values()), Lists.newArrayList(EnumFacing.values()).stream().map(input -> { - String dirName = input.getName().toLowerCase(); + String dirName = input.getName().toLowerCase(Locale.ENGLISH); if (name != null) dirName = name + "_" + dirName; return function.apply(dirName, input); }).collect(Collectors.toList()))); diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/EntryHandler.java b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/EntryHandler.java index 68015d8..3b8c1fd 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/EntryHandler.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/EntryHandler.java @@ -24,7 +24,7 @@ public class EntryHandler { public static void loadConfig(Configuration config) { HashMap configEntries = Maps.newHashMap(); for (Entry entry : entries) { - entryHashMap.put(entry.name.toLowerCase(), entry); + entryHashMap.put(entry.name.toLowerCase(Locale.ENGLISH), entry); configEntries.put(entry.name, config.get("Enabled", entry.getConfigLabel(), entry.isEnabledByDefault()).getBoolean()); entry.loadAdditionalConfig(config); } diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/XU2Entries.java b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/XU2Entries.java index f3aded4..c3af384 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/XU2Entries.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/backend/entries/XU2Entries.java @@ -127,7 +127,7 @@ public void addRecipes() { public static ItemEntry creativeDestructionWand = new ItemEntry("ItemCreativeDestructionWand") { @Override public ItemDestructionWand initValue() { - return new ItemDestructionWand(name.toLowerCase().substring(4), name, new float[]{191 / 255F, 75 / 255F, 244 / 255F}, 49); + return new ItemDestructionWand(name.toLowerCase(Locale.ENGLISH).substring(4), name, new float[]{191 / 255F, 75 / 255F, 244 / 255F}, 49); } }; public static ItemEntry unstableIngots = new ItemClassEntry(ItemUnstableIngots.class) { @@ -161,7 +161,7 @@ public void addRecipes() { public static ItemEntry buildersWand = new ItemEntry("ItemBuildersWand") { @Override public ItemBuildersWand initValue() { - return new ItemBuildersWand(name, 9, name.toLowerCase().substring(4), new float[]{244 / 255F, 230 / 255F, 78 / 255F}); + return new ItemBuildersWand(name, 9, name.toLowerCase(Locale.ENGLISH).substring(4), new float[]{244 / 255F, 230 / 255F, 78 / 255F}); } @Override @@ -177,7 +177,7 @@ public void addAchievements() { public static ItemEntry destructionWand = new ItemEntry("ItemDestructionWand") { @Override public ItemDestructionWand initValue() { - return new ItemDestructionWand(name.toLowerCase().substring(4), name, new float[]{244 / 255F, 230 / 255F, 78 / 255F}, 9); + return new ItemDestructionWand(name.toLowerCase(Locale.ENGLISH).substring(4), name, new float[]{244 / 255F, 230 / 255F, 78 / 255F}, 9); } @Override @@ -1590,7 +1590,7 @@ public void addRecipes() { } public void addClimographRecipe(BlockTerraformer.Type heater, Object lavaBucket) { - addShapeless("terraformer_" + heater.toString().toLowerCase(), getStack(heater), getBase(), lavaBucket, lavaBucket); + addShapeless("terraformer_" + heater.toString().toLowerCase(Locale.ENGLISH), getStack(heater), getBase(), lavaBucket, lavaBucket); } @Nonnull diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/blocks/BlockCompressed.java b/1.10.2/src/main/java/com/rwtema/extrautils2/blocks/BlockCompressed.java index f54b59b..173259a 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/blocks/BlockCompressed.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/blocks/BlockCompressed.java @@ -41,7 +41,7 @@ public BlockCompressed(IBlockState baseState, String texture, int max_n) { this.max_n = max_n; this.setHardness(2); this.setResistance(10.0F); - property_compression = PropertyInteger.create("compression_level_" + texture.toLowerCase(), 1, max_n); + property_compression = PropertyInteger.create("compression_level_" + texture.toLowerCase(Locale.ENGLISH), 1, max_n); setBlockState(new XUBlockStateCreator(this, false, property_compression)); } diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/book/BookHandler.java b/1.10.2/src/main/java/com/rwtema/extrautils2/book/BookHandler.java index 722f01f..65c3fdf 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/book/BookHandler.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/book/BookHandler.java @@ -42,7 +42,7 @@ Entry.class, new EntryDeserializer() IResource resource = null; try { try { - resource = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(ExtraUtils2.RESOURCE_FOLDER, "lang/book/" + currentLanguage.getLanguageCode().toLowerCase() + ".json")); + resource = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(ExtraUtils2.RESOURCE_FOLDER, "lang/book/" + currentLanguage.getLanguageCode().toLowerCase(Locale.ENGLISH) + ".json")); } catch (IOException | NullPointerException err) { resource = Minecraft.getMinecraft().getResourceManager().getResource(new ResourceLocation(ExtraUtils2.RESOURCE_FOLDER, "lang/book/en_us.json")); } @@ -189,13 +189,13 @@ public static class EntryDeserializer implements JsonDeserializer { @Override public Entry deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { - String asString = json.getAsString().toLowerCase(); + String asString = json.getAsString().toLowerCase(Locale.ENGLISH); Entry entry = EntryHandler.entryHashMap.get(asString); if (entry != null) return entry; for (Map.Entry e : EntryHandler.entryHashMap.entrySet()) { - String key = e.getKey().toLowerCase(); + String key = e.getKey().toLowerCase(Locale.ENGLISH); if (key.contains(asString) || asString.contains(key)) { return e.getValue(); } diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/entity/XUEntityManager.java b/1.10.2/src/main/java/com/rwtema/extrautils2/entity/XUEntityManager.java index a4a97a4..fe936fc 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/entity/XUEntityManager.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/entity/XUEntityManager.java @@ -89,7 +89,7 @@ public void run() { } private static void registerEntity(Class clazz, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) { - String name = clazz.getSimpleName().toLowerCase(); + String name = clazz.getSimpleName().toLowerCase(Locale.ENGLISH); if (name.startsWith("entity")) name = name.replace("entity", ""); CompatHelper.registerEntity(clazz, trackingRange, updateFrequency, sendsVelocityUpdates, name, id); id++; diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/items/ItemIngredients.java b/1.10.2/src/main/java/com/rwtema/extrautils2/items/ItemIngredients.java index ba630f5..17d4625 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/items/ItemIngredients.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/items/ItemIngredients.java @@ -140,7 +140,7 @@ public Type getType(ItemStack stack) { @Nonnull @Override public String getUnlocalizedName(ItemStack stack) { - return super.getUnlocalizedName(stack) + "." + getType(stack).name().toLowerCase(); + return super.getUnlocalizedName(stack) + "." + getType(stack).name().toLowerCase(Locale.ENGLISH); } @Override @@ -730,7 +730,7 @@ public void addRecipes() { Type(int meta, String oreName) { this.meta = meta; this.oreName = oreName; - texture = name().toLowerCase(); + texture = name().toLowerCase(Locale.ENGLISH); metaMap.put(meta, this); if (meta < 0) metaMap.put(meta + Short.MAX_VALUE, this); diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/machine/PinkRecipe.java b/1.10.2/src/main/java/com/rwtema/extrautils2/machine/PinkRecipe.java index feb6092..d19f328 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/machine/PinkRecipe.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/machine/PinkRecipe.java @@ -70,7 +70,7 @@ public int getEnergyOutput(@Nonnull ItemStack stack) { } } for (String s : OreDictionary.getOreNames()) { - if (s.toLowerCase(Locale.ROOT).contains("pink")) { + if (s.toLowerCase(Locale.ENGLISH).contains("pink")) { for (ItemStack itemStack : OreDictionary.getOres(s)) { pinkThings.add(ItemRef.wrapCrafting(itemStack)); } diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/resources/RedirectResourcePack.java b/1.10.2/src/main/java/com/rwtema/extrautils2/resources/RedirectResourcePack.java index 5cab7b2..db95488 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/resources/RedirectResourcePack.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/resources/RedirectResourcePack.java @@ -23,7 +23,7 @@ public class RedirectResourcePack implements IResourcePack { IResourcePack xuPack; public RedirectResourcePack(String name, HashSet domains, String folderPrefix) { - this.name = name.toLowerCase(); + this.name = name.toLowerCase(Locale.ENGLISH); this.xuPack = FMLClientHandler.instance().getResourcePackFor(ExtraUtils2.MODID); this.domains = domains; this.prefix = folderPrefix; diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/transfernodes/TileIndexer.java b/1.10.2/src/main/java/com/rwtema/extrautils2/transfernodes/TileIndexer.java index e524726..368ba25 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/transfernodes/TileIndexer.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/transfernodes/TileIndexer.java @@ -641,7 +641,7 @@ public ItemRef getRef() { if (j < 0) return ItemRef.NULL; List list = ContainerIndexer.this.list; - String filterText = widgetTextInput.getText().toLowerCase(); + String filterText = widgetTextInput.getText().toLowerCase(Locale.ENGLISH); if (!prevFilter.equals(filterText) || filteredList == null) { prevFilter = filterText; if (filterText.equals("")) { @@ -657,7 +657,7 @@ public ItemRef getRef() { mainLoop: for (String s1 : split) { for (String s2 : tooltip) { - if (s2.toLowerCase().contains(s1)) continue mainLoop; + if (s2.toLowerCase(Locale.ENGLISH).contains(s1)) continue mainLoop; } return false; diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/utils/Lang.java b/1.10.2/src/main/java/com/rwtema/extrautils2/utils/Lang.java index 9589b46..ecabd6f 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/utils/Lang.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/utils/Lang.java @@ -130,7 +130,7 @@ private static String makeKey(String text) { @Nonnull public static String stripText(String text) { String t = text.replaceAll("([^A-Za-z\\s])", "").trim(); - t = t.replaceAll("\\s+", ".").toLowerCase(); + t = t.replaceAll("\\s+", ".").toLowerCase(Locale.ENGLISH); if (t.length() > MAX_KEY_LEN) { int n = t.indexOf('.', MAX_KEY_LEN); if (n != -1) @@ -141,7 +141,7 @@ public static String stripText(String text) { public static String translate(String key, String _default) { if (ExtraUtils2.deobf_folder && FMLLaunchHandler.side() == Side.CLIENT) { - if (!key.equals(key.toLowerCase())) { + if (!key.equals(key.toLowerCase(Locale.ENGLISH))) { LogHelper.oneTimeInfo("Lang: " + key + " is not lowercased"); } @@ -237,7 +237,7 @@ public static void createMissedFile() { } t = s; - out.println(key.toLowerCase() + "=" + value); + out.println(key.toLowerCase(Locale.ENGLISH) + "=" + value); } } finally { if (out != null) diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java b/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java index 2817920..0f30093 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java @@ -49,9 +49,9 @@ public static String capFirst(String s, boolean lowerCaseRest) { if (s == null) return null; int n = s.length(); if (n == 0) return s; - if (n == 1) return s.toUpperCase(); + if (n == 1) return s.toUpperCase(Locale.ENGLISH)); - return s.substring(0, 1).toUpperCase() + (lowerCaseRest ? s.substring(1).toLowerCase() : s.substring(1)); + return s.substring(0, 1).toUpperCase(Locale.ENGLISH)) + (lowerCaseRest ? s.substring(1).toLowerCase(Locale.ENGLISH) : s.substring(1)); } diff --git a/1.10.2/src/test/java/Test.java b/1.10.2/src/test/java/Test.java index a37d53d..688fd8a 100644 --- a/1.10.2/src/test/java/Test.java +++ b/1.10.2/src/test/java/Test.java @@ -87,7 +87,7 @@ public class Test { // for (int i = 0; i < 3000; i++) { // String input = "Nineteen"; // while (input.length() < 31999){ -// input = input.toLowerCase(Locale.ENGLISH) + "#" + new String(salt(StringUtils.getBytesUtf8(input.toUpperCase()), new byte[]{1,2,4,8,16,32,64, -128, -1})); +// input = input.toLowerCase(Locale.ENGLISH) + "#" + new String(salt(StringUtils.getBytesUtf8(input.toUpperCase(Locale.ENGLISH))), new byte[]{1,2,4,8,16,32,64, -128, -1})); // } // // byte[] s = StringUtils.getBytesUtf8(input + "#211"); From 568af3673e841858325f58e647df09d002c2c6f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20Can=20Elmac=C4=B1?= Date: Sun, 27 Jan 2019 00:26:46 +0300 Subject: [PATCH 2/2] Fix the infamous Turkish locale bug. http://mattryall.net/blog/2009/02/the-infamous-turkish-locale-bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mustafa Can Elmacı --- 1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java | 2 +- .../com/rwtema/extrautils2/utils/helpers/StringHelper.java | 4 ++-- 1.10.2/src/test/java/Test.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java b/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java index b279fcf..11892e8 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/IMCHandler.java @@ -65,7 +65,7 @@ public static void handle(FMLInterModComms.IMCMessage message) { public static void addMachine(NBTTagCompound tag, ModContainer modContainer) { String machine = tag.getString("machine"); - String energy_mode = tag.getString(tag.getString("energy_mode")).toUpperCase(Locale.ENGLISH)); + String energy_mode = tag.getString(tag.getString("energy_mode")).toUpperCase(Locale.ENGLISH); Machine.EnergyMode energyMode = Machine.EnergyMode.valueOf(energy_mode); int energyBufferSize = tag.getInteger("energy_buffer"); diff --git a/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java b/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java index 0f30093..355b7b1 100644 --- a/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java +++ b/1.10.2/src/main/java/com/rwtema/extrautils2/utils/helpers/StringHelper.java @@ -49,9 +49,9 @@ public static String capFirst(String s, boolean lowerCaseRest) { if (s == null) return null; int n = s.length(); if (n == 0) return s; - if (n == 1) return s.toUpperCase(Locale.ENGLISH)); + if (n == 1) return s.toUpperCase(Locale.ENGLISH); - return s.substring(0, 1).toUpperCase(Locale.ENGLISH)) + (lowerCaseRest ? s.substring(1).toLowerCase(Locale.ENGLISH) : s.substring(1)); + return s.substring(0, 1).toUpperCase(Locale.ENGLISH) + (lowerCaseRest ? s.substring(1).toLowerCase(Locale.ENGLISH) : s.substring(1)); } diff --git a/1.10.2/src/test/java/Test.java b/1.10.2/src/test/java/Test.java index 688fd8a..aa75827 100644 --- a/1.10.2/src/test/java/Test.java +++ b/1.10.2/src/test/java/Test.java @@ -87,7 +87,7 @@ public class Test { // for (int i = 0; i < 3000; i++) { // String input = "Nineteen"; // while (input.length() < 31999){ -// input = input.toLowerCase(Locale.ENGLISH) + "#" + new String(salt(StringUtils.getBytesUtf8(input.toUpperCase(Locale.ENGLISH))), new byte[]{1,2,4,8,16,32,64, -128, -1})); +// input = input.toLowerCase(Locale.ENGLISH) + "#" + new String(salt(StringUtils.getBytesUtf8(input.toUpperCase(Locale.ENGLISH)), new byte[]{1,2,4,8,16,32,64, -128, -1})); // } // // byte[] s = StringUtils.getBytesUtf8(input + "#211");