Skip to content

Commit c2c6396

Browse files
committed
changes
It is named changes for the sake of spiting people as a joke. Hit CTRL + ALT + L on all files to format everything uniformly per IDEA defaults. Config Refactor: - ConfigDefaults renamed even tho it has nothing in it yet! - Lots of stuff moved out of Config and into more appropriate classes. Locale: - Code looked like it was trying to be a Singleton so I made it a Singleton. Tab Complete: - All SubCommands now support a SimpleNickPermission, used pretty much only for command autocomplete. Overkill? Maybe. - Set now has TabComplete. - Base Command now has TabComplete.
1 parent 87231a2 commit c2c6396

14 files changed

Lines changed: 276 additions & 187 deletions

File tree

README.md

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,41 @@ Mini-Message comes prepackaged with Paper and all forks of Paper support Mini-Me
1313
`/nick set <nickname> [player]`
1414

1515
- Sets the nickname of the player.
16-
- Supports Mini-Message Tags such as `<gray>` and `<gradient:red:green>`
17-
- Allows admins to change the nickname of another player using the optional [player] argument.
16+
- Uses Mini-Message Tags such as `<gray>` and `<gradient:red:green>`
17+
- Allows users with permission `simplenick.admin` to change the nickname of another player using the optional [player] argument.
1818

1919
`/nick reset [player]`
2020

2121
- Sets the nickname of the player back to the original username, unformatted.
22-
- Allows admins to reset the nickname of another player using the optional [player] argument.
22+
- Allows users with permission `simplenick.admin` to reset the nickname of another player using the optional [player] argument.
23+
24+
`/nick reload` (TODO)
25+
26+
- Reloads the configuration and locale.
27+
28+
`/nick help`
29+
30+
- Provides help text.
2331

2432
## Permissions
2533

26-
`simplenicks.admin`
34+
`simplenick.admin`
35+
36+
- Allows the player to change other player's nicknames.
37+
38+
`simplenicks.nick.<tag>` (TODO)
39+
40+
- Allows for the use of those Mini-Message tags.
41+
- Valid Tags are: `color`, `gradient`, `rainbow`, `underline`, `italic`, `strikethrough`, `bold`, `obsfucated`.
42+
- All Formatting Tags work using `simplenick.nick.format`.
43+
44+
`simplenicks.reload` (TODO)
45+
46+
- Allows the player to reload the plugin configuration and locale.
47+
48+
## TODO
2749

28-
- Admin Permission to change other player's nicknames.
50+
- Provide Config Option for TabList Changing and implement logic for TabList Update.
51+
- Create a `/nick whois` or similar command to determine "who is the player(s) with this nickname".
52+
- Add the option to change the regex check for display names (with a "potentially unsafe" warning).
53+
- Add the option to change the character limit on the fully parsed name.

src/main/java/adhdmc/simplenicks/LoginListener.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@
66
import org.bukkit.event.EventHandler;
77
import org.bukkit.event.Listener;
88
import org.bukkit.event.player.PlayerJoinEvent;
9-
import org.bukkit.event.player.PlayerLoginEvent;
109
import org.bukkit.persistence.PersistentDataContainer;
1110
import org.bukkit.persistence.PersistentDataType;
1211

