diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index ae7814153c8..7bd7352896c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -406,6 +406,8 @@ public interface ISettings extends IConf { boolean showZeroBaltop(); + String getNickRegex(); + int getMaxItemLore(); enum KeepInvPolicy { diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index 628271bc969..db857b0d083 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -1944,6 +1944,11 @@ public boolean showZeroBaltop() { return config.getBoolean("show-zero-baltop", true); } + @Override + public String getNickRegex() { + return config.getString("nick-regex", "^[a-zA-Z_0-9§]+$"); + } + @Override public int getMaxItemLore() { return config.getInt("max-itemlore-lines", 10); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java index 699fef7130d..dfbcd2c110c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java @@ -64,7 +64,7 @@ protected void updatePlayer(final Server server, final CommandSource sender, fin private String formatNickname(final User user, final String nick) throws Exception { final String newNick = user == null ? FormatUtil.replaceFormat(nick) : FormatUtil.formatString(user, "essentials.nick", nick); - if (!newNick.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$") && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) { + if (!newNick.matches(ess.getSettings().getNickRegex()) && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) { throw new Exception(tl("nickNamesAlpha")); } else if (getNickLength(newNick) > ess.getSettings().getMaxNickLength()) { throw new Exception(tl("nickTooLong")); diff --git a/Essentials/src/main/resources/config.yml b/Essentials/src/main/resources/config.yml index 9ce30622d36..f5fc0224959 100644 --- a/Essentials/src/main/resources/config.yml +++ b/Essentials/src/main/resources/config.yml @@ -33,6 +33,11 @@ nickname-prefix: '~' # The maximum length allowed in nicknames. The nickname prefix is not included in this. max-nick-length: 15 +# The regex pattern to use when checking the nickname change. +# If the pattern is not matched, the nickname will be rejected. +# To bypass this check, users need the essentials.nick.allowunsafe permission. +nick-regex: '^[a-zA-Z_0-9§]+$' + # A list of phrases that cannot be used in nicknames. You can include regular expressions here. # Users with essentials.nick.blacklist.bypass will be able to bypass this filter. nick-blacklist: