Properly and consistently lowercase strings (#2688)

This commit is contained in:
Up 2025-10-07 14:54:10 +02:00 committed by GitHub
parent 2dc3d99e67
commit d978d97e48
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 26 additions and 24 deletions

View file

@ -7,6 +7,6 @@
+
+ @Override
+ public String getSerializedName() {
+ return name().toLowerCase();
+ return name().toLowerCase(java.util.Locale.ROOT);
+ }
}

View file

@ -25,7 +25,7 @@ dependencyResolutionManagement {
}
}
if (rootProject.name.toLowerCase() == "neoforge") {
if (rootProject.name.toLowerCase(Locale.ROOT) == "neoforge") {
// Solve name clashes between projects/neoforge and the rootProject for Eclipse.
rootProject.name = "NeoForge-Root"
}

View file

@ -12,6 +12,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.function.Consumer;
@ -41,13 +42,13 @@ import net.minecraft.server.packs.repository.Pack;
import net.minecraft.server.packs.repository.PackSource;
import net.minecraft.server.packs.resources.IoSupplier;
import net.minecraft.util.FormattedCharSequence;
import net.minecraft.util.StringUtil;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.ModList;
import net.neoforged.fml.VersionChecker;
import net.neoforged.fml.i18n.FMLTranslations;
import net.neoforged.fml.i18n.MavenVersionTranslator;
import net.neoforged.fml.loading.FMLPaths;
import net.neoforged.fml.loading.StringUtils;
import net.neoforged.neoforge.client.gui.widget.ModListWidget;
import net.neoforged.neoforge.client.gui.widget.ScrollPanel;
import net.neoforged.neoforge.common.CommonHooks;
@ -62,7 +63,7 @@ import org.jetbrains.annotations.Nullable;
public class ModListScreen extends Screen {
private static String stripControlCodes(String value) {
return net.minecraft.util.StringUtil.stripColor(value);
return StringUtil.stripColor(value);
}
private static final Logger LOGGER = LogManager.getLogger();
@ -90,13 +91,13 @@ public class ModListScreen extends Screen {
@Override
public int compare(ModContainer o1, ModContainer o2) {
String name1 = StringUtils.toLowerCase(stripControlCodes(o1.getModInfo().getDisplayName()));
String name2 = StringUtils.toLowerCase(stripControlCodes(o2.getModInfo().getDisplayName()));
String name1 = stripControlCodes(o1.getModInfo().getDisplayName()).toLowerCase(Locale.ROOT);
String name2 = stripControlCodes(o2.getModInfo().getDisplayName()).toLowerCase(Locale.ROOT);
return compare(name1, name2);
}
Component getButtonText() {
return Component.translatable("fml.menu.mods." + StringUtils.toLowerCase(name()));
return Component.translatable("fml.menu.mods." + name().toLowerCase(Locale.ROOT));
}
}
@ -124,8 +125,8 @@ public class ModListScreen extends Screen {
public ModListScreen(Screen parentScreen) {
super(Component.translatable("fml.menu.mods.title"));
this.parentScreen = parentScreen;
this.mods = Collections.unmodifiableList(ModList.get().getSortedMods());
this.unsortedMods = Collections.unmodifiableList(this.mods);
this.unsortedMods = Collections.unmodifiableList(ModList.get().getSortedMods());
this.mods = this.unsortedMods;
}
class InfoPanel extends ScrollPanel {
@ -327,7 +328,7 @@ public class ModListScreen extends Screen {
}
private void reloadMods() {
this.mods = this.unsortedMods.stream().filter(mi -> StringUtils.toLowerCase(stripControlCodes(mi.getModInfo().getDisplayName())).contains(StringUtils.toLowerCase(search.getValue()))).collect(Collectors.toList());
this.mods = this.unsortedMods.stream().filter(mi -> stripControlCodes(mi.getModInfo().getDisplayName()).toLowerCase(Locale.ROOT).contains(search.getValue().toLowerCase(Locale.ROOT))).toList();
lastFilterText = search.getValue();
}

View file

@ -25,14 +25,14 @@ public class VanillaClassToKey {
Preconditions.checkArgument(!cls.getSimpleName().isEmpty(), "Automatic name conversion can only happen for identifiable classes (per Class#getSimpleName()). Provided: " + cls.getName());
StringBuilder sb = new StringBuilder();
cls.getSimpleName().chars().mapMulti((value, consumer) -> {
if (Character.isUpperCase((char) value)) {
consumer.accept('_');
consumer.accept(Character.toLowerCase((char) value));
cls.getSimpleName().codePoints().forEachOrdered(value -> {
if (Character.isUpperCase(value)) {
sb.append('_');
sb.append(Character.toString(Character.toLowerCase(value)));
} else {
consumer.accept(value);
sb.append(Character.toString(value));
}
}).forEach(i -> sb.append((char) i));
});
return ResourceLocation.withDefaultNamespace(sb.substring(1)); // The string will be prefixed with an additional `_` since the first character is uppercase.
}

View file

@ -9,6 +9,7 @@ import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.ArgumentBuilder;
import com.mojang.brigadier.context.CommandContext;
import java.io.File;
import java.util.Locale;
import net.minecraft.ChatFormatting;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
@ -19,7 +20,6 @@ import net.minecraft.server.level.ServerPlayer;
import net.neoforged.fml.config.ModConfig;
import net.neoforged.fml.config.ModConfigs;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.fml.loading.StringUtils;
public class ConfigCommand {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
@ -32,7 +32,7 @@ public class ConfigCommand {
SERVER;
public String extension() {
return StringUtils.toLowerCase(name());
return name().toLowerCase(Locale.ROOT);
}
}

View file

@ -291,16 +291,16 @@ public abstract class AbstractTest implements Test {
final StringBuilder modId = new StringBuilder()
.append(framework().id().getNamespace()).append('_');
boolean isInUpper = false;
for (char c : id().toCharArray()) {
if (Character.isUpperCase(c)) {
for (int value : id().codePoints().toArray()) {
if (Character.isUpperCase(value)) {
if (!isInUpper) {
isInUpper = true;
modId.append('_');
}
modId.append(Character.toLowerCase(c));
modId.append(Character.toString(Character.toLowerCase(value)));
} else {
isInUpper = false;
modId.append(c);
modId.append(Character.toString(value));
}
}
return modId.toString();

View file

@ -5,6 +5,7 @@
package net.neoforged.neoforge.oldtest.block;
import java.util.Locale;
import net.minecraft.client.model.SkullModel;
import net.minecraft.client.model.geom.ModelLayerLocation;
import net.minecraft.client.renderer.blockentity.SkullBlockRenderer;
@ -107,12 +108,12 @@ public class CustomHeadTest {
BLAZE;
SkullType() {
TYPES.put(name().toLowerCase(), this);
TYPES.put(getSerializedName(), this);
}
@Override
public String getSerializedName() {
return name().toLowerCase();
return name().toLowerCase(Locale.ROOT);
}
}