1312
public class LoginListener implements Listener {
1413
//Basic save handling
1514
@EventHandler
16-
public void onPlayerLogin(PlayerJoinEvent joinEvent){
15+
public void onPlayerLogin(PlayerJoinEvent joinEvent) {
1716
Player player = joinEvent.getPlayer();
1817
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
1918
String pdcName = playerPDC.get(Set.nickNameSave, PersistentDataType.STRING);
20-
if (pdcName != null){
19+
if (pdcName != null) {
2120
Component savedName = SimpleNicks.getMiniMessage().deserialize(pdcName);
2221
player.displayName(savedName);
2322
}

src/main/java/adhdmc/simplenicks/SimpleNicks.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@
22

33
import adhdmc.simplenicks.commands.CommandHandler;
44
import adhdmc.simplenicks.commands.SubCommand;
5-
import adhdmc.simplenicks.commands.subcommands.Help;
6-
import adhdmc.simplenicks.commands.subcommands.Set;
7-
import adhdmc.simplenicks.config.ConfigDefaults;
5+
import adhdmc.simplenicks.commands.subcommands.*;
86
import adhdmc.simplenicks.config.Locale;
9-
import adhdmc.simplenicks.commands.subcommands.Reset;
107
import net.kyori.adventure.text.minimessage.MiniMessage;
118
import org.bukkit.plugin.Plugin;
129
import org.bukkit.plugin.java.JavaPlugin;
@@ -36,35 +33,31 @@ public final class SimpleNicks extends JavaPlugin {
3633
public void onEnable() {
3734
instance = this;
3835
registerSubCommands();
39-
locale = new Locale(this);
40-
locale.getLocaleConfig();
41-
ConfigDefaults.localeDefaults();
42-
ConfigDefaults.setFormatPerms();
43-
locale.saveConfig();
44-
ConfigDefaults.loadLocaleMessages();
36+
locale = Locale.getInstance();
4537
this.getCommand("nick").setExecutor(new CommandHandler());
4638
instance.getServer().getPluginManager().registerEvents(new LoginListener(), this);
4739
}
4840

49-
public static MiniMessage getMiniMessage(){
41+
public static MiniMessage getMiniMessage() {
5042
return miniMessage;
5143
}
5244

53-
public static Plugin getInstance(){
45+
public static Plugin getInstance() {
5446
return instance;
5547
}
5648

57-
public static Map<String, SubCommand> getSubCommands(){
49+
public static Map<String, SubCommand> getSubCommands() {
5850
return Collections.unmodifiableMap(subCommands);
5951
}
6052

61-
public static Locale getLocale(){
53+
public static Locale getLocale() {
6254
return locale;
6355
}
6456

65-
private void registerSubCommands(){
57+
private void registerSubCommands() {
6658
subCommands.put("reset", new Reset());
6759
subCommands.put("help", new Help());
6860
subCommands.put("set", new Set());
61+
subCommands.put("reload", new Reload());
6962
}
7063
}
Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,57 @@
11
package adhdmc.simplenicks.commands;
22

33
import adhdmc.simplenicks.SimpleNicks;
4-
import adhdmc.simplenicks.config.ConfigDefaults;
4+
import adhdmc.simplenicks.config.Locale.Message;
55
import net.kyori.adventure.text.minimessage.MiniMessage;
66
import org.bukkit.command.*;
7+
import org.bukkit.entity.Player;
78
import org.jetbrains.annotations.NotNull;
89
import org.jetbrains.annotations.Nullable;
910

10-
import java.util.Arrays;
11-
import java.util.List;
12-
import java.util.Locale;
11+
import java.util.*;
1312

1413

15-
public class CommandHandler implements CommandExecutor {
14+
public class CommandHandler implements CommandExecutor, TabCompleter {
1615

1716
@Override
1817
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
1918
MiniMessage miniMessage = SimpleNicks.getMiniMessage();
2019

2120
// Arguments Check
2221
if (args.length == 0) {
23-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.INVALID_COMMAND.getMessage())); // Invalid Arguments
22+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_COMMAND.getMessage())); // Invalid Arguments
2423
return true;
2524
}
2625

2726
// Execute Command
2827
SubCommand subCommand = SimpleNicks.getSubCommands().getOrDefault(args[0].toLowerCase(Locale.ENGLISH), null);
2928
if (subCommand == null) {
30-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.INVALID_COMMAND.getMessage())); // Invalid SubCommand
29+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_COMMAND.getMessage())); // Invalid SubCommand
3130
return true;
3231
}
3332
subCommand.execute(sender, Arrays.copyOfRange(args, 1, args.length));
3433
return true;
3534
}
35+
36+
37+
@Override
38+
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
39+
ArrayList<String> tabComplete = new ArrayList<>();
40+
if (args.length == 1) {
41+
for (SubCommand subCommand : SimpleNicks.getSubCommands().values()) {
42+
if (sender.hasPermission(subCommand.getPermission()) && subCommand.getName().startsWith(args[0].toLowerCase(Locale.ENGLISH))) {
43+
tabComplete.add(subCommand.getName());
44+
}
45+
}
46+
}
47+
else {
48+
SubCommand subCommand = SimpleNicks.getSubCommands().getOrDefault(args[0].toLowerCase(Locale.ENGLISH), null);
49+
if (subCommand == null) { return tabComplete; }
50+
if (sender.hasPermission(subCommand.getPermission())) {
51+
return subCommand.getSubcommandArguments(sender, Arrays.copyOfRange(args, 1, args.length));
52+
}
53+
}
54+
return tabComplete;
55+
}
3656
}
3757

src/main/java/adhdmc/simplenicks/commands/SubCommand.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package adhdmc.simplenicks.commands;
22

3+
import adhdmc.simplenicks.util.SimpleNickPermission;
34
import org.bukkit.command.CommandSender;
45

