Change some minor things to Nicknames

This commit is contained in:
Len 2022-10-01 13:47:20 +02:00
parent df4ff7f6b3
commit 4b947996da
3 changed files with 58 additions and 62 deletions

View File

@ -20,6 +20,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -40,31 +41,30 @@ public class Nicknames implements CommandExecutor, TabCompleter {
} }
@Override @Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
Player player = (Player) sender;
if (args.length == 0) { if (args.length == 0) {
sender.sendMessage(format(helpMessage(sender, HelpType.ALL))); sender.sendMessage(format(helpMessage(sender, HelpType.ALL)));
return true; return true;
} }
switch (args[0].toLowerCase()){ switch (args[0].toLowerCase()) {
case "set": case "set":
if (args.length == 2 && hasPermission(sender, "utility.nick.set")){ if (args.length == 2 && hasPermission(sender, "utility.nick.set")) {
handleNick(player, player, args[1]); handleNick(player, player, args[1]);
} else if (args.length == 3 && hasPermission(sender, "utility.nick.set.others")){ } else if (args.length == 3 && hasPermission(sender, "utility.nick.set.others")) {
OfflinePlayer offlinePlayer = sender.getServer().getOfflinePlayer(args[1]); OfflinePlayer offlinePlayer = sender.getServer().getOfflinePlayer(args[1]);
if (offlinePlayer.isOnline() || offlinePlayer.hasPlayedBefore()){ if (offlinePlayer.isOnline() || offlinePlayer.hasPlayedBefore()) {
handleNick(player, offlinePlayer, args[2]); handleNick(player, offlinePlayer, args[2]);
} else { } else {
sender.sendMessage(format(helpMessage(sender, HelpType.SET_OTHERS))); sender.sendMessage(format(helpMessage(sender, HelpType.SET_OTHERS)));
} }
} else if (args.length > 3){ } else if (args.length > 3) {
sender.sendMessage(format(helpMessage(sender, HelpType.SET_SELF, HelpType.SET_OTHERS))); sender.sendMessage(format(helpMessage(sender, HelpType.SET_SELF, HelpType.SET_OTHERS)));
} }
break; break;
case "review": case "review":
if (args.length == 1 && hasPermission(sender, "utility.nick.review")){ if (args.length == 1 && hasPermission(sender, "utility.nick.review")) {
NicknamesGui nicknamesGui = new NicknamesGui(); NicknamesGui nicknamesGui = new NicknamesGui();
ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance()); ChatPlugin.getInstance().getServer().getPluginManager().registerEvents(nicknamesGui, ChatPlugin.getInstance());
nicknamesGui.openInventory(player); nicknamesGui.openInventory(player);
@ -73,7 +73,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
} }
break; break;
case "request": case "request":
if (args.length == 2 && hasPermission(sender, "utility.nick.request")){ if (args.length == 2 && hasPermission(sender, "utility.nick.request")) {
new BukkitRunnable() { new BukkitRunnable() {
@Override @Override
public void run() { public void run() {
@ -85,13 +85,13 @@ public class Nicknames implements CommandExecutor, TabCompleter {
} }
break; break;
case "try": case "try":
if (args.length == 2 && hasPermission(sender, "utility.nick.try")){ if (args.length == 2 && hasPermission(sender, "utility.nick.try")) {
LuckPerms api = ChatAPI.get().getLuckPerms(); LuckPerms api = ChatAPI.get().getLuckPerms();
if (api != null){ if (api != null) {
if (NickUtilities.validNick(player, player, args[1])) { if (NickUtilities.validNick(player, player, args[1])) {
sender.sendMessage(format(Config.NICK_TRYOUT sender.sendMessage(format(Config.NICK_TRYOUT
.replace("%prefix", api.getUserManager().getUser(player.getUniqueId()) .replace("%prefix", api.getUserManager().getUser(player.getUniqueId())
.getCachedData().getMetaData().getPrefix()) .getCachedData().getMetaData().getPrefix()) // TODO pull this from chatuser?
.replace("%nick%", args[1]))); .replace("%nick%", args[1])));
} }
} else { } else {
@ -121,11 +121,11 @@ public class Nicknames implements CommandExecutor, TabCompleter {
} }
@Override @Override
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) { public List<String> onTabComplete(CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
List<String> completions = new ArrayList<>(); List<String> completions = new ArrayList<>();
if (!sender.hasPermission("utility.nick")) return completions; if (!sender.hasPermission("utility.nick")) return completions;
if (args.length == 1){ if (args.length == 1) {
List<String> choices = new ArrayList<>(); List<String> choices = new ArrayList<>();
if (sender.hasPermission("utility.nick.set")) { if (sender.hasPermission("utility.nick.set")) {
choices.add("set"); choices.add("set");
@ -170,19 +170,19 @@ public class Nicknames implements CommandExecutor, TabCompleter {
} }
private void handleNickRequest(Player player, String nickName) { private void handleNickRequest(Player player, String nickName) {
if (!NickUtilities.validNick(player, player, nickName)){ if (!NickUtilities.validNick(player, player, nickName)) {
return; return;
} }
NickUtilities.updateCache(); NickUtilities.updateCache();
UUID uniqueId = player.getUniqueId(); UUID uniqueId = player.getUniqueId();
if (NickCache.containsKey(uniqueId)){ if (NickCache.containsKey(uniqueId)) {
Nick nick = NickCache.get(uniqueId); Nick nick = NickCache.get(uniqueId);
long timeSinceLastChange = new Date().getTime() - nick.getLastChangedDate(); long timeSinceLastChange = new Date().getTime() - nick.getLastChangedDate();
long waitTime = Config.NICK_WAIT_TIME; long waitTime = Config.NICK_WAIT_TIME;
if (timeSinceLastChange > waitTime){ if (timeSinceLastChange > waitTime) {
if (nick.hasRequest()){ if (nick.hasRequest()) {
player.sendMessage(format(Config.NICK_REQUEST_PLACED player.sendMessage(format(Config.NICK_REQUEST_PLACED
.replace("%oldRequestedNick%", nick.getNewNick()) .replace("%oldRequestedNick%", nick.getNewNick())
.replace("%newRequestedNick%", nickName))); .replace("%newRequestedNick%", nickName)));
@ -216,7 +216,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
DataOutputStream msgout = new DataOutputStream(msgbytes); DataOutputStream msgout = new DataOutputStream(msgbytes);
try { try {
msgout.writeUTF(uniqueId.toString()); msgout.writeUTF(uniqueId.toString());
} catch (IOException exception){ } catch (IOException exception) {
exception.printStackTrace(); exception.printStackTrace();
return; return;
} }
@ -229,20 +229,20 @@ public class Nicknames implements CommandExecutor, TabCompleter {
Nicknames.getInstance().nickCacheUpdate.add(uniqueId); Nicknames.getInstance().nickCacheUpdate.add(uniqueId);
} }
private String formatTime(long timeInMillis){ private String formatTime(long timeInMillis) {
long second = (timeInMillis / 1000) % 60; long second = (timeInMillis / 1000) % 60;
long minute = (timeInMillis / (1000 * 60)) % 60; long minute = (timeInMillis / (1000 * 60)) % 60;
long hour = (timeInMillis / (1000 * 60 * 60)) % 24; long hour = (timeInMillis / (1000 * 60 * 60)) % 24;
long days = (timeInMillis / (1000 * 60 * 60 * 24)); long days = (timeInMillis / (1000 * 60 * 60 * 24));
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
if (days!=0){ if (days!=0) {
stringBuilder.append(days).append(" days "); stringBuilder.append(days).append(" days ");
} }
if (days!=0 || hour!=0){ if (days!=0 || hour!=0) {
stringBuilder.append(hour).append(" hours "); stringBuilder.append(hour).append(" hours ");
} }
if (days!=0 || hour!=0 || minute != 0){ if (days!=0 || hour!=0 || minute != 0) {
stringBuilder.append(minute).append(" minutes and "); stringBuilder.append(minute).append(" minutes and ");
} }
stringBuilder.append(second).append(" seconds"); stringBuilder.append(second).append(" seconds");
@ -253,7 +253,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
if (nickName.equalsIgnoreCase("off")) { if (nickName.equalsIgnoreCase("off")) {
try { try {
if (target.isOnline()){ if (target.isOnline()) {
resetNick(target.getPlayer()); resetNick(target.getPlayer());
} }
Queries.removePlayerFromDataBase(target.getUniqueId()); Queries.removePlayerFromDataBase(target.getUniqueId());
@ -263,12 +263,12 @@ public class Nicknames implements CommandExecutor, TabCompleter {
e.printStackTrace(); e.printStackTrace();
} }
if (!sender.equals(target)){ if (!sender.equals(target)) {
sender.sendMessage(format(Config.NICK_RESET_OTHERS sender.sendMessage(format(Config.NICK_RESET_OTHERS
.replace("%player%", target.getName()))); .replace("%player%", target.getName())));
} }
if (target.isOnline()){ if (target.isOnline()) {
target.getPlayer().sendMessage(format(Config.NICK_RESET)); target.getPlayer().sendMessage(format(Config.NICK_RESET));
} }
@ -286,7 +286,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
NickEvent nickEvent = new NickEvent(sender.getName(), target.getName(), nickName, NickEvent.NickEventType.SET); NickEvent nickEvent = new NickEvent(sender.getName(), target.getName(), nickName, NickEvent.NickEventType.SET);
nickEvent.callEvent(); nickEvent.callEvent();
if (NickCache.containsKey(target.getUniqueId())){ if (NickCache.containsKey(target.getUniqueId())) {
Nick nick = NickCache.get(target.getUniqueId()); Nick nick = NickCache.get(target.getUniqueId());
nick.setCurrentNick(nickName); nick.setCurrentNick(nickName);
nick.setLastChangedDate(new Date().getTime()); nick.setLastChangedDate(new Date().getTime());
@ -294,7 +294,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
NickCache.put(target.getUniqueId(), new Nick(target.getUniqueId(), nickName, new Date().getTime())); NickCache.put(target.getUniqueId(), new Nick(target.getUniqueId(), nickName, new Date().getTime()));
} }
if (!sender.equals(target)){ if (!sender.equals(target)) {
sender.sendMessage(format(Config.NICK_CHANGED_OTHERS sender.sendMessage(format(Config.NICK_CHANGED_OTHERS
.replace("%targetplayer%", target.getName()) .replace("%targetplayer%", target.getName())
.replace("%nickname%", nickName))); .replace("%nickname%", nickName)));
@ -304,7 +304,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
.replace("%sendernick%", getNick(sender)) .replace("%sendernick%", getNick(sender))
.replace("%player%", target.getName()))); .replace("%player%", target.getName())));
} }
} else if (target.isOnline()){ } else if (target.isOnline()) {
target.getPlayer().sendMessage(format(Config.NICK_CHANGED target.getPlayer().sendMessage(format(Config.NICK_CHANGED
.replace("%nickname%", getNick(target.getPlayer())))); .replace("%nickname%", getNick(target.getPlayer()))));
} }
@ -313,8 +313,8 @@ public class Nicknames implements CommandExecutor, TabCompleter {
private String helpMessage(final CommandSender sender, final HelpType... helpTypes) { private String helpMessage(final CommandSender sender, final HelpType... helpTypes) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
for (HelpType helpType : helpTypes){ for (HelpType helpType : helpTypes) {
if (helpType.equals(HelpType.ALL)){ if (helpType.equals(HelpType.ALL)) {
return helpMessage(sender, helpType); return helpMessage(sender, helpType);
} }
message.append(helpMessage(sender, helpType)); message.append(helpMessage(sender, helpType));
@ -324,7 +324,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
private String helpMessage(CommandSender sender, HelpType type) { private String helpMessage(CommandSender sender, HelpType type) {
StringBuilder message = new StringBuilder(); StringBuilder message = new StringBuilder();
switch (type){ switch (type) {
case ALL: case ALL:
message.append(helpMessage(sender, HelpType.SET_SELF)); message.append(helpMessage(sender, HelpType.SET_SELF));
message.append(helpMessage(sender, HelpType.SET_OTHERS)); message.append(helpMessage(sender, HelpType.SET_OTHERS));
@ -333,28 +333,28 @@ public class Nicknames implements CommandExecutor, TabCompleter {
message.append(helpMessage(sender, HelpType.TRY)); message.append(helpMessage(sender, HelpType.TRY));
break; break;
case SET_SELF: case SET_SELF:
if (sender.hasPermission("utility.nick.set")){ if (sender.hasPermission("utility.nick.set")) {
message.append("&6/nick set <nickname>&f - Sets your nickname to the specified name.\n"); message.append("&6/nick set <nickname>&f - Sets your nickname to the specified name.\n");
} }
break; break;
case SET_OTHERS: case SET_OTHERS:
if (sender.hasPermission("utility.nick.set.others")){ if (sender.hasPermission("utility.nick.set.others")) {
message.append("&6/nick set <username> <nickname>&f - Sets the specified user's nickname to the specified name.\n"); message.append("&6/nick set <username> <nickname>&f - Sets the specified user's nickname to the specified name.\n");
} }
break; break;
case REQUEST: case REQUEST:
if (sender.hasPermission("utility.nick.request")){ if (sender.hasPermission("utility.nick.request")) {
message.append("&6/nick request <nickname>&f - Requests a username to be reviewed by staff.\n" + message.append("&6/nick request <nickname>&f - Requests a username to be reviewed by staff.\n" +
" &7Try using &8/nick try <nickname>&7 to see if you like the name, you can only change it once per day!\n"); " &7Try using &8/nick try <nickname>&7 to see if you like the name, you can only change it once per day!\n");
} }
break; break;
case REVIEW: case REVIEW:
if (sender.hasPermission("utility.nick.review")){ if (sender.hasPermission("utility.nick.review")) {
message.append("&6/nick review&f - Opens the nickname review GUI (left click to accept a nick, right click to deny it)\n"); message.append("&6/nick review&f - Opens the nickname review GUI (left click to accept a nick, right click to deny it)\n");
} }
break; break;
case TRY: case TRY:
if (sender.hasPermission("utility.nick.try")){ if (sender.hasPermission("utility.nick.try")) {
message.append("&6/nick try <nickname>&f - Shows you what your nickname will look like in chat.\n"); message.append("&6/nick try <nickname>&f - Shows you what your nickname will look like in chat.\n");
} }
} }
@ -362,7 +362,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
} }
private boolean hasPermission(CommandSender sender, String permission) { private boolean hasPermission(CommandSender sender, String permission) {
if (!sender.hasPermission(permission)){ if (!sender.hasPermission(permission)) {
sender.sendMessage(format(Config.NO_PERMISSION)); sender.sendMessage(format(Config.NO_PERMISSION));
return false; return false;
} }
@ -371,7 +371,7 @@ public class Nicknames implements CommandExecutor, TabCompleter {
public void resetNick(final Player player) { public void resetNick(final Player player) {
ChatUser user = ChatUserManager.getChatUser(player.getUniqueId()); ChatUser user = ChatUserManager.getChatUser(player.getUniqueId());
user.setDisplayName(player.getDisplayName()); user.setDisplayName(player.getName());
} }
public String getNick(final Player player) { public String getNick(final Player player) {
@ -384,11 +384,6 @@ public class Nicknames implements CommandExecutor, TabCompleter {
user.setDisplayName(nickName); user.setDisplayName(nickName);
} }
// @Deprecated
// public void setNick(final CommandSender sender, final Player player, final String nickName) {
// Bukkit.getServer().dispatchCommand(sender, "cmi nick " + nickName + " " + player.getName());
// }
public static String format(final String m) { public static String format(final String m) {
return NickUtilities.applyColor(m); return NickUtilities.applyColor(m);
} }

View File

@ -20,6 +20,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.messaging.PluginMessageListener; import org.bukkit.plugin.messaging.PluginMessageListener;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.DataInputStream; import java.io.DataInputStream;
@ -82,7 +83,7 @@ public class NicknamesEvents implements Listener, PluginMessageListener {
} }
@Override @Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) { public void onPluginMessageReceived(String channel, @NotNull Player player, byte[] message) {
if (!channel.equals(Config.MESSAGECHANNEL)) { if (!channel.equals(Config.MESSAGECHANNEL)) {
return; return;
} }

View File

@ -5,6 +5,8 @@ import com.alttd.chat.config.Config;
import com.alttd.chat.database.Queries; import com.alttd.chat.database.Queries;
import com.alttd.chat.events.NickEvent; import com.alttd.chat.events.NickEvent;
import com.alttd.chat.objects.Nick; import com.alttd.chat.objects.Nick;
import com.alttd.chat.util.Utility;
import net.kyori.adventure.text.Component;
import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.ChatColor;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
@ -31,12 +33,12 @@ import static com.alttd.chat.nicknames.Nicknames.format;
public class NicknamesGui implements Listener { public class NicknamesGui implements Listener {
private Inventory inv; private final Inventory inv;
private int currentPage; private final int currentPage;
public NicknamesGui() { public NicknamesGui() {
// Create a new inventory, with no owner (as this isn't a real inventory) // Create a new inventory, with no owner (as this isn't a real inventory)
inv = Bukkit.createInventory(null, 36, "Nicknames GUI"); inv = Bukkit.createInventory(null, 36, Utility.parseMiniMessage("Nicknames GUI"));
// Put the items into the inventory // Put the items into the inventory
currentPage = 1; currentPage = 1;
@ -88,12 +90,10 @@ public class NicknamesGui implements Listener {
meta.setOwningPlayer(offlinePlayer); meta.setOwningPlayer(offlinePlayer);
meta.setDisplayName(offlinePlayer.getName()); meta.setDisplayName(offlinePlayer.getName());
for (int ii = 0; ii < lore.size(); ii++) { lore.replaceAll(s -> format(s
lore.set(ii, format(lore.get(ii) .replace("%newNick%", nick.getNewNick())
.replace("%newNick%", nick.getNewNick()) .replace("%oldNick%", nick.getCurrentNick() == null ? "None" : nick.getCurrentNick())
.replace("%oldNick%", nick.getCurrentNick() == null ? "None" : nick.getCurrentNick()) .replace("%lastChanged%", nick.getLastChangedDate() == 0 ? "Not Applicable" : nick.getLastChangedDateFormatted())));
.replace("%lastChanged%", nick.getLastChangedDate() == 0 ? "Not Applicable" : nick.getLastChangedDateFormatted())));
}
meta.setLore(lore); meta.setLore(lore);
playerHead.setItemMeta(meta); playerHead.setItemMeta(meta);
@ -107,7 +107,7 @@ public class NicknamesGui implements Listener {
final ItemMeta meta = item.getItemMeta(); final ItemMeta meta = item.getItemMeta();
// Set the name of the item // Set the name of the item
meta.setDisplayName(name); meta.displayName(Component.text(name));
// Set the lore of the item // Set the lore of the item
meta.setLore(Arrays.asList(lore)); meta.setLore(Arrays.asList(lore));
@ -189,7 +189,7 @@ public class NicknamesGui implements Listener {
.replace("%newNick%", nick.getNewNick()) .replace("%newNick%", nick.getNewNick())
.replace("%oldNick%", nick.getCurrentNick() == null ? clickedItem.getItemMeta().getDisplayName() : nick.getCurrentNick()))); .replace("%oldNick%", nick.getCurrentNick() == null ? clickedItem.getItemMeta().getDisplayName() : nick.getCurrentNick())));
if (owningPlayer.isOnline()) { if (owningPlayer.isOnline() && owningPlayer.getPlayer() != null) {
Nicknames.getInstance().setNick(owningPlayer.getPlayer(), nick.getNewNick()); Nicknames.getInstance().setNick(owningPlayer.getPlayer(), nick.getNewNick());
owningPlayer.getPlayer().sendMessage(format(Config.NICK_CHANGED owningPlayer.getPlayer().sendMessage(format(Config.NICK_CHANGED
.replace("%nickname%", nick.getNewNick()))); .replace("%nickname%", nick.getNewNick())));
@ -206,8 +206,8 @@ public class NicknamesGui implements Listener {
ItemStack itemStack = new ItemStack(Material.SKELETON_SKULL); ItemStack itemStack = new ItemStack(Material.SKELETON_SKULL);
ItemMeta itemMeta = itemStack.getItemMeta(); ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(clickedItem.getItemMeta().getDisplayName()); itemMeta.displayName(clickedItem.getItemMeta().displayName());
itemMeta.setLore(clickedItem.getLore()); itemMeta.lore(clickedItem.lore());
itemStack.setItemMeta(itemMeta); itemStack.setItemMeta(itemMeta);
e.getInventory().setItem(e.getSlot(), itemStack); e.getInventory().setItem(e.getSlot(), itemStack);
p.updateInventory(); p.updateInventory();
@ -244,7 +244,7 @@ public class NicknamesGui implements Listener {
Nicknames.getInstance().NickCache.remove(uniqueId); Nicknames.getInstance().NickCache.remove(uniqueId);
} }
if (owningPlayer.isOnline()) { if (owningPlayer.isOnline() && owningPlayer.getPlayer() != null) {
Nicknames.getInstance().setNick(owningPlayer.getPlayer(), nick.getCurrentNick() == null ? owningPlayer.getName() : nick.getCurrentNick()); Nicknames.getInstance().setNick(owningPlayer.getPlayer(), nick.getCurrentNick() == null ? owningPlayer.getName() : nick.getCurrentNick());
owningPlayer.getPlayer().sendMessage(format(Config.NICK_NOT_CHANGED)); owningPlayer.getPlayer().sendMessage(format(Config.NICK_NOT_CHANGED));
} }
@ -260,8 +260,8 @@ public class NicknamesGui implements Listener {
ItemStack itemStack = new ItemStack(Material.SKELETON_SKULL); ItemStack itemStack = new ItemStack(Material.SKELETON_SKULL);
ItemMeta itemMeta = itemStack.getItemMeta(); ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.setDisplayName(clickedItem.getItemMeta().getDisplayName()); itemMeta.displayName(clickedItem.getItemMeta().displayName());
itemMeta.setLore(clickedItem.getLore()); itemMeta.lore(clickedItem.lore());
itemStack.setItemMeta(itemMeta); itemStack.setItemMeta(itemMeta);
e.getInventory().setItem(e.getSlot(), itemStack); e.getInventory().setItem(e.getSlot(), itemStack);
p.updateInventory(); p.updateInventory();