Skip to content

Commit 1e70d9c

Browse files
committed
Config works now. And then I hyperfocused
1 parent c9f666c commit 1e70d9c

8 files changed

Lines changed: 82 additions & 19 deletions

File tree

src/main/java/adhdmc/simplenicks/commands/subcommands/Reload.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import adhdmc.simplenicks.config.Locale;
66
import adhdmc.simplenicks.util.Message;
77
import adhdmc.simplenicks.util.SimpleNickPermission;
8+
import net.kyori.adventure.text.format.TextColor;
89
import net.kyori.adventure.text.minimessage.MiniMessage;
910
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
1011
import org.bukkit.command.CommandSender;
12+
import org.bukkit.entity.Player;
1113

1214
import java.util.List;
1315

@@ -27,6 +29,12 @@ public void execute(CommandSender sender, String[] args) {
2729
Locale.getInstance().loadLocaleMessages();
2830
SimpleNicks.getInstance().reloadConfig();
2931
sender.sendMessage(miniMessage.deserialize(Message.CONFIG_RELOADED.getMessage(), Placeholder.parsed("prefix", Message.PREFIX.getMessage())));
32+
if (SimpleNicks.getInstance().getConfig().getString("nickname-regex") == null || SimpleNicks.getInstance().getConfig().getString("nickname-regex").isEmpty()){
33+
SimpleNicks.getSimpleNicksLogger().severe(Message.BAD_REGEX.getMessage());
34+
if (sender instanceof Player player){
35+
player.sendMessage(miniMessage.deserialize(Message.BAD_REGEX.getMessage()).color(TextColor.color(202, 27, 27)));
36+
}
37+
}
3038
}
3139

3240
@Override

