Add meta index info to libsdisguises command
This commit is contained in:
		
							
								
								
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -49,7 +49,7 @@ | |||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>com.comphenix.protocol</groupId> |             <groupId>com.comphenix.protocol</groupId> | ||||||
|             <artifactId>ProtocolLib</artifactId> |             <artifactId>ProtocolLib</artifactId> | ||||||
|             <version>4.5.1-SNAPSHOT</version> |             <version>4.5.0</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.spigotmc</groupId> |             <groupId>org.spigotmc</groupId> | ||||||
|   | |||||||
| @@ -2,8 +2,12 @@ package me.libraryaddict.disguise.commands; | |||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseConfig; | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
| import me.libraryaddict.disguise.LibsDisguises; | import me.libraryaddict.disguise.LibsDisguises; | ||||||
| import me.libraryaddict.disguise.utilities.translations.LibsMsg; | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
| import me.libraryaddict.disguise.utilities.LibsPremium; | import me.libraryaddict.disguise.utilities.LibsPremium; | ||||||
|  | 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.ChatColor; | import org.bukkit.ChatColor; | ||||||
| import org.bukkit.command.Command; | import org.bukkit.command.Command; | ||||||
| import org.bukkit.command.CommandExecutor; | import org.bukkit.command.CommandExecutor; | ||||||
| @@ -76,16 +80,61 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { | |||||||
|                 sender.sendMessage(ChatColor.DARK_GREEN + "This server supports the plugin developer!"); |                 sender.sendMessage(ChatColor.DARK_GREEN + "This server supports the plugin developer!"); | ||||||
|             } |             } | ||||||
|         } else if (args.length > 0) { |         } else if (args.length > 0) { | ||||||
|             if (sender.hasPermission("libsdisguises.reload")) { |             if (args[0].equalsIgnoreCase("reload")) { | ||||||
|                 if (args[0].equalsIgnoreCase("reload")) { |                 if (!sender.hasPermission("libsdisguises.reload")) { | ||||||
|                     DisguiseConfig.loadConfig(); |                     sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|                     sender.sendMessage(LibsMsg.RELOADED_CONFIG.get()); |  | ||||||
|                     return true; |                     return true; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 DisguiseConfig.loadConfig(); | ||||||
|  |                 sender.sendMessage(LibsMsg.RELOADED_CONFIG.get()); | ||||||
|  |                 return true; | ||||||
|  |             } else if (args[0].equalsIgnoreCase("metainfo") || args[0].equalsIgnoreCase("meta")) { | ||||||
|  |                 if (!sender.hasPermission("libsdisguises.metainfo")) { | ||||||
|  |                     sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|  |                     return true; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 if (args.length > 1) { | ||||||
|  |                     MetaIndex index = MetaIndex.getMetaIndexByName(args[1]); | ||||||
|  |  | ||||||
|  |                     if (index == null) { | ||||||
|  |                         sender.sendMessage(LibsMsg.META_NOT_FOUND.get()); | ||||||
|  |                         return true; | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     sender.sendMessage(index.toString()); | ||||||
|                 } else { |                 } else { | ||||||
|                     sender.sendMessage(LibsMsg.LIBS_RELOAD_WRONG.get()); |                     ArrayList<String> names = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |                     for (MetaIndex index : MetaIndex.values()) { | ||||||
|  |                         names.add(MetaIndex.getName(index)); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     names.sort(String::compareToIgnoreCase); | ||||||
|  |  | ||||||
|  |                     ComponentBuilder builder = new ComponentBuilder("").appendLegacy(LibsMsg.META_VALUES.get()); | ||||||
|  |  | ||||||
|  |                     Iterator<String> itel = names.iterator(); | ||||||
|  |  | ||||||
|  |                     while (itel.hasNext()) { | ||||||
|  |                         String name = itel.next(); | ||||||
|  |  | ||||||
|  |                         builder.appendLegacy(name); | ||||||
|  |                         builder.event( | ||||||
|  |                                 new ClickEvent(ClickEvent.Action.RUN_COMMAND, cmd.getName() + " metainfo " + name)); | ||||||
|  |                         builder.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, | ||||||
|  |                                 new ComponentBuilder("").appendLegacy(LibsMsg.META_CLICK_SHOW.get(name)).create())); | ||||||
|  |  | ||||||
|  |                         if (itel.hasNext()) { | ||||||
|  |                             builder.appendLegacy(LibsMsg.META_VALUE_SEPERATOR.get()); | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     sender.spigot().sendMessage(builder.create()); | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 sender.sendMessage(LibsMsg.NO_PERM.get()); |                 sender.sendMessage(LibsMsg.LIBS_COMMAND_WRONG_ARG.get()); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return true; |         return true; | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import com.comphenix.protocol.wrappers.nbt.NbtFactory; | |||||||
| import com.comphenix.protocol.wrappers.nbt.NbtType; | import com.comphenix.protocol.wrappers.nbt.NbtType; | ||||||
| import me.libraryaddict.disguise.disguisetypes.watchers.*; | import me.libraryaddict.disguise.disguisetypes.watchers.*; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||||
| import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; | import me.libraryaddict.disguise.utilities.translations.LibsMsg; | ||||||
| import org.bukkit.Color; | import org.bukkit.Color; | ||||||
| import org.bukkit.Material; | import org.bukkit.Material; | ||||||
| import org.bukkit.Particle; | import org.bukkit.Particle; | ||||||
| @@ -596,7 +596,6 @@ public class MetaIndex<Y> { | |||||||
|      * All flag types should never occur twice. |      * All flag types should never occur twice. | ||||||
|      */ |      */ | ||||||
|     public static void validateMetadata() { |     public static void validateMetadata() { | ||||||
|  |  | ||||||
|         HashMap<Class, Integer> maxValues = new HashMap<>(); |         HashMap<Class, Integer> maxValues = new HashMap<>(); | ||||||
|  |  | ||||||
|         for (MetaIndex type : values()) { |         for (MetaIndex type : values()) { | ||||||
| @@ -639,10 +638,14 @@ public class MetaIndex<Y> { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public String toString() { | ||||||
|  |         return LibsMsg.META_INFO.get(getName(this), getFlagWatcher().getSimpleName(), getIndex(), | ||||||
|  |                 getDefault().getClass().getSimpleName(), DisguiseUtilities.getGson().toJson(getDefault())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Used for debugging purposes, prints off the registered MetaIndexes |      * Used for debugging purposes, prints off the registered MetaIndexes | ||||||
|      */ |      */ | ||||||
|     @Deprecated |  | ||||||
|     public static void printMetadata() { |     public static void printMetadata() { | ||||||
|         ArrayList<String> toPrint = new ArrayList<>(); |         ArrayList<String> toPrint = new ArrayList<>(); | ||||||
|  |  | ||||||
| @@ -653,9 +656,7 @@ public class MetaIndex<Y> { | |||||||
|  |  | ||||||
|                 MetaIndex index = (MetaIndex) field.get(null); |                 MetaIndex index = (MetaIndex) field.get(null); | ||||||
|  |  | ||||||
|                 toPrint.add( |                 toPrint.add(index.toString()); | ||||||
|                         index.getFlagWatcher().getSimpleName() + " " + field.getName() + " " + index.getIndex() + " " + |  | ||||||
|                                 index.getDefault().getClass().getSimpleName()); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         catch (Exception ex) { |         catch (Exception ex) { | ||||||
| @@ -742,10 +743,28 @@ public class MetaIndex<Y> { | |||||||
|         return _values; |         return _values; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static MetaIndex getMetaIndexByName(String name) { | ||||||
|  |         name = name.toUpperCase(); | ||||||
|  |  | ||||||
|  |         try { | ||||||
|  |             for (Field field : MetaIndex.class.getFields()) { | ||||||
|  |                 if (!field.getName().equals(name) || field.getType() != MetaIndex.class) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 return (MetaIndex) field.get(null); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         catch (IllegalAccessException e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return null; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get the field name of a registered MetaIndex |      * Get the field name of a registered MetaIndex | ||||||
|      */ |      */ | ||||||
|     @Deprecated |  | ||||||
|     public static String getName(MetaIndex metaIndex) { |     public static String getName(MetaIndex metaIndex) { | ||||||
|         try { |         try { | ||||||
|             for (Field field : MetaIndex.class.getFields()) { |             for (Field field : MetaIndex.class.getFields()) { | ||||||
|   | |||||||
| @@ -113,7 +113,7 @@ public enum LibsMsg { | |||||||
|     PLEASE_WAIT(ChatColor.GRAY + "Please wait..."), |     PLEASE_WAIT(ChatColor.GRAY + "Please wait..."), | ||||||
|     INVALID_CLONE(ChatColor.DARK_RED + "Unknown option '%s' - Valid options are 'IgnoreEquipment' 'DoSneakSprint' " + |     INVALID_CLONE(ChatColor.DARK_RED + "Unknown option '%s' - Valid options are 'IgnoreEquipment' 'DoSneakSprint' " + | ||||||
|             "'DoSneak' 'DoSprint'"), |             "'DoSneak' 'DoSprint'"), | ||||||
|     LIBS_RELOAD_WRONG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload'?"), |     LIBS_COMMAND_WRONG_ARG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload' or 'metainfo'?"), | ||||||
|     LIMITED_RADIUS(ChatColor.RED + "Limited radius to %s! Don't want to make too much lag right?"), |     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(ChatColor.RED + "Disguised %s as a %s!"), | ||||||
|     LISTEN_ENTITY_ENTITY_DISG_ENTITY_FAIL(ChatColor.RED + "Failed to disguise %s as a %s!"), |     LISTEN_ENTITY_ENTITY_DISG_ENTITY_FAIL(ChatColor.RED + "Failed to disguise %s as a %s!"), | ||||||
| @@ -220,7 +220,8 @@ public enum LibsMsg { | |||||||
|             "Means '/savedisguise Notch player Notch setsneaking'"), |             "Means '/savedisguise Notch player Notch setsneaking'"), | ||||||
|     SAVE_DISG_HELP_5(ChatColor.GREEN + "Remember! You can upload your own skins, then reference those skins!"), |     SAVE_DISG_HELP_5(ChatColor.GREEN + "Remember! You can upload your own skins, then reference those skins!"), | ||||||
|     GRAB_DISG_HELP_1(ChatColor.GREEN + |     GRAB_DISG_HELP_1(ChatColor.GREEN + | ||||||
|             "You can choose a name to save the skins under, the names will be usable as if it was an actual player skin"), |             "You can choose a name to save the skins under, the names will be usable as if it was an actual player " + | ||||||
|  |             "skin"), | ||||||
|     GRAB_DISG_HELP_2(ChatColor.DARK_GREEN + "/grabskin https://somesite.com/myskin.png <Optional Name>"), |     GRAB_DISG_HELP_2(ChatColor.DARK_GREEN + "/grabskin https://somesite.com/myskin.png <Optional Name>"), | ||||||
|     GRAB_DISG_HELP_3(ChatColor.DARK_GREEN + "/grabskin myskin.png <Optional Name> - Skins must be in the folder!"), |     GRAB_DISG_HELP_3(ChatColor.DARK_GREEN + "/grabskin myskin.png <Optional Name> - Skins must be in the folder!"), | ||||||
|     GRAB_DISG_HELP_4(ChatColor.DARK_GREEN + "/grabskin <Player name or UUID> <Optional Name>"), |     GRAB_DISG_HELP_4(ChatColor.DARK_GREEN + "/grabskin <Player name or UUID> <Optional Name>"), | ||||||
| @@ -229,7 +230,12 @@ public enum LibsMsg { | |||||||
|     CUSTOM_DISGUISE_NAME_CONFLICT( |     CUSTOM_DISGUISE_NAME_CONFLICT( | ||||||
|             ChatColor.RED + "Cannot create the custom disguise '%s' as there is a name conflict!"), |             ChatColor.RED + "Cannot create the custom disguise '%s' as there is a name conflict!"), | ||||||
|     ERROR_LOADING_CUSTOM_DISGUISE(ChatColor.RED + "Error while loading custom disguise '%s'%s"), |     ERROR_LOADING_CUSTOM_DISGUISE(ChatColor.RED + "Error while loading custom disguise '%s'%s"), | ||||||
|     SKIN_API_INTERNAL_ERROR(ChatColor.RED + "Internal error in the skin API, perhaps bad data?"); |     SKIN_API_INTERNAL_ERROR(ChatColor.RED + "Internal error in the skin API, perhaps bad data?"), | ||||||
|  |     META_INFO(ChatColor.GREEN + "Name: %s, Watcher: %s, Index: %s, Type: %s, Default: %s"), | ||||||
|  |     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"); | ||||||
|  |  | ||||||
|     private String string; |     private String string; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user