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