Skip to content

Commit

Permalink
Add nickname filter (#485)
Browse files Browse the repository at this point in the history
* Add nickname filter

* Fix default nickname filter regex
  • Loading branch information
Draycia committed May 20, 2024
1 parent af12f92 commit fe6a794
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@ private void applyNickname(final Commander sender, final CarbonPlayer target, fi
return;
}

if (!sender.hasPermission("carbon.nickname.filter") && !plainNick.matches(this.config.primaryConfig().nickname().filter())) {
this.carbonMessages.nicknameErrorFilter(sender, parsedNick);
return;
}

target.nickname(parsedNick);

if (sender instanceof PlayerCommander playerCommander
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,22 @@ public boolean updateChecker() {
public static void upgrade(final ConfigurationNode node) {
final ConfigurationTransformation.VersionedBuilder builder = ConfigurationTransformation.versionedBuilder()
.versionKey(ConfigManager.CONFIG_VERSION_KEY);

final ConfigurationTransformation initial = ConfigurationTransformation.builder()
.addAction(NodePath.path("use-carbon-nicknames"), (path, value) -> new Object[]{"nickname-settings", "use-carbon-nicknames"})
.build();
builder.addVersion(0, initial);

final ConfigurationTransformation one = ConfigurationTransformation.builder()
.addAction(NodePath.path("party-chat"), (path, value) -> new Object[]{"party-chat", "enabled"})
.build();
builder.addVersion(1, one);

final ConfigurationTransformation two = ConfigurationTransformation.builder()
.addAction(NodePath.path("nickname-settings"), (path, value) -> new Object[]{"filter", ".*"})
.build();
builder.addVersion(2, two);

final ConfigurationTransformation.Versioned upgrader = builder.build();
final int from = upgrader.version(node);
try {
Expand All @@ -219,6 +227,9 @@ public static final class NicknameSettings {

private List<String> blackList = List.of("notch", "admin");

@Comment("Regex pattern nicknames must match in order to be applied, can be bypassed with the permission 'carbon.nickname.filter'.")
private String filter = "^[a-zA-Z0-9_]*$";

@Comment("Format used when displaying nicknames.")
public String format = "<hover:show_text:'<gray>@</gray><username>'><gray>~</gray><nickname></hover>";

Expand All @@ -233,6 +244,10 @@ public List<String> blackList() {
return this.blackList;
}

public String filter() {
return this.filter;
}

public int minLength() {
return this.minLength;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,9 @@ void nicknameErrorCharacterLimit(
@Message("nickname.error.blacklist")
void nicknameErrorBlackList(final Audience audience, final Component nickname);

@Message("nickname.error.filter")
void nicknameErrorFilter(final Audience audience, final Component nickname);

@Message("nickname.show.others")
void nicknameShowOthers(final Audience audience, final String target, final Component nickname);

Expand Down
1 change: 1 addition & 0 deletions common/src/main/resources/locale/messages-en_US.properties
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ nickname.show.unset=<red>You do not have a nickname set
nickname.show=<green>Your nickname is </green><nickname>
nickname.error.character_limit=<red>Nickname "<nickname>" has exceeded the character limit. Must be set to <min_length>~<max_length> characters.
nickname.error.blacklist=<red>Nickname "<nickname>" is not allowed. Please choose another name.
nickname.error.filter=<red>Nicknames must be alphanumeric!
reply.target.missing=<red>You have no-one to reply to
reply.target.self=<red>You cannot whisper to yourself
whisper.console=<gold>[<green><sender_display_name></green>] -> [<green><recipient_display_name></green>] <message>
Expand Down

0 comments on commit fe6a794

Please sign in to comment.