extract methods for shorter functions and use early returns
This commit is contained in:
parent
7cc7cca129
commit
3d010e4139
|
|
@ -45,13 +45,83 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
|
||||||
if (sender instanceof Player player) {
|
if (!(sender instanceof Player player)) {
|
||||||
|
sender.sendMessage("Console commands are disabled.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.ALL));
|
sender.sendRichMessage(helpMessage(sender, HelpType.ALL));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
switch (args[0].toLowerCase()) {
|
switch (args[0].toLowerCase()) {
|
||||||
case "set":
|
case "set" -> setNickname(sender, args, player);
|
||||||
|
case "review" -> reviewNickname(sender, args, player);
|
||||||
|
case "request" -> requestNickname(sender, args, player);
|
||||||
|
case "try" -> tryNickname(sender, args, player);
|
||||||
|
case "current" -> showCurrentNickname(sender, player);
|
||||||
|
case "help" ->
|
||||||
|
sender.sendRichMessage(helpMessage(sender, HelpType.ALL) + "For more info on nicknames and how to use rgb colors go to: <aqua>https://alttd.com/nicknames<white>");
|
||||||
|
default -> sender.sendRichMessage(helpMessage(sender, HelpType.ALL));
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showCurrentNickname(@NotNull CommandSender sender, Player player) {
|
||||||
|
if (!hasPermission(sender, "chat.command.nick.current")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ChatUser chatUser = ChatUserManager.getChatUser(player.getUniqueId());
|
||||||
|
TagResolver placeholders = TagResolver.resolver(
|
||||||
|
Placeholder.component("nickname", chatUser.getDisplayName()),
|
||||||
|
Placeholder.parsed("currentnickname", chatUser.getNickNameString())
|
||||||
|
);
|
||||||
|
player.sendRichMessage(Config.NICK_CURRENT, placeholders);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tryNickname(@NotNull CommandSender sender, String[] args, Player player) {
|
||||||
|
if (args.length != 2 || !hasPermission(sender, "chat.command.nick.try")) {
|
||||||
|
sender.sendRichMessage(helpMessage(sender, HelpType.TRY));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LuckPerms api = ChatAPI.get().getLuckPerms();
|
||||||
|
if (api == null) {
|
||||||
|
sender.sendRichMessage(Config.NICK_NO_LUCKPERMS);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!NickUtilities.validNick(player, player, args[1])) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sender.sendRichMessage(Config.NICK_TRYOUT,
|
||||||
|
Placeholder.component("prefix", Utility.applyColor(api.getUserManager().getUser(player.getUniqueId())
|
||||||
|
.getCachedData().getMetaData().getPrefix())), // TODO pull this from chatuser?
|
||||||
|
Placeholder.component("nick", Utility.applyColor(args[1])),
|
||||||
|
Placeholder.unparsed("nickrequest", args[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void requestNickname(@NotNull CommandSender sender, String[] args, Player player) {
|
||||||
|
if (args.length != 2 || !hasPermission(sender, "chat.command.nick.request")) {
|
||||||
|
sender.sendRichMessage(helpMessage(sender, HelpType.REQUEST));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
handleNickRequest(player, args[1]);
|
||||||
|
}
|
||||||
|
}.runTaskAsynchronously(ChatPlugin.getInstance());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reviewNickname(@NotNull CommandSender sender, String[] args, Player player) {
|
||||||
|
if (args.length != 1 || !hasPermission(sender, "chat.command.nick.review")) {
|
||||||
|
sender.sendRichMessage(helpMessage(sender, HelpType.REVIEW));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
NicknamesGui nicknamesGui = new NicknamesGui();
|
||||||
|
ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance());
|
||||||
|
nicknamesGui.openInventory(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setNickname(@NotNull CommandSender sender, String[] args, Player player) {
|
||||||
if (args.length == 2 && hasPermission(sender, "chat.command.nick.set")) {
|
if (args.length == 2 && hasPermission(sender, "chat.command.nick.set")) {
|
||||||
handleNick(player, player, args[1]);
|
handleNick(player, player, args[1]);
|
||||||
} else if (args.length == 3 && hasPermission(sender, "chat.command.nick.set.others")) {
|
} else if (args.length == 3 && hasPermission(sender, "chat.command.nick.set.others")) {
|
||||||
|
|
@ -65,67 +135,6 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
} else if (args.length > 3) {
|
} else if (args.length > 3) {
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.SET_SELF, HelpType.SET_OTHERS));
|
sender.sendRichMessage(helpMessage(sender, HelpType.SET_SELF, HelpType.SET_OTHERS));
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
case "review":
|
|
||||||
if (args.length == 1 && hasPermission(sender, "chat.command.nick.review")) {
|
|
||||||
NicknamesGui nicknamesGui = new NicknamesGui();
|
|
||||||
ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance());
|
|
||||||
nicknamesGui.openInventory(player);
|
|
||||||
} else {
|
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.REVIEW));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "request":
|
|
||||||
if (args.length == 2 && hasPermission(sender, "chat.command.nick.request")) {
|
|
||||||
new BukkitRunnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
handleNickRequest(player, args[1]);
|
|
||||||
}
|
|
||||||
}.runTaskAsynchronously(ChatPlugin.getInstance());
|
|
||||||
} else {
|
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.REQUEST));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "try":
|
|
||||||
if (args.length == 2 && hasPermission(sender, "chat.command.nick.try")) {
|
|
||||||
LuckPerms api = ChatAPI.get().getLuckPerms();
|
|
||||||
if (api != null) {
|
|
||||||
if (NickUtilities.validNick(player, player, args[1])) {
|
|
||||||
sender.sendRichMessage(Config.NICK_TRYOUT,
|
|
||||||
Placeholder.component("prefix", Utility.applyColor(api.getUserManager().getUser(player.getUniqueId())
|
|
||||||
.getCachedData().getMetaData().getPrefix())), // TODO pull this from chatuser?
|
|
||||||
Placeholder.component("nick", Utility.applyColor(args[1])),
|
|
||||||
Placeholder.unparsed("nickrequest", args[1]));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sender.sendRichMessage(Config.NICK_NO_LUCKPERMS);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.TRY));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "current":
|
|
||||||
if (hasPermission(sender, "chat.command.nick.current")) {
|
|
||||||
ChatUser chatUser = ChatUserManager.getChatUser(player.getUniqueId());
|
|
||||||
TagResolver placeholders = TagResolver.resolver(
|
|
||||||
Placeholder.component("nickname", chatUser.getDisplayName()),
|
|
||||||
Placeholder.parsed("currentnickname", chatUser.getNickNameString())
|
|
||||||
);
|
|
||||||
player.sendRichMessage(Config.NICK_CURRENT, placeholders);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "help":
|
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.ALL)
|
|
||||||
+ "For more info on nicknames and how to use rgb colors go to: <aqua>https://alttd.com/nicknames<white>");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
sender.sendRichMessage(helpMessage(sender, HelpType.ALL));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
sender.sendMessage("Console commands are disabled.");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -136,6 +145,33 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (args.length == 1) {
|
if (args.length == 1) {
|
||||||
|
tabCompleteArgLengthOne(sender, args, completions);
|
||||||
|
} else if (args.length == 2) {
|
||||||
|
tabCompleteArgLengthTwo(sender, args, completions);
|
||||||
|
}
|
||||||
|
return completions;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void tabCompleteArgLengthTwo(CommandSender sender, String[] args, List<String> completions) {
|
||||||
|
if (!args[0].equalsIgnoreCase("set")) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<String> choices = new ArrayList<>();
|
||||||
|
List<String> onlinePlayers = new ArrayList<>();
|
||||||
|
Bukkit.getOnlinePlayers().forEach(a -> onlinePlayers.add(a.getName()));
|
||||||
|
|
||||||
|
if (sender.hasPermission("chat.command.nick.set.others")) {
|
||||||
|
choices.addAll(onlinePlayers);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (String s : choices) {
|
||||||
|
if (s.startsWith(args[1])) {
|
||||||
|
completions.add(s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void tabCompleteArgLengthOne(CommandSender sender, String[] args, List<String> completions) {
|
||||||
List<String> choices = new ArrayList<>();
|
List<String> choices = new ArrayList<>();
|
||||||
if (sender.hasPermission("chat.command.nick.set")) {
|
if (sender.hasPermission("chat.command.nick.set")) {
|
||||||
choices.add("set");
|
choices.add("set");
|
||||||
|
|
@ -159,24 +195,6 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
completions.add(s);
|
completions.add(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (args.length == 2) {
|
|
||||||
if (args[0].equalsIgnoreCase("set")) {
|
|
||||||
List<String> choices = new ArrayList<>();
|
|
||||||
List<String> onlinePlayers = new ArrayList<>();
|
|
||||||
Bukkit.getOnlinePlayers().forEach(a -> onlinePlayers.add(a.getName()));
|
|
||||||
|
|
||||||
if (sender.hasPermission("chat.command.nick.set.others")) {
|
|
||||||
choices.addAll(onlinePlayers);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String s : choices) {
|
|
||||||
if (s.startsWith(args[1])) {
|
|
||||||
completions.add(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return completions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleNickRequest(Player player, String nickName) {
|
private void handleNickRequest(Player player, String nickName) {
|
||||||
|
|
@ -261,31 +279,13 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
|
|
||||||
private void handleNick(Player sender, OfflinePlayer target, final String nickName) {
|
private void handleNick(Player sender, OfflinePlayer target, final String nickName) {
|
||||||
if (nickName.equalsIgnoreCase("off")) {
|
if (nickName.equalsIgnoreCase("off")) {
|
||||||
|
handleNickOff(sender, target);
|
||||||
try {
|
|
||||||
if (target.isOnline()) {
|
|
||||||
resetNick(Objects.requireNonNull(target.getPlayer()));
|
|
||||||
}
|
|
||||||
Queries.removePlayerFromDataBase(target.getUniqueId());
|
|
||||||
NickCache.remove(target.getUniqueId());
|
|
||||||
nickCacheUpdate.add(target.getUniqueId());
|
|
||||||
} catch (SQLException e) {
|
|
||||||
ALogger.error("Failed to remove nickname from database", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!sender.equals(target)) {
|
|
||||||
sender.sendRichMessage(Config.NICK_RESET_OTHERS,
|
|
||||||
Placeholder.unparsed("player", Objects.requireNonNull(target.getName())));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (target.isOnline() && target.getPlayer() != null) {
|
|
||||||
target.getPlayer().sendRichMessage(Config.NICK_RESET);
|
|
||||||
}
|
|
||||||
|
|
||||||
NickEvent nickEvent = new NickEvent(sender.getName(), target.getName(), null, NickEvent.NickEventType.RESET);
|
|
||||||
nickEvent.callEvent();
|
|
||||||
|
|
||||||
} else if (NickUtilities.validNick(sender, target, nickName)) {
|
} else if (NickUtilities.validNick(sender, target, nickName)) {
|
||||||
|
setValidNick(sender, target, nickName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setValidNick(Player sender, OfflinePlayer target, String nickName) {
|
||||||
if (target.isOnline()) {
|
if (target.isOnline()) {
|
||||||
setNick(target.getPlayer(), nickName);
|
setNick(target.getPlayer(), nickName);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -322,6 +322,30 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
||||||
Placeholder.unparsed("nickname", getNick(target.getPlayer())));
|
Placeholder.unparsed("nickname", getNick(target.getPlayer())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleNickOff(Player sender, OfflinePlayer target) {
|
||||||
|
try {
|
||||||
|
if (target.isOnline()) {
|
||||||
|
resetNick(Objects.requireNonNull(target.getPlayer()));
|
||||||
|
}
|
||||||
|
Queries.removePlayerFromDataBase(target.getUniqueId());
|
||||||
|
NickCache.remove(target.getUniqueId());
|
||||||
|
nickCacheUpdate.add(target.getUniqueId());
|
||||||
|
} catch (SQLException e) {
|
||||||
|
ALogger.error("Failed to remove nickname from database", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!sender.equals(target)) {
|
||||||
|
sender.sendRichMessage(Config.NICK_RESET_OTHERS,
|
||||||
|
Placeholder.unparsed("player", Objects.requireNonNull(target.getName())));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (target.isOnline() && target.getPlayer() != null) {
|
||||||
|
target.getPlayer().sendRichMessage(Config.NICK_RESET);
|
||||||
|
}
|
||||||
|
|
||||||
|
NickEvent nickEvent = new NickEvent(sender.getName(), target.getName(), null, NickEvent.NickEventType.RESET);
|
||||||
|
nickEvent.callEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String helpMessage(final CommandSender sender, final HelpType... helpTypes) {
|
private String helpMessage(final CommandSender sender, final HelpType... helpTypes) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user