56
import java.util.List;
@@ -9,11 +10,13 @@ public abstract class SubCommand {
910
private final String name;
1011
private final String description;
1112
private final String syntax;
13+
private final SimpleNickPermission permission;
1214

13-
public SubCommand(String name, String description, String syntax) {
15+
public SubCommand(String name, String description, String syntax, SimpleNickPermission permission) {
1416
this.name = name;
1517
this.description = description;
1618
this.syntax = syntax;
19+
this.permission = permission;
1720
}
1821

1922
public String getName() {
@@ -28,6 +31,14 @@ public String getSyntax() {
2831
return syntax;
2932
}
3033

34+
public SimpleNickPermission getSimpleNickPermission() {
35+
return permission;
36+
}
37+
38+
public String getPermission() {
39+
return permission.getPermission();
40+
}
41+
3142
public abstract void execute(CommandSender sender, String[] args);
3243

3344
public abstract List<String> getSubcommandArguments(CommandSender sender, String[] args);

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package adhdmc.simplenicks.commands.subcommands;
22

33
import adhdmc.simplenicks.commands.SubCommand;
4+
import adhdmc.simplenicks.util.SimpleNickPermission;
45
import org.bukkit.command.CommandSender;
56

67
import java.util.List;
78

89
public class Help extends SubCommand {
910
public Help() {
10-
super("help", "Help command for SimpleNicks", "/nick help");
11+
super("help", "Help command for SimpleNicks", "/nick help", SimpleNickPermission.NICK_COMMAND);
1112
}
1213

1314
@Override

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package adhdmc.simplenicks.commands.subcommands;
22

33
import adhdmc.simplenicks.commands.SubCommand;
4+
import adhdmc.simplenicks.util.SimpleNickPermission;
45
import org.bukkit.command.CommandSender;
56

67
import java.util.List;
78

89
public class Reload extends SubCommand {
9-
public Reload(String name, String description, String syntax) {
10-
super(name, description, syntax);
10+
public Reload() {
11+
super("reload", "Reloads SimpleNicks Config and Locale", "/nick reload", SimpleNickPermission.NICK_RELOAD);
1112
}
1213

1314
@Override

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

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import adhdmc.simplenicks.SimpleNicks;
44
import adhdmc.simplenicks.commands.SubCommand;
5-
import adhdmc.simplenicks.config.ConfigDefaults;
5+
import adhdmc.simplenicks.config.Locale.Message;
6+
import adhdmc.simplenicks.util.SimpleNickPermission;
67
import net.kyori.adventure.text.minimessage.MiniMessage;
78
import org.bukkit.command.CommandSender;
89
import org.bukkit.entity.Player;
@@ -12,7 +13,7 @@
1213

1314
public class Reset extends SubCommand {
1415
public Reset() {
15-
super("reset", "Resets a nickname", "/nick reset");
16+
super("reset", "Resets a nickname", "/nick reset", SimpleNickPermission.NICK_RESET);
1617
}
1718

1819
@Override
@@ -21,33 +22,34 @@ public void execute(CommandSender sender, String[] args) {
2122

2223
// Player Check
2324
if (!(sender instanceof Player)) {
24-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.CONSOLE_CANNOT_RUN.getMessage())); // Invalid Usage (Not a Player)
25+
sender.sendMessage(miniMessage.deserialize(Message.CONSOLE_CANNOT_RUN.getMessage())); // Invalid Usage (Not a Player)
2526
return;
2627
}
2728
// Arguments Check
2829
if (args.length > 1) {
29-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.TOO_MANY_ARGUMENTS.getMessage())); // Too Many Arguments
30+
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage())); // Too Many Arguments
3031
return;
3132
}
3233
// TODO: Pull permissions from a common place.
33-
if (args.length == 1 && !sender.hasPermission(ConfigDefaults.SimpleNickPermission.NICK_ADMIN.getPermission())) {
34-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.NO_PERMISSION.getMessage())); // No Permission
34+
if (args.length == 1 && !sender.hasPermission(SimpleNickPermission.NICK_ADMIN.getPermission())) {
35+
sender.sendMessage(miniMessage.deserialize(Message.NO_PERMISSION.getMessage())); // No Permission
3536
return;
3637
}
3738
// Valid Player Check
3839
Player player = (args.length == 0) ? (Player) sender : SimpleNicks.getInstance().getServer().getPlayer(args[0]);
3940
if (player == null) {
40-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.INVALID_PLAYER.getMessage())); // Invalid Player
41+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_PLAYER.getMessage())); // Invalid Player
4142
return;
4243
}
43-
if (sender == player && !sender.hasPermission(ConfigDefaults.SimpleNickPermission.NICK_RESET.getPermission())) {
44-
sender.sendMessage(miniMessage.deserialize(ConfigDefaults.Message.TOO_MANY_ARGUMENTS.getMessage())); // No Permission
44+
if (sender == player && !sender.hasPermission(SimpleNickPermission.NICK_RESET.getPermission())) {
45+
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage())); // No Permission
4546
return;
4647
}
4748
// Set Nickname
4849
// TODO: Save to Player
4950
String playerPDCString = player.getPersistentDataContainer().get(Set.nickNameSave, PersistentDataType.STRING);
50-
if (playerPDCString != null) player.getPersistentDataContainer().remove(Set.nickNameSave); //held name for temp saving option
51+
if (playerPDCString != null)
52+
player.getPersistentDataContainer().remove(Set.nickNameSave); //held name for temp saving option
5153
player.displayName(miniMessage.deserialize(player.getName()));
5254
}
5355

0 commit comments

Comments
 (0)