From 840bd53d66145e238cde0f03d9977bb95932b883 Mon Sep 17 00:00:00 2001 From: jman13378 Date: Mon, 10 Jul 2023 00:35:53 -0400 Subject: [PATCH] added some more tab completion stuff --- .../commandpanels/CommandPanels.java | 7 ++++- .../placeholders/Placeholders.java | 2 +- .../commands/Commandpanelsdata.java | 30 ++++++++++++++----- .../completetabs/DataTabComplete.java | 30 +++++++++++++++---- 4 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/me/rockyhawk/commandpanels/CommandPanels.java b/src/me/rockyhawk/commandpanels/CommandPanels.java index eb5bb56..36a0891 100644 --- a/src/me/rockyhawk/commandpanels/CommandPanels.java +++ b/src/me/rockyhawk/commandpanels/CommandPanels.java @@ -1,5 +1,6 @@ package me.rockyhawk.commandpanels; +import com.bencodez.votingplugin.VotingPluginHooks; import io.lumine.mythic.lib.api.item.NBTItem; import me.rockyhawk.commandpanels.api.CommandPanelsAPI; import me.rockyhawk.commandpanels.api.Panel; @@ -66,6 +67,7 @@ import java.util.*; import java.util.concurrent.Callable; public class CommandPanels extends JavaPlugin{ + public VotingPluginHooks votingPlugin; public YamlConfiguration config; public Economy econ = null; public boolean openWithItem = false; //this will be true if there is a panel with open-with-item @@ -213,7 +215,10 @@ public class CommandPanels extends JavaPlugin{ if (!Bukkit.getVersion().contains("1.8")) { this.getServer().getPluginManager().registerEvents(new SwapItemEvent(this), this); } - + //if VotingPlugin is enabled + if (getServer().getPluginManager().isPluginEnabled("VotingPlugin")) { + votingPlugin= VotingPluginHooks.getInstance(); + } //if plugin ChestSort is enabled if(getServer().getPluginManager().isPluginEnabled("ChestSort")){ this.getServer().getPluginManager().registerEvents(new UtilsChestSortEvent(this), this); diff --git a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java index 04640cb..18599d3 100644 --- a/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java +++ b/src/me/rockyhawk/commandpanels/classresources/placeholders/Placeholders.java @@ -379,7 +379,7 @@ public class Placeholders { } if (plugin.getServer().getPluginManager().isPluginEnabled("VotingPlugin")) { if(identifier.equals("votingplugin-points")) { - return String.valueOf(VotingPluginMain.plugin.getVotingPluginUserManager().getVotingPluginUser(p).getPoints()); + return String.valueOf(plugin.votingPlugin.getUserManager().getVotingPluginUser(p).getPoints()); } } //end nodes with PlaceHolders diff --git a/src/me/rockyhawk/commandpanels/commands/Commandpanelsdata.java b/src/me/rockyhawk/commandpanels/commands/Commandpanelsdata.java index 93d0cec..fd6d25e 100644 --- a/src/me/rockyhawk/commandpanels/commands/Commandpanelsdata.java +++ b/src/me/rockyhawk/commandpanels/commands/Commandpanelsdata.java @@ -26,28 +26,33 @@ public class Commandpanelsdata implements CommandExecutor { args = Arrays.copyOfRange(args, 1, args.length); sendPlayerMessage = false; } + int count = 0; if (args.length == 2) { //for the clear command if (args[0].equals("clear")) { - if (args[1].equalsIgnoreCase("all")) { + if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) { for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { + if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue; plugin.panelData.clearData(plugin.panelData.getOffline(player.getName())); + count++; } } else plugin.panelData.clearData(plugin.panelData.getOffline(args[1])); if (sendPlayerMessage) { sender.sendMessage(plugin.tex.colour(plugin.tag + ChatColor.GREEN + "Cleared all data for " - + ChatColor.WHITE + args[1])); + + ChatColor.WHITE + (count == 0 ? args[1] : count + "" + ChatColor.GREEN + " players"))); } return true; } } else if (args.length == 3) { //for the remove command if (args[0].equals("remove")) { - if (args[1].equalsIgnoreCase("all")) { + if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) { for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { + if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue; plugin.panelData.delUserData(plugin.panelData.getOffline(player.getName()), args[2]); + count++; } } else plugin.panelData.delUserData(plugin.panelData.getOffline(args[1]), args[2]); @@ -56,7 +61,7 @@ public class Commandpanelsdata implements CommandExecutor { + ChatColor.GREEN + "Removed " + ChatColor.WHITE + args[2] + ChatColor.GREEN + " from " - + ChatColor.WHITE + args[1])); + + ChatColor.WHITE + (count == 0 ? args[1] : count + "" + ChatColor.GREEN + " players"))); } return true; } else if (args[0].equals("get")) { @@ -69,9 +74,11 @@ public class Commandpanelsdata implements CommandExecutor { } else if (args.length == 4) { if (args[0].equals("set")) { //for set command - if (args[1].equalsIgnoreCase("all")) { + if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) { for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { + if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue; plugin.panelData.setUserData(plugin.panelData.getOffline(player.getName()), args[2], args[3], true); + count++; } } else { plugin.panelData.setUserData(plugin.panelData.getOffline(args[1]), args[2], args[3], true); @@ -81,13 +88,18 @@ public class Commandpanelsdata implements CommandExecutor { + ChatColor.GREEN + "Set " + ChatColor.WHITE + args[2] + ChatColor.GREEN + " to " - + ChatColor.WHITE + args[3])); + + ChatColor.WHITE + args[3] + + ChatColor.GREEN + " for " + + ChatColor.WHITE + (count == 0 ? args[1] : count + "" + ChatColor.GREEN + " players"))); } } else { //for add command - if (args[1].equalsIgnoreCase("all")) { + if (args[1].equalsIgnoreCase("all") || args[1].equalsIgnoreCase("online")) { + for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { + if (args[1].equalsIgnoreCase("online") && !player.isOnline()) continue; plugin.panelData.setUserData(plugin.panelData.getOffline(player.getName()), args[2], args[3], false); + count++; } } else plugin.panelData.setUserData(plugin.panelData.getOffline(args[1]), args[2], args[3], false); @@ -97,7 +109,9 @@ public class Commandpanelsdata implements CommandExecutor { + ChatColor.WHITE + args[2] + ChatColor.GREEN + " to " + ChatColor.WHITE + args[3]) - + ChatColor.GREEN + " if it did not exist already"); + + ChatColor.GREEN + " for " + + ChatColor.WHITE + (count == 0 ? args[1] : count + "" + ChatColor.GREEN + " players") + + " if it did not exist already"); } } return true; diff --git a/src/me/rockyhawk/commandpanels/completetabs/DataTabComplete.java b/src/me/rockyhawk/commandpanels/completetabs/DataTabComplete.java index ec057a5..391456b 100644 --- a/src/me/rockyhawk/commandpanels/completetabs/DataTabComplete.java +++ b/src/me/rockyhawk/commandpanels/completetabs/DataTabComplete.java @@ -8,8 +8,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; +import java.util.*; public class DataTabComplete implements TabCompleter { @@ -19,6 +18,10 @@ public class DataTabComplete implements TabCompleter { public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { if(sender.hasPermission("commandpanel.data")) { ArrayList output = new ArrayList<>(); + if (args.length>=1) { + if (args[0].equalsIgnoreCase("-s")) + args = Arrays.copyOfRange(args, 1, args.length); + } if(args.length == 1){ String arg1 = args[0].toLowerCase(); if ("set".startsWith(arg1))output.add("set"); @@ -28,22 +31,37 @@ public class DataTabComplete implements TabCompleter { if ("clear".startsWith(arg1))output.add("clear"); }else if(args.length == 2){ if ("all".startsWith(args[1].toLowerCase()) && !args[0].equalsIgnoreCase("get")) output.add("all"); - + if ("online".startsWith(args[1].toLowerCase()) && !args[0].equalsIgnoreCase("get")) output.add("online"); for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { String name = player.getName(); // don't worry about it saying it may throw a NPE - if (name.toLowerCase().startsWith(args[1])) { + if (name.toLowerCase().startsWith(args[1].toLowerCase())) { //this will narrow down the panels to what the user types output.add(name); } } }else if(args.length == 3){ + if (!args[0].equalsIgnoreCase("remove")) return new ArrayList<>(); //the clear function is here as it is the only subcommand with 3 args try { - return new ArrayList<>(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelData.getOffline(args[1])).getKeys(false)); + + if (!args[1].equalsIgnoreCase("all") && !args[1].equalsIgnoreCase("online")) + return new ArrayList<>(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelData.getOffline(args[1])).getKeys(false)); + + else { + Set set = new HashSet<>(); + for (OfflinePlayer player : Bukkit.getOfflinePlayers()) { + if (!player.isOnline()&&args[1].equalsIgnoreCase("online")) continue; + set.addAll(plugin.panelData.dataConfig.getConfigurationSection("playerData." + plugin.panelData.getOffline(player.getName())).getKeys(false)); + + } + String[] finalArgs = args; + set.removeIf(s -> !s.toLowerCase().startsWith(finalArgs[2])); + return new ArrayList<>(set); + } } catch (Exception ex) { - return null; + return new ArrayList<>(); } } return output;