diff --git a/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java b/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java index 4db15688..feccd707 100644 --- a/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java +++ b/src/main/java/me/libraryaddict/disguise/commands/LibsDisguisesCommand.java @@ -2,17 +2,22 @@ package me.libraryaddict.disguise.commands; import me.libraryaddict.disguise.DisguiseConfig; import me.libraryaddict.disguise.LibsDisguises; +import me.libraryaddict.disguise.disguisetypes.DisguiseType; import me.libraryaddict.disguise.disguisetypes.MetaIndex; import me.libraryaddict.disguise.utilities.LibsPremium; +import me.libraryaddict.disguise.utilities.parser.DisguisePerm; +import me.libraryaddict.disguise.utilities.parser.DisguisePermissions; import me.libraryaddict.disguise.utilities.translations.LibsMsg; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; +import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; +import org.bukkit.permissions.Permissible; import java.util.ArrayList; import java.util.Iterator; @@ -89,6 +94,40 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { DisguiseConfig.loadConfig(); sender.sendMessage(LibsMsg.RELOADED_CONFIG.get()); return true; + } else if (args[0].equalsIgnoreCase("permtest")) { + if (!sender.hasPermission("libsdisguises.permtest")) { + sender.sendMessage(LibsMsg.NO_PERM.get()); + return true; + } + + Permissible player; + + if (args.length > 1) { + player = Bukkit.getPlayer(args[1]); + + if (player == null) { + sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[1])); + return true; + } + } else { + player = sender; + } + + DisguisePermissions permissions = new DisguisePermissions(player, "disguise"); + sender.sendMessage(LibsMsg.LIBS_PERM_CHECK_INFO_1.get()); + sender.sendMessage(LibsMsg.LIBS_PERM_CHECK_INFO_2.get()); + + if (player.hasPermission("libsdisguises.disguise.pig")) { + sender.sendMessage(LibsMsg.NORMAL_PERM_CHECK_SUCCESS.get()); + + if (permissions.isAllowedDisguise(new DisguisePerm(DisguiseType.PIG))) { + sender.sendMessage(LibsMsg.LIBS_PERM_CHECK_SUCCESS.get()); + } else { + sender.sendMessage(LibsMsg.LIBS_PERM_CHECK_FAIL.get()); + } + } else { + sender.sendMessage(LibsMsg.NORMAL_PERM_CHECK_FAIL.get()); + } } else if (args[0].equalsIgnoreCase("metainfo") || args[0].equalsIgnoreCase("meta")) { if (!sender.hasPermission("libsdisguises.metainfo")) { sender.sendMessage(LibsMsg.NO_PERM.get()); diff --git a/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java b/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java index ee24a46f..e79ccb3f 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/translations/LibsMsg.java @@ -113,7 +113,7 @@ public enum LibsMsg { PLEASE_WAIT(ChatColor.GRAY + "Please wait..."), INVALID_CLONE(ChatColor.DARK_RED + "Unknown option '%s' - Valid options are 'IgnoreEquipment' 'DoSneakSprint' " + "'DoSneak' 'DoSprint'"), - LIBS_COMMAND_WRONG_ARG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload' or 'metainfo'?"), + LIBS_COMMAND_WRONG_ARG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload', 'permtest' or 'metainfo'?"), LIMITED_RADIUS(ChatColor.RED + "Limited radius to %s! Don't want to make too much lag right?"), LISTEN_ENTITY_ENTITY_DISG_ENTITY(ChatColor.RED + "Disguised %s as a %s!"), LISTEN_ENTITY_ENTITY_DISG_ENTITY_FAIL(ChatColor.RED + "Failed to disguise %s as a %s!"), @@ -235,7 +235,16 @@ public enum LibsMsg { META_NOT_FOUND(ChatColor.RED + "No meta exists under that name!"), META_VALUES(ChatColor.BLUE + "Metas: " + ChatColor.DARK_AQUA), META_VALUE_SEPERATOR(ChatColor.AQUA + ", " + ChatColor.DARK_AQUA), - META_CLICK_SHOW(ChatColor.GOLD + "Click to show %s"); + META_CLICK_SHOW(ChatColor.GOLD + "Click to show %s"), + LIBS_PERM_CHECK_INFO_1(ChatColor.AQUA + "Now checking for the permission 'libsdisguises.disguise.pig'"), + LIBS_PERM_CHECK_INFO_2(ChatColor.AQUA + + "If you did not give this permission, please set it. You can supply a player name to test another player."), + NORMAL_PERM_CHECK_SUCCESS(ChatColor.GOLD + "Normal permission check, success."), + NORMAL_PERM_CHECK_FAIL(ChatColor.RED + "Normal permission check, fail."), + LIBS_PERM_CHECK_SUCCESS( + ChatColor.GOLD + "Lib's Disguises permission check, success. Pig disguise should be usable!"), + LIBS_PERM_CHECK_FAIL( + ChatColor.GOLD + "Lib's Disguises permission check, fail. Your permission plugin isn't compliant!"); private String string;