package be.isach.ultracosmetics.command.subcommands; import be.isach.ultracosmetics.UltraCosmetics; import be.isach.ultracosmetics.UltraCosmeticsData; import be.isach.ultracosmetics.command.SubCommand; import be.isach.ultracosmetics.config.MessageManager; import be.isach.ultracosmetics.config.SettingsManager; import be.isach.ultracosmetics.cosmetics.type.GadgetType; import be.isach.ultracosmetics.mysql.MySqlConnectionManager; import be.isach.ultracosmetics.util.MathUtils; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; import java.util.UUID; /** * Give {@link be.isach.ultracosmetics.command.SubCommand SubCommand}. * * @author iSach * @since 12-21-2015 */ @SuppressWarnings("deprecation") public class SubCommandGive extends SubCommand { public SubCommandGive(UltraCosmetics ultraCosmetics) { super("Gives Ammo/Key.", "ultracosmetics.command.give", "/uc give <key|ammo> <amount> [player]", ultraCosmetics, "give"); } @Override protected void onExePlayer(Player sender, String... args) { if (args.length < 3) { if (args.length == 2) { if (args[1].startsWith("k")) sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give key <amount> [player]"); else if (args[1].startsWith("a")) sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give ammo <gadget> <amount> [player]"); } else sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. " + getUsage()); return; } OfflinePlayer receiver = sender; String arg1 = args[1].toLowerCase(); if (arg1.startsWith("k")) { // Giving key. if (args.length > 3) { receiver = Bukkit.getPlayer(args[3]); if (receiver == null && Bukkit.getOfflinePlayer(args[3]) == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[3] + " not found!"); return; } if (Bukkit.getOfflinePlayer(args[3]) != null && Bukkit.getOfflinePlayer(args[3]).hasPlayedBefore() && Bukkit.getPlayer(args[3]) == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[3] + " is offline."); receiver = Bukkit.getOfflinePlayer(args[3]); } if (receiver == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[3] + " not found!"); return; } } if (!MathUtils.isInteger(args[2])) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + args[2] + " isn't a number!"); return; } int keys = Math.max(0, Math.min(Integer.MAX_VALUE, Integer.parseInt(args[2]))); for (int i = 0; i < keys; i++) addKey(receiver); sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + keys + " treasure keys given to " + receiver.getName()); return; } else if (arg1.startsWith("a")) { // Giving ammo. /uc give ammo <type> <amount> [player] if (args.length < 4) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give ammo <gadget> <amount> [player]"); return; } if (args.length > 4) { receiver = Bukkit.getPlayer(args[4]); if (receiver == null && Bukkit.getOfflinePlayer(args[4]) == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[4] + " not found and has never come!"); return; } if (Bukkit.getOfflinePlayer(args[4]) != null && Bukkit.getOfflinePlayer(args[4]).hasPlayedBefore() && Bukkit.getPlayer(args[4]) == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[4] + " is offline."); receiver = Bukkit.getOfflinePlayer(args[4]); } if (receiver == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[4] + " not found and has never come!"); return; } } GadgetType gadgetType; try { gadgetType = GadgetType.valueOf(args[2].toUpperCase()); } catch (IllegalArgumentException exc) { sender.sendMessage(MessageManager.getMessage("Invalid-Gadget")); StringBuilder sb = new StringBuilder(); for (int i = 0; i < GadgetType.enabled().size(); i++) sb.append(GadgetType.enabled().get(i).toString().toLowerCase() + ((i != GadgetType.enabled().size() - 1) ? ChatColor.WHITE + "" + ChatColor.BOLD + ", " + ChatColor.RED: "")); sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Gadget Types: " + ChatColor.RED + sb.toString()); return; } if (!gadgetType.isEnabled()) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "This gadget isn't enabled!"); return; } if (!MathUtils.isInteger(args[3])) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + args[3] + " isn't a number!"); return; } int ammo = Math.max(0, Math.min(Integer.MAX_VALUE, Integer.parseInt(args[3]))); addAmmo(gadgetType, receiver, ammo); sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + ammo + " " + gadgetType.toString().toLowerCase() + " ammo given to " + receiver.getName()); return; } else { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. " + getUsage()); return; } } @Override protected void onExeConsole(ConsoleCommandSender sender, String... args) { if (args.length < 4) { if (args.length == 2) { if (args[1].startsWith("k")) sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give key <amount> <player>"); else if (args[1].startsWith("a")) sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give ammo <gadget> <amount> <player>"); } else sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. " + getUsage()); return; } OfflinePlayer receiver; String arg1 = args[1].toLowerCase(); if (arg1.startsWith("k")) { receiver = Bukkit.getPlayer(args[3]); if (receiver == null && Bukkit.getOfflinePlayer(args[3]) == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[3] + " not found and has never come!"); return; } if (Bukkit.getOfflinePlayer(args[3]) != null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[3] + " is offline."); receiver = Bukkit.getOfflinePlayer(args[3]); } if (receiver == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[3] + " not found and has never come!"); return; } if (!MathUtils.isInteger(args[2])) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + args[2] + " isn't a number!"); return; } int keys = Math.max(0, Math.min(Integer.MAX_VALUE, Integer.parseInt(args[2]))); for (int i = 0; i < keys; i++) addKey(receiver); sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + keys + " treasure keys given to " + receiver.getName()); return; } else if (arg1.startsWith("a")) { if (args.length < 5) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give ammo <gadget> <amount> <player>"); return; } receiver = Bukkit.getPlayer(args[4]); if (receiver == null && Bukkit.getOfflinePlayer(args[4]) == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[4] + " not found!"); return; } if (Bukkit.getOfflinePlayer(args[4]) != null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[4] + " is offline."); receiver = Bukkit.getOfflinePlayer(args[4]); } if (receiver == null) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Player " + args[4] + " not found!"); return; } GadgetType gadgetType; try { gadgetType = GadgetType.valueOf(args[2].toUpperCase()); } catch (IllegalArgumentException exc) { sender.sendMessage(MessageManager.getMessage("Invalid-Gadget")); StringBuilder sb = new StringBuilder(); for (int i = 0; i < GadgetType.enabled().size(); i++) sb.append(GadgetType.enabled().get(i).toString().toLowerCase() + ((i != GadgetType.enabled().size() - 1) ? ChatColor.WHITE + "" + ChatColor.BOLD + ", " + ChatColor.RED : "")); sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Gadget Types: " + ChatColor.RED + sb.toString()); return; } if (!gadgetType.isEnabled()) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "This gadget isn't enabled!"); return; } if (!MathUtils.isInteger(args[3])) { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + args[3] + " isn't a number!"); return; } int ammo = Math.max(0, Math.min(Integer.MAX_VALUE, Integer.parseInt(args[3]))); addAmmo(gadgetType, receiver, ammo); sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + ammo + " " + gadgetType.toString().toLowerCase() + " ammo given to " + receiver.getName()); return; } else { sender.sendMessage(ChatColor.RED + "" + ChatColor.BOLD + "Incorrect Usage. /uc give <key|ammo> <amount> <player>"); return; } } private void addKey(OfflinePlayer offlinePlayer) { if (offlinePlayer == null || offlinePlayer.getUniqueId() == null) return; if (offlinePlayer instanceof Player) getUltraCosmetics().getPlayerManager().getUltraPlayer((Player) offlinePlayer).addKey(); else { if (UltraCosmeticsData.get().usingFileStorage()) SettingsManager.getData(offlinePlayer.getUniqueId()).set("Keys", getKeys(offlinePlayer.getUniqueId()) + 1); else getUltraCosmetics().getMySqlConnectionManager().getSqlUtils().addKey(MySqlConnectionManager.INDEXS.get(offlinePlayer.getUniqueId())); } } private void addAmmo(GadgetType gadgetType, OfflinePlayer receiver, int ammo) { if (receiver == null || receiver.getUniqueId() == null) return; if (receiver instanceof Player) getUltraCosmetics().getPlayerManager().getUltraPlayer((Player) receiver).addAmmo(gadgetType.toString().toLowerCase(), ammo); else { if (UltraCosmeticsData.get().usingFileStorage()) SettingsManager.getData(receiver.getUniqueId()).set("Ammo." + gadgetType.toString().toLowerCase(), ((int) SettingsManager.getData(receiver.getUniqueId()).get("Ammo." + gadgetType.toString().toLowerCase())) + ammo); else getUltraCosmetics().getMySqlConnectionManager().getSqlUtils().addAmmo(MySqlConnectionManager.INDEXS.get(receiver.getUniqueId()), gadgetType.toString().toLowerCase(), ammo); } } private int getKeys(UUID uuid) { return UltraCosmeticsData.get().usingFileStorage() ? (int) SettingsManager.getData(uuid).get("Keys") : getUltraCosmetics().getMySqlConnectionManager().getSqlUtils().getKeys(MySqlConnectionManager.INDEXS.get(uuid)); } }