src/main/java/adhdmc/simplenicks/commands/subcommands/Reset.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public void execute(CommandSender sender, String[] args) {
3232
return;
3333
}
3434
// Admin Check
35-
if (args.length == 1 && !sender.hasPermission(SimpleNickPermission.NICK_ADMIN.getPermission())) {
35+
if (args.length == 1 && !sender.hasPermission(SimpleNickPermission.NICK_RESET_OTHERS.getPermission())) {
3636
sender.sendMessage(miniMessage.deserialize(Message.NO_PERMISSION.getMessage(), Placeholder.parsed("prefix", Message.PREFIX.getMessage()))); // No Permission
3737
return;
3838
}

src/main/java/adhdmc/simplenicks/commands/subcommands/Set.java

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ public class Set extends SubCommand {
2020

2121
public static final NamespacedKey nickNameSave = new NamespacedKey(SimpleNicks.getInstance(), "nickname");
2222

23-
private int MAX_NICKNAME_LENGTH = SimpleNicks.getInstance().getConfig().getInt("max-nickname-length");// TODO: Change this temporary constant into a config option.
24-
private String NICKNAME_REGEX = SimpleNicks.getInstance().getConfig().getString("nickname-regex"); // TODO: Change this temporary constant into a config option.
2523

2624
public Set() {
2725
super("set", "sets a nickname", "/nick set", SimpleNickPermission.NICK_COMMAND);
@@ -30,9 +28,16 @@ public Set() {
3028
@Override
3129
public void execute(CommandSender sender, String[] args) {
3230
MiniMessage miniMessage = SimpleNicks.getMiniMessage();
31+
int MAX_NICKNAME_LENGTH = SimpleNicks.getInstance().getConfig().getInt("max-nickname-length");
32+
String NICKNAME_REGEX = SimpleNicks.getInstance().getConfig().getString("nickname-regex");
33+
if (NICKNAME_REGEX == null || NICKNAME_REGEX.isEmpty()) {
34+
SimpleNicks.getSimpleNicksLogger().severe(Message.BAD_REGEX.getMessage());
35+
NICKNAME_REGEX = "[A-Za-z0-9_]+";
36+
}
37+
3338

3439
// Player Check
35-
if (!(sender instanceof Player)) {
40+
if (!(sender instanceof Player sendingPlayer)) {
3641
sender.sendMessage(miniMessage.deserialize(Message.CONSOLE_CANNOT_RUN.getMessage())); // Invalid Usage (Not a Player)
3742
return;
3843
}
@@ -57,10 +62,6 @@ public void execute(CommandSender sender, String[] args) {
5762

5863
// Nickname Validity Check
5964
String nicknameStripped = miniMessage.stripTags(args[0]);
60-
SimpleNicks.getSimpleNicksLogger().info("Nickname Stripped: " + nicknameStripped);
61-
SimpleNicks.getSimpleNicksLogger().info("Current max nick length: " + MAX_NICKNAME_LENGTH);
62-
// TODO: Allow regex to be modifiable by config.
63-
// TODO: Check if the person has permissions to use the tags, perms & their connected tags are in ConfigDefaults - RhythmicSys
6465
if (!nicknameStripped.matches(NICKNAME_REGEX)) {
6566
sender.sendMessage(miniMessage.deserialize(Message.INVALID_NICK_REGEX.getMessage(),
6667
Placeholder.parsed("prefix", Message.PREFIX.getMessage()),
@@ -89,10 +90,15 @@ public void execute(CommandSender sender, String[] args) {
8990
// Saves to PDC
9091
//temporary saving option
9192
String nickToSave = args[0];
92-
//TODO: config option for admin settings to be restricted to their own permissions
93-
Component nickname;
93+
Component nickname = null;
9494
if (sender.hasPermission(SimpleNickPermission.NICK_ADMIN.getPermission())) {
95-
nickname = miniMessage.deserialize(args[0]);
95+
if (sendingPlayer.hasPermission(SimpleNickPermission.NICK_OTHERS_FULL.getPermission())){
96+
nickname = miniMessage.deserialize(args[0]);
97+
} else if (sendingPlayer.hasPermission(SimpleNickPermission.NICK_OTHERS_BASIC.getPermission())) {
98+
nickname = parseMessageContent(sendingPlayer, args[0]);
99+
} else if (sendingPlayer.hasPermission(SimpleNickPermission.NICK_OTHERS_RESTRICTIVE.getPermission())) {
100+
nickname = parseMessageContent(player, args[0]);
101+
}
96102
} else {
97103
Component fullyParsed = miniMessage.deserialize(args[0]);
98104
Component permissionParsed = parseMessageContent(player, args[0]);
@@ -103,10 +109,29 @@ public void execute(CommandSender sender, String[] args) {
103109
return;
104110
}
105111
}
112+
//idk it says this might be null, I hope it's not but just in case lol
113+
if (nickname == null) {
114+
sender.sendMessage(miniMessage.deserialize(Message.NICK_NULL.getMessage()));
115+
return;
116+
}
106117
player.getPersistentDataContainer().set(nickNameSave, PersistentDataType.STRING, nickToSave);
107-
//---
118+
//set their nickname
108119
player.displayName(nickname);
109-
player.sendMessage(miniMessage.deserialize(Message.NICK_CHANGED_SELF.getMessage(), Placeholder.component("nickname", nickname), Placeholder.parsed("prefix", Message.PREFIX.getMessage())));
120+
//Send feedback if an admin is setting someone's name, both to the admin and player
121+
if (sendingPlayer != player) {
122+
sendingPlayer.sendMessage(miniMessage.deserialize(Message.NICK_CHANGE_OTHER.getMessage(),
123+
Placeholder.parsed("player", player.getName()),
124+
Placeholder.component("nickname", nickname),
125+
Placeholder.parsed("prefix", Message.PREFIX.getMessage())));
126+
player.sendMessage(miniMessage.deserialize(Message.NICK_CHANGED_BY_OTHER.getMessage(),
127+
Placeholder.component("player", sendingPlayer.displayName()),
128+
Placeholder.component("nickname", nickname)));
129+
} else {
130+
//If a player sets their own name
131+
player.sendMessage(miniMessage.deserialize(Message.NICK_CHANGED_SELF.getMessage(),
132+
Placeholder.component("nickname", nickname),
133+
Placeholder.parsed("prefix", Message.PREFIX.getMessage())));
134+
}
110135
}
111136

112137
@Override

src/main/java/adhdmc/simplenicks/config/Locale.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,12 @@ private void setLocaleDefaults() {
104104
locale.addDefault("help-minimessage", "<aqua>· <yellow>Formatting: \n <gray>This plugin uses minimessage formatting. You can find a format viewer <aqua><u><click:open_url:'https://webui.adventure.kyori.net/'>here</click></u></aqua>");
105105
locale.addDefault("config-reload", "<prefix><gold>SimpleNicks config and locale reloaded");
106106
locale.addDefault("nick-changed-self", "<prefix><green>Changed your own nickname to <nickname>!");
107-
locale.addDefault("nick-changed-other", "<prefix><green>Changed <username>'s nickname to <nickname>");
107+
locale.addDefault("nick-change-other", "<prefix><green>Changed <username>'s nickname to <nickname>");
108+
locale.addDefault("nick-changed-by-other", "<prefix><green><sender> changed your nickname to<reset><nickname><green>!");
108109
locale.addDefault("nick-reset-self", "<prefix><green>Reset your own nickname!");
109110
locale.addDefault("nick-reset-other", "<prefix><green>Reset <username>'s nickname.");
111+
locale.addDefault("no-regex", "nickname-regex is null or malformed in file 'config.yml'. Please fix this");
112+
locale.addDefault("nick-is-null", "<red>Something went wrong and the nickname is null, please check your formatting");
110113
}
111114
}
112115

src/main/java/adhdmc/simplenicks/util/Message.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,13 @@ public enum Message {
1212
INVALID_NICK_REGEX("<prefix><red>Not a valid nickname, must follow regex: <regex>"),
1313
INVALID_NICK_TOO_LONG("<prefix><red>Nickname is too long, must be <= <value>"),
1414
INVALID_TAGS("<prefix><red>You have used a color or formatting tag you do not have permission to use. Please try again"),
15+
BAD_REGEX("'nickname-regex' is null or malformed in file 'config.yml'. Please fix this"),
16+
NICK_NULL("<red>Something went wrong and the nickname is null, please check your formatting"),
1517
//plugin messages
1618
PREFIX("<aqua>SimpleNicks <white>» "),
1719
NICK_CHANGED_SELF("<prefix><green>Changed your own nickname to <nickname>!"),
18-
NICK_CHANGED_OTHER("<prefix><green>Changed <username>'s nickname to <nickname>"),
20+
NICK_CHANGE_OTHER("<prefix><green>Changed <player>'s nickname to <nickname>"),
21+
NICK_CHANGED_BY_OTHER("<prefix><green><sender> changed your nickname to<reset><nickname><green>!"),
1922
NICK_RESET_SELF("<prefix><green>Reset your own nickname!"),
2023
NICK_RESET_OTHER("<prefix><green>Reset <username>'s nickname."),
2124
//other

src/main/java/adhdmc/simplenicks/util/SimpleNickPermission.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public enum SimpleNickPermission {
99
NICK_COLOR("simplenick.nick.color", StandardTags.color()),
1010
NICK_GRADIENT("simplenick.nick.gradient", StandardTags.gradient()),
1111
NICK_RAINBOW("simplenick.nick.rainbow", StandardTags.rainbow()),
12+
NICK_FORMAT_RESET("simplenick.nick.format.reset", StandardTags.reset()),
1213
NICK_UNDERLINE("simplenick.nick.format.underline", StandardTags.decorations(TextDecoration.UNDERLINED)),
1314
NICK_ITALIC("simplenick.nick.format.italic", StandardTags.decorations(TextDecoration.ITALIC)),
1415
NICK_STRIKETHROUGH("simplenick.nick.format.strikethrough", StandardTags.decorations(TextDecoration.STRIKETHROUGH)),
@@ -17,6 +18,10 @@ public enum SimpleNickPermission {
1718
//Command Perms
1819
NICK_COMMAND("simplenick.nick.set", null),
1920
NICK_ADMIN("simplenick.admin", null),
21+
NICK_OTHERS_RESTRICTIVE("simplenick.admin.restrictive", null),
22+
NICK_OTHERS_BASIC("simplenick.admin.basic", null),
23+
NICK_OTHERS_FULL("simplenick.admin.full", null),
24+
NICK_RESET_OTHERS("simplenick.admin.reset", null),
2025
NICK_RESET("simplenick.nick.reset", null),
2126
NICK_RELOAD("simplenick.reload", null),
2227
NICK_USERNAME_BYPASS("simplenick.usernamebypass", null);

src/main/resources/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#
22
# The max amount of characters a nickname should be, not including formatting
33
#(so a name like <red>Billy<yellow>Bob would only count 'BillyBob' - and would be 8 characters)
4+
#Setting this number to any number below "3" could cause unintended side effects
45
max-nickname-length: 30
56

67
# The regex of valid final nickname characters.

src/main/resources/plugin.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,27 @@ permissions:
1313
simplenick.admin:
1414
description: allows user to set and reset other players' nicknames
1515
default: op
16+
simplenick.admin.reset:
17+
default: op
18+
description: Allows the user to clear another player's nickname
19+
simplenick.admin.restrictive:
20+
default: op
21+
description: Allows the user to set another player's nickname, but uses the formatting permissions of the other player
22+
simplenick.admin.basic:
23+
default: op
24+
description: Allows the user to set another player's nickname, using the formatting permissions assigned to the player with the 'admin.basic' permission
25+
simplenick.admin.full:
26+
default: false
27+
description: Allows the user to set another player's nickname, does not check the formatting permissions delegated to either player
1628
simplenick.reload:
1729
description: allows a user to reload the locale and config of this plugin
1830
default: op
1931
simplenick.usernamebypass:
2032
description: allows user to nickname themselves another person's username
2133
default: false
34+
simplenick.nick:
35+
description: base of all formatting permissions
36+
default: op
2237
simplenick.nick.set:
2338
description: allows usage of the /nick command
2439
default: op
@@ -34,15 +49,18 @@ permissions:
3449
simplenick.nick.rainbow:
3550
description: allows the rainbow tag to be used in a nickname
3651
default: op
37-
simplenicks.nick.format.italic:
52+
simplenick.nick.format.reset:
53+
description: allows the reset formatting tag to be used in a nickname
54+
default: op
55+
simplenick.nick.format.italic:
3856
description: allows the italic formatting tag to be used in a nickname
3957
default: op
40-
simplenicks.nick.format.strikethrough:
58+
simplenick.nick.format.strikethrough:
4159
description: allows the strikethrough formatting tag to be used in a nickname
4260
default: op
43-
simplenicks.nick.format.bold:
61+
simplenick.nick.format.bold:
4462
description: allows the bold format tag to be used in a nickname
4563
default: op
46-
simplenicks.nick.format.obfuscated:
64+
simplenick.nick.format.obfuscated:
4765
description: allows the obfuscated format tag to be used in a nickname
4866
default: op

0 commit comments

Comments
 (0)