Add '/libsdisguises count'
This commit is contained in:
parent
dd7b0451a1
commit
ee9240385e
@ -4,8 +4,7 @@ import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
|||||||
import me.libraryaddict.disguise.DisguiseAPI;
|
import me.libraryaddict.disguise.DisguiseAPI;
|
||||||
import me.libraryaddict.disguise.DisguiseConfig;
|
import me.libraryaddict.disguise.DisguiseConfig;
|
||||||
import me.libraryaddict.disguise.LibsDisguises;
|
import me.libraryaddict.disguise.LibsDisguises;
|
||||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
import me.libraryaddict.disguise.disguisetypes.*;
|
||||||
import me.libraryaddict.disguise.disguisetypes.MetaIndex;
|
|
||||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||||
import me.libraryaddict.disguise.utilities.UpdateChecker;
|
import me.libraryaddict.disguise.utilities.UpdateChecker;
|
||||||
@ -15,6 +14,7 @@ import me.libraryaddict.disguise.utilities.parser.DisguisePermissions;
|
|||||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||||
|
import me.libraryaddict.disguise.utilities.translations.TranslateType;
|
||||||
import net.md_5.bungee.api.chat.ClickEvent;
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||||
import net.md_5.bungee.api.chat.HoverEvent;
|
import net.md_5.bungee.api.chat.HoverEvent;
|
||||||
@ -32,10 +32,7 @@ import org.bukkit.scheduler.BukkitRunnable;
|
|||||||
import org.bukkit.scoreboard.Scoreboard;
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
import org.bukkit.scoreboard.Team;
|
import org.bukkit.scoreboard.Team;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
||||||
protected ArrayList<String> filterTabs(ArrayList<String> list, String[] origArgs) {
|
protected ArrayList<String> filterTabs(ArrayList<String> list, String[] origArgs) {
|
||||||
@ -120,6 +117,61 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
|||||||
DisguiseConfig.loadConfig();
|
DisguiseConfig.loadConfig();
|
||||||
sender.sendMessage(LibsMsg.RELOADED_CONFIG.get());
|
sender.sendMessage(LibsMsg.RELOADED_CONFIG.get());
|
||||||
return true;
|
return true;
|
||||||
|
} else if (args[0].equalsIgnoreCase("count")) {
|
||||||
|
if (!sender.hasPermission("libsdisguises.count")) {
|
||||||
|
sender.sendMessage(LibsMsg.NO_PERM.get());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
HashMap<DisguiseType, Integer> counts = new HashMap<>();
|
||||||
|
|
||||||
|
for (Set<TargetedDisguise> disguises : DisguiseUtilities.getDisguises().values()) {
|
||||||
|
for (Disguise disguise : disguises) {
|
||||||
|
if (disguise.isPlayerDisguise() && DisguiseConfig.isScoreboardDisguiseNames()) {
|
||||||
|
if (((PlayerDisguise) disguise).hasScoreboardName()) {
|
||||||
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
|
Scoreboard board = player.getScoreboard();
|
||||||
|
|
||||||
|
if (board.getEntryTeam(((PlayerDisguise) disguise).getProfileName()) == null) {
|
||||||
|
DisguiseUtilities.getLogger().warning(
|
||||||
|
"The player disguise " + ((PlayerDisguise) disguise).getName() +
|
||||||
|
" is missing a scoreboard team on " + player.getName() +
|
||||||
|
" and possibly more players!");
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
counts.compute(disguise.getType(), (a, b) -> (b != null ? b : 0) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (counts.isEmpty()) {
|
||||||
|
sender.sendMessage(LibsMsg.NO_DISGUISES_IN_USE.get());
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(
|
||||||
|
LibsMsg.ACTIVE_DISGUISES_COUNT.get(counts.values().stream().reduce(Integer::sum)));
|
||||||
|
|
||||||
|
ArrayList<DisguiseType> types = new ArrayList<>(counts.keySet());
|
||||||
|
types.sort((d1, d2) -> String.CASE_INSENSITIVE_ORDER
|
||||||
|
.compare(TranslateType.DISGUISES.get(d1.toReadable()),
|
||||||
|
TranslateType.DISGUISES.get(d2.toReadable())));
|
||||||
|
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
|
||||||
|
for (int i = 0; i < types.size(); i++) {
|
||||||
|
builder.append(LibsMsg.ACTIVE_DISGUISES_DISGUISE
|
||||||
|
.get(TranslateType.DISGUISES.get(types.get(i).toReadable()), counts.get(types.get(i))));
|
||||||
|
|
||||||
|
if (i + 1 < types.size()) {
|
||||||
|
builder.append(LibsMsg.ACTIVE_DISGUISES_SEPERATOR.get());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sender.sendMessage(LibsMsg.ACTIVE_DISGUISES.get(builder.toString()));
|
||||||
|
}
|
||||||
} else if (args[0].equalsIgnoreCase("mods")) {
|
} else if (args[0].equalsIgnoreCase("mods")) {
|
||||||
if (!sender.hasPermission("libsdisguises.mods")) {
|
if (!sender.hasPermission("libsdisguises.mods")) {
|
||||||
sender.sendMessage(LibsMsg.NO_PERM.get());
|
sender.sendMessage(LibsMsg.NO_PERM.get());
|
||||||
@ -467,7 +519,8 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter {
|
|||||||
|
|
||||||
if (args.length == 0)
|
if (args.length == 0)
|
||||||
tabs.addAll(
|
tabs.addAll(
|
||||||
Arrays.asList("reload", "scoreboard", "permtest", "json", "metainfo", "config", "mods", "update"));
|
Arrays.asList("reload", "scoreboard", "permtest", "json", "metainfo", "config", "mods", "update",
|
||||||
|
"count"));
|
||||||
|
|
||||||
return filterTabs(tabs, origArgs);
|
return filterTabs(tabs, origArgs);
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,11 @@ import org.bukkit.ChatColor;
|
|||||||
* Created by libraryaddict on 15/06/2017.
|
* Created by libraryaddict on 15/06/2017.
|
||||||
*/
|
*/
|
||||||
public enum LibsMsg {
|
public enum LibsMsg {
|
||||||
|
NO_DISGUISES_IN_USE(ChatColor.RED + "There are no disguises in use!"),
|
||||||
|
ACTIVE_DISGUISES_COUNT(ChatColor.DARK_GREEN + "There are %s disguises active"),
|
||||||
|
ACTIVE_DISGUISES_DISGUISE(ChatColor.GREEN + "%s: " + ChatColor.AQUA + "%s"),
|
||||||
|
ACTIVE_DISGUISES(ChatColor.DARK_GREEN + "The disguises in use are: %s"),
|
||||||
|
ACTIVE_DISGUISES_SEPERATOR(ChatColor.RED + ", " + ChatColor.GREEN),
|
||||||
BLOWN_DISGUISE(ChatColor.RED + "Your disguise was blown!"),
|
BLOWN_DISGUISE(ChatColor.RED + "Your disguise was blown!"),
|
||||||
EXPIRED_DISGUISE(ChatColor.RED + "Your disguise has expired!"),
|
EXPIRED_DISGUISE(ChatColor.RED + "Your disguise has expired!"),
|
||||||
CAN_USE_DISGS(ChatColor.DARK_GREEN + "You can use the disguises:" + ChatColor.GREEN + " %s"),
|
CAN_USE_DISGS(ChatColor.DARK_GREEN + "You can use the disguises:" + ChatColor.GREEN + " %s"),
|
||||||
|
@ -37,11 +37,11 @@ public enum TranslateType {
|
|||||||
type.loadTranslations();
|
type.loadTranslations();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TranslateFiller.fillConfigs();
|
||||||
|
|
||||||
if (!LibsPremium.isPremium() && DisguiseConfig.isUseTranslations()) {
|
if (!LibsPremium.isPremium() && DisguiseConfig.isUseTranslations()) {
|
||||||
DisguiseUtilities.getLogger().severe("You must purchase the plugin to use translations!");
|
DisguiseUtilities.getLogger().severe("You must purchase the plugin to use translations!");
|
||||||
}
|
}
|
||||||
|
|
||||||
TranslateFiller.fillConfigs();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void saveTranslations() {
|
protected void saveTranslations() {
|
||||||
|
@ -88,6 +88,8 @@ commands:
|
|||||||
permissions:
|
permissions:
|
||||||
libsdisguises.reload:
|
libsdisguises.reload:
|
||||||
description: Allows the user to reload LibsDisguises.
|
description: Allows the user to reload LibsDisguises.
|
||||||
|
libsdisguises.count:
|
||||||
|
description: Allows the user to see how many disguises are active
|
||||||
libsdisguises.mods:
|
libsdisguises.mods:
|
||||||
description: Allows the user to see mods in use.
|
description: Allows the user to see mods in use.
|
||||||
libsdisguises.seethrough:
|
libsdisguises.seethrough:
|
||||||
|
Loading…
Reference in New Issue
Block a user