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
|
||||
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) {
|
||||
sender.sendRichMessage(helpMessage(sender, HelpType.ALL));
|
||||
return true;
|
||||
}
|
||||
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")) {
|
||||
handleNick(player, player, args[1]);
|
||||
} 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) {
|
||||
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
|
||||
|
|
@ -136,6 +145,33 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
|||
}
|
||||
|
||||
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<>();
|
||||
if (sender.hasPermission("chat.command.nick.set")) {
|
||||
choices.add("set");
|
||||
|
|
@ -159,24 +195,6 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
|||
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) {
|
||||
|
|
@ -261,31 +279,13 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
|||
|
||||
private void handleNick(Player sender, OfflinePlayer target, final String nickName) {
|
||||
if (nickName.equalsIgnoreCase("off")) {
|
||||
|
||||
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();
|
||||
|
||||
handleNickOff(sender, target);
|
||||
} else if (NickUtilities.validNick(sender, target, nickName)) {
|
||||
setValidNick(sender, target, nickName);
|
||||
}
|
||||
}
|
||||
|
||||
private void setValidNick(Player sender, OfflinePlayer target, String nickName) {
|
||||
if (target.isOnline()) {
|
||||
setNick(target.getPlayer(), nickName);
|
||||
} else {
|
||||
|
|
@ -322,6 +322,30 @@ public class Nicknames implements CommandExecutor, TabCompleter {
|
|||
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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user