From 67a86ddcdda568e2827c69b55c4c1488423cac20 Mon Sep 17 00:00:00 2001 From: Seth <13510767+ZeroEpoch1969@users.noreply.github.com> Date: Tue, 7 Jul 2020 01:11:29 -0700 Subject: [PATCH] Guess I have to modify it after all --- .../disguise/BlockedDisguises.java | 26 ++ .../libraryaddict/disguise/LibsDisguises.java | 9 - .../commands/DisguiseBaseCommand.java | 15 +- .../commands/disguise/DisguiseCommand.java | 16 + .../disguise/DisguisePlayerCommand.java | 198 ----------- .../disguise/DisguiseRadiusCommand.java | 308 ------------------ .../modify/DisguiseModifyPlayerCommand.java | 168 ---------- .../modify/DisguiseModifyRadiusCommand.java | 300 ----------------- 8 files changed, 48 insertions(+), 992 deletions(-) create mode 100644 src/main/java/me/libraryaddict/disguise/BlockedDisguises.java delete mode 100644 src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java delete mode 100644 src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java delete mode 100644 src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java delete mode 100644 src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java diff --git a/src/main/java/me/libraryaddict/disguise/BlockedDisguises.java b/src/main/java/me/libraryaddict/disguise/BlockedDisguises.java new file mode 100644 index 00000000..785a4b7e --- /dev/null +++ b/src/main/java/me/libraryaddict/disguise/BlockedDisguises.java @@ -0,0 +1,26 @@ +package me.libraryaddict.disguise; + +import java.util.Arrays; +import java.util.List; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import static me.libraryaddict.disguise.disguisetypes.DisguiseType.*; +import me.libraryaddict.disguise.disguisetypes.DisguiseType; + +public class BlockedDisguises { + + public static final List forbiddenDisguises = Arrays.asList(ITEM_FRAME, ENDER_DRAGON, PLAYER, GIANT, GHAST, MAGMA_CUBE, SLIME, DROPPED_ITEM, ENDER_CRYSTAL, AREA_EFFECT_CLOUD, WITHER); + public static boolean disabled = false; + + public static boolean isAllowed(Disguise disguise) { + return isAllowed(disguise.getType()); + + } + + public static boolean isAllowed(DisguiseType type) { + if (forbiddenDisguises.contains(type)) { + return false; + } + + return true; + } +} diff --git a/src/main/java/me/libraryaddict/disguise/LibsDisguises.java b/src/main/java/me/libraryaddict/disguise/LibsDisguises.java index b5dddb49..51b7be34 100644 --- a/src/main/java/me/libraryaddict/disguise/LibsDisguises.java +++ b/src/main/java/me/libraryaddict/disguise/LibsDisguises.java @@ -5,12 +5,8 @@ import lombok.Getter; import me.libraryaddict.disguise.commands.LibsDisguisesCommand; import me.libraryaddict.disguise.commands.disguise.DisguiseCommand; import me.libraryaddict.disguise.commands.disguise.DisguiseEntityCommand; -import me.libraryaddict.disguise.commands.disguise.DisguisePlayerCommand; -import me.libraryaddict.disguise.commands.disguise.DisguiseRadiusCommand; import me.libraryaddict.disguise.commands.modify.DisguiseModifyCommand; import me.libraryaddict.disguise.commands.modify.DisguiseModifyEntityCommand; -import me.libraryaddict.disguise.commands.modify.DisguiseModifyPlayerCommand; -import me.libraryaddict.disguise.commands.modify.DisguiseModifyRadiusCommand; import me.libraryaddict.disguise.commands.undisguise.UndisguiseCommand; import me.libraryaddict.disguise.commands.undisguise.UndisguiseEntityCommand; import me.libraryaddict.disguise.commands.undisguise.UndisguisePlayerCommand; @@ -169,11 +165,9 @@ public class LibsDisguises extends JavaPlugin { if (!DisguiseConfig.isDisableCommands()) { registerCommand("disguise", new DisguiseCommand()); registerCommand("undisguise", new UndisguiseCommand()); - registerCommand("disguiseplayer", new DisguisePlayerCommand()); registerCommand("undisguiseplayer", new UndisguisePlayerCommand()); registerCommand("undisguiseentity", new UndisguiseEntityCommand()); registerCommand("disguiseentity", new DisguiseEntityCommand()); - registerCommand("disguiseradius", new DisguiseRadiusCommand(getConfig().getInt("DisguiseRadiusMax"))); registerCommand("undisguiseradius", new UndisguiseRadiusCommand(getConfig().getInt("UndisguiseRadiusMax"))); registerCommand("disguisehelp", new DisguiseHelpCommand()); registerCommand("disguiseclone", new DisguiseCloneCommand()); @@ -181,9 +175,6 @@ public class LibsDisguises extends JavaPlugin { registerCommand("disguiseviewbar", new DisguiseViewBarCommand()); registerCommand("disguisemodify", new DisguiseModifyCommand()); registerCommand("disguisemodifyentity", new DisguiseModifyEntityCommand()); - registerCommand("disguisemodifyplayer", new DisguiseModifyPlayerCommand()); - registerCommand("disguisemodifyradius", - new DisguiseModifyRadiusCommand(getConfig().getInt("DisguiseRadiusMax"))); registerCommand("copydisguise", new CopyDisguiseCommand()); registerCommand("grabskin", new GrabSkinCommand()); registerCommand("savedisguise", new SaveDisguiseCommand()); diff --git a/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java b/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java index 1e3e36b6..e325826d 100644 --- a/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java +++ b/src/main/java/me/libraryaddict/disguise/commands/DisguiseBaseCommand.java @@ -1,13 +1,10 @@ package me.libraryaddict.disguise.commands; +import me.libraryaddict.disguise.BlockedDisguises; import me.libraryaddict.disguise.commands.disguise.DisguiseCommand; import me.libraryaddict.disguise.commands.disguise.DisguiseEntityCommand; -import me.libraryaddict.disguise.commands.disguise.DisguisePlayerCommand; -import me.libraryaddict.disguise.commands.disguise.DisguiseRadiusCommand; import me.libraryaddict.disguise.commands.modify.DisguiseModifyCommand; import me.libraryaddict.disguise.commands.modify.DisguiseModifyEntityCommand; -import me.libraryaddict.disguise.commands.modify.DisguiseModifyPlayerCommand; -import me.libraryaddict.disguise.commands.modify.DisguiseModifyRadiusCommand; import me.libraryaddict.disguise.disguisetypes.DisguiseType; import me.libraryaddict.disguise.utilities.LibsPremium; import me.libraryaddict.disguise.utilities.params.ParamInfo; @@ -37,12 +34,8 @@ public abstract class DisguiseBaseCommand implements CommandExecutor { map.put(DisguiseCommand.class, "Disguise"); map.put(DisguiseEntityCommand.class, "DisguiseEntity"); - map.put(DisguisePlayerCommand.class, "DisguisePlayer"); - map.put(DisguiseRadiusCommand.class, "DisguiseRadius"); map.put(DisguiseModifyCommand.class, "DisguiseModify"); map.put(DisguiseModifyEntityCommand.class, "DisguiseModifyEntity"); - map.put(DisguiseModifyPlayerCommand.class, "DisguiseModifyPlayer"); - map.put(DisguiseModifyRadiusCommand.class, "DisguiseModifyRadius"); disguiseCommands = map; } @@ -227,7 +220,11 @@ public abstract class DisguiseBaseCommand implements CommandExecutor { if (type.isUnknown()) continue; - allowedDisguises.add(type.toReadable().replaceAll(" ", "_")); + final String name = type.toReadable().replaceAll(" ", "_"); + + if (BlockedDisguises.isAllowed(DisguiseParser.getDisguisePerm(name).getType())) { + allowedDisguises.add(name); + } } return allowedDisguises; diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java b/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java index 75db0fb5..103173b4 100644 --- a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java +++ b/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseCommand.java @@ -1,5 +1,6 @@ package me.libraryaddict.disguise.commands.disguise; +import me.libraryaddict.disguise.BlockedDisguises; import me.libraryaddict.disguise.DisguiseAPI; import me.libraryaddict.disguise.DisguiseConfig; import me.libraryaddict.disguise.commands.DisguiseBaseCommand; @@ -11,6 +12,7 @@ import me.libraryaddict.disguise.utilities.parser.DisguiseParser; import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; import me.libraryaddict.disguise.utilities.translations.LibsMsg; import org.apache.commons.lang.StringUtils; +import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; @@ -65,6 +67,20 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter } } + if (!BlockedDisguises.disabled) { + + if (BlockedDisguises.isAllowed(disguise)) { + DisguiseAPI.disguiseToAll((Player) sender, disguise); + } else { + sender.sendMessage(ChatColor.RED + "That disguise is forbidden."); + return true; + } + } else { + sender.sendMessage(ChatColor.RED + "Disguises are disabled."); + return true; + } + + disguise.setEntity((Player) sender); if (!setViewDisguise(args)) { diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java b/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java deleted file mode 100644 index 10f759a3..00000000 --- a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguisePlayerCommand.java +++ /dev/null @@ -1,198 +0,0 @@ -package me.libraryaddict.disguise.commands.disguise; - -import me.libraryaddict.disguise.DisguiseAPI; -import me.libraryaddict.disguise.DisguiseConfig; -import me.libraryaddict.disguise.commands.DisguiseBaseCommand; -import me.libraryaddict.disguise.disguisetypes.Disguise; -import me.libraryaddict.disguise.disguisetypes.DisguiseType; -import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; -import me.libraryaddict.disguise.utilities.DisguiseUtilities; -import me.libraryaddict.disguise.utilities.parser.DisguiseParseException; -import me.libraryaddict.disguise.utilities.parser.DisguiseParser; -import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; -import me.libraryaddict.disguise.utilities.translations.LibsMsg; -import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCompleter { - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (isNotPremium(sender)) { - return true; - } - - DisguisePermissions permissions = getPermissions(sender); - - if (!permissions.hasPermissions()) { - LibsMsg.NO_PERM.send(sender); - return true; - } - - if (args.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - if (args.length == 1) { - LibsMsg.DPLAYER_SUPPLY.send(sender); - return true; - } - - Entity entityTarget = Bukkit.getPlayer(args[0]); - - if (entityTarget == null) { - if (args[0].contains("-")) { - try { - entityTarget = Bukkit.getEntity(UUID.fromString(args[0])); - } - catch (Exception ignored) { - } - } - } - - if (entityTarget == null) { - LibsMsg.CANNOT_FIND_PLAYER.send(sender, args[0]); - return true; - } - - String[] newArgs = new String[args.length - 1]; - System.arraycopy(args, 1, newArgs, 0, newArgs.length); - - if (newArgs.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - Disguise disguise; - - try { - disguise = DisguiseParser.parseDisguise(sender, entityTarget, getPermNode(), - DisguiseUtilities.split(StringUtils.join(newArgs, " ")), permissions); - } - catch (DisguiseParseException ex) { - if (ex.getMessage() != null) { - DisguiseUtilities.sendMessage(sender, ex.getMessage()); - } - return true; - } - - catch (Exception ex) { - ex.printStackTrace(); - return true; - } - - if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled()) { - LibsMsg.DISABLED_LIVING_TO_MISC.send(sender); - return true; - } - - if (DisguiseConfig.isNameOfPlayerShownAboveDisguise() && - !entityTarget.hasPermission("libsdisguises.hidename")) { - if (disguise.getWatcher() instanceof LivingWatcher) { - disguise.getWatcher().setCustomName(getDisplayName(entityTarget)); - - if (DisguiseConfig.isNameAboveHeadAlwaysVisible()) { - disguise.getWatcher().setCustomNameVisible(true); - } - } - } - - disguise.setEntity(entityTarget); - - if (!setViewDisguise(args)) { - // They prefer to have the opposite of whatever the view disguises option is - if (DisguiseAPI.hasSelfDisguisePreference(disguise.getEntity()) && - disguise.isSelfDisguiseVisible() == DisguiseConfig.isViewDisguises()) - disguise.setViewSelfDisguise(!disguise.isSelfDisguiseVisible()); - } - - if (!DisguiseAPI.isActionBarShown(disguise.getEntity())) { - disguise.setNotifyBar(DisguiseConfig.NotifyBar.NONE); - } - - disguise.startDisguise(); - - if (disguise.isDisguiseInUse()) { - LibsMsg.DISG_PLAYER_AS_DISG.send(sender, - entityTarget instanceof Player ? entityTarget.getName() : - DisguiseType.getType(entityTarget).toReadable(), disguise.getDisguiseName()); - } else { - LibsMsg.DISG_PLAYER_AS_DISG_FAIL.send(sender, - entityTarget instanceof Player ? entityTarget.getName() : - DisguiseType.getType(entityTarget).toReadable(), disguise.getDisguiseName()); - } - - return true; - } - - private boolean setViewDisguise(String[] strings) { - for (String string : strings) { - if (!string.equalsIgnoreCase("setSelfDisguiseVisible")) - continue; - - return true; - } - - return false; - } - - @Override - public List onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { - ArrayList tabs = new ArrayList<>(); - String[] args = getPreviousArgs(origArgs); - - DisguisePermissions perms = getPermissions(sender); - - if (args.length == 0) { - for (Player player : Bukkit.getOnlinePlayers()) { - // If command user cannot see player online, don't tab-complete name - if (sender instanceof Player && !((Player) sender).canSee(player)) { - continue; - } - - tabs.add(player.getName()); - } - } else { - tabs.addAll(getTabDisguiseTypes(sender, perms, args, 1, getCurrentArg(origArgs))); - } - - return filterTabs(tabs, origArgs); - } - - /** - * Send the player the information - */ - @Override - protected void sendCommandUsage(CommandSender sender, DisguisePermissions permissions) { - ArrayList allowedDisguises = getAllowedDisguises(permissions); - - if (allowedDisguises.isEmpty()) { - LibsMsg.NO_PERM.send(sender); - return; - } - - LibsMsg.D_HELP1.send(sender); - LibsMsg.CAN_USE_DISGS.send(sender, - StringUtils.join(allowedDisguises, LibsMsg.CAN_USE_DISGS_SEPERATOR.get())); - - if (allowedDisguises.contains("player")) { - LibsMsg.D_HELP3.send(sender); - } - - LibsMsg.D_HELP4.send(sender); - - if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { - LibsMsg.D_HELP5.send(sender); - } - } -} diff --git a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java b/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java deleted file mode 100644 index 2270f8fb..00000000 --- a/src/main/java/me/libraryaddict/disguise/commands/disguise/DisguiseRadiusCommand.java +++ /dev/null @@ -1,308 +0,0 @@ -package me.libraryaddict.disguise.commands.disguise; - -import me.libraryaddict.disguise.DisguiseAPI; -import me.libraryaddict.disguise.DisguiseConfig; -import me.libraryaddict.disguise.commands.DisguiseBaseCommand; -import me.libraryaddict.disguise.disguisetypes.Disguise; -import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; -import me.libraryaddict.disguise.utilities.DisguiseUtilities; -import me.libraryaddict.disguise.utilities.parser.DisguiseParseException; -import me.libraryaddict.disguise.utilities.parser.DisguiseParser; -import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; -import me.libraryaddict.disguise.utilities.translations.LibsMsg; -import me.libraryaddict.disguise.utilities.translations.TranslateType; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.BlockCommandSender; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCompleter { - private int maxRadius = 30; - private ArrayList> validClasses = new ArrayList<>(); - - public DisguiseRadiusCommand(int maxRadius) { - this.maxRadius = maxRadius; - - for (EntityType type : EntityType.values()) { - Class c = type.getEntityClass(); - - while (c != null && Entity.class.isAssignableFrom(c) && !validClasses.contains(c)) { - validClasses.add(c); - - c = c.getSuperclass(); - } - } - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (isNotPremium(sender)) { - return true; - } - - if (sender.getName().equals("CONSOLE")) { - LibsMsg.NO_CONSOLE.send(sender); - return true; - } - - DisguisePermissions permissions = getPermissions(sender); - - if (!permissions.hasPermissions()) { - LibsMsg.NO_PERM.send(sender); - return true; - } - - if (args.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - if (args[0].equalsIgnoreCase(TranslateType.DISGUISES.get("EntityType")) || - args[0].equalsIgnoreCase(TranslateType.DISGUISES.get("EntityType") + "s")) { - ArrayList classes = new ArrayList<>(); - - for (Class c : validClasses) { - classes.add(TranslateType.DISGUISES.get(c.getSimpleName())); - } - - Collections.sort(classes); - - LibsMsg.DRADIUS_ENTITIES.send(sender, - ChatColor.GREEN + StringUtils.join(classes, ChatColor.DARK_GREEN + ", " + ChatColor.GREEN)); - return true; - } - - Class entityClass = Entity.class; - EntityType type = null; - int starting = 0; - - if (!isInteger(args[0])) { - for (Class c : validClasses) { - if (TranslateType.DISGUISES.get(c.getSimpleName()).equalsIgnoreCase(args[0])) { - entityClass = c; - starting = 1; - break; - } - } - - if (starting == 0) { - try { - type = EntityType.valueOf(args[0].toUpperCase()); - } - catch (Exception ignored) { - } - - if (type == null) { - LibsMsg.DMODRADIUS_UNRECOGNIZED.send(sender, args[0]); - return true; - } - } - } - - if (args.length == starting + 1) { - if (starting == 0) { - LibsMsg.DRADIUS_NEEDOPTIONS.send(sender); - } else { - LibsMsg.DRADIUS_NEEDOPTIONS_ENTITY.send(sender); - } - - return true; - } else if (args.length < 2) { - LibsMsg.DRADIUS_NEEDOPTIONS.send(sender); - return true; - } - - if (!isInteger(args[starting])) { - LibsMsg.NOT_NUMBER.send(sender, args[starting]); - return true; - } - - int radius = Integer.parseInt(args[starting]); - - if (radius > maxRadius) { - LibsMsg.LIMITED_RADIUS.send(sender, maxRadius); - radius = maxRadius; - } - - String[] newArgs = new String[args.length - (starting + 1)]; - System.arraycopy(args, starting + 1, newArgs, 0, newArgs.length); - - if (newArgs.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - String[] disguiseArgs = DisguiseUtilities.split(StringUtils.join(newArgs, " ")); - - try { - - Disguise testDisguise = DisguiseParser.parseTestDisguise(sender, getPermNode(), disguiseArgs, permissions); - - // Time to use it! - int disguisedEntitys = 0; - int miscDisguises = 0; - - Location center; - - if (sender instanceof Player) { - center = ((Player) sender).getLocation(); - } else { - center = ((BlockCommandSender) sender).getBlock().getLocation().add(0.5, 0, 0.5); - } - - for (Entity entity : center.getWorld().getNearbyEntities(center, radius, radius, radius)) { - if (entity == sender) { - continue; - } - - if (type != null ? entity.getType() != type : !entityClass.isAssignableFrom(entity.getClass())) { - continue; - } - - if (testDisguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() && - entity instanceof LivingEntity) { - miscDisguises++; - continue; - } - - Disguise disguise = DisguiseParser - .parseDisguise(sender, entity, getPermNode(), disguiseArgs, permissions); - - if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise() && - !entity.hasPermission("libsdisguises.hidename")) { - if (disguise.getWatcher() instanceof LivingWatcher) { - disguise.getWatcher().setCustomName(getDisplayName(entity)); - if (DisguiseConfig.isNameAboveHeadAlwaysVisible()) { - disguise.getWatcher().setCustomNameVisible(true); - } - } - } - - disguise.setEntity(entity); - - if (!setViewDisguise(args)) { - // They prefer to have the opposite of whatever the view disguises option is - if (DisguiseAPI.hasSelfDisguisePreference(disguise.getEntity()) && - disguise.isSelfDisguiseVisible() == DisguiseConfig.isViewDisguises()) - disguise.setViewSelfDisguise(!disguise.isSelfDisguiseVisible()); - } - - if (!DisguiseAPI.isActionBarShown(disguise.getEntity())) { - disguise.setNotifyBar(DisguiseConfig.NotifyBar.NONE); - } - - disguise.startDisguise(); - - if (disguise.isDisguiseInUse()) { - disguisedEntitys++; - } - } - - if (disguisedEntitys > 0) { - LibsMsg.DISRADIUS.send(sender, disguisedEntitys); - } else { - LibsMsg.DISRADIUS_FAIL.send(sender); - } - - if (miscDisguises > 0) { - LibsMsg.DRADIUS_MISCDISG.send(sender, miscDisguises); - } - } - catch (DisguiseParseException ex) { - if (ex.getMessage() != null) { - DisguiseUtilities.sendMessage(sender, ex.getMessage()); - } - } - catch (Exception ex) { - ex.printStackTrace(); - } - - return true; - } - - private boolean setViewDisguise(String[] strings) { - for (String string : strings) { - if (!string.equalsIgnoreCase("setSelfDisguiseVisible")) - continue; - - return true; - } - - return false; - } - - @Override - public List onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { - ArrayList tabs = new ArrayList<>(); - String[] args = getPreviousArgs(origArgs); - - DisguisePermissions perms = getPermissions(sender); - - if (args.length == 0) { - for (Class entityClass : validClasses) { - tabs.add(TranslateType.DISGUISES.get(entityClass.getSimpleName())); - } - - return filterTabs(tabs, origArgs); - } - - int starting = 1; - - if (!isInteger(args[0])) { - for (Class c : validClasses) { - if (!TranslateType.DISGUISES.get(c.getSimpleName()).equalsIgnoreCase(args[0])) - continue; - - starting = 2; - break; - } - - // Not a valid radius - if (starting == 1 || args.length == 1 || !isInteger(args[1])) - return filterTabs(tabs, origArgs); - } - - tabs.addAll(getTabDisguiseTypes(sender, perms, args, starting, getCurrentArg(origArgs))); - - return filterTabs(tabs, origArgs); - } - - /** - * Send the player the information - */ - @Override - protected void sendCommandUsage(CommandSender sender, DisguisePermissions permissions) { - ArrayList allowedDisguises = getAllowedDisguises(permissions); - - if (allowedDisguises.isEmpty()) { - LibsMsg.NO_PERM.send(sender); - return; - } - - LibsMsg.DRADIUS_HELP1.send(sender, maxRadius); - LibsMsg.CAN_USE_DISGS.send(sender, StringUtils.join(allowedDisguises, LibsMsg.CAN_USE_DISGS_SEPERATOR.get())); - - if (allowedDisguises.contains("player")) { - LibsMsg.DRADIUS_HELP3.send(sender); - } - - LibsMsg.DRADIUS_HELP4.send(sender); - - if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { - LibsMsg.DRADIUS_HELP5.send(sender); - } - - LibsMsg.DRADIUS_HELP6.send(sender); - } -} diff --git a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java b/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java deleted file mode 100644 index 666a9a56..00000000 --- a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyPlayerCommand.java +++ /dev/null @@ -1,168 +0,0 @@ -package me.libraryaddict.disguise.commands.modify; - -import me.libraryaddict.disguise.DisguiseAPI; -import me.libraryaddict.disguise.commands.DisguiseBaseCommand; -import me.libraryaddict.disguise.disguisetypes.Disguise; -import me.libraryaddict.disguise.utilities.DisguiseUtilities; -import me.libraryaddict.disguise.utilities.parser.DisguiseParseException; -import me.libraryaddict.disguise.utilities.parser.DisguiseParser; -import me.libraryaddict.disguise.utilities.parser.DisguisePerm; -import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; -import me.libraryaddict.disguise.utilities.translations.LibsMsg; -import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements TabCompleter { - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - DisguisePermissions permissions = getPermissions(sender); - - if (!permissions.hasPermissions()) { - LibsMsg.NO_PERM.send(sender); - return true; - } - - if (args.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - Entity entityTarget = Bukkit.getPlayer(args[0]); - - if (entityTarget == null) { - if (args[0].contains("-")) { - try { - entityTarget = Bukkit.getEntity(UUID.fromString(args[0])); - } - catch (Exception ignored) { - } - } - } - - if (entityTarget == null) { - LibsMsg.CANNOT_FIND_PLAYER.send(sender, args[0]); - return true; - } - - String[] newArgs = new String[args.length - 1]; - System.arraycopy(args, 1, newArgs, 0, newArgs.length); - - if (newArgs.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - Disguise disguise = null; - - if (sender instanceof Player) - disguise = DisguiseAPI.getDisguise((Player) sender, entityTarget); - - if (disguise == null) - disguise = DisguiseAPI.getDisguise(entityTarget); - - if (disguise == null) { - LibsMsg.DMODPLAYER_NODISGUISE.send(sender, entityTarget.getName()); - return true; - } - - DisguisePerm disguisePerm = new DisguisePerm(disguise.getType()); - - if (!permissions.isAllowedDisguise(disguisePerm)) { - LibsMsg.DMODPLAYER_NOPERM.send(sender); - return true; - } - - String[] options = DisguiseUtilities.split(StringUtils.join(newArgs, " ")); - - options = DisguiseParser.parsePlaceholders(options, sender, entityTarget); - - try { - DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(), options, - "DisguiseModifyPlayer"); - } - catch (DisguiseParseException ex) { - if (ex.getMessage() != null) { - DisguiseUtilities.sendMessage(sender, ex.getMessage()); - } - return true; - } - - catch (Exception ex) { - ex.printStackTrace(); - return true; - } - - LibsMsg.DMODPLAYER_MODIFIED.send(sender, entityTarget.getName()); - - return true; - } - - @Override - public List onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { - ArrayList tabs = new ArrayList<>(); - String[] args = getPreviousArgs(origArgs); - - DisguisePermissions perms = getPermissions(sender); - - if (!perms.hasPermissions()) { - return tabs; - } - - if (args.length == 0) { - for (Player player : Bukkit.getOnlinePlayers()) { - // If command user cannot see player online, don't tab-complete name - if (sender instanceof Player && !((Player) sender).canSee(player)) { - continue; - } - - tabs.add(player.getName()); - } - } else { - Player player = Bukkit.getPlayer(args[0]); - - if (player == null) { - return tabs; - } - - Disguise disguise = null; - - if (sender instanceof Player) - disguise = DisguiseAPI.getDisguise((Player) sender, player); - - if (disguise == null) - disguise = DisguiseAPI.getDisguise(player); - - if (disguise == null) { - return tabs; - } - - DisguisePerm disguiseType = new DisguisePerm(disguise.getType()); - - tabs.addAll(getTabDisguiseOptions(sender, perms, disguiseType, args, 1, getCurrentArg(args))); - } - - return filterTabs(tabs, origArgs); - } - - /** - * Send the player the information - */ - @Override - protected void sendCommandUsage(CommandSender sender, DisguisePermissions permissions) { - ArrayList allowedDisguises = getAllowedDisguises(permissions); - - LibsMsg.DMODPLAYER_HELP1.send(sender); - LibsMsg.DMODIFY_HELP3.send(sender, - StringUtils.join(allowedDisguises, LibsMsg.CAN_USE_DISGS_SEPERATOR.get())); - } -} diff --git a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java b/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java deleted file mode 100644 index 853c7c1b..00000000 --- a/src/main/java/me/libraryaddict/disguise/commands/modify/DisguiseModifyRadiusCommand.java +++ /dev/null @@ -1,300 +0,0 @@ -package me.libraryaddict.disguise.commands.modify; - -import me.libraryaddict.disguise.DisguiseAPI; -import me.libraryaddict.disguise.commands.DisguiseBaseCommand; -import me.libraryaddict.disguise.disguisetypes.Disguise; -import me.libraryaddict.disguise.disguisetypes.DisguiseType; -import me.libraryaddict.disguise.utilities.DisguiseUtilities; -import me.libraryaddict.disguise.utilities.params.ParamInfoManager; -import me.libraryaddict.disguise.utilities.parser.DisguiseParseException; -import me.libraryaddict.disguise.utilities.parser.DisguiseParser; -import me.libraryaddict.disguise.utilities.parser.DisguisePerm; -import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; -import me.libraryaddict.disguise.utilities.translations.LibsMsg; -import me.libraryaddict.disguise.utilities.translations.TranslateType; -import org.apache.commons.lang.StringUtils; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.command.BlockCommandSender; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; - -import java.lang.reflect.Method; -import java.util.*; - -public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements TabCompleter { - private int maxRadius = 30; - - public DisguiseModifyRadiusCommand(int maxRadius) { - this.maxRadius = maxRadius; - } - - private Collection getNearbyEntities(CommandSender sender, int radius) { - Location center; - - if (sender instanceof Player) { - center = ((Player) sender).getLocation(); - } else { - center = ((BlockCommandSender) sender).getBlock().getLocation().add(0.5, 0, 0.5); - } - - return center.getWorld().getNearbyEntities(center, radius, radius, radius); - } - - @Override - public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (sender.getName().equals("CONSOLE")) { - LibsMsg.NO_CONSOLE.send(sender); - return true; - } - - DisguisePermissions permissions = getPermissions(sender); - - if (!permissions.hasPermissions()) { - LibsMsg.NO_PERM.send(sender); - return true; - } - - if (args.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - if (args[0].equalsIgnoreCase(TranslateType.DISGUISES.get("DisguiseType")) || - args[0].equalsIgnoreCase(TranslateType.DISGUISES.get("DisguiseType") + "s")) { - ArrayList classes = new ArrayList<>(); - - for (DisguiseType type : DisguiseType.values()) { - if (type.getEntityType() == null) { - continue; - } - - classes.add(type.toReadable()); - } - - Collections.sort(classes); - - LibsMsg.DMODRADIUS_USABLE.send(sender, - ChatColor.GREEN + StringUtils.join(classes, ChatColor.DARK_GREEN + ", " + ChatColor.GREEN)); - return true; - } - - DisguiseType baseType = null; - int starting = 0; - - if (!isInteger(args[0])) { - for (DisguiseType t : DisguiseType.values()) { - if (t.getEntityType() == null) { - continue; - } - - if (t.toReadable().replaceAll(" ", "").equalsIgnoreCase(args[0].replaceAll("_", ""))) { - baseType = t; - starting = 1; - break; - } - } - - if (baseType == null) { - LibsMsg.DMODRADIUS_UNRECOGNIZED.send(sender, args[0]); - return true; - } - } - - if (args.length == starting + 1) { - if (starting == 0) { - LibsMsg.DMODRADIUS_NEEDOPTIONS.send(sender); - } else { - LibsMsg.DMODRADIUS_NEEDOPTIONS_ENTITY.send(sender); - } - - return true; - } else if (args.length < 2) { - LibsMsg.DMODRADIUS_NEEDOPTIONS.send(sender); - return true; - } - - if (!isInteger(args[starting])) { - LibsMsg.NOT_NUMBER.send(sender, args[starting]); - return true; - } - - int radius = Integer.parseInt(args[starting]); - - if (radius > maxRadius) { - LibsMsg.LIMITED_RADIUS.send(sender, maxRadius); - radius = maxRadius; - } - - String[] newArgs = new String[args.length - (starting + 1)]; - System.arraycopy(args, starting + 1, newArgs, 0, newArgs.length); - - if (newArgs.length == 0) { - sendCommandUsage(sender, permissions); - return true; - } - - // Time to use it! - int modifiedDisguises = 0; - int noPermission = 0; - - String[] disguiseArgs = DisguiseUtilities.split(StringUtils.join(newArgs, " ")); - - for (Entity entity : getNearbyEntities(sender, radius)) { - if (entity == sender) { - continue; - } - - if (baseType != null && !baseType.name().equalsIgnoreCase(entity.getType().name())) { - continue; - } - - Disguise disguise; - - if (sender instanceof Player) - disguise = DisguiseAPI.getDisguise((Player) sender, entity); - else - disguise = DisguiseAPI.getDisguise(entity); - - if (disguise == null) { - continue; - } - - DisguisePerm disguisePerm = new DisguisePerm(disguise.getType()); - - if (!permissions.isAllowedDisguise(disguisePerm)) { - noPermission++; - continue; - } - - String[] tempArgs = Arrays.copyOf(disguiseArgs, disguiseArgs.length); - tempArgs = DisguiseParser.parsePlaceholders(tempArgs, sender, entity); - - try { - DisguiseParser.callMethods(sender, disguise, permissions, disguisePerm, new ArrayList<>(), tempArgs, - "DisguiseModifyRadius"); - modifiedDisguises++; - } - catch (DisguiseParseException ex) { - if (ex.getMessage() != null) { - DisguiseUtilities.sendMessage(sender, ex.getMessage()); - } - - return true; - } - catch (Exception ex) { - ex.printStackTrace(); - return true; - } - } - - if (noPermission > 0) { - LibsMsg.DMODRADIUS_NOPERM.send(sender, noPermission); - } - - if (modifiedDisguises > 0) { - LibsMsg.DMODRADIUS.send(sender, modifiedDisguises); - } else { - LibsMsg.DMODRADIUS_NOENTS.send(sender); - } - - return true; - } - - @Override - public List onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { - ArrayList tabs = new ArrayList<>(); - String[] args = getPreviousArgs(origArgs); - - DisguisePermissions perms = getPermissions(sender); - - if (args.length == 0) { - for (DisguiseType type : DisguiseType.values()) { - if (type.getEntityType() == null) { - continue; - } - - tabs.add(type.toReadable().replaceAll(" ", "_")); - } - - return filterTabs(tabs, origArgs); - } - - int starting = 0; - - if (!isInteger(args[0])) { - for (DisguiseType t : DisguiseType.values()) { - if (t.getEntityType() == null) { - continue; - } - - if (t.toReadable().replaceAll(" ", "").equalsIgnoreCase(args[0].replaceAll("_", ""))) { - starting = 2; - break; - } - } - - // Not a valid radius - if (starting == 1 || args.length == 1 || !isInteger(args[1])) - return filterTabs(tabs, origArgs); - } - - if (args.length <= starting || !isInteger(args[starting])) { - return filterTabs(tabs, origArgs); - } - - int radius = Integer.parseInt(args[starting]); - - if (radius > maxRadius) { - LibsMsg.LIMITED_RADIUS.send(sender, maxRadius); - radius = maxRadius; - } - - starting++; - - ArrayList usedOptions = new ArrayList<>(); - - for (Entity entity : getNearbyEntities(sender, radius)) { - Disguise disguise = DisguiseAPI.getDisguise(entity); - - if (disguise == null) - continue; - - DisguiseType disguiseType = disguise.getType(); - - for (Method method : ParamInfoManager.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { - for (String arg : args) { - if (!method.getName().equalsIgnoreCase(arg) || usedOptions.contains(arg)) - continue; - - usedOptions.add(arg); - } - } - - DisguisePerm perm = new DisguisePerm(disguiseType); - - if (perms.isAllowedDisguise(perm, usedOptions)) { - tabs.addAll(getTabDisguiseSubOptions(sender, perms, perm, args, starting, getCurrentArg(args))); - } - } - - return filterTabs(tabs, origArgs); - } - - /** - * Send the player the information - */ - @Override - protected void sendCommandUsage(CommandSender sender, DisguisePermissions permissions) { - ArrayList allowedDisguises = getAllowedDisguises(permissions); - - LibsMsg.DMODRADIUS_HELP1.send(sender, maxRadius); - LibsMsg.DMODIFY_HELP3.send(sender, StringUtils.join(allowedDisguises, LibsMsg.CAN_USE_DISGS_SEPERATOR.get())); - - LibsMsg.DMODRADIUS_HELP2.send(sender); - LibsMsg.DMODRADIUS_HELP3.send(sender); - } -}