From 52da5ff0686f620eba2b7ec03f8a8b5a9532705a Mon Sep 17 00:00:00 2001 From: UnlikePaladin <36827970+UnlikePaladin@users.noreply.github.com> Date: Fri, 9 Feb 2024 19:13:01 -0600 Subject: [PATCH] Force English locale on toUpperCase and toLowerCase calls, fixes issues on systems with a different locale --- .../org/figuramc/figura/animation/Animation.java | 2 +- .../java/org/figuramc/figura/avatar/Avatar.java | 2 +- .../java/org/figuramc/figura/avatar/Badges.java | 13 +++++++------ .../figura/avatar/local/LocalAvatarFetcher.java | 9 +++------ .../figura/avatar/local/LocalAvatarLoader.java | 4 ++-- .../org/figuramc/figura/config/ConfigManager.java | 7 ++----- .../figuramc/figura/gui/cards/CardBackground.java | 4 +++- .../figuramc/figura/gui/screens/ConfigScreen.java | 3 ++- .../org/figuramc/figura/gui/widgets/TextField.java | 3 ++- .../gui/widgets/avatar/AbstractAvatarWidget.java | 7 ++++--- .../gui/widgets/config/AbstractConfigElement.java | 3 ++- .../figura/gui/widgets/lists/AvatarWizardList.java | 11 ++++------- .../figura/gui/widgets/lists/PermissionsList.java | 2 +- .../figura/gui/widgets/lists/PlayerList.java | 2 +- .../permissions/AbstractPermPackElement.java | 4 +++- .../java/org/figuramc/figura/lua/api/FileAPI.java | 5 +++-- .../org/figuramc/figura/lua/api/RaycastAPI.java | 5 +++-- .../figuramc/figura/lua/api/data/FiguraBuffer.java | 5 +++-- .../figuramc/figura/lua/api/entity/PlayerAPI.java | 7 ++++--- .../figuramc/figura/lua/api/event/EventsAPI.java | 8 ++++---- .../figura/lua/api/nameplate/NameplateAPI.java | 4 +++- .../figuramc/figura/lua/api/net/NetworkingAPI.java | 5 +++-- .../lua/api/vanilla_model/VanillaModelAPI.java | 6 +++--- .../org/figuramc/figura/lua/api/world/WorldAPI.java | 2 +- .../figuramc/figura/lua/docs/FiguraListDocs.java | 2 +- .../figura/mixin/gui/ChatComponentMixin.java | 3 ++- .../org/figuramc/figura/model/FiguraModelPart.java | 13 +++++-------- .../figura/model/FiguraModelPartReader.java | 7 ++----- .../figuramc/figura/model/rendertasks/ItemTask.java | 4 +++- .../figura/model/rendertasks/SpriteTask.java | 3 ++- .../figuramc/figura/model/rendertasks/TextTask.java | 3 ++- .../figura/parsers/AvatarMetadataParser.java | 5 +++-- .../figura/parsers/BlockbenchModelParser.java | 4 ++-- .../figuramc/figura/permissions/Permissions.java | 3 ++- .../java/org/figuramc/figura/utils/ColorUtils.java | 3 ++- .../java/org/figuramc/figura/utils/IOUtils.java | 3 ++- 36 files changed, 93 insertions(+), 83 deletions(-) diff --git a/common/src/main/java/org/figuramc/figura/animation/Animation.java b/common/src/main/java/org/figuramc/figura/animation/Animation.java index 0b3ec0267..4de083a70 100644 --- a/common/src/main/java/org/figuramc/figura/animation/Animation.java +++ b/common/src/main/java/org/figuramc/figura/animation/Animation.java @@ -510,7 +510,7 @@ public String getLoop() { ) public Animation setLoop(@LuaNotNil String loop) { try { - this.loop = LoopMode.valueOf(loop.toUpperCase()); + this.loop = LoopMode.valueOf(loop.toUpperCase(Locale.US)); return this; } catch (Exception ignored) { throw new LuaError("Illegal LoopMode: \"" + loop + "\"."); diff --git a/common/src/main/java/org/figuramc/figura/avatar/Avatar.java b/common/src/main/java/org/figuramc/figura/avatar/Avatar.java index 8b3899659..64945767f 100644 --- a/common/src/main/java/org/figuramc/figura/avatar/Avatar.java +++ b/common/src/main/java/org/figuramc/figura/avatar/Avatar.java @@ -1044,7 +1044,7 @@ private void loadAnimations() { Animation.LoopMode loop = Animation.LoopMode.ONCE; if (animNbt.contains("loop")) { try { - loop = Animation.LoopMode.valueOf(animNbt.getString("loop").toUpperCase()); + loop = Animation.LoopMode.valueOf(animNbt.getString("loop").toUpperCase(Locale.US)); } catch (Exception ignored) {} } diff --git a/common/src/main/java/org/figuramc/figura/avatar/Badges.java b/common/src/main/java/org/figuramc/figura/avatar/Badges.java index f4f316772..37076a91b 100644 --- a/common/src/main/java/org/figuramc/figura/avatar/Badges.java +++ b/common/src/main/java/org/figuramc/figura/avatar/Badges.java @@ -16,6 +16,7 @@ import org.figuramc.figura.utils.ui.UIHelper; import java.util.BitSet; +import java.util.Locale; import java.util.Optional; import java.util.UUID; @@ -79,7 +80,7 @@ else if (avatar.nbt != null) { MutableComponent badge = System.PERMISSIONS.badge.copy(); MutableComponent desc = System.PERMISSIONS.desc.copy().append("\n"); for (Permissions t : avatar.noPermissions) - desc.append("\n• ").append(FiguraText.of("badges.no_permissions." + t.name.toLowerCase())); + desc.append("\n• ").append(FiguraText.of("badges.no_permissions." + t.name.toLowerCase(Locale.US))); badges.append(badge.withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, desc)))); } @@ -95,8 +96,8 @@ else if (avatar.nbt != null) { if (specialSet.get(i)) { Special special = specialValues[i]; Integer color = special.color; - if (avatar.badgeToColor.containsKey(special.name().toLowerCase())) { - color = ColorUtils.rgbToInt(ColorUtils.userInputHex(avatar.badgeToColor.get(special.name().toLowerCase()))); + if (avatar.badgeToColor.containsKey(special.name().toLowerCase(Locale.US))) { + color = ColorUtils.rgbToInt(ColorUtils.userInputHex(avatar.badgeToColor.get(special.name().toLowerCase(Locale.US)))); } Component badge = color != null ? special.badge.copy().withStyle(Style.EMPTY.withColor(color)) : special.badge; badges.append(badge); @@ -159,7 +160,7 @@ public enum System { public final Component desc; System(String unicode) { - this.desc = FiguraText.of("badges.system." + this.name().toLowerCase()); + this.desc = FiguraText.of("badges.system." + this.name().toLowerCase(Locale.US)); this.badge = Component.literal(unicode).withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, desc))); } } @@ -195,7 +196,7 @@ public enum Pride { public final Component desc; Pride(String unicode) { - this.desc = FiguraText.of("badges.pride." + this.name().toLowerCase()); + this.desc = FiguraText.of("badges.pride." + this.name().toLowerCase(Locale.US)); this.badge = Component.literal(unicode).withStyle(Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, desc))); } } @@ -218,7 +219,7 @@ public enum Special { } Special(String unicode, Integer color) { - this.desc = FiguraText.of("badges.special." + this.name().toLowerCase()); + this.desc = FiguraText.of("badges.special." + this.name().toLowerCase(Locale.US)); Style style = Style.EMPTY.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, desc)); if (color != null) style = style.withColor(color); this.color = color; diff --git a/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarFetcher.java b/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarFetcher.java index 3cedddb62..80efc138d 100644 --- a/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarFetcher.java +++ b/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarFetcher.java @@ -13,10 +13,7 @@ import java.io.IOException; import java.nio.file.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.stream.Stream; @@ -261,8 +258,8 @@ public AvatarPath(Path path, Path folder, Path theActualPathForThis) { } public boolean search(String query) { - String q = query.toLowerCase(); - return this.getName().toLowerCase().contains(q) || IOUtils.getFileNameOrEmpty(path).contains(q); + String q = query.toLowerCase(Locale.US); + return this.getName().toLowerCase(Locale.US).contains(q) || IOUtils.getFileNameOrEmpty(path).contains(q); } public Path getPath() { diff --git a/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarLoader.java b/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarLoader.java index 98e33cab0..b768e52fe 100644 --- a/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarLoader.java +++ b/common/src/main/java/org/figuramc/figura/avatar/local/LocalAvatarLoader.java @@ -264,7 +264,7 @@ private static CompoundTag loadModels(Path avatarFolder, Path currentFile, Block BlockbenchModelParser.parseParent(name, subfolder); children.add(subfolder); } - } else if (file.toString().toLowerCase().endsWith(".bbmodel")) { + } else if (file.toString().toLowerCase(Locale.US).endsWith(".bbmodel")) { BlockbenchModelParser.ModelData data = parser.parseModel(avatarFolder, file, IOUtils.readFile(file), name.substring(0, name.length() - 8), folders); children.add(data.modelNbt()); animations.addAll(data.animationList()); @@ -373,7 +373,7 @@ public static Path getLastLoadedPath() { } public static String getLoadState() { - return loadState.name().toLowerCase(); + return loadState.name().toLowerCase(Locale.US); } public static String getLoadError() { diff --git a/common/src/main/java/org/figuramc/figura/config/ConfigManager.java b/common/src/main/java/org/figuramc/figura/config/ConfigManager.java index d3ac208b7..49136897b 100644 --- a/common/src/main/java/org/figuramc/figura/config/ConfigManager.java +++ b/common/src/main/java/org/figuramc/figura/config/ConfigManager.java @@ -9,10 +9,7 @@ import java.io.File; import java.io.FileReader; import java.io.FileWriter; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public final class ConfigManager { @@ -41,7 +38,7 @@ public static void loadConfig() { update(json, version.getAsInt()); } else { for (ConfigType config : REGISTRY) { - JsonElement object = json.get(config.id.toLowerCase()); + JsonElement object = json.get(config.id.toLowerCase(Locale.US)); if (object == null) continue; if (config instanceof ConfigType.SerializableConfig s) { diff --git a/common/src/main/java/org/figuramc/figura/gui/cards/CardBackground.java b/common/src/main/java/org/figuramc/figura/gui/cards/CardBackground.java index 29a9ea6df..3c7dbdb21 100644 --- a/common/src/main/java/org/figuramc/figura/gui/cards/CardBackground.java +++ b/common/src/main/java/org/figuramc/figura/gui/cards/CardBackground.java @@ -1,5 +1,7 @@ package org.figuramc.figura.gui.cards; +import java.util.Locale; + public enum CardBackground { DEFAULT, CHEESE, @@ -12,7 +14,7 @@ public enum CardBackground { public static CardBackground parse(String string) { try { - return CardBackground.valueOf(string.toUpperCase()); + return CardBackground.valueOf(string.toUpperCase(Locale.US)); } catch (Exception ignored) { return DEFAULT; } diff --git a/common/src/main/java/org/figuramc/figura/gui/screens/ConfigScreen.java b/common/src/main/java/org/figuramc/figura/gui/screens/ConfigScreen.java index 2d38d551d..795a15938 100644 --- a/common/src/main/java/org/figuramc/figura/gui/screens/ConfigScreen.java +++ b/common/src/main/java/org/figuramc/figura/gui/screens/ConfigScreen.java @@ -19,6 +19,7 @@ import org.figuramc.figura.utils.ui.UIHelper; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public class ConfigScreen extends AbstractPanelScreen { @@ -56,7 +57,7 @@ protected void init() { int width = Math.min(this.width - 8, 420); list = new ConfigList((this.width - width) / 2, 52, width, height - 80, this); - this.addRenderableWidget(new SearchBar(this.width / 2 - 122, 28, 244, 20, query -> list.updateSearch(query.toLowerCase()))); + this.addRenderableWidget(new SearchBar(this.width / 2 - 122, 28, 244, 20, query -> list.updateSearch(query.toLowerCase(Locale.US)))); this.addRenderableWidget(list); // -- bottom buttons -- // diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/TextField.java b/common/src/main/java/org/figuramc/figura/gui/widgets/TextField.java index 413709c9b..b223abbb0 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/TextField.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/TextField.java @@ -14,6 +14,7 @@ import org.figuramc.figura.utils.TextUtils; import org.figuramc.figura.utils.ui.UIHelper; +import java.util.Locale; import java.util.function.Consumer; public class TextField extends AbstractContainerElement { @@ -169,7 +170,7 @@ public enum HintType { private final Component hint; HintType() { - this.hint = FiguraText.of("gui.text_hint." + this.name().toLowerCase()); + this.hint = FiguraText.of("gui.text_hint." + this.name().toLowerCase(Locale.US)); } } } diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/avatar/AbstractAvatarWidget.java b/common/src/main/java/org/figuramc/figura/gui/widgets/avatar/AbstractAvatarWidget.java index 75f17cb55..605964b8d 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/avatar/AbstractAvatarWidget.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/avatar/AbstractAvatarWidget.java @@ -18,6 +18,7 @@ import org.jetbrains.annotations.NotNull; import java.nio.file.Path; +import java.util.Locale; public abstract class AbstractAvatarWidget extends AbstractContainerElement implements Comparable { @@ -114,7 +115,7 @@ public boolean isMouseOver(double mouseX, double mouseY) { public void update(LocalAvatarFetcher.AvatarPath path, String filter) { this.avatar = path; - this.filter = filter.toLowerCase(); + this.filter = filter.toLowerCase(Locale.US); } public Component getName() { @@ -134,7 +135,7 @@ public void setY(int y) { } public boolean filtered() { - return this.getName().getString().toLowerCase().contains(filter.toLowerCase()); + return this.getName().getString().toLowerCase(Locale.US).contains(filter.toLowerCase(Locale.US)); } @Override @@ -157,7 +158,7 @@ else if (this instanceof AvatarWidget && other instanceof AvatarFolderWidget) return 1; // then compare names - else return this.getName().getString().toLowerCase().compareTo(other.getName().getString().toLowerCase()); + else return this.getName().getString().toLowerCase(Locale.US).compareTo(other.getName().getString().toLowerCase(Locale.US)); } @Override diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/config/AbstractConfigElement.java b/common/src/main/java/org/figuramc/figura/gui/widgets/config/AbstractConfigElement.java index 6fbcbf6f4..b457e4ddf 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/config/AbstractConfigElement.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/config/AbstractConfigElement.java @@ -13,6 +13,7 @@ import org.figuramc.figura.gui.widgets.lists.ConfigList; import org.figuramc.figura.utils.ui.UIHelper; +import java.util.Locale; import java.util.Objects; public abstract class AbstractConfigElement extends AbstractContainerElement { @@ -105,6 +106,6 @@ public void updateFilter(String query) { } public boolean matchesFilter() { - return config.name.getString().toLowerCase().contains(filter) || config.tooltip.getString().toLowerCase().contains(filter); + return config.name.getString().toLowerCase(Locale.US).contains(filter) || config.tooltip.getString().toLowerCase(Locale.US).contains(filter); } } diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/lists/AvatarWizardList.java b/common/src/main/java/org/figuramc/figura/gui/widgets/lists/AvatarWizardList.java index 4d4b290a5..f9972d6c4 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/lists/AvatarWizardList.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/lists/AvatarWizardList.java @@ -17,10 +17,7 @@ import org.figuramc.figura.wizards.AvatarWizard; import org.figuramc.figura.wizards.WizardEntry; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class AvatarWizardList extends AbstractList { @@ -128,7 +125,7 @@ private void generate() { children.addAll(lastList); } - lastName = FiguraText.of("gui.avatar_wizard." + value.name.toLowerCase()); + lastName = FiguraText.of("gui.avatar_wizard." + value.name.toLowerCase(Locale.US)); lastList = new ArrayList<>(); } case TEXT -> lastList.add(new WizardInputBox(x, width, this, value)); @@ -150,7 +147,7 @@ public WizardInputBox(int x, int width, AvatarWizardList parent, WizardEntry ent super(x, 0, width, 20, HintType.ANY, s -> parent.wizard.changeEntry(entry, s)); this.parent = parent; this.entry = entry; - this.name = FiguraText.of("gui.avatar_wizard." + entry.name.toLowerCase()); + this.name = FiguraText.of("gui.avatar_wizard." + entry.name.toLowerCase(Locale.US)); this.getField().setValue(String.valueOf(parent.wizard.getEntry(entry, ""))); } @@ -178,7 +175,7 @@ private static class WizardToggleButton extends SwitchButton { private final WizardEntry entry; public WizardToggleButton(int x, int width, AvatarWizardList parent, WizardEntry entry) { - super(x, 0, width, 20, FiguraText.of("gui.avatar_wizard." + entry.name.toLowerCase()), false); + super(x, 0, width, 20, FiguraText.of("gui.avatar_wizard." + entry.name.toLowerCase(Locale.US)), false); this.parent = parent; this.entry = entry; this.setToggled((boolean) parent.wizard.getEntry(entry, false)); diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PermissionsList.java b/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PermissionsList.java index f83044ca1..127be2372 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PermissionsList.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PermissionsList.java @@ -116,7 +116,7 @@ private List generateWidgets(PermissionPack container, Collect int lineHeight = Minecraft.getInstance().font.lineHeight; GuiEventListener widget; - String text = id + ".permissions.value." + permissions.name.toLowerCase(); + String text = id + ".permissions.value." + permissions.name.toLowerCase(Locale.US); if (!permissions.isToggle) { if (!precise) widget = new PermissionSlider(x + 8, y, width - 30, 11 + lineHeight, container, permissions, this, id, text); diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PlayerList.java b/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PlayerList.java index 7f0f75491..63698f40d 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PlayerList.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/lists/PlayerList.java @@ -168,7 +168,7 @@ private void loadPlayers() { Avatar avatar = AvatarManager.getAvatarForPlayer(uuid); // filter check - if ((!name.toLowerCase().contains(filter.toLowerCase()) && !uuid.toString().contains(filter.toLowerCase())) || (showFigura.isToggled() && !FiguraMod.isLocal(uuid) && (avatar == null || avatar.nbt == null))) + if ((!name.toLowerCase(Locale.US).contains(filter.toLowerCase(Locale.US)) && !uuid.toString().contains(filter.toLowerCase(Locale.US))) || (showFigura.isToggled() && !FiguraMod.isLocal(uuid) && (avatar == null || avatar.nbt == null))) continue; // player is not missing diff --git a/common/src/main/java/org/figuramc/figura/gui/widgets/permissions/AbstractPermPackElement.java b/common/src/main/java/org/figuramc/figura/gui/widgets/permissions/AbstractPermPackElement.java index 7f3b04b21..f934e1c6f 100644 --- a/common/src/main/java/org/figuramc/figura/gui/widgets/permissions/AbstractPermPackElement.java +++ b/common/src/main/java/org/figuramc/figura/gui/widgets/permissions/AbstractPermPackElement.java @@ -12,6 +12,8 @@ import org.figuramc.figura.utils.MathUtils; import org.figuramc.figura.utils.ui.UIHelper; +import java.util.Locale; + public class AbstractPermPackElement extends Button implements Comparable, FiguraWidget { protected final PlayerList parent; @@ -102,7 +104,7 @@ public int compareTo(AbstractPermPackElement other) { return 1; // and then compare names - return player1.getName().toLowerCase().compareTo(player2.getName().toLowerCase()); + return player1.getName().toLowerCase(Locale.US).compareTo(player2.getName().toLowerCase(Locale.US)); } } diff --git a/common/src/main/java/org/figuramc/figura/lua/api/FileAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/FileAPI.java index 3a1e2a956..ff7625e4f 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/FileAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/FileAPI.java @@ -18,6 +18,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.Arrays; +import java.util.Locale; @LuaWhitelist @LuaTypeDoc(name = "FileAPI", value = "file") @@ -168,7 +169,7 @@ public FiguraOutputStream openWriteStream(@LuaNotNil String path) { public String readString(@LuaNotNil String path, String encoding) { try (FiguraInputStream fis = openReadStream(path)) { byte[] data = fis.readAllBytes(); - Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase()) { + Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase(Locale.US)) { case "utf_16", "utf16" -> StandardCharsets.UTF_16; case "utf_16be", "utf16be" -> StandardCharsets.UTF_16BE; case "utf_16le", "utf16le" -> StandardCharsets.UTF_16LE; @@ -192,7 +193,7 @@ public String readString(@LuaNotNil String path, String encoding) { ) public void writeString(@LuaNotNil String path, @LuaNotNil String data, String encoding) { try (FiguraOutputStream fos = openWriteStream(path)) { - Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase()) { + Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase(Locale.US)) { case "utf_16", "utf16" -> StandardCharsets.UTF_16; case "utf_16be", "utf16be" -> StandardCharsets.UTF_16BE; case "utf_16le", "utf16le" -> StandardCharsets.UTF_16LE; diff --git a/common/src/main/java/org/figuramc/figura/lua/api/RaycastAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/RaycastAPI.java index 06c331c6a..6971ad1eb 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/RaycastAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/RaycastAPI.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.Locale; import java.util.Optional; import java.util.function.Predicate; @@ -87,7 +88,7 @@ public Object[] block(Object x, Object y, Object z, Object w, Object t, Object h ClipContext.Block blockContext; try{ - blockContext = blockCastType != null ? ClipContext.Block.valueOf(blockCastType.toUpperCase()) : ClipContext.Block.COLLIDER; + blockContext = blockCastType != null ? ClipContext.Block.valueOf(blockCastType.toUpperCase(Locale.US)) : ClipContext.Block.COLLIDER; } catch(IllegalArgumentException e){ throw new LuaError("Invalid blockRaycastType provided"); @@ -95,7 +96,7 @@ public Object[] block(Object x, Object y, Object z, Object w, Object t, Object h ClipContext.Fluid fluidContext; try{ - fluidContext = fluidCastType != null ? ClipContext.Fluid.valueOf(fluidCastType.toUpperCase()) : ClipContext.Fluid.NONE; + fluidContext = fluidCastType != null ? ClipContext.Fluid.valueOf(fluidCastType.toUpperCase(Locale.US)) : ClipContext.Fluid.NONE; } catch(IllegalArgumentException e){ throw new LuaError("Invalid fluidRaycastType provided"); diff --git a/common/src/main/java/org/figuramc/figura/lua/api/data/FiguraBuffer.java b/common/src/main/java/org/figuramc/figura/lua/api/data/FiguraBuffer.java index 266f452a4..a4e660e42 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/data/FiguraBuffer.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/data/FiguraBuffer.java @@ -17,6 +17,7 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Base64; +import java.util.Locale; import java.util.Stack; @LuaWhitelist @@ -233,7 +234,7 @@ public double readDoubleLE() { public String readString(Integer length, String encoding) { checkIsClosed(); length = length == null ? available() : Math.max(length, 0); - Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase()) { + Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase(Locale.US)) { case "utf_16", "utf16" -> StandardCharsets.UTF_16; case "utf_16be", "utf16be" -> StandardCharsets.UTF_16BE; case "utf_16le", "utf16le" -> StandardCharsets.UTF_16LE; @@ -523,7 +524,7 @@ public void writeDoubleLE(@LuaNotNil Double val) { ) public int writeString(@LuaNotNil String val, String encoding) { checkIsClosed(); - Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase()) { + Charset charset = encoding == null ? StandardCharsets.UTF_8 : switch (encoding.toLowerCase(Locale.US)) { case "utf_16", "utf16" -> StandardCharsets.UTF_16; case "utf_16be", "utf16be" -> StandardCharsets.UTF_16BE; case "utf_16le", "utf16le" -> StandardCharsets.UTF_16LE; diff --git a/common/src/main/java/org/figuramc/figura/lua/api/entity/PlayerAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/entity/PlayerAPI.java index e805ab625..ccf1f3e2d 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/entity/PlayerAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/entity/PlayerAPI.java @@ -21,6 +21,7 @@ import org.luaj.vm2.LuaTable; import java.util.HashMap; +import java.util.Locale; import java.util.Map; @LuaWhitelist @@ -87,7 +88,7 @@ public int getExperienceLevel() { @LuaMethodDoc("player.get_model_type") public String getModelType() { checkEntity(); - return (checkPlayerInfo() ? playerInfo.getModelName() : DefaultPlayerSkin.getSkinModelName(entity.getUUID())).toUpperCase(); + return (checkPlayerInfo() ? playerInfo.getModelName() : DefaultPlayerSkin.getSkinModelName(entity.getUUID())).toUpperCase(Locale.US); } @LuaWhitelist @@ -98,7 +99,7 @@ public String getGamemode() { return null; GameType gamemode = playerInfo.getGameMode(); - return gamemode == null ? null : gamemode.getName().toUpperCase(); + return gamemode == null ? null : gamemode.getName().toUpperCase(Locale.US); } @LuaWhitelist @@ -128,7 +129,7 @@ public boolean isSkinLayerVisible(@LuaNotNil String part) { try { if (part.equalsIgnoreCase("left_pants") || part.equalsIgnoreCase("right_pants")) part += "_leg"; - return entity.isModelPartShown(PlayerModelPart.valueOf(part.toUpperCase())); + return entity.isModelPartShown(PlayerModelPart.valueOf(part.toUpperCase(Locale.US))); } catch (Exception ignored) { throw new LuaError("Invalid player model part: " + part); } diff --git a/common/src/main/java/org/figuramc/figura/lua/api/event/EventsAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/event/EventsAPI.java index ef073e9e1..f5594cb3f 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/event/EventsAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/event/EventsAPI.java @@ -114,9 +114,9 @@ public EventsAPI() { events.put("RESOURCE_RELOAD", RESOURCE_RELOAD); for (FiguraEvent entrypoint : ENTRYPOINTS) { - String ID = entrypoint.getID().toUpperCase(); + String ID = entrypoint.getID().toUpperCase(Locale.US); for (Pair event : entrypoint.getEvents()) { - String name = ID + "." + event.getFirst().toUpperCase(); + String name = ID + "." + event.getFirst().toUpperCase(Locale.US); events.put(name, event.getSecond()); } } @@ -141,12 +141,12 @@ public Map getEvents() { )) public LuaEvent __index(String key) { if (key == null) return null; - return events.get(key.toUpperCase()); + return events.get(key.toUpperCase(Locale.US)); } @LuaWhitelist public void __newindex(@LuaNotNil String key, LuaFunction func) { - LuaEvent event = __index(key.toUpperCase()); + LuaEvent event = __index(key.toUpperCase(Locale.US)); if (event != null) event.register(func, null); else throw new LuaError("Cannot assign value on key \"" + key + "\""); diff --git a/common/src/main/java/org/figuramc/figura/lua/api/nameplate/NameplateAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/nameplate/NameplateAPI.java index 7f6f4cbb5..8872f02f7 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/nameplate/NameplateAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/nameplate/NameplateAPI.java @@ -4,6 +4,8 @@ import org.figuramc.figura.lua.docs.LuaFieldDoc; import org.figuramc.figura.lua.docs.LuaTypeDoc; +import java.util.Locale; + @LuaWhitelist @LuaTypeDoc( name = "NameplateAPI", @@ -34,7 +36,7 @@ public NameplateAPI() { @LuaWhitelist public Object __index(String arg) { if (arg == null) return null; - return switch (arg.toUpperCase()) { + return switch (arg.toUpperCase(Locale.US)) { case "CHAT" -> CHAT; case "ENTITY" -> ENTITY; case "LIST" -> LIST; diff --git a/common/src/main/java/org/figuramc/figura/lua/api/net/NetworkingAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/net/NetworkingAPI.java index 97b061312..cc432508c 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/net/NetworkingAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/net/NetworkingAPI.java @@ -22,6 +22,7 @@ import java.time.LocalDate; import java.time.LocalTime; import java.util.ArrayList; +import java.util.Locale; @LuaWhitelist @LuaTypeDoc( @@ -95,7 +96,7 @@ void log(LogSource source, Component text) { int log = Configs.LOG_NETWORKING.value; if (log == 3) return; MutableComponent finalText = - Component.literal("[networking:%s:%s] ".formatted(source.name().toLowerCase(),owner.entityName)) + Component.literal("[networking:%s:%s] ".formatted(source.name().toLowerCase(Locale.US),owner.entityName)) .withStyle(ColorUtils.Colors.LUA_PING.style) .append(text.copy().withStyle(ChatFormatting.WHITE)); String logTextString = finalText.getString(); @@ -118,7 +119,7 @@ void error(LogSource source, Component text) { int log = Configs.LOG_NETWORKING.value; if (log == 3) return; MutableComponent finalText = - Component.literal("[networking:%s:%s] ".formatted(source.name().toLowerCase(),owner.entityName)) + Component.literal("[networking:%s:%s] ".formatted(source.name().toLowerCase(Locale.US),owner.entityName)) .withStyle(ColorUtils.Colors.LUA_ERROR.style) .append(text.copy().withStyle(ChatFormatting.WHITE)); String logTextString = finalText.getString(); diff --git a/common/src/main/java/org/figuramc/figura/lua/api/vanilla_model/VanillaModelAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/vanilla_model/VanillaModelAPI.java index f23fd195b..1cccfc883 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/vanilla_model/VanillaModelAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/vanilla_model/VanillaModelAPI.java @@ -284,11 +284,11 @@ public VanillaModelAPI(Avatar owner) { for (FiguraVanillaPart entrypoint : ENTRYPOINTS) { // prepare group List parts = new ArrayList<>(); - String ID = entrypoint.getID().toUpperCase(); + String ID = entrypoint.getID().toUpperCase(Locale.US); // Iterate over parts added by the current entrypoint for (Pair, ModelPart>> part : entrypoint.getParts()) { - String name = ID + "_" + part.getFirst().toUpperCase(); + String name = ID + "_" + part.getFirst().toUpperCase(Locale.US); VanillaModelPart model = new VanillaModelPart(owner, name, ParentType.None, part.getSecond()); allParts.put(name, model); parts.add(model); @@ -315,7 +315,7 @@ public static void initEntryPoints(Set set) { @LuaWhitelist public Object __index(String key) { if (key == null) return null; - return allParts.getOrDefault(key.toUpperCase(), null); + return allParts.getOrDefault(key.toUpperCase(Locale.US), null); } @Override diff --git a/common/src/main/java/org/figuramc/figura/lua/api/world/WorldAPI.java b/common/src/main/java/org/figuramc/figura/lua/api/world/WorldAPI.java index 36da68b53..acc24005b 100644 --- a/common/src/main/java/org/figuramc/figura/lua/api/world/WorldAPI.java +++ b/common/src/main/java/org/figuramc/figura/lua/api/world/WorldAPI.java @@ -385,7 +385,7 @@ public static Integer getHeight(Object x, Double z, String heightmap) { Heightmap.Types heightmapType; try { - heightmapType = heightmap != null ? Heightmap.Types.valueOf(heightmap.toUpperCase()) : Heightmap.Types.MOTION_BLOCKING; + heightmapType = heightmap != null ? Heightmap.Types.valueOf(heightmap.toUpperCase(Locale.US)) : Heightmap.Types.MOTION_BLOCKING; } catch (IllegalArgumentException e) { throw new LuaError("Invalid heightmap type provided"); } diff --git a/common/src/main/java/org/figuramc/figura/lua/docs/FiguraListDocs.java b/common/src/main/java/org/figuramc/figura/lua/docs/FiguraListDocs.java index cda977c73..cdfed54ca 100644 --- a/common/src/main/java/org/figuramc/figura/lua/docs/FiguraListDocs.java +++ b/common/src/main/java/org/figuramc/figura/lua/docs/FiguraListDocs.java @@ -306,7 +306,7 @@ public static LiteralArgumentBuilder getCommand() { public static List getEnumValues(String enumName) { try { - ListDoc enumListDoc = ListDoc.valueOf(enumName.toUpperCase()); + ListDoc enumListDoc = ListDoc.valueOf(enumName.toUpperCase(Locale.US)); Collection enumValues = enumListDoc.get(); List enumValueList = new ArrayList<>(); diff --git a/common/src/main/java/org/figuramc/figura/mixin/gui/ChatComponentMixin.java b/common/src/main/java/org/figuramc/figura/mixin/gui/ChatComponentMixin.java index d13767bc3..8c7271097 100644 --- a/common/src/main/java/org/figuramc/figura/mixin/gui/ChatComponentMixin.java +++ b/common/src/main/java/org/figuramc/figura/mixin/gui/ChatComponentMixin.java @@ -25,6 +25,7 @@ import org.spongepowered.asm.mixin.injection.ModifyVariable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.util.Locale; import java.util.Map; import java.util.UUID; import java.util.regex.Pattern; @@ -94,7 +95,7 @@ private Component addMessage(Component message, Component msg, MessageSignature for (Map.Entry entry : players.entrySet()) { String name = entry.getKey(); - if (!msgString.toLowerCase().contains(name.toLowerCase())) // player is not here + if (!msgString.toLowerCase(Locale.US).contains(name.toLowerCase(Locale.US))) // player is not here continue; UUID uuid = entry.getValue(); diff --git a/common/src/main/java/org/figuramc/figura/model/FiguraModelPart.java b/common/src/main/java/org/figuramc/figura/model/FiguraModelPart.java index c196da498..cd6d41401 100644 --- a/common/src/main/java/org/figuramc/figura/model/FiguraModelPart.java +++ b/common/src/main/java/org/figuramc/figura/model/FiguraModelPart.java @@ -24,10 +24,7 @@ import org.figuramc.figura.utils.ui.UIHelper; import org.luaj.vm2.*; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; @LuaWhitelist @@ -675,7 +672,7 @@ public String getSecondaryRenderType() { ) public FiguraModelPart setPrimaryRenderType(String type) { try { - this.customization.setPrimaryRenderType(type == null ? null : RenderTypes.valueOf(type.toUpperCase())); + this.customization.setPrimaryRenderType(type == null ? null : RenderTypes.valueOf(type.toUpperCase(Locale.US))); return this; } catch (Exception ignored) { throw new LuaError("Illegal RenderType: \"" + type + "\"."); @@ -693,7 +690,7 @@ public FiguraModelPart setPrimaryRenderType(String type) { ) public FiguraModelPart setSecondaryRenderType(String type) { try { - this.customization.setSecondaryRenderType(type == null ? null : RenderTypes.valueOf(type.toUpperCase())); + this.customization.setSecondaryRenderType(type == null ? null : RenderTypes.valueOf(type.toUpperCase(Locale.US))); return this; } catch (Exception ignored) { throw new LuaError("Illegal RenderType: \"" + type + "\"."); @@ -799,7 +796,7 @@ public FiguraModelPart setPrimaryTexture(String type, Object x) { if (type == null) { overrideType = FiguraTextureSet.OverrideType.PRIMARY; } else { - overrideType = FiguraTextureSet.OverrideType.valueOf(type.toUpperCase()); + overrideType = FiguraTextureSet.OverrideType.valueOf(type.toUpperCase(Locale.US)); } checkTexture(overrideType, x); this.customization.primaryTexture = type == null ? null : new TextureCustomization(overrideType, x); @@ -834,7 +831,7 @@ public FiguraModelPart setSecondaryTexture(String type, Object x) { if (type == null) { overrideType = FiguraTextureSet.OverrideType.SECONDARY; } else { - overrideType = FiguraTextureSet.OverrideType.valueOf(type.toUpperCase()); + overrideType = FiguraTextureSet.OverrideType.valueOf(type.toUpperCase(Locale.US)); } checkTexture(overrideType, x); this.customization.secondaryTexture = type == null ? null : new TextureCustomization(overrideType, x); diff --git a/common/src/main/java/org/figuramc/figura/model/FiguraModelPartReader.java b/common/src/main/java/org/figuramc/figura/model/FiguraModelPartReader.java index 761b86160..223591ba0 100644 --- a/common/src/main/java/org/figuramc/figura/model/FiguraModelPartReader.java +++ b/common/src/main/java/org/figuramc/figura/model/FiguraModelPartReader.java @@ -22,10 +22,7 @@ import org.figuramc.figura.model.rendering.texture.RenderTypes; import org.figuramc.figura.utils.MathUtils; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * Take the reading code out of FiguraModelPart itself, since that class @@ -137,7 +134,7 @@ public static FiguraModelPart read(Avatar owner, CompoundTag partCompound, List< float time = keyframeNbt.getFloat("time"); Interpolation interpolation; try { - interpolation = Interpolation.valueOf(keyframeNbt.getString("int").toUpperCase()); + interpolation = Interpolation.valueOf(keyframeNbt.getString("int").toUpperCase(Locale.US)); } catch (Exception e) { FiguraMod.LOGGER.error("Invalid interpolation type in the model {}, something is wrong with this model!", keyframeNbt.getString("int")); FiguraMod.LOGGER.error("", e); diff --git a/common/src/main/java/org/figuramc/figura/model/rendertasks/ItemTask.java b/common/src/main/java/org/figuramc/figura/model/rendertasks/ItemTask.java index c470d852e..44cd863f8 100644 --- a/common/src/main/java/org/figuramc/figura/model/rendertasks/ItemTask.java +++ b/common/src/main/java/org/figuramc/figura/model/rendertasks/ItemTask.java @@ -19,6 +19,8 @@ import org.figuramc.figura.utils.LuaUtils; import org.luaj.vm2.LuaError; +import java.util.Locale; + @LuaWhitelist @LuaTypeDoc( name = "ItemTask", @@ -109,7 +111,7 @@ public String getDisplayMode() { ) public ItemTask setDisplayMode(@LuaNotNil String mode) { try { - this.displayMode = ItemDisplayContext.valueOf(mode.toUpperCase()); + this.displayMode = ItemDisplayContext.valueOf(mode.toUpperCase(Locale.US)); this.left = this.displayMode == ItemDisplayContext.FIRST_PERSON_LEFT_HAND || this.displayMode == ItemDisplayContext.THIRD_PERSON_LEFT_HAND; return this; } catch (Exception ignored) { diff --git a/common/src/main/java/org/figuramc/figura/model/rendertasks/SpriteTask.java b/common/src/main/java/org/figuramc/figura/model/rendertasks/SpriteTask.java index aa53ca4ab..0c0ea2c81 100644 --- a/common/src/main/java/org/figuramc/figura/model/rendertasks/SpriteTask.java +++ b/common/src/main/java/org/figuramc/figura/model/rendertasks/SpriteTask.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Locale; @LuaWhitelist @LuaTypeDoc( @@ -395,7 +396,7 @@ public String getRenderType() { ) public SpriteTask setRenderType(@LuaNotNil String renderType) { try { - this.renderType = RenderTypes.valueOf(renderType.toUpperCase()); + this.renderType = RenderTypes.valueOf(renderType.toUpperCase(Locale.US)); return this; } catch (Exception ignored) { throw new LuaError("Illegal RenderType: \"" + renderType + "\"."); diff --git a/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java b/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java index 82f929581..60330629c 100644 --- a/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java +++ b/common/src/main/java/org/figuramc/figura/model/rendertasks/TextTask.java @@ -26,6 +26,7 @@ import org.luaj.vm2.LuaError; import java.util.List; +import java.util.Locale; @LuaWhitelist @LuaTypeDoc( @@ -169,7 +170,7 @@ public String getAlignment() { ) public TextTask setAlignment(@LuaNotNil String alignment) { try { - this.alignment = TextUtils.Alignment.valueOf(alignment.toUpperCase()); + this.alignment = TextUtils.Alignment.valueOf(alignment.toUpperCase(Locale.US)); } catch (Exception ignored) { throw new LuaError("Invalid alignment type \"" + alignment + "\""); } diff --git a/common/src/main/java/org/figuramc/figura/parsers/AvatarMetadataParser.java b/common/src/main/java/org/figuramc/figura/parsers/AvatarMetadataParser.java index 0beb45b0d..b4180e745 100644 --- a/common/src/main/java/org/figuramc/figura/parsers/AvatarMetadataParser.java +++ b/common/src/main/java/org/figuramc/figura/parsers/AvatarMetadataParser.java @@ -15,6 +15,7 @@ import java.io.IOException; import java.util.HashMap; +import java.util.Locale; import java.util.Map; // parses a metadata json @@ -130,14 +131,14 @@ private static void injectCustomization(String path, Customization customization } if (customization.primaryRenderType != null) { try { - modelPart.putString("primary", RenderTypes.valueOf(customization.primaryRenderType.toUpperCase()).name()); + modelPart.putString("primary", RenderTypes.valueOf(customization.primaryRenderType.toUpperCase(Locale.US)).name()); } catch (Exception ignored) { throw new IOException("Invalid render type \"" + customization.primaryRenderType + "\"!"); } } if (customization.secondaryRenderType != null) { try { - modelPart.putString("secondary", RenderTypes.valueOf(customization.secondaryRenderType.toUpperCase()).name()); + modelPart.putString("secondary", RenderTypes.valueOf(customization.secondaryRenderType.toUpperCase(Locale.US)).name()); } catch (Exception ignored) { throw new IOException("Invalid render type \"" + customization.secondaryRenderType + "\"!"); } diff --git a/common/src/main/java/org/figuramc/figura/parsers/BlockbenchModelParser.java b/common/src/main/java/org/figuramc/figura/parsers/BlockbenchModelParser.java index 18db91812..93917451c 100644 --- a/common/src/main/java/org/figuramc/figura/parsers/BlockbenchModelParser.java +++ b/common/src/main/java/org/figuramc/figura/parsers/BlockbenchModelParser.java @@ -154,7 +154,7 @@ private void parseTextures(Path avatar, Path sourceFile, String folders, String name = folders + name; //feedback - FiguraMod.debug("Loaded {} Texture \"{}\" from {}", textureType.toUpperCase(), name, p); + FiguraMod.debug("Loaded {} Texture \"{}\" from {}", textureType.toUpperCase(Locale.US), name, p); } catch (Exception e) { if (e instanceof IOException) FiguraMod.LOGGER.error("", e); @@ -162,7 +162,7 @@ private void parseTextures(Path avatar, Path sourceFile, String folders, String //otherwise, load from the source stored in the model source = Base64.getDecoder().decode(texture.source.substring("data:image/png;base64,".length())); path = folders + modelName + "." + name; - FiguraMod.debug("Loaded {} Texture \"{}\" from {}", textureType.toUpperCase(), name, path); + FiguraMod.debug("Loaded {} Texture \"{}\" from {}", textureType.toUpperCase(Locale.US), name, path); } //add source nbt diff --git a/common/src/main/java/org/figuramc/figura/permissions/Permissions.java b/common/src/main/java/org/figuramc/figura/permissions/Permissions.java index 2f34e2d74..f3e1c1f5d 100644 --- a/common/src/main/java/org/figuramc/figura/permissions/Permissions.java +++ b/common/src/main/java/org/figuramc/figura/permissions/Permissions.java @@ -7,6 +7,7 @@ import org.figuramc.figura.utils.FiguraText; import java.util.List; +import java.util.Locale; public class Permissions { @@ -143,7 +144,7 @@ public enum Category { Category(int index, int color, Style style) { this.index = index; this.color = color; - String name = "permissions.category." + name().toLowerCase(); + String name = "permissions.category." + name().toLowerCase(Locale.US); text = FiguraText.of(name).withStyle(style); info = FiguraText.of(name + ".info"); } diff --git a/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java b/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java index ca6f9df79..c8d7eb532 100644 --- a/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java +++ b/common/src/main/java/org/figuramc/figura/utils/ColorUtils.java @@ -6,6 +6,7 @@ import org.figuramc.figura.math.vector.FiguraVec4; import java.awt.*; +import java.util.Locale; public class ColorUtils { @@ -108,7 +109,7 @@ public static FiguraVec3 userInputHex(String hex, FiguraVec3 fallback) { return color.vec; try { - ChatFormatting formatting = ChatFormatting.valueOf(hex.toUpperCase()); + ChatFormatting formatting = ChatFormatting.valueOf(hex.toUpperCase(Locale.US)); Integer i = formatting.getColor(); if (i != null) return intToRGB(i); diff --git a/common/src/main/java/org/figuramc/figura/utils/IOUtils.java b/common/src/main/java/org/figuramc/figura/utils/IOUtils.java index 2aedb4fbb..b3fce4dbf 100644 --- a/common/src/main/java/org/figuramc/figura/utils/IOUtils.java +++ b/common/src/main/java/org/figuramc/figura/utils/IOUtils.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Locale; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -32,7 +33,7 @@ public static List getFilesByExtension(Path root, String extension) { if (Files.isDirectory(child)) result.addAll(getFilesByExtension(child, extension)); - else if (child.toString().toLowerCase().endsWith(extension.toLowerCase())) + else if (child.toString().toLowerCase(Locale.US).endsWith(extension.toLowerCase(Locale.US))) result.add(child); } return result;