Merge pull request #229 from libraryaddict/translate
Add translations, cleanups and a few bugfixes
This commit is contained in:
		| @@ -28,6 +28,9 @@ SaveDisguises: | |||||||
| KeepDisguises: | KeepDisguises: | ||||||
|     PlayerDeath: false |     PlayerDeath: false | ||||||
|  |  | ||||||
|  | # Should the plugin use translations? Note that a player must see the message before it will appear in translations.yml | ||||||
|  | Translations: false | ||||||
|  |  | ||||||
| # How should the plugin handle self disguises scoreboards? | # How should the plugin handle self disguises scoreboards? | ||||||
| # MODIFY_SCOREBOARD - Modifies the player's current team if possible, otherwise assigns them to a new scoreboard team | # MODIFY_SCOREBOARD - Modifies the player's current team if possible, otherwise assigns them to a new scoreboard team | ||||||
| # IGNORE_SCOREBOARD - Doesn't touch scoreboards at all, effectively means that if you didn't disable pushing in their scoreboard team; They will still be pushed around | # IGNORE_SCOREBOARD - Doesn't touch scoreboards at all, effectively means that if you didn't disable pushing in their scoreboard team; They will still be pushed around | ||||||
| @@ -108,7 +111,6 @@ MonstersIgnoreDisguises: false | |||||||
| # Works only for disguised players when attacked by a entity (arrow, monster. etc) | # Works only for disguised players when attacked by a entity (arrow, monster. etc) | ||||||
| # This will blow all disguises he has on him | # This will blow all disguises he has on him | ||||||
| BlowDisguises: false | BlowDisguises: false | ||||||
| BlownDisguiseMessage: '&cYour disguise was blown!' |  | ||||||
|  |  | ||||||
| #Stop shulker disguises from moving, they're weird. This option only effects PLAYERS that are disguised, other entities disguised as shulkers will NOT be effected! | #Stop shulker disguises from moving, they're weird. This option only effects PLAYERS that are disguised, other entities disguised as shulkers will NOT be effected! | ||||||
| StopShulkerDisguisesFromMoving: true | StopShulkerDisguisesFromMoving: true | ||||||
|   | |||||||
| @@ -54,19 +54,19 @@ commands: | |||||||
|       permission: libsdisguises.seecmd.viewself |       permission: libsdisguises.seecmd.viewself | ||||||
|       description: Toggle seeing your own disguise on or off. |       description: Toggle seeing your own disguise on or off. | ||||||
|     disguisemodify: |     disguisemodify: | ||||||
|       aliases: [dmodify] |       aliases: [dmodify, dmod] | ||||||
|       permission: libsdisguises.seecmd.disguisemodify |       permission: libsdisguises.seecmd.disguisemodify | ||||||
|       description: Modify your own disguise |       description: Modify your own disguise | ||||||
|     disguisemodifyplayer: |     disguisemodifyplayer: | ||||||
|       aliases: [dmodifyplayer] |       aliases: [dmodifyplayer, dmodplayer] | ||||||
|       permission: libsdisguises.seecmd.disguisemodifyplayer |       permission: libsdisguises.seecmd.disguisemodifyplayer | ||||||
|       description: Modify the disguise of a player |       description: Modify the disguise of a player | ||||||
|     disguisemodifyradius: |     disguisemodifyradius: | ||||||
|       aliases: [dmodifyradius] |       aliases: [dmodifyradius, dmodradius] | ||||||
|       permission: libsdisguises.seecmd.disguisemodifyradius |       permission: libsdisguises.seecmd.disguisemodifyradius | ||||||
|       description: Modify disguises in a radius |       description: Modify disguises in a radius | ||||||
|     disguisemodifyentity: |     disguisemodifyentity: | ||||||
|       aliases: [dmodifyentity] |       aliases: [dmodifyentity, dmodentity] | ||||||
|       permission: libsdisguises.seecmd.disguisemodifyentity |       permission: libsdisguises.seecmd.disguisemodifyentity | ||||||
|       description: Modify a disguise by right clicking them |       description: Modify a disguise by right clicking them | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ import java.io.File; | |||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.Map.Entry; | import java.util.Map.Entry; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| import org.bukkit.configuration.ConfigurationSection; | import org.bukkit.configuration.ConfigurationSection; | ||||||
| @@ -25,9 +26,8 @@ public class DisguiseConfig { | |||||||
|     private static boolean collectEnabled; |     private static boolean collectEnabled; | ||||||
|     private static boolean colorizeSheep; |     private static boolean colorizeSheep; | ||||||
|     private static boolean colorizeWolf; |     private static boolean colorizeWolf; | ||||||
|     private static HashMap<String, Disguise> customDisguises = new HashMap<String, Disguise>(); |     private static HashMap<String, Disguise> customDisguises = new HashMap<>(); | ||||||
|     private static boolean disableInvisibility; |     private static boolean disableInvisibility; | ||||||
|     private static String disguiseBlownMessage; |  | ||||||
|     private static int disguiseCloneExpire; |     private static int disguiseCloneExpire; | ||||||
|     private static int disguiseEntityExpire; |     private static int disguiseEntityExpire; | ||||||
|     private static boolean displayPlayerDisguisesInTab; |     private static boolean displayPlayerDisguisesInTab; | ||||||
| @@ -51,7 +51,6 @@ public class DisguiseConfig { | |||||||
|     private static boolean stopShulkerDisguisesFromMoving; |     private static boolean stopShulkerDisguisesFromMoving; | ||||||
|     private static boolean targetDisguises; |     private static boolean targetDisguises; | ||||||
|     private static boolean undisguiseSwitchWorlds; |     private static boolean undisguiseSwitchWorlds; | ||||||
|     private static String updateMessage = ChatColor.RED + "[LibsDisguises] " + ChatColor.DARK_RED + "There is a update ready to be downloaded! You are using " + ChatColor.RED + "v%s" + ChatColor.DARK_RED + ", the new version is " + ChatColor.RED + "%s" + ChatColor.DARK_RED + "!"; |  | ||||||
|     private static String updateNotificationPermission; |     private static String updateNotificationPermission; | ||||||
|     private static boolean viewSelfDisguise; |     private static boolean viewSelfDisguise; | ||||||
|     private static boolean witherSkullEnabled; |     private static boolean witherSkullEnabled; | ||||||
| @@ -60,11 +59,12 @@ public class DisguiseConfig { | |||||||
|     private static boolean updatePlayerCache; |     private static boolean updatePlayerCache; | ||||||
|     private static boolean savePlayerDisguises; |     private static boolean savePlayerDisguises; | ||||||
|     private static boolean saveEntityDisguises; |     private static boolean saveEntityDisguises; | ||||||
|  |     private static boolean useTranslations; | ||||||
|  |  | ||||||
|     public static Entry<String, Disguise> getCustomDisguise(String disguise) { |     public static Entry<String, Disguise> getCustomDisguise(String disguise) { | ||||||
|         for (Entry<String, Disguise> entry : customDisguises.entrySet()) { |         for (Entry<String, Disguise> entry : customDisguises.entrySet()) { | ||||||
|             if (!entry.getKey().equalsIgnoreCase(disguise) && !entry.getKey().replaceAll("_", "").equalsIgnoreCase( |             if (!entry.getKey().equalsIgnoreCase(disguise) && !entry.getKey().replaceAll("_", "") | ||||||
|                     disguise)) |                     .equalsIgnoreCase(disguise)) | ||||||
|                 continue; |                 continue; | ||||||
|  |  | ||||||
|             return entry; |             return entry; | ||||||
| @@ -77,6 +77,16 @@ public class DisguiseConfig { | |||||||
|         return savePlayerDisguises; |         return savePlayerDisguises; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static boolean isUseTranslations() { | ||||||
|  |         return useTranslations; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void setUseTranslations(boolean setUseTranslations) { | ||||||
|  |         useTranslations = setUseTranslations; | ||||||
|  |  | ||||||
|  |         TranslateType.reloadTranslations(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     public static boolean isSaveEntityDisguises() { |     public static boolean isSaveEntityDisguises() { | ||||||
|         return saveEntityDisguises; |         return saveEntityDisguises; | ||||||
|     } |     } | ||||||
| @@ -97,10 +107,6 @@ public class DisguiseConfig { | |||||||
|         return customDisguises; |         return customDisguises; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static String getDisguiseBlownMessage() { |  | ||||||
|         return disguiseBlownMessage; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static int getDisguiseCloneExpire() { |     public static int getDisguiseCloneExpire() { | ||||||
|         return disguiseCloneExpire; |         return disguiseCloneExpire; | ||||||
|     } |     } | ||||||
| @@ -113,10 +119,6 @@ public class DisguiseConfig { | |||||||
|         return maxClonedDisguises; |         return maxClonedDisguises; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static String getUpdateMessage() { |  | ||||||
|         return updateMessage; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static String getUpdateNotificationPermission() { |     public static String getUpdateNotificationPermission() { | ||||||
|         return updateNotificationPermission; |         return updateNotificationPermission; | ||||||
|     } |     } | ||||||
| @@ -153,7 +155,6 @@ public class DisguiseConfig { | |||||||
|         setModifyBoundingBox(config.getBoolean("ModifyBoundingBox")); |         setModifyBoundingBox(config.getBoolean("ModifyBoundingBox")); | ||||||
|         setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises")); |         setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises")); | ||||||
|         setDisguiseBlownOnAttack(config.getBoolean("BlowDisguises")); |         setDisguiseBlownOnAttack(config.getBoolean("BlowDisguises")); | ||||||
|         setDisguiseBlownMessage(ChatColor.translateAlternateColorCodes('&', config.getString("BlownDisguiseMessage"))); |  | ||||||
|         setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath")); |         setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath")); | ||||||
|         setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving")); |         setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving")); | ||||||
|         setMovementPacketsEnabled(config.getBoolean("PacketsEnabled.Movement")); |         setMovementPacketsEnabled(config.getBoolean("PacketsEnabled.Movement")); | ||||||
| @@ -180,10 +181,11 @@ public class DisguiseConfig { | |||||||
|         setUpdateGameProfiles(config.getBoolean("UpdateGameProfiles")); |         setUpdateGameProfiles(config.getBoolean("UpdateGameProfiles")); | ||||||
|         setSavePlayerDisguises(config.getBoolean("SaveDisguises.Players")); |         setSavePlayerDisguises(config.getBoolean("SaveDisguises.Players")); | ||||||
|         setSaveEntityDisguises(config.getBoolean("SaveDisguises.Entities")); |         setSaveEntityDisguises(config.getBoolean("SaveDisguises.Entities")); | ||||||
|  |         setUseTranslations(config.getBoolean("Translations")); | ||||||
|  |  | ||||||
|         try { |         try { | ||||||
|             String option = config.getString("SelfDisguisesScoreboard", |             String option = config.getString("SelfDisguisesScoreboard", DisguisePushing.MODIFY_SCOREBOARD.name()) | ||||||
|                     DisguisePushing.MODIFY_SCOREBOARD.name()).toUpperCase(); |                     .toUpperCase(); | ||||||
|  |  | ||||||
|             if (!option.endsWith("_SCOREBOARD")) |             if (!option.endsWith("_SCOREBOARD")) | ||||||
|                 option += "_SCOREBOARD"; |                 option += "_SCOREBOARD"; | ||||||
| @@ -191,8 +193,8 @@ public class DisguiseConfig { | |||||||
|             disablePushing = DisguisePushing.valueOf(option); |             disablePushing = DisguisePushing.valueOf(option); | ||||||
|         } |         } | ||||||
|         catch (Exception ex) { |         catch (Exception ex) { | ||||||
|             System.out.println("[LibsDisguises] Cannot parse '" + config.getString( |             System.out.println("[LibsDisguises] Cannot parse '" + config | ||||||
|                     "SelfDisguisesScoreboard") + "' to a valid option for SelfDisguisesTeam"); |                     .getString("SelfDisguisesScoreboard") + "' to a valid option for SelfDisguisesTeam"); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         customDisguises.clear(); |         customDisguises.clear(); | ||||||
| @@ -220,8 +222,9 @@ public class DisguiseConfig { | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             try { |             try { | ||||||
|                 Disguise disguise = DisguiseParser.parseDisguise(Bukkit.getConsoleSender(), "disguise", |                 Disguise disguise = DisguiseParser | ||||||
|                         toParse.split(" "), DisguiseParser.getPermissions(Bukkit.getConsoleSender(), "disguise")); |                         .parseDisguise(Bukkit.getConsoleSender(), "disguise", toParse.split(" "), | ||||||
|  |                                 DisguiseParser.getPermissions(Bukkit.getConsoleSender(), "disguise")); | ||||||
|  |  | ||||||
|                 customDisguises.put(key, disguise); |                 customDisguises.put(key, disguise); | ||||||
|  |  | ||||||
| @@ -416,10 +419,6 @@ public class DisguiseConfig { | |||||||
|         disableInvisibility = disableInvis; |         disableInvisibility = disableInvis; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static void setDisguiseBlownMessage(String newMessage) { |  | ||||||
|         disguiseBlownMessage = newMessage; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static void setDisguiseBlownOnAttack(boolean blowDisguise) { |     public static void setDisguiseBlownOnAttack(boolean blowDisguise) { | ||||||
|         blowDisguisesOnAttack = blowDisguise; |         blowDisguisesOnAttack = blowDisguise; | ||||||
|     } |     } | ||||||
| @@ -554,10 +553,6 @@ public class DisguiseConfig { | |||||||
|         undisguiseSwitchWorlds = isUndisguise; |         undisguiseSwitchWorlds = isUndisguise; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static void setUpdateMessage(String newMessage) { |  | ||||||
|         updateMessage = newMessage; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static void setUpdateNotificationPermission(String newPermission) { |     public static void setUpdateNotificationPermission(String newPermission) { | ||||||
|         updateNotificationPermission = newPermission; |         updateNotificationPermission = newPermission; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ import me.libraryaddict.disguise.utilities.DisguiseParser; | |||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; | import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
| import me.libraryaddict.disguise.utilities.UpdateChecker; | import me.libraryaddict.disguise.utilities.UpdateChecker; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| @@ -86,15 +87,14 @@ public class DisguiseListener implements Listener { | |||||||
|                                         continue; |                                         continue; | ||||||
|                                     } |                                     } | ||||||
|  |  | ||||||
|                                     p.sendMessage(String.format(DisguiseConfig.getUpdateMessage(), currentVersion, |                                     p.sendMessage(LibsMsg.UPDATE_READY.get(currentVersion, latestVersion)); | ||||||
|                                             latestVersion)); |  | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } | ||||||
|                         }); |                         }); | ||||||
|                     } |                     } | ||||||
|                     catch (Exception ex) { |                     catch (Exception ex) { | ||||||
|                         System.out.print( |                         System.out.print(String | ||||||
|                                 String.format("[LibsDisguises] Failed to check for update: %s", ex.getMessage())); |                                 .format("[LibsDisguises] Failed to check for update: %s", ex.getMessage())); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             }, 0, (20 * 60 * 60 * 6)); // Check every 6 hours |             }, 0, (20 * 60 * 60 * 6)); // Check every 6 hours | ||||||
| @@ -138,8 +138,10 @@ public class DisguiseListener implements Listener { | |||||||
|         if (disguises.length > 0) { |         if (disguises.length > 0) { | ||||||
|             DisguiseAPI.undisguiseToAll(entity); |             DisguiseAPI.undisguiseToAll(entity); | ||||||
|  |  | ||||||
|             if (DisguiseConfig.getDisguiseBlownMessage().length() > 0) { |             String blown = LibsMsg.BLOWN_DISGUISE.get(); | ||||||
|                 entity.sendMessage(DisguiseConfig.getDisguiseBlownMessage()); |  | ||||||
|  |             if (blown.length() > 0) { | ||||||
|  |                 entity.sendMessage(blown); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -278,15 +280,15 @@ public class DisguiseListener implements Listener { | |||||||
|         Player p = event.getPlayer(); |         Player p = event.getPlayer(); | ||||||
|  |  | ||||||
|         if (latestVersion != null && p.hasPermission(DisguiseConfig.getUpdateNotificationPermission())) { |         if (latestVersion != null && p.hasPermission(DisguiseConfig.getUpdateNotificationPermission())) { | ||||||
|             p.sendMessage(String.format(DisguiseConfig.getUpdateMessage(), currentVersion, latestVersion)); |             p.sendMessage(LibsMsg.UPDATE_READY.get(currentVersion, latestVersion)); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (DisguiseConfig.isBedPacketsEnabled()) { |         if (DisguiseConfig.isBedPacketsEnabled()) { | ||||||
|             chunkMove(p, p.getLocation(), null); |             chunkMove(p, p.getLocation(), null); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (DisguiseConfig.isSaveGameProfiles() && DisguiseConfig.isUpdateGameProfiles() && DisguiseUtilities.hasGameProfile( |         if (DisguiseConfig.isSaveGameProfiles() && DisguiseConfig.isUpdateGameProfiles() && DisguiseUtilities | ||||||
|                 p.getName())) { |                 .hasGameProfile(p.getName())) { | ||||||
|             WrappedGameProfile profile = WrappedGameProfile.fromPlayer(p); |             WrappedGameProfile profile = WrappedGameProfile.fromPlayer(p); | ||||||
|  |  | ||||||
|             if (!profile.getProperties().isEmpty()) { |             if (!profile.getProperties().isEmpty()) { | ||||||
| @@ -364,9 +366,9 @@ public class DisguiseListener implements Listener { | |||||||
|             Location to = event.getTo(); |             Location to = event.getTo(); | ||||||
|             Location from = event.getFrom(); |             Location from = event.getFrom(); | ||||||
|  |  | ||||||
|             if (DisguiseUtilities.getChunkCord(to.getBlockX()) != DisguiseUtilities.getChunkCord( |             if (DisguiseUtilities.getChunkCord(to.getBlockX()) != DisguiseUtilities | ||||||
|                     from.getBlockX()) || DisguiseUtilities.getChunkCord( |                     .getChunkCord(from.getBlockX()) || DisguiseUtilities | ||||||
|                     to.getBlockZ()) != DisguiseUtilities.getChunkCord(from.getBlockZ())) { |                     .getChunkCord(to.getBlockZ()) != DisguiseUtilities.getChunkCord(from.getBlockZ())) { | ||||||
|                 chunkMove(event.getPlayer(), to, from); |                 chunkMove(event.getPlayer(), to, from); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -375,7 +377,8 @@ public class DisguiseListener implements Listener { | |||||||
|             Disguise disguise; |             Disguise disguise; | ||||||
|  |  | ||||||
|             if ((disguise = DisguiseAPI.getDisguise(event.getPlayer())) != null) { |             if ((disguise = DisguiseAPI.getDisguise(event.getPlayer())) != null) { | ||||||
|                 if (disguise.getType() == DisguiseType.SHULKER) { // Stop Shulker disguises from moving their coordinates |                 if (disguise | ||||||
|  |                         .getType() == DisguiseType.SHULKER) { // Stop Shulker disguises from moving their coordinates | ||||||
|                     Location from = event.getFrom(); |                     Location from = event.getFrom(); | ||||||
|                     Location to = event.getTo(); |                     Location to = event.getTo(); | ||||||
|  |  | ||||||
| @@ -429,8 +432,8 @@ public class DisguiseListener implements Listener { | |||||||
|  |  | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onRightClick(PlayerInteractEntityEvent event) { |     public void onRightClick(PlayerInteractEntityEvent event) { | ||||||
|         if (!disguiseEntity.containsKey(event.getPlayer().getName()) && !disguiseClone.containsKey( |         if (!disguiseEntity.containsKey(event.getPlayer().getName()) && !disguiseClone | ||||||
|                 event.getPlayer().getName())) { |                 .containsKey(event.getPlayer().getName())) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -456,9 +459,9 @@ public class DisguiseListener implements Listener { | |||||||
|             Disguise disguise = disguiseEntity.remove(p.getName()); |             Disguise disguise = disguiseEntity.remove(p.getName()); | ||||||
|  |  | ||||||
|             if (disguise != null) { |             if (disguise != null) { | ||||||
|                 if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) { |                 if (disguise.isMiscDisguise() && !DisguiseConfig | ||||||
|                     p.sendMessage( |                         .isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) { | ||||||
|                             ChatColor.RED + "Can't disguise a living entity as a misc disguise. This has been disabled in the config!"); |                     p.sendMessage(LibsMsg.DISABLED_LIVING_TO_MISC.get()); | ||||||
|                 } else { |                 } else { | ||||||
|                     if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise()) { |                     if (entity instanceof Player && DisguiseConfig.isNameOfPlayerShownAboveDisguise()) { | ||||||
|                         if (disguise.getWatcher() instanceof LivingWatcher) { |                         if (disguise.getWatcher() instanceof LivingWatcher) { | ||||||
| @@ -472,31 +475,62 @@ public class DisguiseListener implements Listener { | |||||||
|  |  | ||||||
|                     DisguiseAPI.disguiseToAll(entity, disguise); |                     DisguiseAPI.disguiseToAll(entity, disguise); | ||||||
|  |  | ||||||
|                     String disguiseName = "a "; |                     String disguiseName; | ||||||
|  |  | ||||||
|                     if (disguise instanceof PlayerDisguise) { |                     if (disguise instanceof PlayerDisguise) { | ||||||
|                         disguiseName = "the player " + ((PlayerDisguise) disguise).getName(); |                         disguiseName = ((PlayerDisguise) disguise).getName(); | ||||||
|                     } else { |                     } else { | ||||||
|                         disguiseName += disguise.getType().toReadable(); |                         disguiseName = disguise.getType().toReadable(); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|  |                     // Jeez, maybe I should redo my messages here | ||||||
|                     if (disguise.isDisguiseInUse()) { |                     if (disguise.isDisguiseInUse()) { | ||||||
|                         p.sendMessage(ChatColor.RED + "Disguised " + (entity instanceof Player ? "" : |                         if (disguise.isPlayerDisguise()) { | ||||||
|                                 "the ") + entityName + " as " + disguiseName + "!"); |                             if (entity instanceof Player) { | ||||||
|  |                                 p.sendMessage(LibsMsg.LISTEN_ENTITY_PLAYER_DISG_PLAYER.get(entityName, disguiseName)); | ||||||
|  |                             } else { | ||||||
|  |                                 p.sendMessage(LibsMsg.LISTEN_ENTITY_ENTITY_DISG_PLAYER.get(entityName, disguiseName)); | ||||||
|  |                             } | ||||||
|  |                         } else { | ||||||
|  |                             if (entity instanceof Player) { | ||||||
|  |                                 p.sendMessage(LibsMsg.LISTEN_ENTITY_PLAYER_DISG_ENTITY.get(entityName, disguiseName)); | ||||||
|  |                             } else { | ||||||
|  |                                 p.sendMessage(LibsMsg.LISTEN_ENTITY_ENTITY_DISG_ENTITY.get(entityName, disguiseName)); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|                     } else { |                     } else { | ||||||
|                         p.sendMessage(ChatColor.RED + "Failed to disguise " + (entity instanceof Player ? "" : |                         if (disguise.isPlayerDisguise()) { | ||||||
|                                 "the ") + entityName + " as " + disguiseName + "!"); |                             if (entity instanceof Player) { | ||||||
|  |                                 p.sendMessage( | ||||||
|  |                                         LibsMsg.LISTEN_ENTITY_PLAYER_DISG_PLAYER_FAIL.get(entityName, disguiseName)); | ||||||
|  |                             } else { | ||||||
|  |                                 p.sendMessage( | ||||||
|  |                                         LibsMsg.LISTEN_ENTITY_ENTITY_DISG_PLAYER_FAIL.get(entityName, disguiseName)); | ||||||
|  |                             } | ||||||
|  |                         } else { | ||||||
|  |                             if (entity instanceof Player) { | ||||||
|  |                                 p.sendMessage( | ||||||
|  |                                         LibsMsg.LISTEN_ENTITY_PLAYER_DISG_ENTITY_FAIL.get(entityName, disguiseName)); | ||||||
|  |                             } else { | ||||||
|  |                                 p.sendMessage( | ||||||
|  |                                         LibsMsg.LISTEN_ENTITY_ENTITY_DISG_ENTITY_FAIL.get(entityName, disguiseName)); | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 if (DisguiseAPI.isDisguised(entity)) { |                 if (DisguiseAPI.isDisguised(entity)) { | ||||||
|                     DisguiseAPI.undisguiseToAll(entity); |                     DisguiseAPI.undisguiseToAll(entity); | ||||||
|  |  | ||||||
|                     p.sendMessage( |                     if (entity instanceof Player) | ||||||
|                             ChatColor.RED + "Undisguised " + (entity instanceof Player ? "" : "the ") + entityName); |                         p.sendMessage(LibsMsg.LISTEN_UNDISG_PLAYER.get(entityName)); | ||||||
|  |                     else | ||||||
|  |                         p.sendMessage(LibsMsg.LISTEN_UNDISG_ENT.get(entityName)); | ||||||
|                 } else { |                 } else { | ||||||
|                     p.sendMessage( |                     if (entity instanceof Player) | ||||||
|                             ChatColor.RED + (entity instanceof Player ? "" : "the") + entityName + " isn't disguised!"); |                         p.sendMessage(LibsMsg.LISTEN_UNDISG_PLAYER_FAIL.get(entityName)); | ||||||
|  |                     else | ||||||
|  |                         p.sendMessage(LibsMsg.LISTEN_UNDISG_ENT_FAIL.get(entityName)); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } else if (disguiseModify.containsKey(p.getName())) { |         } else if (disguiseModify.containsKey(p.getName())) { | ||||||
| @@ -505,22 +539,22 @@ public class DisguiseListener implements Listener { | |||||||
|             Disguise disguise = DisguiseAPI.getDisguise(p, entity); |             Disguise disguise = DisguiseAPI.getDisguise(p, entity); | ||||||
|  |  | ||||||
|             if (disguise == null) { |             if (disguise == null) { | ||||||
|                 p.sendMessage(ChatColor.RED + entityName + " is not disguised!"); |                 p.sendMessage(LibsMsg.UNDISG_PLAYER_FAIL.get(entityName)); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = DisguiseParser.getPermissions(p, |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = DisguiseParser | ||||||
|                     "libsdisguises.disguiseentitymodify."); |                     .getPermissions(p, "libsdisguises.disguiseentitymodify."); | ||||||
|  |  | ||||||
|             if (!perms.containsKey(new DisguisePerm(disguise.getType()))) { |             if (!perms.containsKey(new DisguisePerm(disguise.getType()))) { | ||||||
|                 p.sendMessage(ChatColor.RED + "You do not have permission to modify this disguise"); |                 p.sendMessage(LibsMsg.DMODPLAYER_NOPERM.get()); | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             try { |             try { | ||||||
|                 DisguiseParser.callMethods(p, disguise, perms.get(new DisguisePerm(disguise.getType())), |                 DisguiseParser.callMethods(p, disguise, perms.get(new DisguisePerm(disguise.getType())), | ||||||
|                         new ArrayList<String>(), options); |                         new ArrayList<String>(), options); | ||||||
|                 p.sendMessage(ChatColor.RED + "Modified the disguise!"); |                 p.sendMessage(LibsMsg.LISTENER_MODIFIED_DISG.get()); | ||||||
|             } |             } | ||||||
|             catch (DisguiseParseException ex) { |             catch (DisguiseParseException ex) { | ||||||
|                 if (ex.getMessage() != null) { |                 if (ex.getMessage() != null) { | ||||||
| @@ -535,8 +569,8 @@ public class DisguiseListener implements Listener { | |||||||
|  |  | ||||||
|     @EventHandler |     @EventHandler | ||||||
|     public void onTarget(EntityTargetEvent event) { |     public void onTarget(EntityTargetEvent event) { | ||||||
|         if (DisguiseConfig.isMonstersIgnoreDisguises() && event.getTarget() != null && event.getTarget() instanceof Player && DisguiseAPI.isDisguised( |         if (DisguiseConfig.isMonstersIgnoreDisguises() && event.getTarget() != null && event | ||||||
|                 event.getTarget())) { |                 .getTarget() instanceof Player && DisguiseAPI.isDisguised(event.getTarget())) { | ||||||
|             switch (event.getReason()) { |             switch (event.getReason()) { | ||||||
|                 case TARGET_ATTACKED_ENTITY: |                 case TARGET_ATTACKED_ENTITY: | ||||||
|                 case TARGET_ATTACKED_OWNER: |                 case TARGET_ATTACKED_OWNER: | ||||||
| @@ -557,9 +591,9 @@ public class DisguiseListener implements Listener { | |||||||
|         Location from = event.getFrom(); |         Location from = event.getFrom(); | ||||||
|  |  | ||||||
|         if (DisguiseConfig.isBedPacketsEnabled()) { |         if (DisguiseConfig.isBedPacketsEnabled()) { | ||||||
|             if (DisguiseUtilities.getChunkCord(to.getBlockX()) != DisguiseUtilities.getChunkCord( |             if (DisguiseUtilities.getChunkCord(to.getBlockX()) != DisguiseUtilities | ||||||
|                     from.getBlockX()) || DisguiseUtilities.getChunkCord( |                     .getChunkCord(from.getBlockX()) || DisguiseUtilities | ||||||
|                     to.getBlockZ()) != DisguiseUtilities.getChunkCord(from.getBlockZ())) { |                     .getChunkCord(to.getBlockZ()) != DisguiseUtilities.getChunkCord(from.getBlockZ())) { | ||||||
|                 chunkMove(player, null, from); |                 chunkMove(player, null, from); | ||||||
|  |  | ||||||
|                 Bukkit.getScheduler().runTask(plugin, new Runnable() { |                 Bukkit.getScheduler().runTask(plugin, new Runnable() { | ||||||
| @@ -575,7 +609,8 @@ public class DisguiseListener implements Listener { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (DisguiseConfig.isUndisguiseOnWorldChange() && to.getWorld() != null && from.getWorld() != null && to.getWorld() != from.getWorld()) { |         if (DisguiseConfig.isUndisguiseOnWorldChange() && to.getWorld() != null && from.getWorld() != null && to | ||||||
|  |                 .getWorld() != from.getWorld()) { | ||||||
|             for (Disguise disguise : DisguiseAPI.getDisguises(event.getPlayer())) { |             for (Disguise disguise : DisguiseAPI.getDisguises(event.getPlayer())) { | ||||||
|                 disguise.removeDisguise(); |                 disguise.removeDisguise(); | ||||||
|             } |             } | ||||||
| @@ -584,8 +619,8 @@ public class DisguiseListener implements Listener { | |||||||
|  |  | ||||||
|     @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) |     @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) | ||||||
|     public void onVehicleEnter(VehicleEnterEvent event) { |     public void onVehicleEnter(VehicleEnterEvent event) { | ||||||
|         if (event.getEntered() instanceof Player && DisguiseAPI.isDisguised((Player) event.getEntered(), |         if (event.getEntered() instanceof Player && DisguiseAPI | ||||||
|                 event.getEntered())) { |                 .isDisguised((Player) event.getEntered(), event.getEntered())) { | ||||||
|             DisguiseUtilities.removeSelfDisguise((Player) event.getEntered()); |             DisguiseUtilities.removeSelfDisguise((Player) event.getEntered()); | ||||||
|  |  | ||||||
|             ((Player) event.getEntered()).updateInventory(); |             ((Player) event.getEntered()).updateInventory(); | ||||||
|   | |||||||
| @@ -4,10 +4,9 @@ import java.io.File; | |||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.lang.reflect.Field; | import java.lang.reflect.Field; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Arrays; |  | ||||||
| import java.util.Iterator; |  | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.disguisetypes.watchers.*; | import me.libraryaddict.disguise.disguisetypes.watchers.*; | ||||||
|  | import me.libraryaddict.disguise.utilities.*; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.command.CommandExecutor; | import org.bukkit.command.CommandExecutor; | ||||||
| import org.bukkit.command.PluginCommand; | import org.bukkit.command.PluginCommand; | ||||||
| @@ -19,7 +18,6 @@ import org.bukkit.entity.Entity; | |||||||
| import org.bukkit.entity.LivingEntity; | import org.bukkit.entity.LivingEntity; | ||||||
| import org.bukkit.entity.Tameable; | import org.bukkit.entity.Tameable; | ||||||
| import org.bukkit.entity.Zombie; | import org.bukkit.entity.Zombie; | ||||||
| import org.bukkit.event.HandlerList; |  | ||||||
| import org.bukkit.plugin.java.JavaPlugin; | import org.bukkit.plugin.java.JavaPlugin; | ||||||
|  |  | ||||||
| import com.comphenix.protocol.reflect.FieldAccessException; | import com.comphenix.protocol.reflect.FieldAccessException; | ||||||
| @@ -45,13 +43,6 @@ import me.libraryaddict.disguise.commands.UndisguiseRadiusCommand; | |||||||
| import me.libraryaddict.disguise.disguisetypes.DisguiseType; | import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||||
| import me.libraryaddict.disguise.disguisetypes.FlagWatcher; | import me.libraryaddict.disguise.disguisetypes.FlagWatcher; | ||||||
| import me.libraryaddict.disguise.disguisetypes.MetaIndex; | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseSound; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseValues; |  | ||||||
| import me.libraryaddict.disguise.utilities.FakeBoundingBox; |  | ||||||
| import me.libraryaddict.disguise.utilities.Metrics; |  | ||||||
| import me.libraryaddict.disguise.utilities.PacketsManager; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionManager; |  | ||||||
|  |  | ||||||
| public class LibsDisguises extends JavaPlugin { | public class LibsDisguises extends JavaPlugin { | ||||||
|     private static LibsDisguises instance; |     private static LibsDisguises instance; | ||||||
| @@ -87,6 +78,8 @@ public class LibsDisguises extends JavaPlugin { | |||||||
|  |  | ||||||
|         PacketsManager.addPacketListeners(); |         PacketsManager.addPacketListeners(); | ||||||
|  |  | ||||||
|  |         TranslateType.MESSAGES.name(); // Call the static loader | ||||||
|  |  | ||||||
|         listener = new DisguiseListener(this); |         listener = new DisguiseListener(this); | ||||||
|  |  | ||||||
|         Bukkit.getPluginManager().registerEvents(listener, this); |         Bukkit.getPluginManager().registerEvents(listener, this); | ||||||
| @@ -137,8 +130,6 @@ public class LibsDisguises extends JavaPlugin { | |||||||
|      * Reloads the config with new config options. |      * Reloads the config with new config options. | ||||||
|      */ |      */ | ||||||
|     public void reload() { |     public void reload() { | ||||||
|         HandlerList.unregisterAll(listener); |  | ||||||
|  |  | ||||||
|         reloadConfig(); |         reloadConfig(); | ||||||
|         DisguiseConfig.initConfig(getConfig()); |         DisguiseConfig.initConfig(getConfig()); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -33,10 +33,11 @@ public abstract class DisguiseBaseCommand implements CommandExecutor { | |||||||
|             itel.remove(); |             itel.remove(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return new ArrayList<String>(new HashSet<String>(list)); |         return new ArrayList<>(new HashSet<>(list)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected ArrayList<String> getAllowedDisguises(HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> hashMap) { |     protected ArrayList<String> getAllowedDisguises( | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> hashMap) { | ||||||
|         ArrayList<String> allowedDisguises = new ArrayList<>(); |         ArrayList<String> allowedDisguises = new ArrayList<>(); | ||||||
|  |  | ||||||
|         for (DisguisePerm type : hashMap.keySet()) { |         for (DisguisePerm type : hashMap.keySet()) { | ||||||
| @@ -52,7 +53,7 @@ public abstract class DisguiseBaseCommand implements CommandExecutor { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected String[] getArgs(String[] args) { |     protected String[] getArgs(String[] args) { | ||||||
|         ArrayList<String> newArgs = new ArrayList<String>(); |         ArrayList<String> newArgs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         for (int i = 0; i < args.length - 1; i++) { |         for (int i = 0; i < args.length - 1; i++) { | ||||||
|             String s = args[i]; |             String s = args[i]; | ||||||
| @@ -69,29 +70,21 @@ public abstract class DisguiseBaseCommand implements CommandExecutor { | |||||||
|     public final String getPermNode() { |     public final String getPermNode() { | ||||||
|         if (this instanceof DisguiseCommand) { |         if (this instanceof DisguiseCommand) { | ||||||
|             return "disguise"; |             return "disguise"; | ||||||
|         } |         } else if (this instanceof DisguiseEntityCommand) { | ||||||
|         else if (this instanceof DisguiseEntityCommand) { |  | ||||||
|             return "disguiseentity"; |             return "disguiseentity"; | ||||||
|         } |         } else if (this instanceof DisguisePlayerCommand) { | ||||||
|         else if (this instanceof DisguisePlayerCommand) { |  | ||||||
|             return "disguiseplayer"; |             return "disguiseplayer"; | ||||||
|         } |         } else if (this instanceof DisguiseRadiusCommand) { | ||||||
|         else if (this instanceof DisguiseRadiusCommand) { |  | ||||||
|             return "disguiseradius"; |             return "disguiseradius"; | ||||||
|         } |         } else if (this instanceof DisguiseModifyCommand) { | ||||||
|         else if (this instanceof DisguiseModifyCommand) { |  | ||||||
|             return "disguisemodify"; |             return "disguisemodify"; | ||||||
|         } |         } else if (this instanceof DisguiseModifyEntityCommand) { | ||||||
|         else if (this instanceof DisguiseModifyEntityCommand) { |  | ||||||
|             return "disguisemodifyentity"; |             return "disguisemodifyentity"; | ||||||
|         } |         } else if (this instanceof DisguiseModifyPlayerCommand) { | ||||||
|         else if (this instanceof DisguiseModifyPlayerCommand) { |  | ||||||
|             return "disguisemodifyplayer"; |             return "disguisemodifyplayer"; | ||||||
|         } |         } else if (this instanceof DisguiseModifyRadiusCommand) { | ||||||
|         else if (this instanceof DisguiseModifyRadiusCommand) { |  | ||||||
|             return "disguisemodifyradius"; |             return "disguisemodifyradius"; | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             throw new UnsupportedOperationException("Unknown disguise command, perm node not found"); |             throw new UnsupportedOperationException("Unknown disguise command, perm node not found"); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,9 +1,11 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
| import java.util.HashMap; | import me.libraryaddict.disguise.LibsDisguises; | ||||||
| import java.util.List; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.DisguiseUtilities; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| @@ -12,16 +14,15 @@ import org.bukkit.command.CommandSender; | |||||||
| import org.bukkit.command.TabCompleter; | import org.bukkit.command.TabCompleter; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseConfig; | import java.util.ArrayList; | ||||||
| import me.libraryaddict.disguise.LibsDisguises; | import java.util.HashMap; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import java.util.List; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseUtilities; |  | ||||||
|  |  | ||||||
| public class DisguiseCloneCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseCloneCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (sender.getName().equals("CONSOLE")) { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -37,43 +38,33 @@ public class DisguiseCloneCommand extends DisguiseBaseCommand implements TabComp | |||||||
|  |  | ||||||
|             for (int i = player == null ? 0 : 1; i < args.length; i++) { |             for (int i = player == null ? 0 : 1; i < args.length; i++) { | ||||||
|                 String option = args[i]; |                 String option = args[i]; | ||||||
|                 if (StringUtils.startsWithIgnoreCase(option, "ignoreEquip") |                 if (StringUtils.startsWithIgnoreCase(option, "ignoreEquip") || StringUtils | ||||||
|                         || StringUtils.startsWithIgnoreCase(option, "ignoreEnquip")) { |                         .startsWithIgnoreCase(option, "ignoreEnquip")) { | ||||||
|                     doEquipment = false; |                     doEquipment = false; | ||||||
|                 } |                 } else if (option.equalsIgnoreCase("doSneakSprint")) { | ||||||
|                 else if (option.equalsIgnoreCase("doSneakSprint")) { |  | ||||||
|                     doSneak = true; |                     doSneak = true; | ||||||
|                     doSprint = true; |                     doSprint = true; | ||||||
|                 } |                 } else if (option.equalsIgnoreCase("doSneak")) { | ||||||
|                 else if (option.equalsIgnoreCase("doSneak")) { |  | ||||||
|                     doSneak = true; |                     doSneak = true; | ||||||
|                 } |                 } else if (option.equalsIgnoreCase("doSprint")) { | ||||||
|                 else if (option.equalsIgnoreCase("doSprint")) { |  | ||||||
|                     doSprint = true; |                     doSprint = true; | ||||||
|                 } |                 } else { | ||||||
|                 else { |                     sender.sendMessage(LibsMsg.INVALID_CLONE.get(option)); | ||||||
|                     sender.sendMessage(ChatColor.DARK_RED + "Unknown option '" + option |  | ||||||
|                             + "' - Valid options are 'IgnoreEquipment' 'DoSneakSprint' 'DoSneak' 'DoSprint'"); |  | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             Boolean[] options = new Boolean[] { |             Boolean[] options = new Boolean[]{doEquipment, doSneak, doSprint}; | ||||||
|                     doEquipment, doSneak, doSprint |  | ||||||
|             }; |  | ||||||
|  |  | ||||||
|             if (player != null) { |             if (player != null) { | ||||||
|                 DisguiseUtilities.createClonedDisguise((Player) sender, player, options); |                 DisguiseUtilities.createClonedDisguise((Player) sender, player, options); | ||||||
|             } |             } else { | ||||||
|             else { |  | ||||||
|                 LibsDisguises.getInstance().getListener().setDisguiseClone(sender.getName(), options); |                 LibsDisguises.getInstance().getListener().setDisguiseClone(sender.getName(), options); | ||||||
|  |  | ||||||
|                 sender.sendMessage(ChatColor.RED + "Right click a entity in the next " + DisguiseConfig.getDisguiseCloneExpire() |                 sender.sendMessage(LibsMsg.CLICK_TIMER.get(DisguiseConfig.getDisguiseCloneExpire())); | ||||||
|                         + " seconds to grab the disguise reference!"); |  | ||||||
|             } |             } | ||||||
|         } |         } else { | ||||||
|         else { |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -81,7 +72,7 @@ public class DisguiseCloneCommand extends DisguiseBaseCommand implements TabComp | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
| @@ -103,12 +94,10 @@ public class DisguiseCloneCommand extends DisguiseBaseCommand implements TabComp | |||||||
|      * Send the player the information |      * Send the player the information | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|                 + "Right click a entity to get a disguise reference you can pass to other disguise commands!"); |         sender.sendMessage(LibsMsg.CLONE_HELP1.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN |         sender.sendMessage(LibsMsg.CLONE_HELP2.get()); | ||||||
|                 + "Security note: Any references you create will be available to all players able to use disguise references."); |         sender.sendMessage(LibsMsg.CLONE_HELP3.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseclone IgnoreEquipment" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN |  | ||||||
|                 + "Optional" + ChatColor.DARK_GREEN + ")"); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -10,8 +10,10 @@ import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; | |||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; | import me.libraryaddict.disguise.utilities.DisguiseParser; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| @@ -30,7 +32,7 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter | |||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (!(sender instanceof Entity)) { |         if (!(sender instanceof Entity)) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -69,9 +71,9 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter | |||||||
|         DisguiseAPI.disguiseToAll((Player) sender, disguise); |         DisguiseAPI.disguiseToAll((Player) sender, disguise); | ||||||
|  |  | ||||||
|         if (disguise.isDisguiseInUse()) { |         if (disguise.isDisguiseInUse()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Now disguised as a " + disguise.getType().toReadable()); |             sender.sendMessage(LibsMsg.DISGUISED.get(disguise.getType().toReadable())); | ||||||
|         } else { |         } else { | ||||||
|             sender.sendMessage(ChatColor.RED + "Failed to disguise as a " + disguise.getType().toReadable()); |             sender.sendMessage(LibsMsg.FAILED_DISGIUSE.get(disguise.getType().toReadable())); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -79,15 +81,13 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); | ||||||
|  |  | ||||||
|         if (args.length == 0) { |         if (args.length == 0) { | ||||||
|             for (String type : getAllowedDisguises(perms)) { |             tabs.addAll(getAllowedDisguises(perms)); | ||||||
|                 tabs.add(type); |  | ||||||
|             } |  | ||||||
|         } else { |         } else { | ||||||
|             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[0]); |             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[0]); | ||||||
|  |  | ||||||
| @@ -100,7 +100,7 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter | |||||||
|                     tabs.add(player.getName()); |                     tabs.add(player.getName()); | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 ArrayList<String> usedOptions = new ArrayList<String>(); |                 ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|  |  | ||||||
|                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 2 : 1; i < args.length; i++) { |                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 2 : 1; i < args.length; i++) { | ||||||
| @@ -141,8 +141,8 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter | |||||||
|  |  | ||||||
|                     if (addMethods) { |                     if (addMethods) { | ||||||
|                         // If this is a method, add. Else if it can be a param of the previous argument, add. |                         // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                         for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods( |                         for (Method method : ReflectionFlagWatchers | ||||||
|                                 disguiseType.getWatcherClass())) { |                                 .getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                             tabs.add(method.getName()); |                             tabs.add(method.getName()); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @@ -160,18 +160,18 @@ public class DisguiseCommand extends DisguiseBaseCommand implements TabCompleter | |||||||
|     protected void sendCommandUsage(CommandSender sender, |     protected void sendCommandUsage(CommandSender sender, | ||||||
|             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Choose a disguise to become the disguise!"); |         sender.sendMessage(LibsMsg.DISG_HELP1.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can use the disguises: " + ChatColor.GREEN + StringUtils.join( |         sender.sendMessage(LibsMsg.CAN_USE_DISGS | ||||||
|                 allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("player")) { |         if (allowedDisguises.contains("player")) { | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "/disguise player <Name>"); |             sender.sendMessage(LibsMsg.DISG_HELP2.get()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "/disguise <DisguiseType> <Baby>"); |         sender.sendMessage(LibsMsg.DISG_HELP3.get()); | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { |         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseplayer <Dropped_Item/Falling_Block> <Id> <Durability>"); |             sender.sendMessage(LibsMsg.DISG_HELP4.get()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,19 +1,5 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.lang.reflect.InvocationTargetException; |  | ||||||
| import java.lang.reflect.Method; |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import org.apache.commons.lang.StringUtils; |  | ||||||
| import org.bukkit.Bukkit; |  | ||||||
| import org.bukkit.ChatColor; |  | ||||||
| import org.bukkit.command.Command; |  | ||||||
| import org.bukkit.command.CommandSender; |  | ||||||
| import org.bukkit.command.TabCompleter; |  | ||||||
| import org.bukkit.entity.Player; |  | ||||||
|  |  | ||||||
| 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.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| @@ -21,19 +7,34 @@ import me.libraryaddict.disguise.disguisetypes.DisguiseType; | |||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; | import me.libraryaddict.disguise.utilities.DisguiseParser; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
|  | import org.apache.commons.lang.StringUtils; | ||||||
|  | import org.bukkit.Bukkit; | ||||||
|  | import org.bukkit.ChatColor; | ||||||
|  | import org.bukkit.command.Command; | ||||||
|  | import org.bukkit.command.CommandSender; | ||||||
|  | import org.bukkit.command.TabCompleter; | ||||||
|  | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
|  | import java.lang.reflect.InvocationTargetException; | ||||||
|  | import java.lang.reflect.Method; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (!(sender instanceof Player)) { |         if (!(sender instanceof Player)) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (getPermissions(sender).isEmpty()) { |         if (getPermissions(sender).isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -61,14 +62,14 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|         LibsDisguises.getInstance().getListener().setDisguiseEntity(sender.getName(), disguise); |         LibsDisguises.getInstance().getListener().setDisguiseEntity(sender.getName(), disguise); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.RED + "Right click an entity in the next " + DisguiseConfig.getDisguiseEntityExpire() |         sender.sendMessage( | ||||||
|                 + " seconds to disguise it as a " + disguise.getType().toReadable() + "!"); |                 LibsMsg.DISG_ENT_CLICK.get(DisguiseConfig.getDisguiseEntityExpire(), disguise.getType().toReadable())); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         if (!(sender instanceof Player)) { |         if (!(sender instanceof Player)) { | ||||||
|             return tabs; |             return tabs; | ||||||
| @@ -82,8 +83,7 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom | |||||||
|             for (String type : getAllowedDisguises(perms)) { |             for (String type : getAllowedDisguises(perms)) { | ||||||
|                 tabs.add(type); |                 tabs.add(type); | ||||||
|             } |             } | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[0]); |             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[0]); | ||||||
|  |  | ||||||
|             if (disguiseType == null) |             if (disguiseType == null) | ||||||
| @@ -93,9 +93,8 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                 for (Player player : Bukkit.getOnlinePlayers()) { |                 for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                     tabs.add(player.getName()); |                     tabs.add(player.getName()); | ||||||
|                 } |                 } | ||||||
|             } |             } else { | ||||||
|             else { |                 ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|                 ArrayList<String> usedOptions = new ArrayList<String>(); |  | ||||||
|  |  | ||||||
|                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 2 : 1; i < args.length; i++) { |                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 2 : 1; i < args.length; i++) { | ||||||
| @@ -124,8 +123,7 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                                 for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                                 for (String e : info.getEnums(origArgs[origArgs.length - 1])) { | ||||||
|                                     tabs.add(e); |                                     tabs.add(e); | ||||||
|                                 } |                                 } | ||||||
|                             } |                             } else { | ||||||
|                             else { |  | ||||||
|                                 if (info.getParamClass() == String.class) { |                                 if (info.getParamClass() == String.class) { | ||||||
|                                     for (Player player : Bukkit.getOnlinePlayers()) { |                                     for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                                         tabs.add(player.getName()); |                                         tabs.add(player.getName()); | ||||||
| @@ -137,7 +135,8 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|                     if (addMethods) { |                     if (addMethods) { | ||||||
|                         // If this is a method, add. Else if it can be a param of the previous argument, add. |                         // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                         for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                         for (Method method : ReflectionFlagWatchers | ||||||
|  |                                 .getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                             tabs.add(method.getName()); |                             tabs.add(method.getName()); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @@ -155,22 +154,22 @@ public class DisguiseEntityCommand extends DisguiseBaseCommand implements TabCom | |||||||
|      * @param map |      * @param map | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Choose a disguise then right click a entity to disguise it!"); |         sender.sendMessage(LibsMsg.DISG_ENT_HELP1.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can use the disguises: " + ChatColor.GREEN |         sender.sendMessage(LibsMsg.CAN_USE_DISGS | ||||||
|                 + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("player")) { |         if (allowedDisguises.contains("player")) { | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseentity player <Name>"); |             sender.sendMessage(LibsMsg.DISG_ENT_HELP3.get()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseentity <DisguiseType> <Baby>"); |         sender.sendMessage(LibsMsg.DISG_ENT_HELP4.get()); | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { |         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseentity <Dropped_Item/Falling_Block> <Id> <Durability>"); |             sender.sendMessage(LibsMsg.DISG_ENT_HELP5.get()); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,40 +1,38 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.FlagWatcher; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; | ||||||
|  | import me.libraryaddict.disguise.utilities.DisguiseParser; | ||||||
|  | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
|  | 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; | ||||||
|  |  | ||||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| 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; |  | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.disguisetypes.FlagWatcher; |  | ||||||
| import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; |  | ||||||
|  |  | ||||||
| public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         for (String node : new String[] { |         for (String node : new String[]{"disguise", "disguiseradius", "disguiseentity", "disguiseplayer"}) { | ||||||
|                 "disguise", "disguiseradius", "disguiseentity", "disguiseplayer" |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> permMap = DisguiseParser | ||||||
|         }) { |                     .getPermissions(sender, "libsdisguises." + node + "."); | ||||||
|             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> permMap = DisguiseParser.getPermissions(sender, |  | ||||||
|                     "libsdisguises." + node + "."); |  | ||||||
|  |  | ||||||
|             if (!permMap.isEmpty()) { |             if (!permMap.isEmpty()) { | ||||||
|                 if (args.length == 0) { |                 if (args.length == 0) { | ||||||
|                     sendCommandUsage(sender, null); |                     sendCommandUsage(sender, null); | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } else { | ||||||
|                 else { |  | ||||||
|                     ParamInfo help = null; |                     ParamInfo help = null; | ||||||
|  |  | ||||||
|                     for (ParamInfo s : ReflectionFlagWatchers.getParamInfos()) { |                     for (ParamInfo s : ReflectionFlagWatchers.getParamInfos()) { | ||||||
| @@ -47,20 +45,25 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     if (help != null) { |                     if (help != null) { | ||||||
|                         sender.sendMessage(ChatColor.RED + help.getName() + ": " + ChatColor.GREEN |                         if (help.isEnums()) { | ||||||
|                                 + StringUtils.join(help.getEnums(""), ChatColor.RED + ", " + ChatColor.GREEN)); |                             sender.sendMessage(ChatColor.RED + help.getName() + ": " + ChatColor.GREEN + StringUtils | ||||||
|  |                                     .join(help.getEnums(""), ChatColor.RED + ", " + ChatColor.GREEN)); | ||||||
|  |                         } else { | ||||||
|  |                             sender.sendMessage( | ||||||
|  |                                     ChatColor.RED + help.getName() + ": " + ChatColor.GREEN + help.getDescription()); | ||||||
|  |                         } | ||||||
|                         return true; |                         return true; | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     DisguisePerm type = DisguiseParser.getDisguisePerm(args[0]); |                     DisguisePerm type = DisguiseParser.getDisguisePerm(args[0]); | ||||||
|  |  | ||||||
|                     if (type == null) { |                     if (type == null) { | ||||||
|                         sender.sendMessage(ChatColor.RED + "Cannot find the disguise " + args[0]); |                         sender.sendMessage(LibsMsg.DHELP_CANTFIND.get(args[0])); | ||||||
|                         return true; |                         return true; | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     if (!permMap.containsKey(type)) { |                     if (!permMap.containsKey(type)) { | ||||||
|                         sender.sendMessage(ChatColor.RED + "You do not have permission for that disguise!"); |                         sender.sendMessage(LibsMsg.NO_PERM_DISGUISE.get()); | ||||||
|                         return true; |                         return true; | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
| @@ -80,8 +83,7 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|                                             allowed = true; |                                             allowed = true; | ||||||
|                                             break; |                                             break; | ||||||
|                                         } |                                         } | ||||||
|                                     } |                                     } else if (!key.contains(method.getName().toLowerCase())) { | ||||||
|                                     else if (!key.contains(method.getName().toLowerCase())) { |  | ||||||
|                                         allowed = true; |                                         allowed = true; | ||||||
|                                         break; |                                         break; | ||||||
|                                     } |                                     } | ||||||
| @@ -105,13 +107,13 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|  |  | ||||||
|                             if (declaring == LivingWatcher.class) { |                             if (declaring == LivingWatcher.class) { | ||||||
|                                 methodColor = ChatColor.AQUA; |                                 methodColor = ChatColor.AQUA; | ||||||
|                             } |                             } else if (!(FlagWatcher.class | ||||||
|                             else if (!(FlagWatcher.class.isAssignableFrom(declaring)) || declaring == FlagWatcher.class) { |                                     .isAssignableFrom(declaring)) || declaring == FlagWatcher.class) { | ||||||
|                                 methodColor = ChatColor.GRAY; |                                 methodColor = ChatColor.GRAY; | ||||||
|                             } |                             } | ||||||
|  |  | ||||||
|                             String str = method.getName() + ChatColor.DARK_RED + "(" + ChatColor.GREEN + info.getName() |                             String str = method.getName() + ChatColor.DARK_RED + "(" + ChatColor.GREEN + info | ||||||
|                                     + ChatColor.DARK_RED + ")"; |                                     .getName() + ChatColor.DARK_RED + ")"; | ||||||
|  |  | ||||||
|                             map.put(str, methodColor); |                             map.put(str, methodColor); | ||||||
|                             methods.add(str); |                             methods.add(str); | ||||||
| @@ -131,12 +133,11 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|                         methods.add(ChatColor.RED + "No options with permission to use"); |                         methods.add(ChatColor.RED + "No options with permission to use"); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     sender.sendMessage(ChatColor.DARK_RED + type.toReadable() + " options: " |                     sender.sendMessage(LibsMsg.DHELP_OPTIONS.get(ChatColor.DARK_RED + type.toReadable(), | ||||||
|                             + StringUtils.join(methods, ChatColor.DARK_RED + ", ")); |                             StringUtils.join(methods, ChatColor.DARK_RED + ", "))); | ||||||
|  |  | ||||||
|                     if (ignored > 0) { |                     if (ignored > 0) { | ||||||
|                         sender.sendMessage(ChatColor.RED + "Ignored " + ignored |                         sender.sendMessage(LibsMsg.NO_PERMS_USE_OPTIONS.get(ignored)); | ||||||
|                                 + " options you do not have permission to use. Add 'show' to view unusable options."); |  | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     return true; |                     return true; | ||||||
| @@ -144,20 +145,18 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |         sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         for (String node : new String[] { |         for (String node : new String[]{"disguise", "disguiseradius", "disguiseentity", "disguiseplayer"}) { | ||||||
|                 "disguise", "disguiseradius", "disguiseentity", "disguiseplayer" |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = DisguiseParser | ||||||
|         }) { |                     .getPermissions(sender, "libsdisguises." + node + "."); | ||||||
|             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = DisguiseParser.getPermissions(sender, |  | ||||||
|                     "libsdisguises." + node + "."); |  | ||||||
|  |  | ||||||
|             if (args.length == 0) { |             if (args.length == 0) { | ||||||
|                 for (DisguisePerm type : perms.keySet()) { |                 for (DisguisePerm type : perms.keySet()) { | ||||||
| @@ -170,8 +169,7 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|                 for (ParamInfo s : ReflectionFlagWatchers.getParamInfos()) { |                 for (ParamInfo s : ReflectionFlagWatchers.getParamInfos()) { | ||||||
|                     tabs.add(s.getName().replaceAll(" ", "")); |                     tabs.add(s.getName().replaceAll(" ", "")); | ||||||
|                 } |                 } | ||||||
|             } |             } else if (DisguiseParser.getDisguisePerm(args[0]) == null) { | ||||||
|             else if (DisguiseParser.getDisguisePerm(args[0]) == null) { |  | ||||||
|                 tabs.add("Show"); |                 tabs.add("Show"); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -183,13 +181,12 @@ public class DisguiseHelpCommand extends DisguiseBaseCommand implements TabCompl | |||||||
|      * Send the player the information |      * Send the player the information | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|         sender.sendMessage(ChatColor.RED + "/disguisehelp <DisguiseType> " + ChatColor.GREEN |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|                 + "- View the options you can set on a disguise. Add 'show' to reveal the options you don't have permission to use"); |         sender.sendMessage(LibsMsg.DHELP_HELP1.get()); | ||||||
|  |  | ||||||
|         for (ParamInfo s : ReflectionFlagWatchers.getParamInfos()) { |         for (ParamInfo s : ReflectionFlagWatchers.getParamInfos()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "/disguisehelp " + s.getName().replaceAll(" ", "") + ChatColor.GREEN + " - " |             sender.sendMessage(LibsMsg.DHELP_HELP2.get(s.getName().replaceAll(" ", ""), s.getDescription())); | ||||||
|                     + s.getDescription()); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,10 +1,15 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.lang.reflect.Method; | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
| import java.util.ArrayList; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| import java.util.HashMap; | import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||||
| import java.util.List; | import me.libraryaddict.disguise.utilities.DisguiseParser; | ||||||
|  | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
|  | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| @@ -14,27 +19,23 @@ import org.bukkit.command.TabCompleter; | |||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; | import java.lang.reflect.Method; | ||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import java.util.ArrayList; | ||||||
| import me.libraryaddict.disguise.disguisetypes.DisguiseType; | import java.util.HashMap; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; | import java.util.List; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; |  | ||||||
|  |  | ||||||
| public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (!(sender instanceof Entity)) { |         if (!(sender instanceof Entity)) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); | ||||||
|  |  | ||||||
|         if (map.isEmpty()) { |         if (map.isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -46,18 +47,19 @@ public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         Disguise disguise = DisguiseAPI.getDisguise((Player) sender, (Entity) sender); |         Disguise disguise = DisguiseAPI.getDisguise((Player) sender, (Entity) sender); | ||||||
|  |  | ||||||
|         if (disguise == null) { |         if (disguise == null) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are not disguised!"); |             sender.sendMessage(LibsMsg.NOT_DISGUISED.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!map.containsKey(new DisguisePerm(disguise.getType()))) { |         if (!map.containsKey(new DisguisePerm(disguise.getType()))) { | ||||||
|             sender.sendMessage(ChatColor.RED + "No permission to modify your disguise!"); |             sender.sendMessage(LibsMsg.DMODIFY_NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         try { |         try { | ||||||
|             DisguiseParser.callMethods(sender, disguise, getPermissions(sender).get(new DisguisePerm(disguise.getType())), |             DisguiseParser | ||||||
|                     new ArrayList<String>(), args); |                     .callMethods(sender, disguise, getPermissions(sender).get(new DisguisePerm(disguise.getType())), | ||||||
|  |                             new ArrayList<String>(), args); | ||||||
|         } |         } | ||||||
|         catch (DisguiseParseException ex) { |         catch (DisguiseParseException ex) { | ||||||
|             if (ex.getMessage() != null) { |             if (ex.getMessage() != null) { | ||||||
| @@ -71,14 +73,14 @@ public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCom | |||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.RED + "Your disguise has been modified!"); |         sender.sendMessage(LibsMsg.DMODIFY_MODIFIED.get()); | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         if (!(sender instanceof Player)) |         if (!(sender instanceof Player)) | ||||||
|             return tabs; |             return tabs; | ||||||
| @@ -94,7 +96,7 @@ public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|         DisguisePerm disguiseType = new DisguisePerm(disguise.getType()); |         DisguisePerm disguiseType = new DisguisePerm(disguise.getType()); | ||||||
|  |  | ||||||
|         ArrayList<String> usedOptions = new ArrayList<String>(); |         ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|  |  | ||||||
|         for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |         for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|             for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 2 : 1; i < args.length; i++) { |             for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 2 : 1; i < args.length; i++) { | ||||||
| @@ -123,8 +125,7 @@ public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                         for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                         for (String e : info.getEnums(origArgs[origArgs.length - 1])) { | ||||||
|                             tabs.add(e); |                             tabs.add(e); | ||||||
|                         } |                         } | ||||||
|                     } |                     } else { | ||||||
|                     else { |  | ||||||
|                         if (info.getParamClass() == String.class) { |                         if (info.getParamClass() == String.class) { | ||||||
|                             for (Player player : Bukkit.getOnlinePlayers()) { |                             for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                                 tabs.add(player.getName()); |                                 tabs.add(player.getName()); | ||||||
| @@ -149,11 +150,12 @@ public class DisguiseModifyCommand extends DisguiseBaseCommand implements TabCom | |||||||
|      * Send the player the information |      * Send the player the information | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Modify your own disguise as you wear it!"); |         sender.sendMessage(LibsMsg.DMODIFY_HELP3.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "/disguisemodify setBaby true setSprinting true"); |         sender.sendMessage(LibsMsg.DMODIFY_HELP3.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can modify the disguises: " + ChatColor.GREEN |         sender.sendMessage(LibsMsg.DMODIFY_HELP3 | ||||||
|                 + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,10 +1,12 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.lang.reflect.Method; | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
| import java.util.ArrayList; | import me.libraryaddict.disguise.LibsDisguises; | ||||||
| import java.util.HashMap; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
| import java.util.List; | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| @@ -13,22 +15,21 @@ import org.bukkit.command.CommandSender; | |||||||
| import org.bukkit.command.TabCompleter; | import org.bukkit.command.TabCompleter; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseConfig; | import java.lang.reflect.Method; | ||||||
| import me.libraryaddict.disguise.LibsDisguises; | import java.util.ArrayList; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import java.util.HashMap; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | import java.util.List; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; |  | ||||||
|  |  | ||||||
| public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (!(sender instanceof Player)) { |         if (!(sender instanceof Player)) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (getPermissions(sender).isEmpty()) { |         if (getPermissions(sender).isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -39,14 +40,13 @@ public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|         LibsDisguises.getInstance().getListener().setDisguiseModify(sender.getName(), args); |         LibsDisguises.getInstance().getListener().setDisguiseModify(sender.getName(), args); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.RED + "Right click a disguised entity in the next " |         sender.sendMessage(LibsMsg.DMODIFYENT_CLICK.get(DisguiseConfig.getDisguiseEntityExpire())); | ||||||
|                 + DisguiseConfig.getDisguiseEntityExpire() + " seconds to modify their disguise!"); |  | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         if (!(sender instanceof Player)) { |         if (!(sender instanceof Player)) { | ||||||
|             return tabs; |             return tabs; | ||||||
| @@ -75,8 +75,7 @@ public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements | |||||||
|                         for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                         for (String e : info.getEnums(origArgs[origArgs.length - 1])) { | ||||||
|                             tabs.add(e); |                             tabs.add(e); | ||||||
|                         } |                         } | ||||||
|                     } |                     } else { | ||||||
|                     else { |  | ||||||
|                         if (info.getParamClass() == String.class) { |                         if (info.getParamClass() == String.class) { | ||||||
|                             for (Player player : Bukkit.getOnlinePlayers()) { |                             for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                                 tabs.add(player.getName()); |                                 tabs.add(player.getName()); | ||||||
| @@ -88,7 +87,8 @@ public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|             if (addMethods) { |             if (addMethods) { | ||||||
|                 // If this is a method, add. Else if it can be a param of the previous argument, add. |                 // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(perm.getType().getWatcherClass())) { |                 for (Method method : ReflectionFlagWatchers | ||||||
|  |                         .getDisguiseWatcherMethods(perm.getType().getWatcherClass())) { | ||||||
|                     tabs.add(method.getName()); |                     tabs.add(method.getName()); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| @@ -104,12 +104,12 @@ public class DisguiseModifyEntityCommand extends DisguiseBaseCommand implements | |||||||
|      * @param map |      * @param map | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Choose the options for a disguise then right click a entity to modify it!"); |         sender.sendMessage(LibsMsg.DMODENT_HELP1.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can modify the disguises: " + ChatColor.GREEN |         sender.sendMessage(LibsMsg.DMODIFY_HELP3 | ||||||
|                 + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,10 +1,13 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.lang.reflect.Method; | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
| import java.util.ArrayList; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| import java.util.HashMap; | import me.libraryaddict.disguise.utilities.DisguiseParser; | ||||||
| import java.util.List; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
|  | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
|  | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| @@ -13,13 +16,10 @@ import org.bukkit.command.CommandSender; | |||||||
| import org.bukkit.command.TabCompleter; | import org.bukkit.command.TabCompleter; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; | import java.lang.reflect.Method; | ||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import java.util.ArrayList; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; | import java.util.HashMap; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import java.util.List; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; |  | ||||||
|  |  | ||||||
| public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|  |  | ||||||
| @@ -28,7 +28,7 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); | ||||||
|  |  | ||||||
|         if (map.isEmpty()) { |         if (map.isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -40,7 +40,7 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|         Player player = Bukkit.getPlayer(args[0]); |         Player player = Bukkit.getPlayer(args[0]); | ||||||
|  |  | ||||||
|         if (player == null) { |         if (player == null) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Cannot find the player '" + args[0] + "'"); |             sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[0])); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -61,18 +61,18 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|             disguise = DisguiseAPI.getDisguise(player); |             disguise = DisguiseAPI.getDisguise(player); | ||||||
|  |  | ||||||
|         if (disguise == null) { |         if (disguise == null) { | ||||||
|             sender.sendMessage(ChatColor.RED + "The player '" + player.getName() + "' is not disguised"); |             sender.sendMessage(LibsMsg.DMODPLAYER_NODISGUISE.get(player.getName())); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!map.containsKey(new DisguisePerm(disguise.getType()))) { |         if (!map.containsKey(new DisguisePerm(disguise.getType()))) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You do not have permission to modify this disguise"); |             sender.sendMessage(LibsMsg.DMODPLAYER_NOPERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         try { |         try { | ||||||
|             DisguiseParser.callMethods(sender, disguise, map.get(new DisguisePerm(disguise.getType())), new ArrayList<String>(), |             DisguiseParser.callMethods(sender, disguise, map.get(new DisguisePerm(disguise.getType())), | ||||||
|                     newArgs); |                     new ArrayList<String>(), newArgs); | ||||||
|         } |         } | ||||||
|         catch (DisguiseParseException ex) { |         catch (DisguiseParseException ex) { | ||||||
|             if (ex.getMessage() != null) { |             if (ex.getMessage() != null) { | ||||||
| @@ -86,14 +86,14 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.RED + "Modified the disguise of " + player.getName() + "!"); |         sender.sendMessage(LibsMsg.DMODPLAYER_MODIFIED.get(player.getName())); | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); | ||||||
| @@ -105,12 +105,11 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|             for (Player player : Bukkit.getOnlinePlayers()) { |             for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                 tabs.add(player.getName()); |                 tabs.add(player.getName()); | ||||||
|             } |             } | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             Player player = Bukkit.getPlayer(args[0]); |             Player player = Bukkit.getPlayer(args[0]); | ||||||
|  |  | ||||||
|             if (player == null) { |             if (player == null) { | ||||||
|                 sender.sendMessage(ChatColor.RED + "Cannot find the player '" + args[0] + "'"); |                 sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[0])); | ||||||
|                 return tabs; |                 return tabs; | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -123,13 +122,13 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|                 disguise = DisguiseAPI.getDisguise(player); |                 disguise = DisguiseAPI.getDisguise(player); | ||||||
|  |  | ||||||
|             if (disguise == null) { |             if (disguise == null) { | ||||||
|                 sender.sendMessage(ChatColor.RED + "The player '" + player.getName() + "' is not disguised"); |                 sender.sendMessage(LibsMsg.DMODPLAYER_NODISGUISE.get(player.getName())); | ||||||
|                 return tabs; |                 return tabs; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             DisguisePerm disguiseType = new DisguisePerm(disguise.getType()); |             DisguisePerm disguiseType = new DisguisePerm(disguise.getType()); | ||||||
|  |  | ||||||
|             ArrayList<String> usedOptions = new ArrayList<String>(); |             ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|  |  | ||||||
|             for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |             for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                 for (int i = 1; i < args.length; i++) { |                 for (int i = 1; i < args.length; i++) { | ||||||
| @@ -158,8 +157,7 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|                             for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                             for (String e : info.getEnums(origArgs[origArgs.length - 1])) { | ||||||
|                                 tabs.add(e); |                                 tabs.add(e); | ||||||
|                             } |                             } | ||||||
|                         } |                         } else { | ||||||
|                         else { |  | ||||||
|                             if (info.getParamClass() == String.class) { |                             if (info.getParamClass() == String.class) { | ||||||
|                                 for (Player p : Bukkit.getOnlinePlayers()) { |                                 for (Player p : Bukkit.getOnlinePlayers()) { | ||||||
|                                     tabs.add(p.getName()); |                                     tabs.add(p.getName()); | ||||||
| @@ -171,7 +169,8 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|                 if (addMethods) { |                 if (addMethods) { | ||||||
|                     // If this is a method, add. Else if it can be a param of the previous argument, add. |                     // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                     for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                     for (Method method : ReflectionFlagWatchers | ||||||
|  |                             .getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                         tabs.add(method.getName()); |                         tabs.add(method.getName()); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @@ -185,11 +184,12 @@ public class DisguiseModifyPlayerCommand extends DisguiseBaseCommand implements | |||||||
|      * Send the player the information |      * Send the player the information | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Modify the disguise of another player!"); |         sender.sendMessage(LibsMsg.DMODPLAYER_HELP1.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can modify the disguises: " + ChatColor.GREEN |         sender.sendMessage(LibsMsg.DMODIFY_HELP3 | ||||||
|                 + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -3,11 +3,9 @@ package me.libraryaddict.disguise.commands; | |||||||
| import me.libraryaddict.disguise.DisguiseAPI; | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| import me.libraryaddict.disguise.disguisetypes.DisguiseType; | import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||||
| import me.libraryaddict.disguise.utilities.ClassGetter; | import me.libraryaddict.disguise.utilities.*; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| @@ -42,8 +40,7 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|         if (sender instanceof Player) { |         if (sender instanceof Player) { | ||||||
|             center = ((Player) sender).getLocation(); |             center = ((Player) sender).getLocation(); | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             center = ((BlockCommandSender) sender).getBlock().getLocation().add(0.5, 0, 0.5); |             center = ((BlockCommandSender) sender).getBlock().getLocation().add(0.5, 0, 0.5); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -53,14 +50,14 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (sender.getName().equals("CONSOLE")) { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); | ||||||
|  |  | ||||||
|         if (map.isEmpty()) { |         if (map.isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -78,8 +75,8 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|             Collections.sort(classes); |             Collections.sort(classes); | ||||||
|  |  | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "EntityTypes usable are: " + ChatColor.GREEN |             sender.sendMessage(LibsMsg.DMODRADIUS_USABLE | ||||||
|                     + StringUtils.join(classes, ChatColor.DARK_GREEN + ", " + ChatColor.GREEN) + ChatColor.DARK_GREEN + "."); |                     .get(ChatColor.GREEN + StringUtils.join(classes, ChatColor.DARK_GREEN + ", " + ChatColor.GREEN))); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -104,31 +101,30 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 if (type == null) { |                 if (type == null) { | ||||||
|                     sender.sendMessage(ChatColor.RED + "Unrecognised EntityType " + args[0]); |                     sender.sendMessage(LibsMsg.DMODRADIUS_UNRECOGNIZED.get(args[0])); | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (args.length == starting + 1) { |         if (args.length == starting + 1) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You need to supply the disguise options as well as the radius" |             sender.sendMessage( | ||||||
|                     + (starting != 0 ? " and EntityType" : "")); |                     (starting == 0 ? LibsMsg.DMODRADIUS_NEEDOPTIONS : LibsMsg.DMODRADIUS_NEEDOPTIONS_ENTITY).get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } else if (args.length < 2) { | ||||||
|         else if (args.length < 2) { |             sender.sendMessage(LibsMsg.DMODRADIUS_NEEDOPTIONS.get()); | ||||||
|             sender.sendMessage(ChatColor.RED + "You need to supply a radius as well as the disguise options"); |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!isNumeric(args[starting])) { |         if (!isNumeric(args[starting])) { | ||||||
|             sender.sendMessage(ChatColor.RED + args[starting] + " is not a number"); |             sender.sendMessage(LibsMsg.NOT_NUMBER.get(args[starting])); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         int radius = Integer.parseInt(args[starting]); |         int radius = Integer.parseInt(args[starting]); | ||||||
|  |  | ||||||
|         if (radius > maxRadius) { |         if (radius > maxRadius) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Limited radius to " + maxRadius + "! Don't want to make too much lag right?"); |             sender.sendMessage(LibsMsg.LIMITED_RADIUS.get(maxRadius)); | ||||||
|             radius = maxRadius; |             radius = maxRadius; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -184,14 +180,13 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (noPermission > 0) { |         if (noPermission > 0) { | ||||||
|             sender.sendMessage(ChatColor.RED + "No permission to modify " + noPermission + " disguises!"); |             sender.sendMessage(LibsMsg.DMODRADIUS_NOPERM.get(noPermission)); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (modifiedDisguises > 0) { |         if (modifiedDisguises > 0) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Successfully modified the disguises of " + modifiedDisguises + " entities!"); |             sender.sendMessage(LibsMsg.DMODRADIUS.get(modifiedDisguises)); | ||||||
|         } |         } else { | ||||||
|         else { |             sender.sendMessage(LibsMsg.DMODRADIUS_NOENTS.get()); | ||||||
|             sender.sendMessage(ChatColor.RED + "Couldn't find any disguised entities!"); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -199,7 +194,7 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); | ||||||
| @@ -231,11 +226,11 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|         int radius = Integer.parseInt(args[starting]); |         int radius = Integer.parseInt(args[starting]); | ||||||
|  |  | ||||||
|         if (radius > maxRadius) { |         if (radius > maxRadius) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Limited radius to " + maxRadius + "! Don't want to make too much lag right?"); |             sender.sendMessage(LibsMsg.LIMITED_RADIUS.get(maxRadius)); | ||||||
|             radius = maxRadius; |             radius = maxRadius; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         ArrayList<String> usedOptions = new ArrayList<String>(); |         ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|  |  | ||||||
|         for (Entity entity : getNearbyEntities(sender, radius)) { |         for (Entity entity : getNearbyEntities(sender, radius)) { | ||||||
|             Disguise disguise = DisguiseAPI.getDisguise(entity); |             Disguise disguise = DisguiseAPI.getDisguise(entity); | ||||||
| @@ -246,9 +241,7 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|             DisguiseType disguiseType = disguise.getType(); |             DisguiseType disguiseType = disguise.getType(); | ||||||
|  |  | ||||||
|             for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |             for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                 for (int i = 0; i < args.length; i++) { |                 for (String arg : args) { | ||||||
|                     String arg = args[i]; |  | ||||||
|  |  | ||||||
|                     if (!method.getName().equalsIgnoreCase(arg)) |                     if (!method.getName().equalsIgnoreCase(arg)) | ||||||
|                         continue; |                         continue; | ||||||
|  |  | ||||||
| @@ -256,7 +249,7 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (passesCheck(sender, perms.get(disguiseType), usedOptions)) { |             if (passesCheck(sender, perms.get(new DisguisePerm(disguiseType)), usedOptions)) { | ||||||
|                 boolean addMethods = true; |                 boolean addMethods = true; | ||||||
|  |  | ||||||
|                 if (args.length > 1 + starting) { |                 if (args.length > 1 + starting) { | ||||||
| @@ -272,8 +265,7 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|                             for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                             for (String e : info.getEnums(origArgs[origArgs.length - 1])) { | ||||||
|                                 tabs.add(e); |                                 tabs.add(e); | ||||||
|                             } |                             } | ||||||
|                         } |                         } else { | ||||||
|                         else { |  | ||||||
|                             if (info.getParamClass() == String.class) { |                             if (info.getParamClass() == String.class) { | ||||||
|                                 for (Player player : Bukkit.getOnlinePlayers()) { |                                 for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                                     tabs.add(player.getName()); |                                     tabs.add(player.getName()); | ||||||
| @@ -285,7 +277,8 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|  |  | ||||||
|                 if (addMethods) { |                 if (addMethods) { | ||||||
|                     // If this is a method, add. Else if it can be a param of the previous argument, add. |                     // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                     for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                     for (Method method : ReflectionFlagWatchers | ||||||
|  |                             .getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                         tabs.add(method.getName()); |                         tabs.add(method.getName()); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @@ -299,31 +292,26 @@ public class DisguiseModifyRadiusCommand extends DisguiseBaseCommand implements | |||||||
|      * Send the player the information |      * Send the player the information | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Modify the disguises in a radius! Caps at " + maxRadius + " blocks!"); |         sender.sendMessage(LibsMsg.DMODRADIUS_HELP1.get(maxRadius)); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can modify the disguises: " + ChatColor.GREEN |         sender.sendMessage(LibsMsg.DMODIFY_HELP3 | ||||||
|                 + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|  |  | ||||||
|         String optional = ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")"; |         String optional = ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")"; | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("player")) { |         if (allowedDisguises.contains("player")) { | ||||||
|             sender.sendMessage((ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + optional + "> <Radius> player <Name>") |             sender.sendMessage(LibsMsg.DRADIUS_HELP3.get()); | ||||||
|                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage((ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + optional + "> <Radius> <DisguiseType> <Baby" |         sender.sendMessage(LibsMsg.DMODRADIUS_HELP4.get()); | ||||||
|                 + optional + ">").replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")); |  | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { |         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { | ||||||
|             sender.sendMessage((ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + optional |             sender.sendMessage(LibsMsg.DMODRADIUS_HELP5.get()); | ||||||
|                     + "> <Radius> <Dropped_Item/Falling_Block> <Id> <Durability" + optional + ">") |  | ||||||
|                             .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage( |         sender.sendMessage(LibsMsg.DMODRADIUS_HELP6.get()); | ||||||
|                 ChatColor.DARK_GREEN + "See the EntityType's usable by " + ChatColor.GREEN + "/disguiseradius EntityTypes"); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,18 +1,5 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.lang.reflect.Method; |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import org.apache.commons.lang.StringUtils; |  | ||||||
| import org.bukkit.Bukkit; |  | ||||||
| import org.bukkit.ChatColor; |  | ||||||
| import org.bukkit.command.Command; |  | ||||||
| import org.bukkit.command.CommandSender; |  | ||||||
| import org.bukkit.command.TabCompleter; |  | ||||||
| import org.bukkit.entity.Player; |  | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
| import me.libraryaddict.disguise.DisguiseConfig; | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| @@ -21,8 +8,23 @@ import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; | |||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; | import me.libraryaddict.disguise.utilities.DisguiseParser; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
|  | import org.apache.commons.lang.StringUtils; | ||||||
|  | import org.bukkit.Bukkit; | ||||||
|  | import org.bukkit.ChatColor; | ||||||
|  | import org.bukkit.command.Command; | ||||||
|  | import org.bukkit.command.CommandSender; | ||||||
|  | import org.bukkit.command.TabCompleter; | ||||||
|  | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
|  | import java.lang.reflect.Method; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|  |  | ||||||
| @@ -31,7 +33,7 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); | ||||||
|  |  | ||||||
|         if (map.isEmpty()) { |         if (map.isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -41,14 +43,14 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (args.length == 1) { |         if (args.length == 1) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You need to supply a disguise as well as the player"); |             sender.sendMessage(LibsMsg.DPLAYER_SUPPLY.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         Player player = Bukkit.getPlayer(args[0]); |         Player player = Bukkit.getPlayer(args[0]); | ||||||
|  |  | ||||||
|         if (player == null) { |         if (player == null) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Cannot find the player '" + args[0] + "'"); |             sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[0])); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -78,8 +80,7 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled()) { |         if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled()) { | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.DISABLED_LIVING_TO_MISC.get()); | ||||||
|                     ChatColor.RED + "Can't disguise a living entity as a misc disguise. This has been disabled in the config!"); |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -97,12 +98,9 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         DisguiseAPI.disguiseToAll(player, disguise); |         DisguiseAPI.disguiseToAll(player, disguise); | ||||||
|  |  | ||||||
|         if (disguise.isDisguiseInUse()) { |         if (disguise.isDisguiseInUse()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Successfully disguised " + player.getName() + " as a " |             sender.sendMessage(LibsMsg.DISG_PLAYER_AS_DISG.get(player.getName(), disguise.getType().toReadable())); | ||||||
|                     + disguise.getType().toReadable() + "!"); |         } else { | ||||||
|         } |             sender.sendMessage(LibsMsg.DISG_PLAYER_AS_DISG_FAIL.get(player.getName(), disguise.getType().toReadable())); | ||||||
|         else { |  | ||||||
|             sender.sendMessage( |  | ||||||
|                     ChatColor.RED + "Failed to disguise " + player.getName() + " as a " + disguise.getType().toReadable() + "!"); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -110,7 +108,7 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); | ||||||
| @@ -119,13 +117,9 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|             for (Player player : Bukkit.getOnlinePlayers()) { |             for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                 tabs.add(player.getName()); |                 tabs.add(player.getName()); | ||||||
|             } |             } | ||||||
|         } |         } else if (args.length == 1) { | ||||||
|         else if (args.length == 1) { |             tabs.addAll(getAllowedDisguises(perms)); | ||||||
|             for (String type : getAllowedDisguises(perms)) { |         } else { | ||||||
|                 tabs.add(type); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         else { |  | ||||||
|             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[1]); |             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[1]); | ||||||
|  |  | ||||||
|             if (disguiseType == null) |             if (disguiseType == null) | ||||||
| @@ -135,9 +129,8 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                 for (Player player : Bukkit.getOnlinePlayers()) { |                 for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                     tabs.add(player.getName()); |                     tabs.add(player.getName()); | ||||||
|                 } |                 } | ||||||
|             } |             } else { | ||||||
|             else { |                 ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|                 ArrayList<String> usedOptions = new ArrayList<String>(); |  | ||||||
|  |  | ||||||
|                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 3 : 2; i < args.length; i++) { |                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? 3 : 2; i < args.length; i++) { | ||||||
| @@ -163,11 +156,8 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                                 addMethods = false; |                                 addMethods = false; | ||||||
|  |  | ||||||
|                             if (info.isEnums()) { |                             if (info.isEnums()) { | ||||||
|                                 for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                                 tabs.addAll(Arrays.asList(info.getEnums(origArgs[origArgs.length - 1]))); | ||||||
|                                     tabs.add(e); |                             } else { | ||||||
|                                 } |  | ||||||
|                             } |  | ||||||
|                             else { |  | ||||||
|                                 if (info.getParamClass() == String.class) { |                                 if (info.getParamClass() == String.class) { | ||||||
|                                     for (Player player : Bukkit.getOnlinePlayers()) { |                                     for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
|                                         tabs.add(player.getName()); |                                         tabs.add(player.getName()); | ||||||
| @@ -179,7 +169,8 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|                     if (addMethods) { |                     if (addMethods) { | ||||||
|                         // If this is a method, add. Else if it can be a param of the previous argument, add. |                         // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                         for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                         for (Method method : ReflectionFlagWatchers | ||||||
|  |                                 .getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                             tabs.add(method.getName()); |                             tabs.add(method.getName()); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @@ -194,22 +185,22 @@ public class DisguisePlayerCommand extends DisguiseBaseCommand implements TabCom | |||||||
|      * Send the player the information |      * Send the player the information | ||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     protected void sendCommandUsage(CommandSender sender, HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |     protected void sendCommandUsage(CommandSender sender, | ||||||
|  |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "Disguise another player!"); |         sender.sendMessage(LibsMsg.D_HELP1.get()); | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can use the disguises: " + ChatColor.GREEN |         sender.sendMessage(LibsMsg.CAN_USE_DISGS | ||||||
|                 + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("player")) { |         if (allowedDisguises.contains("player")) { | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseplayer <PlayerName> player <Name>"); |             sender.sendMessage(LibsMsg.D_HELP3.get()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "/disguiseplayer <PlayerName> <DisguiseType> <Baby>"); |         sender.sendMessage(LibsMsg.D_HELP4.get()); | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { |         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.D_HELP5.get()); | ||||||
|                     ChatColor.DARK_GREEN + "/disguiseplayer <PlayerName> <Dropped_Item/Falling_Block> <Id> <Durability>"); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -5,11 +5,9 @@ import me.libraryaddict.disguise.DisguiseConfig; | |||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| import me.libraryaddict.disguise.disguisetypes.DisguiseType; | import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||||
| import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; | import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; | ||||||
| import me.libraryaddict.disguise.utilities.ClassGetter; | import me.libraryaddict.disguise.utilities.*; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser; |  | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguiseParseException; | ||||||
| import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | import me.libraryaddict.disguise.utilities.DisguiseParser.DisguisePerm; | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers; |  | ||||||
| import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | import me.libraryaddict.disguise.utilities.ReflectionFlagWatchers.ParamInfo; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| @@ -25,10 +23,7 @@ import org.bukkit.entity.LivingEntity; | |||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import java.lang.reflect.Method; | import java.lang.reflect.Method; | ||||||
| import java.util.ArrayList; | import java.util.*; | ||||||
| import java.util.Collections; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCompleter { | public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCompleter { | ||||||
|     private int maxRadius = 30; |     private int maxRadius = 30; | ||||||
| @@ -46,14 +41,14 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (sender.getName().equals("CONSOLE")) { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map = getPermissions(sender); | ||||||
|  |  | ||||||
|         if (map.isEmpty()) { |         if (map.isEmpty()) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -71,9 +66,8 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|             Collections.sort(classes); |             Collections.sort(classes); | ||||||
|  |  | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.DRADIUS_ENTITIES | ||||||
|                     ChatColor.DARK_GREEN + "EntityTypes usable are: " + ChatColor.GREEN + StringUtils.join(classes, |                     .get(ChatColor.GREEN + StringUtils.join(classes, ChatColor.DARK_GREEN + ", " + ChatColor.GREEN))); | ||||||
|                             ChatColor.DARK_GREEN + ", " + ChatColor.GREEN) + ChatColor.DARK_GREEN + "."); |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -94,35 +88,34 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                 try { |                 try { | ||||||
|                     type = EntityType.valueOf(args[0].toUpperCase()); |                     type = EntityType.valueOf(args[0].toUpperCase()); | ||||||
|                 } |                 } | ||||||
|                 catch (Exception ex) { |                 catch (Exception ignored) { | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 if (type == null) { |                 if (type == null) { | ||||||
|                     sender.sendMessage(ChatColor.RED + "Unrecognised EntityType " + args[0]); |                     sender.sendMessage(LibsMsg.DMODRADIUS_UNRECOGNIZED.get(args[0])); | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (args.length == starting + 1) { |         if (args.length == starting + 1) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You need to supply a disguise as well as the radius" + (starting != 0 ? |             sender.sendMessage( | ||||||
|                     " and EntityType" : "")); |                     (starting == 0 ? LibsMsg.DRADIUS_NEEDOPTIONS : LibsMsg.DRADIUS_NEEDOPTIONS_ENTITY).get()); | ||||||
|             return true; |             return true; | ||||||
|         } else if (args.length < 2) { |         } else if (args.length < 2) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You need to supply a radius as well as the disguise"); |             sender.sendMessage(LibsMsg.DRADIUS_NEEDOPTIONS.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (!isNumeric(args[starting])) { |         if (!isNumeric(args[starting])) { | ||||||
|             sender.sendMessage(ChatColor.RED + args[starting] + " is not a number"); |             sender.sendMessage(LibsMsg.NOT_NUMBER.get(args[starting])); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         int radius = Integer.parseInt(args[starting]); |         int radius = Integer.parseInt(args[starting]); | ||||||
|  |  | ||||||
|         if (radius > maxRadius) { |         if (radius > maxRadius) { | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.LIMITED_RADIUS.get(maxRadius)); | ||||||
|                     ChatColor.RED + "Limited radius to " + maxRadius + "! Don't want to make too much lag right?"); |  | ||||||
|             radius = maxRadius; |             radius = maxRadius; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -168,7 +161,8 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (type != null ? entity.getType() == type : entityClass.isAssignableFrom(entity.getClass())) { |             if (type != null ? entity.getType() == type : entityClass.isAssignableFrom(entity.getClass())) { | ||||||
|                 if (disguise.isMiscDisguise() && !DisguiseConfig.isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) { |                 if (disguise.isMiscDisguise() && !DisguiseConfig | ||||||
|  |                         .isMiscDisguisesForLivingEnabled() && entity instanceof LivingEntity) { | ||||||
|                     miscDisguises++; |                     miscDisguises++; | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
| @@ -193,14 +187,13 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (disguisedEntitys > 0) { |         if (disguisedEntitys > 0) { | ||||||
|             sender.sendMessage(ChatColor.RED + "Successfully disguised " + disguisedEntitys + " entities!"); |             sender.sendMessage(LibsMsg.DISRADIUS.get(disguisedEntitys)); | ||||||
|         } else { |         } else { | ||||||
|             sender.sendMessage(ChatColor.RED + "Couldn't find any entities to disguise!"); |             sender.sendMessage(LibsMsg.DISRADIUS_FAIL.get()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (miscDisguises > 0) { |         if (miscDisguises > 0) { | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.DRADIUS_MISCDISG.get(miscDisguises)); | ||||||
|                     ChatColor.RED + "Failed to disguise " + miscDisguises + " entities because the option to disguise a living entity as a non-living has been disabled in the config"); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -208,7 +201,7 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); |         HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> perms = getPermissions(sender); | ||||||
| @@ -238,9 +231,7 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (args.length == starting) { |         if (args.length == starting) { | ||||||
|             for (String type : getAllowedDisguises(perms)) { |             tabs.addAll(getAllowedDisguises(perms)); | ||||||
|                 tabs.add(type); |  | ||||||
|             } |  | ||||||
|         } else { |         } else { | ||||||
|  |  | ||||||
|             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[starting]); |             DisguisePerm disguiseType = DisguiseParser.getDisguisePerm(args[starting]); | ||||||
| @@ -253,7 +244,7 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                     tabs.add(player.getName()); |                     tabs.add(player.getName()); | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 ArrayList<String> usedOptions = new ArrayList<String>(); |                 ArrayList<String> usedOptions = new ArrayList<>(); | ||||||
|  |  | ||||||
|                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { |                 for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? starting + 2 : |                     for (int i = disguiseType.getType() == DisguiseType.PLAYER ? starting + 2 : | ||||||
| @@ -280,9 +271,7 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|                                 addMethods = false; |                                 addMethods = false; | ||||||
|  |  | ||||||
|                             if (info.isEnums()) { |                             if (info.isEnums()) { | ||||||
|                                 for (String e : info.getEnums(origArgs[origArgs.length - 1])) { |                                 tabs.addAll(Arrays.asList(info.getEnums(origArgs[origArgs.length - 1]))); | ||||||
|                                     tabs.add(e); |  | ||||||
|                                 } |  | ||||||
|                             } else { |                             } else { | ||||||
|                                 if (info.getParamClass() == String.class) { |                                 if (info.getParamClass() == String.class) { | ||||||
|                                     for (Player player : Bukkit.getOnlinePlayers()) { |                                     for (Player player : Bukkit.getOnlinePlayers()) { | ||||||
| @@ -295,8 +284,8 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|  |  | ||||||
|                     if (addMethods) { |                     if (addMethods) { | ||||||
|                         // If this is a method, add. Else if it can be a param of the previous argument, add. |                         // If this is a method, add. Else if it can be a param of the previous argument, add. | ||||||
|                         for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods( |                         for (Method method : ReflectionFlagWatchers | ||||||
|                                 disguiseType.getWatcherClass())) { |                                 .getDisguiseWatcherMethods(disguiseType.getWatcherClass())) { | ||||||
|                             tabs.add(method.getName()); |                             tabs.add(method.getName()); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
| @@ -315,30 +304,20 @@ public class DisguiseRadiusCommand extends DisguiseBaseCommand implements TabCom | |||||||
|             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> map) { | ||||||
|         ArrayList<String> allowedDisguises = getAllowedDisguises(map); |         ArrayList<String> allowedDisguises = getAllowedDisguises(map); | ||||||
|  |  | ||||||
|         sender.sendMessage( |         sender.sendMessage(LibsMsg.DRADIUS_HELP1.get(maxRadius)); | ||||||
|                 ChatColor.DARK_GREEN + "Disguise all entities in a radius! Caps at " + maxRadius + " blocks!"); |         sender.sendMessage(LibsMsg.CAN_USE_DISGS | ||||||
|         sender.sendMessage(ChatColor.DARK_GREEN + "You can use the disguises: " + ChatColor.GREEN + StringUtils.join( |                 .get(ChatColor.GREEN + StringUtils.join(allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN))); | ||||||
|                 allowedDisguises, ChatColor.RED + ", " + ChatColor.GREEN)); |  | ||||||
|  |  | ||||||
|         String optional = ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")"; |  | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("player")) { |         if (allowedDisguises.contains("player")) { | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.DRADIUS_HELP3.get()); | ||||||
|                     (ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + optional + "> <Radius> player <Name>").replace( |  | ||||||
|                             "<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage( |         sender.sendMessage(LibsMsg.DRADIUS_HELP4.get()); | ||||||
|                 (ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + optional + "> <Radius> <DisguiseType> <Baby" + optional + ">").replace( |  | ||||||
|                         "<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")); |  | ||||||
|  |  | ||||||
|         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { |         if (allowedDisguises.contains("dropped_item") || allowedDisguises.contains("falling_block")) { | ||||||
|             sender.sendMessage( |             sender.sendMessage(LibsMsg.DRADIUS_HELP5.get()); | ||||||
|                     (ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + optional + "> <Radius> <Dropped_Item/Falling_Block> <Id> <Durability" + optional + ">").replace( |  | ||||||
|                             "<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         sender.sendMessage( |         sender.sendMessage(LibsMsg.DRADIUS_HELP6.get()); | ||||||
|                 ChatColor.DARK_GREEN + "See the EntityType's usable by " + ChatColor.GREEN + "/disguiseradius EntityTypes"); |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,13 +1,14 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| 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; | ||||||
| import org.bukkit.command.CommandSender; | import org.bukkit.command.CommandSender; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; |  | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @author Navid |  * @author Navid | ||||||
|  */ |  */ | ||||||
| @@ -16,7 +17,7 @@ public class DisguiseViewSelfCommand implements CommandExecutor { | |||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { | ||||||
|         if (sender.getName().equals("CONSOLE")) { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -24,14 +25,12 @@ public class DisguiseViewSelfCommand implements CommandExecutor { | |||||||
|  |  | ||||||
|         if (DisguiseAPI.isViewSelfToggled(player)) { |         if (DisguiseAPI.isViewSelfToggled(player)) { | ||||||
|             DisguiseAPI.setViewDisguiseToggled(player, false); |             DisguiseAPI.setViewDisguiseToggled(player, false); | ||||||
|             sender.sendMessage(ChatColor.GREEN + "Toggled viewing own disguise off!"); |             sender.sendMessage(LibsMsg.VIEW_SELF_ON.get()); | ||||||
|         } |         } else { | ||||||
|         else { |  | ||||||
|             DisguiseAPI.setViewDisguiseToggled(player, true); |             DisguiseAPI.setViewDisguiseToggled(player, true); | ||||||
|             sender.sendMessage(ChatColor.GREEN + "Toggled viewing own disguise on!"); |             sender.sendMessage(LibsMsg.VIEW_SELF_OFF.get()); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,10 +1,9 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import me.libraryaddict.disguise.LibsDisguises; | ||||||
| import java.util.Iterator; | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.utilities.LibsPremium; | import me.libraryaddict.disguise.utilities.LibsPremium; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; | import org.bukkit.ChatColor; | ||||||
| import org.bukkit.command.Command; | import org.bukkit.command.Command; | ||||||
| @@ -12,7 +11,9 @@ import org.bukkit.command.CommandExecutor; | |||||||
| import org.bukkit.command.CommandSender; | import org.bukkit.command.CommandSender; | ||||||
| import org.bukkit.command.TabCompleter; | import org.bukkit.command.TabCompleter; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.LibsDisguises; | import java.util.ArrayList; | ||||||
|  | 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) { | ||||||
| @@ -35,7 +36,7 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected String[] getArgs(String[] args) { |     protected String[] getArgs(String[] args) { | ||||||
|         ArrayList<String> newArgs = new ArrayList<String>(); |         ArrayList<String> newArgs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         for (int i = 0; i < args.length - 1; i++) { |         for (int i = 0; i < args.length - 1; i++) { | ||||||
|             String s = args[i]; |             String s = args[i]; | ||||||
| @@ -52,29 +53,28 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { | |||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (args.length == 0) { |         if (args.length == 0) { | ||||||
|             sender.sendMessage(ChatColor.DARK_GREEN + "This server is running " + "Lib's Disguises v" |             sender.sendMessage( | ||||||
|                     + Bukkit.getPluginManager().getPlugin("LibsDisguises").getDescription().getVersion() |                     ChatColor.DARK_GREEN + "This server is running " + "Lib's Disguises v" + Bukkit.getPluginManager() | ||||||
|                     + " by libraryaddict, formerly maintained by Byteflux and NavidK0.\n" + "Use " + ChatColor.GREEN |                             .getPlugin("LibsDisguises").getDescription() | ||||||
|                     + "/libsdisguises reload" + ChatColor.DARK_GREEN |                             .getVersion() + " by libraryaddict, formerly maintained " + "by Byteflux and NavidK0." + ( | ||||||
|                     + " to reload the config. All disguises will be blown by doing this."); |                             sender.hasPermission("libsdisguises.reload") ? | ||||||
|  |                                     "\nUse " + ChatColor.GREEN + "/libsdisguises " + "reload" + ChatColor.DARK_GREEN + " to reload the config. All disguises will be blown by doing this" + "." : | ||||||
|  |                                     "")); | ||||||
|  |  | ||||||
|             if (LibsPremium.isPremium()) { |             if (LibsPremium.isPremium()) { | ||||||
|                 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 (sender.hasPermission("libsdisguises.reload")) { | ||||||
|                 if (args[0].equalsIgnoreCase("reload")) { |                 if (args[0].equalsIgnoreCase("reload")) { | ||||||
|                     LibsDisguises.getInstance().reload(); |                     LibsDisguises.getInstance().reload(); | ||||||
|                     sender.sendMessage(ChatColor.GREEN + "[LibsDisguises] Reloaded config."); |                     sender.sendMessage(LibsMsg.RELOADED_CONFIG.get()); | ||||||
|                     return true; |                     return true; | ||||||
|  |                 } else { | ||||||
|  |                     sender.sendMessage(LibsMsg.LIBS_RELOAD_WRONG.get()); | ||||||
|                 } |                 } | ||||||
|                 else { |             } else { | ||||||
|                     sender.sendMessage(ChatColor.RED + "[LibsDisguises] That command doesn't exist!"); |                 sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             else { |  | ||||||
|                 sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |  | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         return true; |         return true; | ||||||
| @@ -82,7 +82,7 @@ public class LibsDisguisesCommand implements CommandExecutor, TabCompleter { | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         if (args.length == 0) |         if (args.length == 0) | ||||||
|   | |||||||
| @@ -1,5 +1,8 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| 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; | ||||||
| @@ -7,35 +10,26 @@ import org.bukkit.command.CommandSender; | |||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; | public class UndisguiseCommand implements CommandExecutor { | ||||||
|  |  | ||||||
| public class UndisguiseCommand implements CommandExecutor |  | ||||||
| { |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|     { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|         if (sender.getName().equals("CONSOLE")) |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|         { |  | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|         if (sender.hasPermission("libsdisguises.undisguise")) |  | ||||||
|         { |         if (sender.hasPermission("libsdisguises.undisguise")) { | ||||||
|             if (DisguiseAPI.isDisguised((Entity) sender)) |             if (DisguiseAPI.isDisguised((Entity) sender)) { | ||||||
|             { |  | ||||||
|                 DisguiseAPI.undisguiseToAll((Player) sender); |                 DisguiseAPI.undisguiseToAll((Player) sender); | ||||||
|                 sender.sendMessage(ChatColor.RED + "You are no longer disguised"); |                 sender.sendMessage(LibsMsg.UNDISG.get()); | ||||||
|             } |             } else { | ||||||
|             else |                 sender.sendMessage(LibsMsg.NOT_DISGUISED.get()); | ||||||
|             { |  | ||||||
|                 sender.sendMessage(ChatColor.RED + "You are not disguised!"); |  | ||||||
|             } |             } | ||||||
|  |         } else { | ||||||
|  |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|         } |         } | ||||||
|         else |  | ||||||
|         { |  | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |  | ||||||
|         } |  | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,31 +1,26 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.LibsDisguises; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| 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; | ||||||
| import org.bukkit.command.CommandSender; | import org.bukkit.command.CommandSender; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.LibsDisguises; | public class UndisguiseEntityCommand implements CommandExecutor { | ||||||
|  |  | ||||||
| public class UndisguiseEntityCommand implements CommandExecutor |  | ||||||
| { |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|     { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|         if (sender.getName().equals("CONSOLE")) |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|         { |  | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |  | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|         if (sender.hasPermission("libsdisguises.undisguiseentity")) |         if (sender.hasPermission("libsdisguises.undisguiseentity")) { | ||||||
|         { |  | ||||||
|             LibsDisguises.getInstance().getListener().setDisguiseEntity(sender.getName(), null); |             LibsDisguises.getInstance().getListener().setDisguiseEntity(sender.getName(), null); | ||||||
|             sender.sendMessage(ChatColor.RED + "Right click a disguised entity to undisguise them!"); |             sender.sendMessage(LibsMsg.UND_ENTITY.get()); | ||||||
|         } |         } else { | ||||||
|         else |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|         { |  | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |  | ||||||
|         } |         } | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,18 +1,17 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
| import java.util.Iterator; | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
| import java.util.List; |  | ||||||
|  |  | ||||||
| import org.bukkit.Bukkit; | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.ChatColor; |  | ||||||
| import org.bukkit.command.Command; | import org.bukkit.command.Command; | ||||||
| import org.bukkit.command.CommandExecutor; | import org.bukkit.command.CommandExecutor; | ||||||
| import org.bukkit.command.CommandSender; | import org.bukkit.command.CommandSender; | ||||||
| import org.bukkit.command.TabCompleter; | import org.bukkit.command.TabCompleter; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; | import java.util.ArrayList; | ||||||
|  | import java.util.Iterator; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| public class UndisguisePlayerCommand implements CommandExecutor, TabCompleter { | public class UndisguisePlayerCommand implements CommandExecutor, TabCompleter { | ||||||
|     protected ArrayList<String> filterTabs(ArrayList<String> list, String[] origArgs) { |     protected ArrayList<String> filterTabs(ArrayList<String> list, String[] origArgs) { | ||||||
| @@ -35,7 +34,7 @@ public class UndisguisePlayerCommand implements CommandExecutor, TabCompleter { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     protected String[] getArgs(String[] args) { |     protected String[] getArgs(String[] args) { | ||||||
|         ArrayList<String> newArgs = new ArrayList<String>(); |         ArrayList<String> newArgs = new ArrayList<>(); | ||||||
|  |  | ||||||
|         for (int i = 0; i < args.length - 1; i++) { |         for (int i = 0; i < args.length - 1; i++) { | ||||||
|             String s = args[i]; |             String s = args[i]; | ||||||
| @@ -57,29 +56,25 @@ public class UndisguisePlayerCommand implements CommandExecutor, TabCompleter { | |||||||
|                 if (p != null) { |                 if (p != null) { | ||||||
|                     if (DisguiseAPI.isDisguised(p)) { |                     if (DisguiseAPI.isDisguised(p)) { | ||||||
|                         DisguiseAPI.undisguiseToAll(p); |                         DisguiseAPI.undisguiseToAll(p); | ||||||
|                         sender.sendMessage(ChatColor.RED + "The player is no longer disguised"); |                         sender.sendMessage(LibsMsg.UNDISG_PLAYER.get(p.getName())); | ||||||
|                     } |                     } else { | ||||||
|                     else { |                         sender.sendMessage(LibsMsg.UNDISG_PLAYER_FAIL.get(p.getName())); | ||||||
|                         sender.sendMessage(ChatColor.RED + "The player is not disguised!"); |  | ||||||
|                     } |                     } | ||||||
|  |                 } else { | ||||||
|  |                     sender.sendMessage(LibsMsg.CANNOT_FIND_PLAYER.get(args[0])); | ||||||
|                 } |                 } | ||||||
|                 else { |             } else { | ||||||
|                     sender.sendMessage(ChatColor.RED + "Player not found"); |                 sender.sendMessage(LibsMsg.UNDISG_PLAYER_HELP.get()); | ||||||
|                 } |  | ||||||
|             } |             } | ||||||
|             else { |         } else { | ||||||
|                 sender.sendMessage(ChatColor.RED + "/undisguiseplayer <Name>"); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         else { |  | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |  | ||||||
|         } |         } | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { |     public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] origArgs) { | ||||||
|         ArrayList<String> tabs = new ArrayList<String>(); |         ArrayList<String> tabs = new ArrayList<>(); | ||||||
|         String[] args = getArgs(origArgs); |         String[] args = getArgs(origArgs); | ||||||
|  |  | ||||||
|         if (args.length != 0) |         if (args.length != 0) | ||||||
|   | |||||||
| @@ -1,5 +1,8 @@ | |||||||
| package me.libraryaddict.disguise.commands; | package me.libraryaddict.disguise.commands; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
|  | import me.libraryaddict.disguise.utilities.LibsMsg; | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| 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; | ||||||
| @@ -7,8 +10,6 @@ import org.bukkit.command.CommandSender; | |||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; |  | ||||||
|  |  | ||||||
| public class UndisguiseRadiusCommand implements CommandExecutor { | public class UndisguiseRadiusCommand implements CommandExecutor { | ||||||
|     private int maxRadius = 30; |     private int maxRadius = 30; | ||||||
|  |  | ||||||
| @@ -29,24 +30,24 @@ public class UndisguiseRadiusCommand implements CommandExecutor { | |||||||
|     @Override |     @Override | ||||||
|     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { |     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { | ||||||
|         if (sender.getName().equals("CONSOLE")) { |         if (sender.getName().equals("CONSOLE")) { | ||||||
|             sender.sendMessage(ChatColor.RED + "You may not use this command from the console!"); |             sender.sendMessage(LibsMsg.NO_CONSOLE.get()); | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (sender.hasPermission("libsdisguises.undisguiseradius")) { |         if (sender.hasPermission("libsdisguises.undisguiseradius")) { | ||||||
|             int radius = maxRadius; |             int radius = maxRadius; | ||||||
|             if (args.length > 0) { |             if (args.length > 0) { | ||||||
|                 if (!isNumeric(args[0])) { |                 if (!isNumeric(args[0])) { | ||||||
|                     sender.sendMessage( |                     sender.sendMessage(LibsMsg.NOT_NUMBER.get(args[0])); | ||||||
|                             ChatColor.RED + "Error! " + ChatColor.GREEN + args[0] + ChatColor.RED + " is not a number!"); |  | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|                 radius = Integer.parseInt(args[0]); |                 radius = Integer.parseInt(args[0]); | ||||||
|                 if (radius > maxRadius) { |                 if (radius > maxRadius) { | ||||||
|                     sender.sendMessage( |                     sender.sendMessage(LibsMsg.LIMITED_RADIUS.get(maxRadius)); | ||||||
|                             ChatColor.RED + "Limited radius to " + maxRadius + "! Don't want to make too much lag right?"); |  | ||||||
|                     radius = maxRadius; |                     radius = maxRadius; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             int disguisedEntitys = 0; |             int disguisedEntitys = 0; | ||||||
|             for (Entity entity : ((Player) sender).getNearbyEntities(radius, radius, radius)) { |             for (Entity entity : ((Player) sender).getNearbyEntities(radius, radius, radius)) { | ||||||
|                 if (entity == sender) { |                 if (entity == sender) { | ||||||
| @@ -57,10 +58,10 @@ public class UndisguiseRadiusCommand implements CommandExecutor { | |||||||
|                     disguisedEntitys++; |                     disguisedEntitys++; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             sender.sendMessage(ChatColor.RED + "Successfully undisguised " + disguisedEntitys + " entities!"); |  | ||||||
|         } |             sender.sendMessage(LibsMsg.UNDISRADIUS.get(disguisedEntitys)); | ||||||
|         else { |         } else { | ||||||
|             sender.sendMessage(ChatColor.RED + "You are forbidden to use this command."); |             sender.sendMessage(LibsMsg.NO_PERM.get()); | ||||||
|         } |         } | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| package me.libraryaddict.disguise.disguisetypes; | package me.libraryaddict.disguise.disguisetypes; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.utilities.TranslateType; | ||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.EntityType; | import org.bukkit.entity.EntityType; | ||||||
| import org.omg.CORBA.UNKNOWN; |  | ||||||
|  |  | ||||||
| public enum DisguiseType { | public enum DisguiseType { | ||||||
|     AREA_EFFECT_CLOUD(3, 0), |     AREA_EFFECT_CLOUD(3, 0), | ||||||
| @@ -322,6 +322,6 @@ public enum DisguiseType { | |||||||
|             split[i] = split[i].substring(0, 1) + split[i].substring(1).toLowerCase(); |             split[i] = split[i].substring(0, 1) + split[i].substring(1).toLowerCase(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return StringUtils.join(split, " "); |         return TranslateType.DISGUISES.get(StringUtils.join(split, " "), "Name for the " + name() + " disguise"); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -36,8 +36,8 @@ public class DisguiseParser { | |||||||
|             super(); |             super(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public DisguiseParseException(String string) { |         public DisguiseParseException(LibsMsg message, String... params) { | ||||||
|             super(string); |             super(message.get((Object[]) params)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -145,9 +145,7 @@ public class DisguiseParser { | |||||||
|             ArrayList<String> usedOptions) throws DisguiseParseException { |             ArrayList<String> usedOptions) throws DisguiseParseException { | ||||||
|  |  | ||||||
|         if (!passesCheck(sender, optionPermissions, usedOptions)) { |         if (!passesCheck(sender, optionPermissions, usedOptions)) { | ||||||
|             throw new DisguiseParseException( |             throw new DisguiseParseException(LibsMsg.D_PARSE_NOPERM, usedOptions.get(usedOptions.size() - 1)); | ||||||
|                     ChatColor.RED + "You do not have permission to use the option " + usedOptions.get( |  | ||||||
|                             usedOptions.size() - 1)); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -201,7 +199,8 @@ public class DisguiseParser { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static DisguisePerm[] getDisguisePerms() { |     public static DisguisePerm[] getDisguisePerms() { | ||||||
|         DisguisePerm[] perms = new DisguisePerm[DisguiseType.values().length + DisguiseConfig.getCustomDisguises().size()]; |         DisguisePerm[] perms = new DisguisePerm[DisguiseType.values().length + DisguiseConfig.getCustomDisguises() | ||||||
|  |                 .size()]; | ||||||
|         int i = 0; |         int i = 0; | ||||||
|  |  | ||||||
|         for (DisguiseType disguiseType : DisguiseType.values()) { |         for (DisguiseType disguiseType : DisguiseType.values()) { | ||||||
| @@ -256,10 +255,6 @@ public class DisguiseParser { | |||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Get perms for the node. Returns a hashmap of allowed disguisetypes and their options |      * Get perms for the node. Returns a hashmap of allowed disguisetypes and their options | ||||||
|      * |  | ||||||
|      * @param sender |  | ||||||
|      * @param permissionNode |  | ||||||
|      * @return |  | ||||||
|      */ |      */ | ||||||
|     public static HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> getPermissions(CommandSender sender, |     public static HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> getPermissions(CommandSender sender, | ||||||
|             String permissionNode) { |             String permissionNode) { | ||||||
| @@ -456,22 +451,15 @@ public class DisguiseParser { | |||||||
|      * Returns the disguise if it all parsed correctly. Returns a exception with a complete message if it didn't. The |      * Returns the disguise if it all parsed correctly. Returns a exception with a complete message if it didn't. The | ||||||
|      * commandsender is purely used for checking permissions. Would defeat the purpose otherwise. To reach this point, the |      * commandsender is purely used for checking permissions. Would defeat the purpose otherwise. To reach this point, the | ||||||
|      * disguise has been feed a proper disguisetype. |      * disguise has been feed a proper disguisetype. | ||||||
|      * |  | ||||||
|      * @param sender |  | ||||||
|      * @param args |  | ||||||
|      * @param permissionMap |  | ||||||
|      * @return |  | ||||||
|      * @throws java.lang.IllegalAccessException |  | ||||||
|      * @throws java.lang.reflect.InvocationTargetException |  | ||||||
|      */ |      */ | ||||||
|     public static Disguise parseDisguise(CommandSender sender, String permNode, String[] args, |     public static Disguise parseDisguise(CommandSender sender, String permNode, String[] args, | ||||||
|             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> permissionMap) throws DisguiseParseException, IllegalAccessException, InvocationTargetException { |             HashMap<DisguisePerm, HashMap<ArrayList<String>, Boolean>> permissionMap) throws DisguiseParseException, IllegalAccessException, InvocationTargetException { | ||||||
|         if (permissionMap.isEmpty()) { |         if (permissionMap.isEmpty()) { | ||||||
|             throw new DisguiseParseException(ChatColor.RED + "You are forbidden to use this command."); |             throw new DisguiseParseException(LibsMsg.NO_PERM); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (args.length == 0) { |         if (args.length == 0) { | ||||||
|             throw new DisguiseParseException("No arguments defined"); |             throw new DisguiseParseException(LibsMsg.PARSE_NO_ARGS); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // How many args to skip due to the disugise being constructed |         // How many args to skip due to the disugise being constructed | ||||||
| @@ -487,15 +475,14 @@ public class DisguiseParser { | |||||||
|                 disguise = DisguiseUtilities.getClonedDisguise(args[0].toLowerCase()); |                 disguise = DisguiseUtilities.getClonedDisguise(args[0].toLowerCase()); | ||||||
|  |  | ||||||
|                 if (disguise == null) { |                 if (disguise == null) { | ||||||
|                     throw new DisguiseParseException( |                     throw new DisguiseParseException(LibsMsg.PARSE_NO_REF, args[0]); | ||||||
|                             ChatColor.RED + "Cannot find a disguise under the reference " + args[0]); |  | ||||||
|                 } |                 } | ||||||
|             } else { |             } else { | ||||||
|                 throw new DisguiseParseException( |                 throw new DisguiseParseException(LibsMsg.PARSE_NO_PERM_REF); | ||||||
|                         ChatColor.RED + "You do not have perimssion to use disguise references!"); |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             optionPermissions = (permissionMap.containsKey(disguise.getType()) ? permissionMap.get(disguise.getType()) : |             optionPermissions = (permissionMap.containsKey(new DisguisePerm(disguise.getType())) ? | ||||||
|  |                     permissionMap.get(new DisguisePerm(disguise.getType())) : | ||||||
|                     new HashMap<ArrayList<String>, Boolean>()); |                     new HashMap<ArrayList<String>, Boolean>()); | ||||||
|         } else { |         } else { | ||||||
|             DisguisePerm disguisePerm = getDisguisePerm(args[0]); |             DisguisePerm disguisePerm = getDisguisePerm(args[0]); | ||||||
| @@ -506,21 +493,19 @@ public class DisguiseParser { | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (disguisePerm == null) { |             if (disguisePerm == null) { | ||||||
|                 throw new DisguiseParseException( |                 throw new DisguiseParseException(LibsMsg.PARSE_DISG_NO_EXIST, args[0]); | ||||||
|                         ChatColor.RED + "Error! The disguise " + ChatColor.GREEN + args[0] + ChatColor.RED + " doesn't exist!"); |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (disguisePerm.isUnknown()) { |             if (disguisePerm.isUnknown()) { | ||||||
|                 throw new DisguiseParseException( |                 throw new DisguiseParseException(LibsMsg.PARSE_CANT_DISG_UNKNOWN); | ||||||
|                         ChatColor.RED + "Error! You cannot disguise as " + ChatColor.GREEN + "Unknown!"); |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (disguisePerm.getEntityType() == null) { |             if (disguisePerm.getEntityType() == null) { | ||||||
|                 throw new DisguiseParseException(ChatColor.RED + "Error! This disguise couldn't be loaded!"); |                 throw new DisguiseParseException(LibsMsg.PARSE_CANT_LOAD); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (!permissionMap.containsKey(disguisePerm)) { |             if (!permissionMap.containsKey(disguisePerm)) { | ||||||
|                 throw new DisguiseParseException(ChatColor.RED + "You are forbidden to use this disguise."); |                 throw new DisguiseParseException(LibsMsg.NO_PERM_DISGUISE); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             optionPermissions = permissionMap.get(disguisePerm); |             optionPermissions = permissionMap.get(disguisePerm); | ||||||
| @@ -532,12 +517,11 @@ public class DisguiseParser { | |||||||
|                     // If he is doing a player disguise |                     // If he is doing a player disguise | ||||||
|                     if (args.length == 1) { |                     if (args.length == 1) { | ||||||
|                         // He needs to give the player name |                         // He needs to give the player name | ||||||
|                         throw new DisguiseParseException(ChatColor.RED + "Error! You need to give a player name!"); |                         throw new DisguiseParseException(LibsMsg.PARSE_SUPPLY_PLAYER); | ||||||
|                     } else { |                     } else { | ||||||
|                         if (!disguiseOptions.isEmpty() && (!disguiseOptions.containsKey( |                         if (!disguiseOptions.isEmpty() && (!disguiseOptions | ||||||
|                                 args[1].toLowerCase()) || !disguiseOptions.get(args[1].toLowerCase()))) { |                                 .containsKey(args[1].toLowerCase()) || !disguiseOptions.get(args[1].toLowerCase()))) { | ||||||
|                             throw new DisguiseParseException( |                             throw new DisguiseParseException(LibsMsg.PARSE_NO_PERM_NAME); | ||||||
|                                     ChatColor.RED + "Error! You don't have permission to use that name!"); |  | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|                         args[1] = args[1].replace("\\_", " "); |                         args[1] = args[1].replace("\\_", " "); | ||||||
| @@ -580,7 +564,8 @@ public class DisguiseParser { | |||||||
|                         if (isInteger(args[1])) { |                         if (isInteger(args[1])) { | ||||||
|                             miscId = Integer.parseInt(args[1]); |                             miscId = Integer.parseInt(args[1]); | ||||||
|                         } else { |                         } else { | ||||||
|                             if (disguisePerm.getType() == DisguiseType.FALLING_BLOCK || disguisePerm.getType() == DisguiseType.DROPPED_ITEM) { |                             if (disguisePerm.getType() == DisguiseType.FALLING_BLOCK || disguisePerm | ||||||
|  |                                     .getType() == DisguiseType.DROPPED_ITEM) { | ||||||
|                                 for (Material mat : Material.values()) { |                                 for (Material mat : Material.values()) { | ||||||
|                                     if (mat.name().replace("_", "").equalsIgnoreCase(args[1].replace("_", ""))) { |                                     if (mat.name().replace("_", "").equalsIgnoreCase(args[1].replace("_", ""))) { | ||||||
|                                         miscId = mat.getId(); |                                         miscId = mat.getId(); | ||||||
| @@ -604,8 +589,8 @@ public class DisguiseParser { | |||||||
|                                 case WITHER_SKULL: |                                 case WITHER_SKULL: | ||||||
|                                     break; |                                     break; | ||||||
|                                 default: |                                 default: | ||||||
|                                     throw new DisguiseParseException( |                                     throw new DisguiseParseException(LibsMsg.PARSE_TOO_MANY_ARGS, | ||||||
|                                             ChatColor.RED + "Error! " + disguisePerm.toReadable() + " doesn't know what to do with " + args[1] + "!"); |                                             disguisePerm.toReadable(), args[1]); | ||||||
|                             } |                             } | ||||||
|                             toSkip++; |                             toSkip++; | ||||||
|                             // If they also defined a data value |                             // If they also defined a data value | ||||||
| @@ -614,9 +599,11 @@ public class DisguiseParser { | |||||||
|                                 toSkip++; |                                 toSkip++; | ||||||
|                             } |                             } | ||||||
|                             if (secondArg != null) { |                             if (secondArg != null) { | ||||||
|                                 if (disguisePerm.getType() != DisguiseType.FALLING_BLOCK && disguisePerm.getType() != DisguiseType.DROPPED_ITEM) { |                                 if (disguisePerm.getType() != DisguiseType.FALLING_BLOCK && disguisePerm | ||||||
|                                     throw new DisguiseParseException( |                                         .getType() != DisguiseType.DROPPED_ITEM) { | ||||||
|                                             ChatColor.RED + "Error! Only the disguises " + DisguiseType.FALLING_BLOCK.toReadable() + " and " + DisguiseType.DROPPED_ITEM.toReadable() + " uses a second number!"); |                                     throw new DisguiseParseException(LibsMsg.PARSE_USE_SECOND_NUM, | ||||||
|  |                                             DisguiseType.FALLING_BLOCK.toReadable(), | ||||||
|  |                                             DisguiseType.DROPPED_ITEM.toReadable()); | ||||||
|                                 } |                                 } | ||||||
|                                 miscData = Integer.parseInt(secondArg); |                                 miscData = Integer.parseInt(secondArg); | ||||||
|                             } |                             } | ||||||
| @@ -635,8 +622,8 @@ public class DisguiseParser { | |||||||
|                         } |                         } | ||||||
|  |  | ||||||
|                         if (!disguiseOptions.containsKey(toCheck) || !disguiseOptions.get(toCheck)) { |                         if (!disguiseOptions.containsKey(toCheck) || !disguiseOptions.get(toCheck)) { | ||||||
|                             throw new DisguiseParseException( |                             throw new DisguiseParseException(LibsMsg.PARSE_NO_PERM_PARAM, toCheck, | ||||||
|                                     ChatColor.RED + "Error! You do not have permission to use the parameter " + toCheck + " on the " + disguisePerm.toReadable() + " disguise!"); |                                     disguisePerm.toReadable()); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
| @@ -677,8 +664,9 @@ public class DisguiseParser { | |||||||
|         Method[] methods = ReflectionFlagWatchers.getDisguiseWatcherMethods(disguise.getWatcher().getClass()); |         Method[] methods = ReflectionFlagWatchers.getDisguiseWatcherMethods(disguise.getWatcher().getClass()); | ||||||
|  |  | ||||||
|         for (int i = 0; i < args.length; i += 2) { |         for (int i = 0; i < args.length; i += 2) { | ||||||
|             String methodName = args[i]; |             String methodName = TranslateType.DISGUISE_OPTIONS.reverseGet(args[i]); | ||||||
|             String valueString = (args.length - 1 == i ? null : args[i + 1]); |             String valueString = TranslateType.DISGUISE_OPTIONS_PARAMETERS | ||||||
|  |                     .reverseGet(args.length - 1 == i ? null : args[i + 1]); | ||||||
|             Method methodToUse = null; |             Method methodToUse = null; | ||||||
|             Object value = null; |             Object value = null; | ||||||
|             DisguiseParseException storedEx = null; |             DisguiseParseException storedEx = null; | ||||||
| @@ -749,12 +737,7 @@ public class DisguiseParser { | |||||||
|                             } |                             } | ||||||
|                         } else if (param == ItemStack.class) { |                         } else if (param == ItemStack.class) { | ||||||
|                             // Parse to itemstack |                             // Parse to itemstack | ||||||
|                             try { |                             value = parseToItemstack(methodName, valueString); | ||||||
|                                 value = parseToItemstack(valueString); |  | ||||||
|                             } |  | ||||||
|                             catch (Exception ex) { |  | ||||||
|                                 throw new DisguiseParseException(String.format(ex.getMessage(), methodName)); |  | ||||||
|                             } |  | ||||||
|                         } else if (param == ItemStack[].class) { |                         } else if (param == ItemStack[].class) { | ||||||
|                             // Parse to itemstack array |                             // Parse to itemstack array | ||||||
|                             ItemStack[] items = new ItemStack[4]; |                             ItemStack[] items = new ItemStack[4]; | ||||||
| @@ -764,7 +747,7 @@ public class DisguiseParser { | |||||||
|                             if (split.length == 4) { |                             if (split.length == 4) { | ||||||
|                                 for (int a = 0; a < 4; a++) { |                                 for (int a = 0; a < 4; a++) { | ||||||
|                                     try { |                                     try { | ||||||
|                                         items[a] = parseToItemstack(split[a]); |                                         items[a] = parseToItemstack(methodName, split[a]); | ||||||
|                                     } |                                     } | ||||||
|                                     catch (Exception ex) { |                                     catch (Exception ex) { | ||||||
|                                         throw parseToException( |                                         throw parseToException( | ||||||
| @@ -847,8 +830,8 @@ public class DisguiseParser { | |||||||
|                         } else if (param == RabbitType.class) { |                         } else if (param == RabbitType.class) { | ||||||
|                             try { |                             try { | ||||||
|                                 for (RabbitType type : RabbitType.values()) { |                                 for (RabbitType type : RabbitType.values()) { | ||||||
|                                     if (type.name().replace("_", "").equalsIgnoreCase( |                                     if (type.name().replace("_", "") | ||||||
|                                             valueString.replace("_", "").replace(" ", ""))) { |                                             .equalsIgnoreCase(valueString.replace("_", "").replace(" ", ""))) { | ||||||
|                                         value = type; |                                         value = type; | ||||||
|  |  | ||||||
|                                         break; |                                         break; | ||||||
| @@ -916,10 +899,10 @@ public class DisguiseParser { | |||||||
|                     throw storedEx; |                     throw storedEx; | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 throw new DisguiseParseException(ChatColor.RED + "Cannot find the option " + methodName); |                 throw new DisguiseParseException(LibsMsg.PARSE_OPTION_NA, methodName); | ||||||
|             } |             } | ||||||
|             if (value == null) { |             if (value == null) { | ||||||
|                 throw new DisguiseParseException(ChatColor.RED + "No value was given for the option " + methodName); |                 throw new DisguiseParseException(LibsMsg.PARSE_NO_OPTION_VALUE, methodName); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (!usedOptions.contains(methodName.toLowerCase())) { |             if (!usedOptions.contains(methodName.toLowerCase())) { | ||||||
| @@ -938,11 +921,10 @@ public class DisguiseParser { | |||||||
|  |  | ||||||
|     private static DisguiseParseException parseToException(String expectedValue, String receivedInstead, |     private static DisguiseParseException parseToException(String expectedValue, String receivedInstead, | ||||||
|             String methodName) { |             String methodName) { | ||||||
|         return new DisguiseParseException( |         return new DisguiseParseException(LibsMsg.PARSE_EXPECTED_RECEIVED, expectedValue, receivedInstead, methodName); | ||||||
|                 ChatColor.RED + "Expected " + ChatColor.GREEN + expectedValue + ChatColor.RED + ", received " + ChatColor.GREEN + receivedInstead + ChatColor.RED + " instead for " + ChatColor.GREEN + methodName); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private static ItemStack parseToItemstack(String string) throws Exception { |     private static ItemStack parseToItemstack(String method, String string) throws DisguiseParseException { | ||||||
|         String[] split = string.split(":", -1); |         String[] split = string.split(":", -1); | ||||||
|  |  | ||||||
|         int itemId = -1; |         int itemId = -1; | ||||||
| @@ -953,7 +935,7 @@ public class DisguiseParser { | |||||||
|             try { |             try { | ||||||
|                 itemId = Material.valueOf(split[0].toUpperCase()).getId(); |                 itemId = Material.valueOf(split[0].toUpperCase()).getId(); | ||||||
|             } |             } | ||||||
|             catch (Exception ex) { |             catch (Exception ignored) { | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -989,13 +971,13 @@ public class DisguiseParser { | |||||||
|             boolean myPerms = true; |             boolean myPerms = true; | ||||||
|  |  | ||||||
|             for (String option : usedOptions) { |             for (String option : usedOptions) { | ||||||
|                 if (!sender.getName().equals("CONSOLE") && option.equalsIgnoreCase( |                 if (!sender.getName().equals("CONSOLE") && option.equalsIgnoreCase("setInvisible") && DisguiseConfig | ||||||
|                         "setInvisible") && DisguiseConfig.isDisabledInvisibility()) { |                         .isDisabledInvisibility()) { | ||||||
|                     myPerms = false; |                     myPerms = false; | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 if (!(theirPermissions.get(list) && list.contains("*")) && (list.contains( |                 if (!(theirPermissions.get(list) && list.contains("*")) && (list.contains(option) != theirPermissions | ||||||
|                         option) != theirPermissions.get(list))) { |                         .get(list))) { | ||||||
|                     myPerms = false; |                     myPerms = false; | ||||||
|                     break; |                     break; | ||||||
|                 } |                 } | ||||||
|   | |||||||
| @@ -121,12 +121,10 @@ public class DisguiseUtilities { | |||||||
|         if (reference != null && DisguiseUtilities.addClonedDisguise(reference, disguise)) { |         if (reference != null && DisguiseUtilities.addClonedDisguise(reference, disguise)) { | ||||||
|             String entityName = DisguiseType.getType(toClone).toReadable(); |             String entityName = DisguiseType.getType(toClone).toReadable(); | ||||||
|  |  | ||||||
|             player.sendMessage( |             player.sendMessage(LibsMsg.MADE_REF.get(entityName, reference)); | ||||||
|                     ChatColor.RED + "Constructed a " + entityName + " disguise! Your reference is " + reference); |             player.sendMessage(LibsMsg.MADE_REF_EXAMPLE.get(reference)); | ||||||
|             player.sendMessage(ChatColor.RED + "Example usage: /disguise " + reference); |  | ||||||
|         } else { |         } else { | ||||||
|             player.sendMessage( |             player.sendMessage(LibsMsg.REF_TOO_MANY.get()); | ||||||
|                     ChatColor.RED + "Failed to store the reference, too many cloned disguises. Please raise the " + "maximum cloned disguises, or lower the time they last"); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -247,7 +245,8 @@ public class DisguiseUtilities { | |||||||
|  |  | ||||||
|         checkConflicts(disguise, null); |         checkConflicts(disguise, null); | ||||||
|  |  | ||||||
|         if (disguise.getDisguiseTarget() == TargetType.SHOW_TO_EVERYONE_BUT_THESE_PLAYERS && disguise.isModifyBoundingBox()) { |         if (disguise.getDisguiseTarget() == TargetType.SHOW_TO_EVERYONE_BUT_THESE_PLAYERS && disguise | ||||||
|  |                 .isModifyBoundingBox()) { | ||||||
|             doBoundingBox(disguise); |             doBoundingBox(disguise); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @@ -385,8 +384,8 @@ public class DisguiseUtilities { | |||||||
|             if (entityTrackerEntry == null) |             if (entityTrackerEntry == null) | ||||||
|                 return; |                 return; | ||||||
|  |  | ||||||
|             Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |             Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                     entityTrackerEntry); |                     .get(entityTrackerEntry); | ||||||
|  |  | ||||||
|             // If the tracker exists. Remove himself from his tracker |             // If the tracker exists. Remove himself from his tracker | ||||||
|             trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent |             trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent | ||||||
| @@ -418,7 +417,9 @@ public class DisguiseUtilities { | |||||||
|                 FakeBoundingBox disguiseBox = disguiseValues.getAdultBox(); |                 FakeBoundingBox disguiseBox = disguiseValues.getAdultBox(); | ||||||
|  |  | ||||||
|                 if (disguiseValues.getBabyBox() != null) { |                 if (disguiseValues.getBabyBox() != null) { | ||||||
|                     if ((disguise.getWatcher() instanceof AgeableWatcher && ((AgeableWatcher) disguise.getWatcher()).isBaby()) || (disguise.getWatcher() instanceof ZombieWatcher && ((ZombieWatcher) disguise.getWatcher()).isBaby())) { |                     if ((disguise.getWatcher() instanceof AgeableWatcher && ((AgeableWatcher) disguise.getWatcher()) | ||||||
|  |                             .isBaby()) || (disguise.getWatcher() instanceof ZombieWatcher && ((ZombieWatcher) disguise | ||||||
|  |                             .getWatcher()).isBaby())) { | ||||||
|                         disguiseBox = disguiseValues.getBabyBox(); |                         disguiseBox = disguiseValues.getBabyBox(); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @@ -430,7 +431,8 @@ public class DisguiseUtilities { | |||||||
|                 FakeBoundingBox entityBox = entityValues.getAdultBox(); |                 FakeBoundingBox entityBox = entityValues.getAdultBox(); | ||||||
|  |  | ||||||
|                 if (entityValues.getBabyBox() != null) { |                 if (entityValues.getBabyBox() != null) { | ||||||
|                     if ((entity instanceof Ageable && !((Ageable) entity).isAdult()) || (entity instanceof Zombie && ((Zombie) entity).isBaby())) { |                     if ((entity instanceof Ageable && !((Ageable) entity) | ||||||
|  |                             .isAdult()) || (entity instanceof Zombie && ((Zombie) entity).isBaby())) { | ||||||
|                         entityBox = entityValues.getBabyBox(); |                         entityBox = entityValues.getBabyBox(); | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @@ -622,8 +624,8 @@ public class DisguiseUtilities { | |||||||
|             Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity()); |             Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity()); | ||||||
|  |  | ||||||
|             if (entityTrackerEntry != null) { |             if (entityTrackerEntry != null) { | ||||||
|                 Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |                 Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                         entityTrackerEntry); |                         .get(entityTrackerEntry); | ||||||
|                 trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent |                 trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent | ||||||
|                 // ConcurrentModificationException |                 // ConcurrentModificationException | ||||||
|                 for (Object p : trackedPlayers) { |                 for (Object p : trackedPlayers) { | ||||||
| @@ -649,9 +651,9 @@ public class DisguiseUtilities { | |||||||
|  |  | ||||||
|             @Override |             @Override | ||||||
|             public void onLookup(WrappedGameProfile gameProfile) { |             public void onLookup(WrappedGameProfile gameProfile) { | ||||||
|                 if (DisguiseAPI.isDisguiseInUse(disguise) && (!gameProfile.getName().equals( |                 if (DisguiseAPI.isDisguiseInUse(disguise) && (!gameProfile.getName() | ||||||
|                         disguise.getSkin() != null ? disguise.getSkin() : |                         .equals(disguise.getSkin() != null ? disguise.getSkin() : disguise.getName()) || !gameProfile | ||||||
|                                 disguise.getName()) || !gameProfile.getProperties().isEmpty())) { |                         .getProperties().isEmpty())) { | ||||||
|                     disguise.setGameProfile(gameProfile); |                     disguise.setGameProfile(gameProfile); | ||||||
|  |  | ||||||
|                     DisguiseUtilities.refreshTrackers(disguise); |                     DisguiseUtilities.refreshTrackers(disguise); | ||||||
| @@ -743,8 +745,9 @@ public class DisguiseUtilities { | |||||||
|                         catch (Exception e) { |                         catch (Exception e) { | ||||||
|                             runnables.remove(playerName); |                             runnables.remove(playerName); | ||||||
|  |  | ||||||
|                             System.out.print( |                             System.out | ||||||
|                                     "[LibsDisguises] Error when fetching " + playerName + "'s uuid from mojang: " + e.getMessage()); |                                     .print("[LibsDisguises] Error when fetching " + playerName + "'s uuid from mojang: " + e | ||||||
|  |                                             .getMessage()); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                 }); |                 }); | ||||||
| @@ -803,21 +806,22 @@ public class DisguiseUtilities { | |||||||
|             Object server = ReflectionManager.getNmsMethod("MinecraftServer", "getServer").invoke(null); |             Object server = ReflectionManager.getNmsMethod("MinecraftServer", "getServer").invoke(null); | ||||||
|             Object world = ((List) server.getClass().getField("worlds").get(server)).get(0); |             Object world = ((List) server.getClass().getField("worlds").get(server)).get(0); | ||||||
|  |  | ||||||
|             Object bedChunk = ReflectionManager.getNmsClass("Chunk").getConstructor( |             Object bedChunk = ReflectionManager.getNmsClass("Chunk") | ||||||
|                     ReflectionManager.getNmsClass("World"), int.class, int.class).newInstance(world, 0, 0); |                     .getConstructor(ReflectionManager.getNmsClass("World"), int.class, int.class) | ||||||
|  |                     .newInstance(world, 0, 0); | ||||||
|  |  | ||||||
|             Field cSection = bedChunk.getClass().getDeclaredField("sections"); |             Field cSection = bedChunk.getClass().getDeclaredField("sections"); | ||||||
|             cSection.setAccessible(true); |             cSection.setAccessible(true); | ||||||
|  |  | ||||||
|             Object chunkSection = ReflectionManager.getNmsClass("ChunkSection").getConstructor(int.class, |             Object chunkSection = ReflectionManager.getNmsClass("ChunkSection").getConstructor(int.class, boolean.class) | ||||||
|                     boolean.class).newInstance(0, true); |                     .newInstance(0, true); | ||||||
|  |  | ||||||
|             Object block = ReflectionManager.getNmsClass("Block").getMethod("getById", int.class).invoke(null, |             Object block = ReflectionManager.getNmsClass("Block").getMethod("getById", int.class) | ||||||
|                     Material.BED_BLOCK.getId()); |                     .invoke(null, Material.BED_BLOCK.getId()); | ||||||
|  |  | ||||||
|             Method fromLegacyData = block.getClass().getMethod("fromLegacyData", int.class); |             Method fromLegacyData = block.getClass().getMethod("fromLegacyData", int.class); | ||||||
|             Method setType = chunkSection.getClass().getMethod("setType", int.class, int.class, int.class, |             Method setType = chunkSection.getClass() | ||||||
|                     ReflectionManager.getNmsClass("IBlockData")); |                     .getMethod("setType", int.class, int.class, int.class, ReflectionManager.getNmsClass("IBlockData")); | ||||||
|             Method setSky = chunkSection.getClass().getMethod("a", int.class, int.class, int.class, int.class); |             Method setSky = chunkSection.getClass().getMethod("a", int.class, int.class, int.class, int.class); | ||||||
|             Method setEmitted = chunkSection.getClass().getMethod("b", int.class, int.class, int.class, int.class); |             Method setEmitted = chunkSection.getClass().getMethod("b", int.class, int.class, int.class, int.class); | ||||||
|  |  | ||||||
| @@ -835,8 +839,9 @@ public class DisguiseUtilities { | |||||||
|  |  | ||||||
|             cSection.set(bedChunk, array); |             cSection.set(bedChunk, array); | ||||||
|  |  | ||||||
|             spawnChunk = ProtocolLibrary.getProtocolManager().createPacketConstructor(PacketType.Play.Server.MAP_CHUNK, |             spawnChunk = ProtocolLibrary.getProtocolManager() | ||||||
|                     bedChunk, 65535).createPacket(bedChunk, 65535); |                     .createPacketConstructor(PacketType.Play.Server.MAP_CHUNK, bedChunk, 65535) | ||||||
|  |                     .createPacket(bedChunk, 65535); | ||||||
|  |  | ||||||
|             Field threadField = ReflectionManager.getNmsField("MinecraftServer", "primaryThread"); |             Field threadField = ReflectionManager.getNmsField("MinecraftServer", "primaryThread"); | ||||||
|             threadField.setAccessible(true); |             threadField.setAccessible(true); | ||||||
| @@ -863,9 +868,9 @@ public class DisguiseUtilities { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static boolean isDisguiseInUse(Disguise disguise) { |     public static boolean isDisguiseInUse(Disguise disguise) { | ||||||
|         return disguise.getEntity() != null && getDisguises().containsKey( |         return disguise.getEntity() != null && getDisguises() | ||||||
|                 disguise.getEntity().getUniqueId()) && getDisguises().get(disguise.getEntity().getUniqueId()).contains( |                 .containsKey(disguise.getEntity().getUniqueId()) && getDisguises() | ||||||
|                 disguise); |                 .get(disguise.getEntity().getUniqueId()).contains(disguise); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -888,8 +893,8 @@ public class DisguiseUtilities { | |||||||
|         try { |         try { | ||||||
|             PacketContainer destroyPacket = getDestroyPacket(disguise.getEntity().getEntityId()); |             PacketContainer destroyPacket = getDestroyPacket(disguise.getEntity().getEntityId()); | ||||||
|  |  | ||||||
|             if (disguise.isDisguiseInUse() && disguise.getEntity() instanceof Player && disguise.getEntity().getName().equalsIgnoreCase( |             if (disguise.isDisguiseInUse() && disguise.getEntity() instanceof Player && disguise.getEntity().getName() | ||||||
|                     player)) { |                     .equalsIgnoreCase(player)) { | ||||||
|                 removeSelfDisguise((Player) disguise.getEntity()); |                 removeSelfDisguise((Player) disguise.getEntity()); | ||||||
|  |  | ||||||
|                 if (disguise.isSelfDisguiseVisible()) { |                 if (disguise.isSelfDisguiseVisible()) { | ||||||
| @@ -915,11 +920,11 @@ public class DisguiseUtilities { | |||||||
|                 if (entityTrackerEntry == null) |                 if (entityTrackerEntry == null) | ||||||
|                     return; |                     return; | ||||||
|  |  | ||||||
|                 Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |                 Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                         entityTrackerEntry); |                         .get(entityTrackerEntry); | ||||||
|  |  | ||||||
|                 Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", "clear", |                 Method clear = ReflectionManager | ||||||
|                         ReflectionManager.getNmsClass("EntityPlayer")); |                         .getNmsMethod("EntityTrackerEntry", "clear", ReflectionManager.getNmsClass("EntityPlayer")); | ||||||
|  |  | ||||||
|                 final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer", |                 final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer", | ||||||
|                         ReflectionManager.getNmsClass("EntityPlayer")); |                         ReflectionManager.getNmsClass("EntityPlayer")); | ||||||
| @@ -975,11 +980,11 @@ public class DisguiseUtilities { | |||||||
|                 final Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(entity); |                 final Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(entity); | ||||||
|  |  | ||||||
|                 if (entityTrackerEntry != null) { |                 if (entityTrackerEntry != null) { | ||||||
|                     Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", |                     Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                             "trackedPlayers").get(entityTrackerEntry); |                             .get(entityTrackerEntry); | ||||||
|  |  | ||||||
|                     Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", "clear", |                     Method clear = ReflectionManager | ||||||
|                             ReflectionManager.getNmsClass("EntityPlayer")); |                             .getNmsMethod("EntityTrackerEntry", "clear", ReflectionManager.getNmsClass("EntityPlayer")); | ||||||
|  |  | ||||||
|                     final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer", |                     final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer", | ||||||
|                             ReflectionManager.getNmsClass("EntityPlayer")); |                             ReflectionManager.getNmsClass("EntityPlayer")); | ||||||
| @@ -1052,11 +1057,11 @@ public class DisguiseUtilities { | |||||||
|             final Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity()); |             final Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity()); | ||||||
|  |  | ||||||
|             if (entityTrackerEntry != null) { |             if (entityTrackerEntry != null) { | ||||||
|                 Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |                 Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                         entityTrackerEntry); |                         .get(entityTrackerEntry); | ||||||
|  |  | ||||||
|                 final Method clear = ReflectionManager.getNmsMethod("EntityTrackerEntry", "clear", |                 final Method clear = ReflectionManager | ||||||
|                         ReflectionManager.getNmsClass("EntityPlayer")); |                         .getNmsMethod("EntityTrackerEntry", "clear", ReflectionManager.getNmsClass("EntityPlayer")); | ||||||
|  |  | ||||||
|                 final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer", |                 final Method updatePlayer = ReflectionManager.getNmsMethod("EntityTrackerEntry", "updatePlayer", | ||||||
|                         ReflectionManager.getNmsClass("EntityPlayer")); |                         ReflectionManager.getNmsClass("EntityPlayer")); | ||||||
| @@ -1100,7 +1105,8 @@ public class DisguiseUtilities { | |||||||
|                 getDisguises().remove(entityId); |                 getDisguises().remove(entityId); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (disguise.getDisguiseTarget() == TargetType.SHOW_TO_EVERYONE_BUT_THESE_PLAYERS && disguise.isModifyBoundingBox()) { |             if (disguise.getDisguiseTarget() == TargetType.SHOW_TO_EVERYONE_BUT_THESE_PLAYERS && disguise | ||||||
|  |                     .isModifyBoundingBox()) { | ||||||
|                 doBoundingBox(disguise); |                 doBoundingBox(disguise); | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -1175,16 +1181,16 @@ public class DisguiseUtilities { | |||||||
|             Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(player); |             Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(player); | ||||||
|  |  | ||||||
|             if (entityTrackerEntry != null) { |             if (entityTrackerEntry != null) { | ||||||
|                 Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |                 Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                         entityTrackerEntry); |                         .get(entityTrackerEntry); | ||||||
|  |  | ||||||
|                 // If the tracker exists. Remove himself from his tracker |                 // If the tracker exists. Remove himself from his tracker | ||||||
|                 if (isHashSet(trackedPlayersObj)) { |                 if (isHashSet(trackedPlayersObj)) { | ||||||
|                     ((Set<Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |                     ((Set<Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                             entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player)); |                             .get(entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player)); | ||||||
|                 } else { |                 } else { | ||||||
|                     ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap").get( |                     ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap") | ||||||
|                             entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player)); |                             .get(entityTrackerEntry)).remove(ReflectionManager.getNmsEntity(player)); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -1194,10 +1200,10 @@ public class DisguiseUtilities { | |||||||
|  |  | ||||||
|         // Resend entity metadata else he will be invisible to himself until its resent |         // Resend entity metadata else he will be invisible to himself until its resent | ||||||
|         try { |         try { | ||||||
|             ProtocolLibrary.getProtocolManager().sendServerPacket(player, |             ProtocolLibrary.getProtocolManager().sendServerPacket(player, ProtocolLibrary.getProtocolManager() | ||||||
|                     ProtocolLibrary.getProtocolManager().createPacketConstructor(Server.ENTITY_METADATA, |                     .createPacketConstructor(Server.ENTITY_METADATA, player.getEntityId(), | ||||||
|                             player.getEntityId(), WrappedDataWatcher.getEntityWatcher(player), true).createPacket( |                             WrappedDataWatcher.getEntityWatcher(player), true) | ||||||
|                             player.getEntityId(), WrappedDataWatcher.getEntityWatcher(player), true)); |                     .createPacket(player.getEntityId(), WrappedDataWatcher.getEntityWatcher(player), true)); | ||||||
|         } |         } | ||||||
|         catch (Exception ex) { |         catch (Exception ex) { | ||||||
|             ex.printStackTrace(); |             ex.printStackTrace(); | ||||||
| @@ -1214,8 +1220,8 @@ public class DisguiseUtilities { | |||||||
|             throw new IllegalStateException("Cannot modify disguises on an async thread"); |             throw new IllegalStateException("Cannot modify disguises on an async thread"); | ||||||
|  |  | ||||||
|         try { |         try { | ||||||
|             if (!disguise.isDisguiseInUse() || !player.isValid() || !player.isOnline() || !disguise.isSelfDisguiseVisible() || !disguise.canSee( |             if (!disguise.isDisguiseInUse() || !player.isValid() || !player.isOnline() || !disguise | ||||||
|                     player)) { |                     .isSelfDisguiseVisible() || !disguise.canSee(player)) { | ||||||
|                 return; |                 return; | ||||||
|             } |             } | ||||||
|  |  | ||||||
| @@ -1248,8 +1254,8 @@ public class DisguiseUtilities { | |||||||
|                 String ldTeamName = "LD Pushing"; |                 String ldTeamName = "LD Pushing"; | ||||||
|  |  | ||||||
|                 // If the player is in a team already |                 // If the player is in a team already | ||||||
|                 if (prevTeam != null && !(prevTeam.getName().equals("LD Pushing") || prevTeam.getName().endsWith( |                 if (prevTeam != null && !(prevTeam.getName().equals("LD Pushing") || prevTeam.getName() | ||||||
|                         "_LDP"))) { |                         .endsWith("_LDP"))) { | ||||||
|                     // If we're creating a scoreboard |                     // If we're creating a scoreboard | ||||||
|                     if (pOption == DisguisePushing.CREATE_SCOREBOARD) { |                     if (pOption == DisguisePushing.CREATE_SCOREBOARD) { | ||||||
|                         // Remember his old team so we can give him it back later |                         // Remember his old team so we can give him it back later | ||||||
| @@ -1300,16 +1306,16 @@ public class DisguiseUtilities { | |||||||
|             } |             } | ||||||
|  |  | ||||||
|             // Add himself to his own entity tracker |             // Add himself to his own entity tracker | ||||||
|             Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |             Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                     entityTrackerEntry); |                     .get(entityTrackerEntry); | ||||||
|  |  | ||||||
|             // Check for code differences in PaperSpigot vs Spigot |             // Check for code differences in PaperSpigot vs Spigot | ||||||
|             if (isHashSet(trackedPlayersObj)) { |             if (isHashSet(trackedPlayersObj)) { | ||||||
|                 ((Set<Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers").get( |                 ((Set<Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") | ||||||
|                         entityTrackerEntry)).add(ReflectionManager.getNmsEntity(player)); |                         .get(entityTrackerEntry)).add(ReflectionManager.getNmsEntity(player)); | ||||||
|             } else { |             } else { | ||||||
|                 ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap").get( |                 ((Map<Object, Object>) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayerMap") | ||||||
|                         entityTrackerEntry)).put(ReflectionManager.getNmsEntity(player), true); |                         .get(entityTrackerEntry)).put(ReflectionManager.getNmsEntity(player), true); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             ProtocolManager manager = ProtocolLibrary.getProtocolManager(); |             ProtocolManager manager = ProtocolLibrary.getProtocolManager(); | ||||||
| @@ -1320,8 +1326,8 @@ public class DisguiseUtilities { | |||||||
|             WrappedDataWatcher dataWatcher = WrappedDataWatcher.getEntityWatcher(player); |             WrappedDataWatcher dataWatcher = WrappedDataWatcher.getEntityWatcher(player); | ||||||
|  |  | ||||||
|             sendSelfPacket(player, |             sendSelfPacket(player, | ||||||
|                     manager.createPacketConstructor(Server.ENTITY_METADATA, player.getEntityId(), dataWatcher, |                     manager.createPacketConstructor(Server.ENTITY_METADATA, player.getEntityId(), dataWatcher, true) | ||||||
|                             true).createPacket(player.getEntityId(), dataWatcher, true)); |                             .createPacket(player.getEntityId(), dataWatcher, true)); | ||||||
|  |  | ||||||
|             boolean isMoving = false; |             boolean isMoving = false; | ||||||
|  |  | ||||||
| @@ -1339,64 +1345,68 @@ public class DisguiseUtilities { | |||||||
|                 Vector velocity = player.getVelocity(); |                 Vector velocity = player.getVelocity(); | ||||||
|                 sendSelfPacket(player, |                 sendSelfPacket(player, | ||||||
|                         manager.createPacketConstructor(Server.ENTITY_VELOCITY, player.getEntityId(), velocity.getX(), |                         manager.createPacketConstructor(Server.ENTITY_VELOCITY, player.getEntityId(), velocity.getX(), | ||||||
|                                 velocity.getY(), velocity.getZ()).createPacket(player.getEntityId(), velocity.getX(), |                                 velocity.getY(), velocity.getZ()) | ||||||
|                                 velocity.getY(), velocity.getZ())); |                                 .createPacket(player.getEntityId(), velocity.getX(), velocity.getY(), velocity.getZ())); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             // Why the hell would he even need this. Meh. |             // Why the hell would he even need this. Meh. | ||||||
|             if (player.getVehicle() != null && player.getEntityId() > player.getVehicle().getEntityId()) { |             if (player.getVehicle() != null && player.getEntityId() > player.getVehicle().getEntityId()) { | ||||||
|                 sendSelfPacket(player, manager.createPacketConstructor(Server.ATTACH_ENTITY, 0, player, |                 sendSelfPacket(player, | ||||||
|                         player.getVehicle()).createPacket(0, player, player.getVehicle())); |                         manager.createPacketConstructor(Server.ATTACH_ENTITY, 0, player, player.getVehicle()) | ||||||
|  |                                 .createPacket(0, player, player.getVehicle())); | ||||||
|             } else if (player.getPassenger() != null && player.getEntityId() > player.getPassenger().getEntityId()) { |             } else if (player.getPassenger() != null && player.getEntityId() > player.getPassenger().getEntityId()) { | ||||||
|                 sendSelfPacket(player, manager.createPacketConstructor(Server.ATTACH_ENTITY, 0, player.getPassenger(), |                 sendSelfPacket(player, | ||||||
|                         player).createPacket(0, player.getPassenger(), player)); |                         manager.createPacketConstructor(Server.ATTACH_ENTITY, 0, player.getPassenger(), player) | ||||||
|  |                                 .createPacket(0, player.getPassenger(), player)); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))).createPacket(player.getEntityId(), |                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(player.getInventory().getHelmet()))); |                             ReflectionManager.getNmsItem(player.getInventory().getHelmet()))); | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))).createPacket(player.getEntityId(), |                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.CHEST), |                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.CHEST), | ||||||
|                     ReflectionManager.getNmsItem(player.getInventory().getChestplate()))); |                             ReflectionManager.getNmsItem(player.getInventory().getChestplate()))); | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))).createPacket(player.getEntityId(), |                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.LEGS), |                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.LEGS), | ||||||
|                     ReflectionManager.getNmsItem(player.getInventory().getLeggings()))); |                             ReflectionManager.getNmsItem(player.getInventory().getLeggings()))); | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))).createPacket(player.getEntityId(), |                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.FEET), |                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.FEET), | ||||||
|                     ReflectionManager.getNmsItem(player.getInventory().getBoots()))); |                             ReflectionManager.getNmsItem(player.getInventory().getBoots()))); | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))).createPacket(player.getEntityId(), |                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HAND), |                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.HAND), | ||||||
|                     ReflectionManager.getNmsItem(player.getInventory().getItemInMainHand()))); |                             ReflectionManager.getNmsItem(player.getInventory().getItemInMainHand()))); | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))).createPacket(player.getEntityId(), |                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.OFF_HAND), |                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.OFF_HAND), | ||||||
|                     ReflectionManager.getNmsItem(player.getInventory().getItemInOffHand()))); |                             ReflectionManager.getNmsItem(player.getInventory().getItemInOffHand()))); | ||||||
|  |  | ||||||
|             Location loc = player.getLocation(); |             Location loc = player.getLocation(); | ||||||
|  |  | ||||||
|             // If the disguised is sleeping for w/e reason |             // If the disguised is sleeping for w/e reason | ||||||
|             if (player.isSleeping()) { |             if (player.isSleeping()) { | ||||||
|                 sendSelfPacket(player, manager.createPacketConstructor(Server.BED, player, |                 sendSelfPacket(player, | ||||||
|                         ReflectionManager.getBlockPosition(0, 0, 0)).createPacket(player, |                         manager.createPacketConstructor(Server.BED, player, ReflectionManager.getBlockPosition(0, 0, 0)) | ||||||
|                         ReflectionManager.getBlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()))); |                                 .createPacket(player, ReflectionManager | ||||||
|  |                                         .getBlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()))); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             // Resend any active potion effects |             // Resend any active potion effects | ||||||
|             for (PotionEffect potionEffect : player.getActivePotionEffects()) { |             for (PotionEffect potionEffect : player.getActivePotionEffects()) { | ||||||
|                 Object mobEffect = ReflectionManager.createMobEffect(potionEffect); |                 Object mobEffect = ReflectionManager.createMobEffect(potionEffect); | ||||||
|                 sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EFFECT, player.getEntityId(), |                 sendSelfPacket(player, | ||||||
|                         mobEffect).createPacket(player.getEntityId(), mobEffect)); |                         manager.createPacketConstructor(Server.ENTITY_EFFECT, player.getEntityId(), mobEffect) | ||||||
|  |                                 .createPacket(player.getEntityId(), mobEffect)); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         catch (Exception ex) { |         catch (Exception ex) { | ||||||
| @@ -1449,8 +1459,8 @@ public class DisguiseUtilities { | |||||||
|         Entity e = disguise.getEntity(); |         Entity e = disguise.getEntity(); | ||||||
|  |  | ||||||
|         // If the disguises entity is null, or the disguised entity isn't a player return |         // If the disguises entity is null, or the disguised entity isn't a player return | ||||||
|         if (e == null || !(e instanceof Player) || !getDisguises().containsKey(e.getUniqueId()) || !getDisguises().get( |         if (e == null || !(e instanceof Player) || !getDisguises().containsKey(e.getUniqueId()) || !getDisguises() | ||||||
|                 e.getUniqueId()).contains(disguise)) { |                 .get(e.getUniqueId()).contains(disguise)) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -1465,7 +1475,8 @@ public class DisguiseUtilities { | |||||||
|         DisguiseUtilities.removeSelfDisguise(player); |         DisguiseUtilities.removeSelfDisguise(player); | ||||||
|  |  | ||||||
|         // If the disguised player can't see himself. Return |         // If the disguised player can't see himself. Return | ||||||
|         if (!disguise.isSelfDisguiseVisible() || !PacketsManager.isViewDisguisesListenerEnabled() || player.getVehicle() != null) { |         if (!disguise.isSelfDisguiseVisible() || !PacketsManager.isViewDisguisesListenerEnabled() || player | ||||||
|  |                 .getVehicle() != null) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										172
									
								
								src/me/libraryaddict/disguise/utilities/LibsMsg.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										172
									
								
								src/me/libraryaddict/disguise/utilities/LibsMsg.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,172 @@ | |||||||
|  | package me.libraryaddict.disguise.utilities; | ||||||
|  |  | ||||||
|  | import org.bukkit.ChatColor; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 15/06/2017. | ||||||
|  |  */ | ||||||
|  | public enum LibsMsg { | ||||||
|  |     BLOWN_DISGUISE(ChatColor.RED + "Your disguise was blown!"), | ||||||
|  |     CAN_USE_DISGS(ChatColor.DARK_GREEN + "You can use the disguises: %s"), | ||||||
|  |     CANNOT_FIND_PLAYER(ChatColor.RED + "Cannot find the player '%s'"), | ||||||
|  |     CLICK_TIMER(ChatColor.RED + "Right click a entity in the next %s seconds to grab the disguise reference!"), | ||||||
|  |     CLONE_HELP1( | ||||||
|  |             ChatColor.DARK_GREEN + "Right click a entity to get a disguise reference you can pass to other disguise commands!"), | ||||||
|  |     CLONE_HELP2( | ||||||
|  |             ChatColor.DARK_GREEN + "Security note: Any references you create will be available to all players able to use disguise references."), | ||||||
|  |     CLONE_HELP3( | ||||||
|  |             ChatColor.DARK_GREEN + "/disguiseclone IgnoreEquipment" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")"), | ||||||
|  |     D_HELP1(ChatColor.DARK_GREEN + "Disguise another player!"), | ||||||
|  |     D_HELP3(ChatColor.DARK_GREEN + "/disguiseplayer <PlayerName> player <Name>"), | ||||||
|  |     D_HELP4(ChatColor.DARK_GREEN + "/disguiseplayer <PlayerName> <DisguiseType> <Baby>"), | ||||||
|  |     D_HELP5(ChatColor.DARK_GREEN + "/disguiseplayer <PlayerName> <Dropped_Item/Falling_Block> <Id> <Durability>"), | ||||||
|  |     D_PARSE_NOPERM(ChatColor.RED + "You do not have permission to use the option %s"), | ||||||
|  |     DHELP_CANTFIND(ChatColor.RED + "Cannot find the disguise %s"), | ||||||
|  |     DHELP_HELP1( | ||||||
|  |             ChatColor.RED + "/disguisehelp <DisguiseType> " + ChatColor.GREEN + "- View the options you can set on a disguise. Add 'show' to reveal the options you don't have permission to use"), | ||||||
|  |     DHELP_HELP2(ChatColor.RED + "/disguisehelp %s" + ChatColor.GREEN + " - %s"), | ||||||
|  |     DHELP_OPTIONS("%s options: %s"), | ||||||
|  |     DISABLED_LIVING_TO_MISC( | ||||||
|  |             ChatColor.RED + "Can't disguise a living entity as a misc disguise. This has been disabled in the config!"), | ||||||
|  |     DISG_ENT_CLICK(ChatColor.RED + "Right click an entity in the next %s seconds to disguise it as a %s!"), | ||||||
|  |     DISG_ENT_HELP1(ChatColor.DARK_GREEN + "Choose a disguise then right click an entity to disguise it!"), | ||||||
|  |     DISG_ENT_HELP3(ChatColor.DARK_GREEN + "/disguiseentity player <Name>"), | ||||||
|  |     DISG_ENT_HELP4(ChatColor.DARK_GREEN + "/disguiseentity <DisguiseType> <Baby>"), | ||||||
|  |     DISG_ENT_HELP5(ChatColor.DARK_GREEN + "/disguiseentity <Dropped_Item/Falling_Block> <Id> <Durability>"), | ||||||
|  |     DISG_HELP1(ChatColor.DARK_GREEN + "Choose a disguise to become the disguise!"), | ||||||
|  |     DISG_HELP2(ChatColor.DARK_GREEN + "/disguise player <Name>"), | ||||||
|  |     DISG_HELP3(ChatColor.DARK_GREEN + "/disguise <DisguiseType> <Baby>"), | ||||||
|  |     DISG_HELP4(ChatColor.DARK_GREEN + "/disguise <Dropped_Item/Falling_Block> <Id> <Durability>"), | ||||||
|  |     DISG_PLAYER_AS_DISG(ChatColor.RED + "Successfully disguised %s as a %s!"), | ||||||
|  |     DISG_PLAYER_AS_DISG_FAIL(ChatColor.RED + "Failed to disguise %s as a %s!"), | ||||||
|  |     DISGUISED(ChatColor.RED + "Now disguised as a %s"), | ||||||
|  |     DISRADIUS(ChatColor.RED + "Successfully disguised %s entities!"), | ||||||
|  |     DISRADIUS_FAIL(ChatColor.RED + "Couldn't find any entities to disguise!"), | ||||||
|  |     DMODENT_HELP1(ChatColor.DARK_GREEN + "Choose the options for a disguise then right click a entity to modify it!"), | ||||||
|  |     DMODIFY_HELP1(ChatColor.DARK_GREEN + "Modify your own disguise as you wear it!"), | ||||||
|  |     DMODIFY_HELP2(ChatColor.DARK_GREEN + "/disguisemodify setBaby true setSprinting true"), | ||||||
|  |     DMODIFY_HELP3(ChatColor.DARK_GREEN + "You can modify the disguises: %s"), | ||||||
|  |     DMODIFY_MODIFIED(ChatColor.RED + "Your disguise has been modified!"), | ||||||
|  |     DMODIFY_NO_PERM(ChatColor.RED + "No permission to modify your disguise!"), | ||||||
|  |     DMODIFYENT_CLICK(ChatColor.RED + "Right click a disguised entity in the next %s seconds to modify their disguise!"), | ||||||
|  |     DMODPLAYER_HELP1(ChatColor.DARK_GREEN + "Modify the disguise of another player!"), | ||||||
|  |     DMODPLAYER_MODIFIED(ChatColor.RED + "Modified the disguise of %s!"), | ||||||
|  |     DMODPLAYER_NODISGUISE(ChatColor.RED + "The player '%s' is not disguised"), | ||||||
|  |     DMODPLAYER_NOPERM(ChatColor.RED + "You do not have permission to modify this disguise"), | ||||||
|  |     DMODRADIUS(ChatColor.RED + "Successfully modified the disguises of %s entities!"), | ||||||
|  |     DMODRADIUS_HELP1(ChatColor.DARK_GREEN + "Modify the disguises in a radius! Caps at %s blocks!"), | ||||||
|  |     DMODRADIUS_HELP3( | ||||||
|  |             (ChatColor.DARK_GREEN + "/disguisemodifyradius <EntityType" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")> <Radius> player <Name>") | ||||||
|  |                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")), | ||||||
|  |     DMODRADIUS_HELP4( | ||||||
|  |             (ChatColor.DARK_GREEN + "/disguisemodifyradius <EntityType" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")> <Radius> <DisguiseType> <Baby" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")>") | ||||||
|  |                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")), | ||||||
|  |     DMODRADIUS_HELP5( | ||||||
|  |             (ChatColor.DARK_GREEN + "/disguisemodifyradius <EntityType" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")> <Radius> <Dropped_Item/Falling_Block> <Id> <Durability" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")>") | ||||||
|  |                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")), | ||||||
|  |     DMODRADIUS_HELP6( | ||||||
|  |             ChatColor.DARK_GREEN + "See the EntityType's usable by " + ChatColor.GREEN + "/disguisemodifyradius EntityTypes"), | ||||||
|  |     DMODRADIUS_NEEDOPTIONS(ChatColor.RED + "You need to supply the disguise options as well as the radius"), | ||||||
|  |     DMODRADIUS_NEEDOPTIONS_ENTITY( | ||||||
|  |             ChatColor.RED + "You need to supply the disguise options as well as the radius and EntityType"), | ||||||
|  |     DMODRADIUS_NOENTS(ChatColor.RED + "Couldn't find any disguised entities!"), | ||||||
|  |     DMODRADIUS_NOPERM(ChatColor.RED + "No permission to modify %s disguises!"), | ||||||
|  |     DMODRADIUS_UNRECOGNIZED(ChatColor.RED + "Unrecognised EntityType %s"), | ||||||
|  |     DMODRADIUS_USABLE(ChatColor.DARK_GREEN + "EntityTypes usable are: %s" + ChatColor.DARK_GREEN + "."), | ||||||
|  |     DPLAYER_SUPPLY(ChatColor.RED + "You need to supply a disguise as well as the player"), | ||||||
|  |     DRADIUS_ENTITIES(ChatColor.DARK_GREEN + "EntityTypes usable are: %s"), | ||||||
|  |     DRADIUS_HELP1(ChatColor.DARK_GREEN + "Disguise all entities in a radius! Caps at %s blocks!"), | ||||||
|  |     DRADIUS_HELP3( | ||||||
|  |             (ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")> <Radius> player <Name>") | ||||||
|  |                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")), | ||||||
|  |     DRADIUS_HELP4( | ||||||
|  |             (ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")> <Radius> <DisguiseType> <Baby" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")>") | ||||||
|  |                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")), | ||||||
|  |     DRADIUS_HELP5( | ||||||
|  |             (ChatColor.DARK_GREEN + "/disguiseradius <EntityType" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")> <Radius> <Dropped_Item/Falling_Block> <Id> <Durability" + ChatColor.DARK_GREEN + "(" + ChatColor.GREEN + "Optional" + ChatColor.DARK_GREEN + ")>") | ||||||
|  |                     .replace("<", "<" + ChatColor.GREEN).replace(">", ChatColor.DARK_GREEN + ">")), | ||||||
|  |     DRADIUS_HELP6( | ||||||
|  |             ChatColor.DARK_GREEN + "See the EntityType's usable by " + ChatColor.GREEN + "/disguiseradius EntityTypes"), | ||||||
|  |     DRADIUS_MISCDISG( | ||||||
|  |             ChatColor.RED + "Failed to disguise %s entities because the option to disguise a living entity as a non-living has been disabled in the config"), | ||||||
|  |     DRADIUS_NEEDOPTIONS(ChatColor.RED + "You need to supply a disguise as well as the radius"), | ||||||
|  |     DRADIUS_NEEDOPTIONS_ENTITY(ChatColor.RED + "You need to supply a disguise as well as the radius and EntityType"), | ||||||
|  |     FAILED_DISGIUSE(ChatColor.RED + "Failed to disguise as a %s"), | ||||||
|  |     INVALID_CLONE( | ||||||
|  |             ChatColor.DARK_RED + "Unknown option '%s' - Valid options are 'IgnoreEquipment' 'DoSneakSprint' " + "'DoSneak' 'DoSprint'"), | ||||||
|  |     LIBS_RELOAD_WRONG(ChatColor.RED + "[LibsDisguises] Did you mean 'reload'?"), | ||||||
|  |     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 %s as a %s!"), | ||||||
|  |     LISTEN_ENTITY_ENTITY_DISG_ENTITY_FAIL(ChatColor.RED + "Failed to disguise s %s as a %s!"), | ||||||
|  |     LISTEN_ENTITY_ENTITY_DISG_PLAYER(ChatColor.RED + "Disguised s %s as the player %s!"), | ||||||
|  |     LISTEN_ENTITY_ENTITY_DISG_PLAYER_FAIL(ChatColor.RED + "Failed to disguise s %s as the player %s!"), | ||||||
|  |     LISTEN_ENTITY_PLAYER_DISG_ENTITY(ChatColor.RED + "Disguised the player %s as a %s!"), | ||||||
|  |     LISTEN_ENTITY_PLAYER_DISG_ENTITY_FAIL(ChatColor.RED + "Failed to disguise the player %s as a %s!"), | ||||||
|  |     LISTEN_ENTITY_PLAYER_DISG_PLAYER(ChatColor.RED + "Disguised the player %s as the player %s!"), | ||||||
|  |     LISTEN_ENTITY_PLAYER_DISG_PLAYER_FAIL(ChatColor.RED + "Failed to disguise the player %s as the player %s!"), | ||||||
|  |     LISTEN_UNDISG_ENT(ChatColor.RED + "Undisguised the %s"), | ||||||
|  |     LISTEN_UNDISG_ENT_FAIL(ChatColor.RED + "%s isn't disguised!"), | ||||||
|  |     LISTEN_UNDISG_PLAYER(ChatColor.RED + "Undisguised %s"), | ||||||
|  |     LISTEN_UNDISG_PLAYER_FAIL(ChatColor.RED + "The %s isn't disguised!"), | ||||||
|  |     LISTENER_MODIFIED_DISG(ChatColor.RED + "Modified the disguise!"), | ||||||
|  |     MADE_REF(ChatColor.RED + "Constructed a %s disguise! Your reference is %s"), | ||||||
|  |     MADE_REF_EXAMPLE(ChatColor.RED + "Example usage: /disguise %s"), | ||||||
|  |     NO_CONSOLE(ChatColor.RED + "You may not use this command from the console!"), | ||||||
|  |     NO_PERM(ChatColor.RED + "You are forbidden to use this command."), | ||||||
|  |     NO_PERM_DISGUISE(ChatColor.RED + "You do not have permission for that disguise!"), | ||||||
|  |     NO_PERMS_USE_OPTIONS( | ||||||
|  |             ChatColor.RED + "Ignored %s options you do not have permission to use. Add 'show' to view unusable options."), | ||||||
|  |     NOT_DISGUISED(ChatColor.RED + "You are not disguised!"), | ||||||
|  |     NOT_NUMBER(ChatColor.RED + "Error! %s is not a number"), | ||||||
|  |     PARSE_CANT_DISG_UNKNOWN(ChatColor.RED + "Error! You cannot disguise as " + ChatColor.GREEN + "Unknown!"), | ||||||
|  |     PARSE_CANT_LOAD(ChatColor.RED + "Error! This disguise couldn't be loaded!"), | ||||||
|  |     PARSE_DISG_NO_EXIST( | ||||||
|  |             ChatColor.RED + "Error! The disguise " + ChatColor.GREEN + "%s" + ChatColor.RED + " doesn't exist!"), | ||||||
|  |     PARSE_EXPECTED_RECEIVED( | ||||||
|  |             ChatColor.RED + "Expected " + ChatColor.GREEN + "%s" + ChatColor.RED + ", received " + ChatColor.GREEN + "%s" + ChatColor.RED + " instead for " + ChatColor.GREEN + "%s"), | ||||||
|  |     PARSE_NO_ARGS("No arguments defined"), | ||||||
|  |     PARSE_NO_OPTION_VALUE(ChatColor.RED + "No value was given for the option %s"), | ||||||
|  |     PARSE_NO_PERM_NAME(ChatColor.RED + "Error! You don't have permission to use that name!"), | ||||||
|  |     PARSE_NO_PERM_PARAM( | ||||||
|  |             ChatColor.RED + "Error! You do not have permission to use the parameter %s on the %s disguise!"), | ||||||
|  |     PARSE_NO_PERM_REF(ChatColor.RED + "You do not have perimssion to use disguise references!"), | ||||||
|  |     PARSE_NO_REF(ChatColor.RED + "Cannot find a disguise under the reference %s"), | ||||||
|  |     PARSE_OPTION_NA(ChatColor.RED + "Cannot find the option %s"), | ||||||
|  |     PARSE_SUPPLY_PLAYER(ChatColor.RED + "Error! You need to give a player name!"), | ||||||
|  |     PARSE_TOO_MANY_ARGS(ChatColor.RED + "Error! %s doesn't know what to do with %s!"), | ||||||
|  |     PARSE_USE_SECOND_NUM(ChatColor.RED + "Error! Only the disguises %s and %s uses a second number!"), | ||||||
|  |     REF_TOO_MANY( | ||||||
|  |             ChatColor.RED + "Failed to store the reference, too many cloned disguises. Please raise the maximum cloned disguises, or lower the time they last"), | ||||||
|  |     RELOADED_CONFIG(ChatColor.GREEN + "[LibsDisguises] Reloaded config."), | ||||||
|  |     UND_ENTITY(ChatColor.RED + "Right click a disguised entity to undisguise them!"), | ||||||
|  |     UNDISG(ChatColor.RED + "You are no longer disguised"), | ||||||
|  |     UNDISG_PLAYER(ChatColor.RED + "%s is no longer disguised"), | ||||||
|  |     UNDISG_PLAYER_FAIL(ChatColor.RED + "%s not disguised!"), | ||||||
|  |     UNDISG_PLAYER_HELP(ChatColor.RED + "/undisguiseplayer <Name>"), | ||||||
|  |     UNDISRADIUS(ChatColor.RED + "Successfully undisguised %s entities!"), | ||||||
|  |     UPDATE_READY( | ||||||
|  |             ChatColor.RED + "[LibsDisguises] " + ChatColor.DARK_RED + "There is a update ready to be downloaded! You are using " + ChatColor.RED + "v%s" + ChatColor.DARK_RED + ", the new version is " + ChatColor.RED + "%s" + ChatColor.DARK_RED + "!"), | ||||||
|  |     VIEW_SELF_OFF(ChatColor.GREEN + "Toggled viewing own disguise on!"), | ||||||
|  |     VIEW_SELF_ON(ChatColor.GREEN + "Toggled viewing own disguise off!"); | ||||||
|  |  | ||||||
|  |     private String string; | ||||||
|  |  | ||||||
|  |     LibsMsg(String string) { | ||||||
|  |         this.string = string; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getRaw() { | ||||||
|  |         return string; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String get(Object... strings) { | ||||||
|  |         if (strings.length == 0) | ||||||
|  |             return TranslateType.MESSAGES.get(getRaw()); | ||||||
|  |  | ||||||
|  |         return String.format(TranslateType.MESSAGES.get(getRaw()), (Object[]) strings); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String toString() { | ||||||
|  |         throw new RuntimeException("Dont call this"); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -81,10 +81,20 @@ public class ReflectionFlagWatchers { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         public String getName() { |         public String getName() { | ||||||
|  |             return TranslateType.DISGUISE_OPTIONS_PARAMETERS | ||||||
|  |                     .get(getRawName(), "Used as a disguise option for " + getRawName()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public String getRawName() { | ||||||
|             return name; |             return name; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         public String getDescription() { |         public String getDescription() { | ||||||
|  |             return TranslateType.DISGUISE_OPTIONS_PARAMETERS | ||||||
|  |                     .get(getRawDescription(), "Used as a disguise option for " + getRawDescription()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public String getRawDescription() { | ||||||
|             return description; |             return description; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -142,8 +152,8 @@ public class ReflectionFlagWatchers { | |||||||
|         new ParamInfo(Ocelot.Type.class, "Ocelot Type", "View all the ocelot types you can use for ocelots"); |         new ParamInfo(Ocelot.Type.class, "Ocelot Type", "View all the ocelot types you can use for ocelots"); | ||||||
|         new ParamInfo(Villager.Profession.class, "Villager Profession", |         new ParamInfo(Villager.Profession.class, "Villager Profession", | ||||||
|                 "View all the professions you can set on a villager"); |                 "View all the professions you can set on a villager"); | ||||||
|         new ParamInfo(BlockFace.class, Arrays.copyOf(BlockFace.values(), 5), "Direction", |         new ParamInfo(BlockFace.class, Arrays.copyOf(BlockFace.values(), 4), "Direction", | ||||||
|                 "View the five directions usable on player setSleeping disguise"); |                 "View the four directions usable on player setSleeping disguise"); | ||||||
|         new ParamInfo(RabbitType.class, "Rabbit Type", "View the kinds of rabbits you can turn into"); |         new ParamInfo(RabbitType.class, "Rabbit Type", "View the kinds of rabbits you can turn into"); | ||||||
|         new ParamInfo(TreeSpecies.class, "Tree Species", "View the different types of tree species"); |         new ParamInfo(TreeSpecies.class, "Tree Species", "View the different types of tree species"); | ||||||
|  |  | ||||||
| @@ -162,6 +172,7 @@ public class ReflectionFlagWatchers { | |||||||
|  |  | ||||||
|             potionEnums.add(toReadable(effectType.getName())); |             potionEnums.add(toReadable(effectType.getName())); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         String[] materials = new String[Material.values().length]; |         String[] materials = new String[Material.values().length]; | ||||||
|  |  | ||||||
|         for (int i = 0; i < Material.values().length; i++) { |         for (int i = 0; i < Material.values().length; i++) { | ||||||
| @@ -170,7 +181,7 @@ public class ReflectionFlagWatchers { | |||||||
|  |  | ||||||
|         new ParamInfo(ItemStack.class, "Item (id:damage)", "An ItemStack compromised of ID:Durability", materials); |         new ParamInfo(ItemStack.class, "Item (id:damage)", "An ItemStack compromised of ID:Durability", materials); | ||||||
|  |  | ||||||
|         new ParamInfo(ItemStack[].class, "Four ItemStacks (id:damage,id:damage..)", "Four ItemStacks seperated by an ,", |         new ParamInfo(ItemStack[].class, "Four ItemStacks (id:damage,id:damage..)", "Four ItemStacks separated by an ,", | ||||||
|                 materials) { |                 materials) { | ||||||
|             @Override |             @Override | ||||||
|             public String[] getEnums(String tabComplete) { |             public String[] getEnums(String tabComplete) { | ||||||
| @@ -195,14 +206,14 @@ public class ReflectionFlagWatchers { | |||||||
|                 potionEnums.toArray(new String[0])); |                 potionEnums.toArray(new String[0])); | ||||||
|         new ParamInfo(String.class, "Text", "A line of text"); |         new ParamInfo(String.class, "Text", "A line of text"); | ||||||
|         new ParamInfo(boolean.class, "True/False", "True or False", new String[]{"true", "false"}); |         new ParamInfo(boolean.class, "True/False", "True or False", new String[]{"true", "false"}); | ||||||
|         new ParamInfo(int.class, "Number", "A whole number, no decimcals"); |         new ParamInfo(int.class, "Number", "A whole number, no decimals"); | ||||||
|         new ParamInfo(double.class, "Number", "A number which can have decimals"); |         new ParamInfo(double.class, "Number", "A number which can have decimals"); | ||||||
|         new ParamInfo(float.class, "Number", "A number which can have decimals"); |         new ParamInfo(float.class, "Number", "A number which can have decimals"); | ||||||
|  |  | ||||||
|         new ParamInfo(Horse.Style.class, "Horse Style", "Horse style which is the patterns on the horse"); |         new ParamInfo(Horse.Style.class, "Horse Style", "Horse style which is the patterns on the horse"); | ||||||
|         new ParamInfo(int[].class, "number,number,number...", "Numbers seperated by an ,"); |         new ParamInfo(int[].class, "number,number,number..", "Numbers separated by an ,"); | ||||||
|  |  | ||||||
|         new ParamInfo(BlockPosition.class, "Block Position (num,num,num)", "Three numbers seperated by an ,"); |         new ParamInfo(BlockPosition.class, "Block Position (num,num,num)", "Three numbers separated by a ,"); | ||||||
|         new ParamInfo(GameProfile.class, "GameProfile", |         new ParamInfo(GameProfile.class, "GameProfile", | ||||||
|                 "Get the gameprofile here https://sessionserver.mojang.com/session/minecraft/profile/PLAYER_UUID_GOES_HERE?unsigned=false"); |                 "Get the gameprofile here https://sessionserver.mojang.com/session/minecraft/profile/PLAYER_UUID_GOES_HERE?unsigned=false"); | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										73
									
								
								src/me/libraryaddict/disguise/utilities/TranslateFiller.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								src/me/libraryaddict/disguise/utilities/TranslateFiller.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,73 @@ | |||||||
|  | package me.libraryaddict.disguise.utilities; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||||
|  | import org.apache.commons.lang.StringUtils; | ||||||
|  | import org.bukkit.inventory.ItemStack; | ||||||
|  |  | ||||||
|  | import java.lang.reflect.Method; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 10/06/2017. | ||||||
|  |  */ | ||||||
|  | public class TranslateFiller { | ||||||
|  |     public static void fillConfigs() { | ||||||
|  |         // Fill the configs | ||||||
|  |  | ||||||
|  |         for (ReflectionFlagWatchers.ParamInfo info : ReflectionFlagWatchers.getParamInfos()) { | ||||||
|  |             if (!info.isEnums()) | ||||||
|  |                 continue; | ||||||
|  |  | ||||||
|  |             if (info.getParamClass() == ItemStack.class || info.getParamClass() == ItemStack[].class) | ||||||
|  |                 continue; | ||||||
|  |  | ||||||
|  |             TranslateType.DISGUISE_OPTIONS_PARAMETERS.save(info.getRawName(), "Used as a disguise option"); | ||||||
|  |             TranslateType.DISGUISE_OPTIONS_PARAMETERS | ||||||
|  |                     .save(info.getRawDescription(), "Description for the disguise option " + info.getRawName()); | ||||||
|  |  | ||||||
|  |             for (String e : info.getEnums("")) { | ||||||
|  |                 TranslateType.DISGUISE_OPTIONS_PARAMETERS.save(e, "Used for the disguise option " + info.getRawName()); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         for (DisguiseType type : DisguiseType.values()) { | ||||||
|  |             String[] split = type.name().split("_"); | ||||||
|  |  | ||||||
|  |             for (int i = 0; i < split.length; i++) { | ||||||
|  |                 split[i] = split[i].substring(0, 1) + split[i].substring(1).toLowerCase(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             TranslateType.DISGUISES.save(StringUtils.join(split, " "), "Name for the " + type.name() + " disguise"); | ||||||
|  |  | ||||||
|  |             for (Method method : ReflectionFlagWatchers.getDisguiseWatcherMethods(type.getWatcherClass())) { | ||||||
|  |                 Class para = method.getParameterTypes()[0]; | ||||||
|  |                 String className = method.getDeclaringClass().getSimpleName().replace("Watcher", ""); | ||||||
|  |  | ||||||
|  |                 if (className.equals("Flag") || className.equals("Disguise")) | ||||||
|  |                     className = "Entity"; | ||||||
|  |                 else if (className.equals("Living")) | ||||||
|  |                     className = "Living Entity"; | ||||||
|  |                 else if (className.equals("AbstractHorse")) | ||||||
|  |                     className = "Horse"; | ||||||
|  |                 else if (className.equals("DroppedItem")) | ||||||
|  |                     className = "Item"; | ||||||
|  |                 else if (className.equals("IllagerWizard")) | ||||||
|  |                     className = "Illager"; | ||||||
|  |  | ||||||
|  |                 TranslateType.DISGUISE_OPTIONS.save(method.getName(), | ||||||
|  |                         "Found in the disguise options for " + className + " and uses " + (para.isArray() ? | ||||||
|  |                                 "multiple" + " " : "a ") + para.getSimpleName().replace("[]", "s")); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         for (LibsMsg msg : LibsMsg.values()) { | ||||||
|  |             TranslateType.MESSAGES.save(msg.getRaw()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (!LibsPremium.isPremium() || !DisguiseConfig.isUseTranslations()) { | ||||||
|  |             for (TranslateType type : TranslateType.values()) { | ||||||
|  |                 type.wipeTranslations(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										156
									
								
								src/me/libraryaddict/disguise/utilities/TranslateType.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								src/me/libraryaddict/disguise/utilities/TranslateType.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,156 @@ | |||||||
|  | package me.libraryaddict.disguise.utilities; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
|  | import org.apache.commons.lang3.StringEscapeUtils; | ||||||
|  | import org.bukkit.ChatColor; | ||||||
|  | import org.bukkit.configuration.file.YamlConfiguration; | ||||||
|  |  | ||||||
|  | import java.io.File; | ||||||
|  | import java.io.FileWriter; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.Map; | ||||||
|  | import java.util.Objects; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 10/06/2017. | ||||||
|  |  */ | ||||||
|  | public enum TranslateType { | ||||||
|  |     DISGUISES("disguises"), | ||||||
|  |     MESSAGES("messages"), | ||||||
|  |     DISGUISE_OPTIONS("disguise_options"), | ||||||
|  |     DISGUISE_OPTIONS_PARAMETERS("disguise_option_parameters"); | ||||||
|  |  | ||||||
|  |     private File file; | ||||||
|  |     private HashMap<String, String> translated = new HashMap<>(); | ||||||
|  |  | ||||||
|  |     TranslateType(String fileName) { | ||||||
|  |         file = new File("plugins/LibsDisguises/Translations", fileName + ".yml"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void reloadTranslations() { | ||||||
|  |         for (TranslateType type : values()) { | ||||||
|  |             type.reload(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         TranslateFiller.fillConfigs(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void wipeTranslations() { | ||||||
|  |         translated.clear(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private void reload() { | ||||||
|  |         translated.clear(); | ||||||
|  |  | ||||||
|  |         if (LibsPremium.isPremium() && DisguiseConfig.isUseTranslations()) { | ||||||
|  |             System.out.println("[LibsDisguises] Loading translations: " + name()); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         if (!file.exists()) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|  |         YamlConfiguration config = new YamlConfiguration(); | ||||||
|  |         config.options().pathSeparator(Character.toChars(0)[0]); | ||||||
|  |  | ||||||
|  |         try { | ||||||
|  |             config.load(file); | ||||||
|  |  | ||||||
|  |             for (String key : config.getKeys(false)) { | ||||||
|  |                 String value = config.getString(key); | ||||||
|  |  | ||||||
|  |                 if (value == null) | ||||||
|  |                     System.err.println("Translation for " + name() + " has a null value for the key '" + key + "'"); | ||||||
|  |                 else | ||||||
|  |                     translated.put(ChatColor.translateAlternateColorCodes('&', key), | ||||||
|  |                             ChatColor.translateAlternateColorCodes('&', value)); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         catch (Exception e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private File getFile() { | ||||||
|  |         return file; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void save(String msg) { | ||||||
|  |         if (this != TranslateType.MESSAGES) | ||||||
|  |             throw new IllegalArgumentException("Can't set no comment for '" + msg + "'"); | ||||||
|  |  | ||||||
|  |         save(msg, null); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void save(String message, String comment) { | ||||||
|  |         if (translated.containsKey(message)) | ||||||
|  |             return; | ||||||
|  |  | ||||||
|  |         translated.put(message, message); | ||||||
|  |  | ||||||
|  |         message = StringEscapeUtils.escapeJava(message.replaceAll(ChatColor.COLOR_CHAR + "", "&")); | ||||||
|  |  | ||||||
|  |         try { | ||||||
|  |             boolean exists = file.exists(); | ||||||
|  |  | ||||||
|  |             if (!exists) { | ||||||
|  |                 file.getParentFile().mkdirs(); | ||||||
|  |                 file.createNewFile(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             FileWriter writer = new FileWriter(getFile(), true); | ||||||
|  |  | ||||||
|  |             if (!exists) { | ||||||
|  |                 writer.write("# To use translations in Lib's Disguises, you must have the purchased plugin\n"); | ||||||
|  |  | ||||||
|  |                 if (this == TranslateType.MESSAGES) { | ||||||
|  |                     writer.write("# %s is where text is inserted, look up printf format codes if you're interested\n"); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             writer.write("\n" + (comment != null ? "# " + comment + "\n" : | ||||||
|  |                     "") + "\"" + message + "\": \"" + message + "\"\n"); | ||||||
|  |  | ||||||
|  |             writer.close(); | ||||||
|  |         } | ||||||
|  |         catch (Exception ex) { | ||||||
|  |             ex.printStackTrace(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String reverseGet(String translated) { | ||||||
|  |         if (translated == null) | ||||||
|  |             return null; | ||||||
|  |  | ||||||
|  |         translated = translated.toLowerCase(); | ||||||
|  |  | ||||||
|  |         for (Map.Entry<String, String> entry : this.translated.entrySet()) { | ||||||
|  |             if (!Objects.equals(entry.getValue().toLowerCase(), translated)) | ||||||
|  |                 continue; | ||||||
|  |  | ||||||
|  |             return entry.getKey(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return translated; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String get(String msg) { | ||||||
|  |         if (this != TranslateType.MESSAGES) | ||||||
|  |             throw new IllegalArgumentException("Can't set no comment for '" + msg + "'"); | ||||||
|  |  | ||||||
|  |         return get(msg, null); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String get(String msg, String comment) { | ||||||
|  |         if (msg == null || !LibsPremium.isPremium() || !DisguiseConfig.isUseTranslations()) | ||||||
|  |             return msg; | ||||||
|  |  | ||||||
|  |         String toReturn = translated.get(msg); | ||||||
|  |  | ||||||
|  |         if (toReturn != null) | ||||||
|  |             return toReturn; | ||||||
|  |  | ||||||
|  |         save(msg, comment); | ||||||
|  |  | ||||||
|  |         return msg; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -13,7 +13,6 @@ public class SerializerGameProfile implements JsonSerializer<WrappedGameProfile> | |||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public JsonElement serialize(WrappedGameProfile src, Type typeOfSrc, JsonSerializationContext context) { |     public JsonElement serialize(WrappedGameProfile src, Type typeOfSrc, JsonSerializationContext context) { | ||||||
|         System.out.println(src.getHandle().toString()); |  | ||||||
|         return context.serialize(src.getHandle(), GameProfile.class); |         return context.serialize(src.getHandle(), GameProfile.class); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user