mirror of
https://github.com/ChestShop-authors/ChestShop-3.git
synced 2025-03-12 14:39:14 +01:00
Specify locale when changing case (Fixes #291)
This commit is contained in:
parent
d4bb775086
commit
2a37304113
@ -8,6 +8,7 @@ import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
|
||||
@ -30,7 +31,7 @@ public class Configuration {
|
||||
@Override
|
||||
public <T> Object parseToJava(Class<T> type, Object object) {
|
||||
if (object instanceof String && type.isEnum()) {
|
||||
return Enum.valueOf((Class<? extends Enum>) type, ((String) object).toUpperCase());
|
||||
return Enum.valueOf((Class<? extends Enum>) type, ((String) object).toUpperCase(Locale.ROOT));
|
||||
}
|
||||
return object;
|
||||
}
|
||||
@ -62,8 +63,8 @@ public class Configuration {
|
||||
try {
|
||||
if (config.isSet(path)) {
|
||||
field.set(null, getParser(field).parseToJava(field.getType(), config.get(path)));
|
||||
} else if (config.isSet(path.toLowerCase())) {
|
||||
field.set(null, getParser(field).parseToJava(field.getType(), config.get(path.toLowerCase())));
|
||||
} else if (config.isSet(path.toLowerCase(Locale.ROOT))) {
|
||||
field.set(null, getParser(field).parseToJava(field.getType(), config.get(path.toLowerCase(Locale.ROOT))));
|
||||
} else {
|
||||
if (field.isAnnotationPresent(PrecededBySpace.class)) {
|
||||
writer.newLine();
|
||||
@ -131,7 +132,7 @@ public class Configuration {
|
||||
* @param valueParser The parser itself
|
||||
*/
|
||||
public static void registerParser(String name, ValueParser valueParser) {
|
||||
parsers.put(name.toLowerCase(), valueParser);
|
||||
parsers.put(name.toLowerCase(Locale.ROOT), valueParser);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -140,7 +141,7 @@ public class Configuration {
|
||||
* @return The parser or null if it doesn't exist
|
||||
*/
|
||||
public static ValueParser getParser(String name) {
|
||||
return parsers.get(name.toLowerCase());
|
||||
return parsers.get(name.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -26,6 +26,7 @@ import org.yaml.snakeyaml.nodes.Tag;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.regex.Matcher;
|
||||
@ -127,7 +128,7 @@ public class MaterialUtil {
|
||||
* @return Material found
|
||||
*/
|
||||
public static Material getMaterial(String name) {
|
||||
String formatted = name.replaceAll("([a-z])([A-Z1-9])", "$1_$2").replace(' ', '_').toUpperCase();
|
||||
String formatted = name.replaceAll("([a-z])([A-Z1-9])", "$1_$2").replace(' ', '_').toUpperCase(Locale.ROOT);
|
||||
|
||||
Material material = MATERIAL_CACHE.get(formatted);
|
||||
if (material != null) {
|
||||
@ -394,10 +395,10 @@ public class MaterialUtil {
|
||||
private static class EnumParser<E extends Enum<E>> {
|
||||
private E parse(String name, E[] values) {
|
||||
try {
|
||||
return E.valueOf(values[0].getDeclaringClass(), name.toUpperCase());
|
||||
return E.valueOf(values[0].getDeclaringClass(), name.toUpperCase(Locale.ROOT));
|
||||
} catch (IllegalArgumentException exception) {
|
||||
E currentEnum = null;
|
||||
String[] typeParts = name.replaceAll("([a-z])([A-Z1-9])", "$1_$2").toUpperCase().split("[ _]");
|
||||
String[] typeParts = name.replaceAll("([a-z])([A-Z1-9])", "$1_$2").toUpperCase(Locale.ROOT).split("[ _]");
|
||||
int length = Short.MAX_VALUE;
|
||||
for (E e : values) {
|
||||
String enumName = e.name();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.Acrobot.Breeze.Utils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* @author Acrobot
|
||||
@ -23,8 +24,8 @@ public class PriceUtil {
|
||||
* @return exact price
|
||||
*/
|
||||
public static BigDecimal getExact(String text, char indicator) {
|
||||
String[] split = text.replace(" ", "").toLowerCase().split(":");
|
||||
String character = String.valueOf(indicator).toLowerCase();
|
||||
String[] split = text.replace(" ", "").toLowerCase(Locale.ROOT).split(":");
|
||||
String character = String.valueOf(indicator).toLowerCase(Locale.ROOT);
|
||||
|
||||
for (String part : split) {
|
||||
if (!part.startsWith(character) && !part.endsWith(character)) {
|
||||
|
@ -4,6 +4,7 @@ import org.apache.commons.lang.WordUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* @author Acrobot
|
||||
@ -18,9 +19,12 @@ public class StringUtil {
|
||||
* @return Reformatted string
|
||||
*/
|
||||
public static String capitalizeFirstLetter(String string, char separator) {
|
||||
if (string == null || string.isEmpty()) {
|
||||
return string;
|
||||
}
|
||||
char[] separators = new char[]{separator};
|
||||
|
||||
return WordUtils.capitalizeFully(string, separators).replace(String.valueOf(separator), " ");
|
||||
return WordUtils.capitalize(string.toLowerCase(Locale.ROOT), separators).replace(String.valueOf(separator), " ");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -28,7 +32,7 @@ public class StringUtil {
|
||||
*
|
||||
* @param string String to reformat
|
||||
* @return Reformatted string
|
||||
* @see com.Acrobot.Breeze.Utils.StringUtil#capitalizeFirstLetter(String, char)
|
||||
* @see StringUtil#capitalizeFirstLetter(String, char)
|
||||
*/
|
||||
public static String capitalizeFirstLetter(String string) {
|
||||
return capitalizeFirstLetter(string, ' ');
|
||||
|
@ -14,6 +14,7 @@ import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.EnumSet;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
@ -42,7 +43,7 @@ public class Properties {
|
||||
set.add((Material) o);
|
||||
} else if (o instanceof String) {
|
||||
try {
|
||||
set.add(Material.getMaterial(((String) o).toUpperCase()));
|
||||
set.add(Material.getMaterial(((String) o).toUpperCase(Locale.ROOT)));
|
||||
} catch (IllegalArgumentException e) {
|
||||
ChestShop.getBukkitLogger().log(Level.WARNING, o + " is not a valid Material name in the config!");
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.BUY_PRICE_ABOVE_MAX;
|
||||
@ -84,7 +85,7 @@ public class PriceRestrictionModule implements Listener {
|
||||
for (String typeId : section.getKeys(false)) {
|
||||
Material material = Material.matchMaterial(typeId);
|
||||
if (material != null) {
|
||||
configuration.set(sectionPath + "." + material.toString().toLowerCase(), configuration.get(sectionPath + "." + typeId));
|
||||
configuration.set(sectionPath + "." + material.toString().toLowerCase(Locale.ROOT), configuration.get(sectionPath + "." + typeId));
|
||||
configuration.set(sectionPath + "." + typeId, null);
|
||||
}
|
||||
}
|
||||
@ -101,7 +102,7 @@ public class PriceRestrictionModule implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
String itemType = material.getType().toString().toLowerCase();
|
||||
String itemType = material.getType().toString().toLowerCase(Locale.ROOT);
|
||||
int amount;
|
||||
try {
|
||||
amount = Integer.parseInt(event.getSignLine(QUANTITY_LINE));
|
||||
|
@ -10,6 +10,8 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.NO_PERMISSION;
|
||||
import static com.Acrobot.ChestShop.Permission.*;
|
||||
import static com.Acrobot.ChestShop.Signs.ChestShopSign.ITEM_LINE;
|
||||
@ -39,7 +41,7 @@ public class PermissionChecker implements Listener {
|
||||
return;
|
||||
}
|
||||
|
||||
String matID = item.getType().toString().toLowerCase();
|
||||
String matID = item.getType().toString().toLowerCase(Locale.ROOT);
|
||||
if (PriceUtil.hasBuyPrice(priceLine)) {
|
||||
if (Permission.has(player, SHOP_CREATION_BUY_ID + matID)) {
|
||||
return;
|
||||
|
@ -7,6 +7,8 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.Acrobot.Breeze.Utils.PriceUtil.isPrice;
|
||||
import static com.Acrobot.ChestShop.Events.PreShopCreationEvent.CreationOutcome.INVALID_PRICE;
|
||||
import static com.Acrobot.ChestShop.Signs.ChestShopSign.PRICE_LINE;
|
||||
@ -18,7 +20,7 @@ public class PriceChecker implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
public static void onPreShopCreation(PreShopCreationEvent event) {
|
||||
String line = event.getSignLine(PRICE_LINE).toUpperCase();
|
||||
String line = event.getSignLine(PRICE_LINE).toUpperCase(Locale.ROOT);
|
||||
if (Properties.PRICE_PRECISION <= 0) {
|
||||
line = line.replaceAll("\\.\\d*", ""); //remove too many decimal places
|
||||
} else {
|
||||
|
@ -8,6 +8,8 @@ import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import static com.Acrobot.ChestShop.Events.PreTransactionEvent.TransactionOutcome.CLIENT_DOES_NOT_HAVE_PERMISSION;
|
||||
import static com.Acrobot.ChestShop.Events.TransactionEvent.TransactionType.BUY;
|
||||
|
||||
@ -25,7 +27,7 @@ public class PermissionChecker implements Listener {
|
||||
TransactionEvent.TransactionType transactionType = event.getTransactionType();
|
||||
|
||||
for (ItemStack stock : event.getStock()) {
|
||||
String matID = stock.getType().toString().toLowerCase();
|
||||
String matID = stock.getType().toString().toLowerCase(Locale.ROOT);
|
||||
|
||||
boolean hasPerm;
|
||||
|
||||
|
@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@ -54,7 +55,7 @@ public enum Permission {
|
||||
}
|
||||
|
||||
public static boolean has(CommandSender sender, String node) {
|
||||
return sender.hasPermission(node) || sender.hasPermission(node.toLowerCase());
|
||||
return sender.hasPermission(node) || sender.hasPermission(node.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
public static boolean otherName(Player player, String name) {
|
||||
@ -64,15 +65,15 @@ public enum Permission {
|
||||
public static boolean otherName(Player player, Permission base, String name) {
|
||||
boolean hasBase = base != OTHER_NAME && otherName(player, OTHER_NAME, name);
|
||||
if (hasBase || has(player, base + ".*")) {
|
||||
return !hasPermissionSetFalse(player, base+ "." + name) && !hasPermissionSetFalse(player, base + "." + name.toLowerCase());
|
||||
return !hasPermissionSetFalse(player, base+ "." + name) && !hasPermissionSetFalse(player, base + "." + name.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
return has(player, base + "." + name) || has(player, base + "." + name.toLowerCase());
|
||||
return has(player, base + "." + name) || has(player, base + "." + name.toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
private static boolean hasPermissionSetFalse(CommandSender sender, String permission) {
|
||||
return (sender.isPermissionSet(permission) && !sender.hasPermission(permission))
|
||||
|| (sender.isPermissionSet(permission.toLowerCase()) && !sender.hasPermission(permission.toLowerCase()));
|
||||
|| (sender.isPermissionSet(permission.toLowerCase(Locale.ROOT)) && !sender.hasPermission(permission.toLowerCase(Locale.ROOT)));
|
||||
}
|
||||
|
||||
public static org.bukkit.permissions.Permission getPermission(Permission permission) {
|
||||
|
@ -19,6 +19,7 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.InventoryHolder;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
@ -56,7 +57,7 @@ public class ChestShopSign {
|
||||
|
||||
public static boolean isValid(String[] line) {
|
||||
line = StringUtil.stripColourCodes(line);
|
||||
return isValidPreparedSign(line) && (line[PRICE_LINE].toUpperCase().contains("B") || line[PRICE_LINE].toUpperCase().contains("S")) && !line[NAME_LINE].isEmpty();
|
||||
return isValidPreparedSign(line) && (line[PRICE_LINE].toUpperCase(Locale.ROOT).contains("B") || line[PRICE_LINE].toUpperCase(Locale.ROOT).contains("S")) && !line[NAME_LINE].isEmpty();
|
||||
}
|
||||
|
||||
public static boolean isValid(Block sign) {
|
||||
|
@ -22,6 +22,7 @@ import org.bukkit.event.Listener;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.logging.Level;
|
||||
@ -164,14 +165,14 @@ public class NameManager implements Listener {
|
||||
} catch (ExecutionException ignored) {}
|
||||
}
|
||||
|
||||
if (account == null && searchOfflinePlayer && !invalidPlayers.contains(shortName.toLowerCase())) {
|
||||
if (account == null && searchOfflinePlayer && !invalidPlayers.contains(shortName.toLowerCase(Locale.ROOT))) {
|
||||
// no account with that shortname was found, try to get an offline player with that name
|
||||
OfflinePlayer offlinePlayer = ChestShop.getBukkitServer().getOfflinePlayer(shortName);
|
||||
if (offlinePlayer != null && offlinePlayer.getName() != null && offlinePlayer.getUniqueId() != null
|
||||
&& offlinePlayer.getUniqueId().version() == uuidVersion) {
|
||||
account = storeUsername(new PlayerDTO(offlinePlayer.getUniqueId(), offlinePlayer.getName()));
|
||||
} else {
|
||||
invalidPlayers.put(shortName.toLowerCase(), true);
|
||||
invalidPlayers.put(shortName.toLowerCase(Locale.ROOT), true);
|
||||
}
|
||||
}
|
||||
return account;
|
||||
|
@ -17,6 +17,7 @@ import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Locale;
|
||||
import java.util.logging.Level;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipFile;
|
||||
@ -241,7 +242,7 @@ public class Updater {
|
||||
this.waitForThread();
|
||||
if (this.versionType != null) {
|
||||
for (ReleaseType type : ReleaseType.values()) {
|
||||
if (this.versionType.equals(type.name().toLowerCase())) {
|
||||
if (this.versionType.equals(type.name().toLowerCase(Locale.ROOT))) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user