· 10 years ago · Jan 31, 2016, 11:39 AM
1package me.wazup.kitbattle;
2
3import java.sql.Connection;
4import java.sql.DriverManager;
5import java.sql.ResultSet;
6import java.sql.SQLException;
7import java.sql.Statement;
8import java.util.ArrayList;
9import java.util.Arrays;
10import java.util.Collection;
11import java.util.HashMap;
12import java.util.Iterator;
13import java.util.List;
14import java.util.Random;
15import java.util.Set;
16import java.util.UUID;
17import java.util.logging.Logger;
18import net.milkbowl.vault.economy.Economy;
19import org.bukkit.Bukkit;
20import org.bukkit.ChatColor;
21import org.bukkit.GameMode;
22import org.bukkit.Location;
23import org.bukkit.Material;
24import org.bukkit.Server;
25import org.bukkit.SkullType;
26import org.bukkit.World;
27import org.bukkit.block.Block;
28import org.bukkit.block.BlockFace;
29import org.bukkit.block.BlockState;
30import org.bukkit.block.Skull;
31import org.bukkit.command.Command;
32import org.bukkit.command.CommandSender;
33import org.bukkit.configuration.ConfigurationSection;
34import org.bukkit.configuration.file.FileConfiguration;
35import org.bukkit.entity.Entity;
36import org.bukkit.entity.Player;
37import org.bukkit.inventory.Inventory;
38import org.bukkit.inventory.ItemStack;
39import org.bukkit.inventory.PlayerInventory;
40import org.bukkit.inventory.meta.ItemMeta;
41import org.bukkit.plugin.PluginDescriptionFile;
42import org.bukkit.plugin.PluginManager;
43import org.bukkit.plugin.RegisteredServiceProvider;
44import org.bukkit.plugin.ServicesManager;
45import org.bukkit.plugin.java.JavaPlugin;
46import org.bukkit.potion.PotionEffect;
47import org.bukkit.potion.PotionEffectType;
48import org.bukkit.scheduler.BukkitRunnable;
49import org.bukkit.scheduler.BukkitScheduler;
50import org.bukkit.scheduler.BukkitTask;
51import org.bukkit.scoreboard.DisplaySlot;
52import org.bukkit.scoreboard.Objective;
53import org.bukkit.scoreboard.Score;
54import org.bukkit.scoreboard.Scoreboard;
55import org.bukkit.scoreboard.ScoreboardManager;
56
57public class main
58 extends JavaPlugin
59{
60 public static main plugin;
61 Logger logger = Logger.getLogger("Minecraft");
62 List<String> commands = Arrays.asList(new String[] { "admin", "list", "create", "delete", "setspawn", "join", "leave", "reset", "coins", "setchallenge", "kit", "kitunlocker", "resetkit", "stats", "reload", "info" });
63 String kb = ChatColor.DARK_AQUA + "[" + ChatColor.AQUA + "KitBattle" + ChatColor.DARK_AQUA + "] " + ChatColor.GRAY;
64 Random random = new Random();
65 String ListOfMaps = null;
66 HashMap<String, Location> maps = new HashMap();
67 HashMap<String, PlayerData> playerData = new HashMap();
68 HashMap<String, Kit> Kits = new HashMap();
69 HashMap<String, Rank> Ranks = new HashMap();
70 HashMap<String, String> Challenging = new HashMap();
71 HashMap<String, BukkitTask> Fighting = new HashMap();
72 ArrayList<String> game = new ArrayList();
73 ArrayList<String> cantMove = new ArrayList();
74 ArrayList<String> openingKitunlocker = new ArrayList();
75 ItemStack KitSelector = setName(new ItemStack(Material.CHEST), ChatColor.GRAY + "Kit Selector (" + ChatColor.GREEN + "Right click!" + ChatColor.GRAY + ")");
76 ItemStack ShopOpener = setName(new ItemStack(Material.ANVIL), ChatColor.GRAY + "Shop (" + ChatColor.GREEN + "Right click!" + ChatColor.GRAY + ")");
77 ItemStack Challenger = setName(new ItemStack(Material.BLAZE_ROD), ChatColor.GREEN + "Right click a player to challenge him!");
78 ItemStack KitUnlocker = setName(new ItemStack(Material.CHEST), ChatColor.GRAY + "Kit Unlocker! (" + ChatColor.GREEN + "Right click!" + ChatColor.GRAY + ")");
79 listener listen;
80 AbilityListener abilityListener;
81 Config config;
82 FileManager fileManager;
83 Messages msgs;
84 public static Economy econ = null;
85 Connection connection;
86 ScoreboardManager manager;
87 Location challengeLocation1;
88 Location challengeLocation2;
89 String currentMap = null;
90 Iterator<String> shuffler;
91 String playerNamePrefix = "player_name";
92 BukkitTask Updater;
93 int totalUpdates = 0;
94 long nextUpdate;
95
96 public void onEnable()
97 {
98 loadConfig0();this.logger.info("[KitBattle] has been enabled!");
99 plugin = this;
100 this.fileManager = new FileManager(this);
101 this.fileManager.setupAll();
102 this.fileManager.setupKits();
103 this.fileManager.loadKits();
104 this.fileManager.setupRanks();
105 this.fileManager.loadRanks();
106 this.fileManager.setupAbilities();
107
108 this.msgs = new Messages(this.fileManager);
109 this.msgs.createDefaultMessages();
110 this.msgs.loadMessages();
111
112 this.config = new Config(this);
113 this.config.loadConfig();
114 this.config.loadAbilities();
115 this.config.loadSignPrefixes();
116
117 this.kb = this.msgs.prefix;
118 this.listen = new listener(this, this.kb);
119 this.abilityListener = new AbilityListener(this, this.kb);
120 Bukkit.getPluginManager().registerEvents(this.listen, this);
121 Bukkit.getPluginManager().registerEvents(this.abilityListener, this);
122 this.manager = Bukkit.getScoreboardManager();
123 if (getConfig().getBoolean("use-Vault"))
124 {
125 setupEcon();
126 if (econ != null) {
127 this.logger.info("[KitBattle] Found vault! The option to use vault is enabled, due to that the plugin will use vault instead of coins");
128 } else {
129 this.logger.info("[KitBattle] The option to use vault is enabled, but Vault doesn't seem to be installed! due to that the plugin will continue using coins system");
130 }
131 }
132 if (this.config.useMySQL) {
133 new BukkitRunnable()
134 {
135 public void run()
136 {
137 try
138 {
139 main.this.connection = DriverManager.getConnection("jdbc:mysql://" + main.this.config.mysqlhost + ":" + main.this.config.mysqlport + "/" + main.this.config.mysqldatabase, main.this.config.mysqlusername, main.this.config.mysqlpassword);
140 main.this.connection.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS " + main.this.config.tableprefix + " (player_uuid VARCHAR(40), player_name VARCHAR(40), Coins int, Kills int, Deaths int, Exp int, Rank VARCHAR(20), Kitunlockers int, Kits VARCHAR(9999))");
141 main.this.fixUpdater();
142 }
143 catch (SQLException localSQLException)
144 {
145 localSQLException.printStackTrace();
146 }
147 }
148 }.runTaskAsynchronously(this);
149 } else {
150 fixUpdater();
151 }
152 Player[] arrayOfPlayer;
153 int j = (arrayOfPlayer = Bukkit.getOnlinePlayers()).length;
154 for (int i = 0; i < j; i++)
155 {
156 Player localPlayer = arrayOfPlayer[i];
157 this.playerData.put(localPlayer.getName(), new PlayerData(localPlayer, this));
158 }
159 Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable()
160 {
161 public void run()
162 {
163 main.this.loadMaps();
164 main.this.updateList();
165 main.this.loadChallengeLocation();
166 if (main.this.config.BungeeMode)
167 {
168 Player[] arrayOfPlayer;
169 int j;
170 int i;
171 Player localPlayer;
172 if (!main.this.maps.isEmpty())
173 {
174 main.this.shuffler = main.this.maps.keySet().iterator();
175 if ((main.this.maps.size() > 1) && (main.this.config.MapShuffle)) {
176 main.this.startShuffler();
177 } else {
178 main.this.currentMap = ((String)main.this.shuffler.next());
179 }
180 j = (arrayOfPlayer = Bukkit.getOnlinePlayers()).length;
181 for (i = 0; i < j; i++)
182 {
183 localPlayer = arrayOfPlayer[i];
184 localPlayer.sendMessage(main.this.kb + main.this.msgs.PlayerJoinMap.replace("%map%", main.this.currentMap));
185 main.this.game.add(localPlayer.getName());
186 localPlayer.teleport((Location)main.this.maps.get(main.this.currentMap));
187 ((PlayerData)main.this.playerData.get(localPlayer.getName())).saveData(localPlayer, main.this.currentMap);
188 main.this.clearData(localPlayer);
189 main.this.giveDefaultItems(localPlayer);
190 try
191 {
192 main.this.createScoreboard(localPlayer);
193 }
194 catch (Exception localException)
195 {
196 main.this.logger.info("[KitBattle] Couldn't create a scoreboard for the player " + localPlayer.getName() + "! the player stats probably didn't load quickly enough");
197 localException.printStackTrace();
198 }
199 }
200 }
201 else
202 {
203 j = (arrayOfPlayer = Bukkit.getOnlinePlayers()).length;
204 for (i = 0; i < j; i++)
205 {
206 localPlayer = arrayOfPlayer[i];
207 localPlayer.kickPlayer(main.this.kb + main.this.msgs.NoAvailableMaps);
208 }
209 }
210 }
211 }
212 }, getConfig().getInt("Load-Delay"));
213 if (this.config.UUID) {
214 this.playerNamePrefix = "player_uuid";
215 }
216 }
217
218 public void onDisable()
219 {
220 this.logger.info("[KitBattle] has been disabled!");
221 Object localObject;
222 for (Iterator localIterator1 = this.game.iterator(); localIterator1.hasNext();)
223 {
224 localObject = (String)localIterator1.next();
225 Player localPlayer = Bukkit.getPlayer((String)localObject);
226 localPlayer.sendMessage(this.kb + this.msgs.pluginReloadKickMessage);
227 clearData(localPlayer);
228 ((PlayerData)this.playerData.get(localPlayer.getName())).restoreData(localPlayer);
229 }
230 for (localIterator1 = this.abilityListener.toRemove.iterator(); localIterator1.hasNext();)
231 {
232 localObject = (Entity)localIterator1.next();
233 ((Entity)localObject).remove();
234 }
235 Player[] arrayOfPlayer;
236 int j = (arrayOfPlayer = Bukkit.getOnlinePlayers()).length;
237 for (int i = 0; i < j; i++)
238 {
239 localObject = arrayOfPlayer[i];
240 ((PlayerData)this.playerData.get(((Player)localObject).getName())).saveStatsIntoFile((Player)localObject, true);
241 }
242 for (Iterator localIterator2 = this.abilityListener.toRollback.iterator(); localIterator2.hasNext();)
243 {
244 localObject = (BlockState)localIterator2.next();
245 this.abilityListener.Rollback((BlockState)localObject);
246 }
247 }
248
249 public boolean onCommand(final CommandSender paramCommandSender, Command paramCommand, String paramString, final String[] paramArrayOfString)
250 {
251 if ((paramString.equalsIgnoreCase("kb")) || (paramString.equalsIgnoreCase("kitbattle")))
252 {
253 if (paramArrayOfString.length == 0)
254 {
255 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ----------" + ChatColor.AQUA + " KitBattle " + ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + "----------");
256 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Main command");
257 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "List" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Shows a list of maps");
258 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Stats" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "View your stats");
259 if (!this.config.BungeeMode)
260 {
261 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Join" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Join the selected map");
262 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Leave" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Leave your current map");
263 }
264 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Resetkit" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Reset your current kit!");
265 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Info" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Shows some information");
266 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.RED + "Admin" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Shows the admin commands");
267 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " --------------------------");
268 return true;
269 }
270 if (!this.commands.contains(paramArrayOfString[0].toLowerCase()))
271 {
272 paramCommandSender.sendMessage(this.kb + this.msgs.UnknownCommand);
273 return true;
274 }
275 Object localObject1;
276 Object localObject2;
277 if (paramArrayOfString[0].equalsIgnoreCase("join"))
278 {
279 if ((paramCommandSender instanceof Player))
280 {
281 localObject1 = (Player)paramCommandSender;
282 if (this.config.BungeeMode)
283 {
284 ((Player)localObject1).sendMessage(this.kb + this.msgs.CommandDisabled);
285 return true;
286 }
287 if (paramArrayOfString.length == 1)
288 {
289 ((Player)localObject1).sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Join" + ChatColor.GRAY + " <Map>");
290 return true;
291 }
292 localObject2 = paramArrayOfString[1].toLowerCase();
293 if (!this.maps.containsKey(localObject2))
294 {
295 ((Player)localObject1).sendMessage(this.kb + this.msgs.UnknownMap);
296 return true;
297 }
298 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerJoinMap.replace("%map%", (CharSequence)localObject2));
299 if (this.game.contains(((Player)localObject1).getName()))
300 {
301 clearData((Player)localObject1);
302 ((Player)localObject1).teleport((Location)this.maps.get(localObject2));
303 giveDefaultItems((Player)localObject1);
304 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).setMap((String)localObject2);
305 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).setKit(null);
306 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).killstreak = 0;
307 removeFromChallenge((Player)localObject1);
308 }
309 else
310 {
311 this.game.add(((Player)localObject1).getName());
312 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).saveData((Player)localObject1, (String)localObject2);
313 clearData((Player)localObject1);
314 ((Player)localObject1).teleport((Location)this.maps.get(localObject2));
315 giveDefaultItems((Player)localObject1);
316 createScoreboard((Player)localObject1);
317 }
318 }
319 else
320 {
321 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
322 }
323 }
324 else if (paramArrayOfString[0].equalsIgnoreCase("leave"))
325 {
326 if ((paramCommandSender instanceof Player))
327 {
328 localObject1 = (Player)paramCommandSender;
329 if (this.config.BungeeMode)
330 {
331 ((Player)localObject1).sendMessage(this.kb + this.msgs.CommandDisabled);
332 return true;
333 }
334 if (this.game.contains(((Player)localObject1).getName())) {
335 leave((Player)localObject1);
336 } else {
337 ((Player)localObject1).sendMessage(this.kb + this.msgs.NotInAGame);
338 }
339 }
340 else
341 {
342 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
343 }
344 }
345 else if (paramArrayOfString[0].equalsIgnoreCase("admin"))
346 {
347 if (paramCommandSender.hasPermission("kitbattle.admin"))
348 {
349 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ----------" + ChatColor.AQUA + " KitBattle Admin " + ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + "----------");
350 if (!this.config.BungeeMode)
351 {
352 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Create" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Create a new map!");
353 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Delete" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Delete a map!");
354 }
355 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Setspawn" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Change a map spawnpoint location");
356 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Reset" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Resets a player data");
357 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Coins" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Modify a player coins");
358 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Setchallenge" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Sets the location for challenges");
359 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Kit" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Modify the kits");
360 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "KitUnlocker" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Give a player Kitunlockers");
361 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + " - " + ChatColor.AQUA + "/kb " + ChatColor.GREEN + "Reload" + ChatColor.DARK_AQUA + " - " + ChatColor.GRAY + "Reload the config files");
362 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ---------------------------------");
363 }
364 else
365 {
366 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
367 }
368 }
369 else if (paramArrayOfString[0].equalsIgnoreCase("list"))
370 {
371 if (this.ListOfMaps == null)
372 {
373 paramCommandSender.sendMessage(this.kb + this.msgs.NoAvailableMaps);
374 return true;
375 }
376 paramCommandSender.sendMessage(this.kb + "List: " + this.ListOfMaps);
377 }
378 else if (paramArrayOfString[0].equalsIgnoreCase("stats"))
379 {
380 if ((paramCommandSender instanceof Player))
381 {
382 localObject1 = (Player)paramCommandSender;
383 localObject2 = paramArrayOfString.length == 1 ? localObject1 : Bukkit.getPlayer(paramArrayOfString[1]);
384 if (localObject2 == null)
385 {
386 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerNotFound);
387 return true;
388 }
389 PlayerData localPlayerData1 = (PlayerData)this.playerData.get(((Player)localObject2).getName());
390 ((Player)localObject1).sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ----------" + ChatColor.YELLOW + " " + ((Player)localObject2).getName() + ChatColor.AQUA + " Stats " + ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + "----------");
391 ((Player)localObject1).sendMessage(ChatColor.AQUA + "Kills: " + ChatColor.GREEN + localPlayerData1.kills);
392 ((Player)localObject1).sendMessage(ChatColor.AQUA + "Deaths: " + ChatColor.GREEN + localPlayerData1.deaths);
393 ((Player)localObject1).sendMessage(ChatColor.AQUA + "Coins: " + ChatColor.GREEN + localPlayerData1.coins);
394 ((Player)localObject1).sendMessage(ChatColor.AQUA + "Exp: " + ChatColor.GREEN + localPlayerData1.dataexp);
395 ((Player)localObject1).sendMessage(ChatColor.AQUA + "Rank: " + ChatColor.GREEN + localPlayerData1.rank.getName());
396 ((Player)localObject1).sendMessage(ChatColor.AQUA + "KDR: " + ChatColor.GREEN + localPlayerData1.kills / (localPlayerData1.deaths > 0 ? Double.valueOf(localPlayerData1.deaths).doubleValue() : 1.0D));
397 ((Player)localObject1).sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ---------------------------------");
398 }
399 else
400 {
401 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
402 }
403 }
404 else
405 {
406 Object localObject7;
407 Object localObject9;
408 Object localObject10;
409 Object localObject15;
410 Object localObject12;
411 Object localObject13;
412 if (paramArrayOfString[0].equalsIgnoreCase("reload"))
413 {
414 if (paramCommandSender.hasPermission("kitbattle.reload"))
415 {
416 this.fileManager.setupAll();
417 this.fileManager.setupKits();
418 this.Kits.clear();
419 this.fileManager.loadKits();
420 this.fileManager.setupRanks();
421 this.Ranks.clear();
422 this.fileManager.loadRanks();
423 this.fileManager.setupAbilities();
424 this.msgs.createDefaultMessages();
425 this.msgs.loadMessages();
426 this.config.loadConfig();
427 this.config.loadAbilities();
428 this.config.loadSignPrefixes();
429 this.kb = this.msgs.prefix;
430 this.listen.kb = this.kb;
431 this.abilityListener.kb = this.kb;
432 this.maps.clear();
433 loadMaps();
434 updateList();
435 loadChallengeLocation();
436 if (getConfig().getBoolean("use-Vault"))
437 {
438 setupEcon();
439 if (econ != null) {
440 this.logger.info("[KitBattle] Found vault! The option to use vault is enabled, due to that the plugin will use vault instead of coins");
441 } else {
442 this.logger.info("[KitBattle] The option to use vault is enabled, but Vault doesn't seem to be installed! due to that the plugin will continue using coins system");
443 }
444 }
445 if (this.config.useMySQL) {
446 new BukkitRunnable()
447 {
448 public void run()
449 {
450 try
451 {
452 if (main.this.connection == null) {
453 main.this.connection = DriverManager.getConnection("jdbc:mysql://" + main.this.config.mysqlhost + ":" + main.this.config.mysqlport + "/" + main.this.config.mysqldatabase, main.this.config.mysqlusername, main.this.config.mysqlpassword);
454 }
455 main.this.connection.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS " + main.this.config.tableprefix + " (player_uuid VARCHAR(40), player_name VARCHAR(40), Coins int, Kills int, Deaths int, Exp int, Rank VARCHAR(20), Kitunlockers int, Kits VARCHAR(9999))");
456 }
457 catch (SQLException localSQLException)
458 {
459 localSQLException.printStackTrace();
460 }
461 }
462 }.runTaskAsynchronously(this);
463 }
464 if ((this.config.BungeeMode) && (this.maps.isEmpty()))
465 {
466 k = (localObject7 = Bukkit.getOnlinePlayers()).length;
467 for (i = 0; i < k; i++)
468 {
469 localObject1 = localObject7[i];
470 ((Player)localObject1).kickPlayer(this.kb + this.msgs.NoAvailableMaps);
471 }
472 }
473 int k = (localObject7 = Bukkit.getOnlinePlayers()).length;
474 for (int i = 0; i < k; i++)
475 {
476 localObject1 = localObject7[i];
477 localObject9 = (PlayerData)this.playerData.get(((Player)localObject1).getName());
478 if ((((PlayerData)localObject9).getMap() != null) && (!this.maps.containsKey(((PlayerData)localObject9).getMap()))) {
479 if (this.config.BungeeMode)
480 {
481 if (!this.Fighting.containsKey(((Player)localObject1).getName()))
482 {
483 clearData((Player)localObject1);
484 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).setKit(null);
485 giveDefaultItems((Player)localObject1);
486 ((Player)localObject1).teleport((Location)this.maps.get(this.currentMap));
487 }
488 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).setMap(this.currentMap);
489 }
490 else if (this.maps.isEmpty())
491 {
492 ((Player)localObject1).sendMessage(this.kb + this.msgs.MapDeletedKick);
493 ((Player)localObject1).performCommand("kb leave");
494 }
495 else
496 {
497 ((Player)localObject1).sendMessage(this.kb + this.msgs.MapDeletedSendToAnotherMap);
498 ((Player)localObject1).performCommand("kb join " + (String)this.maps.keySet().iterator().next());
499 }
500 }
501 localObject10 = new ArrayList();
502 int i4 = (localObject15 = ((PlayerData)localObject9).myKits.getContents()).length;
503 for (int i2 = 0; i2 < i4; i2++)
504 {
505 localObject12 = localObject15[i2];
506 if (localObject12 == null) {
507 break;
508 }
509 ((ArrayList)localObject10).add(ChatColor.stripColor(((ItemStack)localObject12).getItemMeta().getDisplayName().toLowerCase()));
510 }
511 ((PlayerData)localObject9).myKits.clear();
512 ((PlayerData)localObject9).Shop.clear();
513 for (localObject13 = ((ArrayList)localObject10).iterator(); ((Iterator)localObject13).hasNext();)
514 {
515 localObject12 = (String)((Iterator)localObject13).next();
516 if (this.Kits.containsKey(localObject12)) {
517 ((PlayerData)localObject9).myKits.addItem(new ItemStack[] { ((Kit)this.Kits.get(localObject12)).getLogo() });
518 }
519 }
520 for (localObject13 = this.Kits.keySet().iterator(); ((Iterator)localObject13).hasNext();)
521 {
522 localObject12 = (String)((Iterator)localObject13).next();
523 if (!((ArrayList)localObject10).contains(localObject12)) {
524 ((PlayerData)localObject9).Shop.addItem(new ItemStack[] { ((Kit)this.Kits.get(localObject12)).getShopLogo() });
525 }
526 }
527 }
528 if (this.config.UUID) {
529 this.playerNamePrefix = "player_uuid";
530 } else {
531 this.playerNamePrefix = "player_name";
532 }
533 fixUpdater();
534
535 paramCommandSender.sendMessage(this.kb + "The plugin has been reloaded");
536 }
537 else
538 {
539 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
540 }
541 }
542 else
543 {
544 Object localObject3;
545 Object localObject5;
546 if (paramArrayOfString[0].equalsIgnoreCase("resetkit"))
547 {
548 if ((paramCommandSender instanceof Player))
549 {
550 localObject1 = (Player)paramCommandSender;
551 if (((Player)localObject1).hasPermission("kitbattle.resetkit"))
552 {
553 if (((PlayerData)this.playerData.get(((Player)localObject1).getName())).getKit() == null)
554 {
555 ((Player)localObject1).sendMessage(this.kb + this.msgs.MustHaveSelectedKit);
556 return true;
557 }
558 localObject3 = ((PlayerData)this.playerData.get(((Player)localObject1).getName())).getKit().getName();
559 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).setKit(null);
560 ((Player)localObject1).getInventory().clear();
561 ((Player)localObject1).getInventory().setArmorContents(null);
562 for (localObject7 = ((Player)localObject1).getActivePotionEffects().iterator(); ((Iterator)localObject7).hasNext();)
563 {
564 localObject5 = (PotionEffect)((Iterator)localObject7).next();
565 ((Player)localObject1).removePotionEffect(((PotionEffect)localObject5).getType());
566 }
567 ((Player)localObject1).setAllowFlight(false);
568 ((Player)localObject1).setFlying(false);
569 giveDefaultItems((Player)localObject1);
570 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerResetKit.replace("%kit%", (CharSequence)localObject3));
571 }
572 else
573 {
574 ((Player)localObject1).sendMessage(this.kb + this.msgs.nopermission);
575 }
576 }
577 else
578 {
579 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
580 }
581 }
582 else if (paramArrayOfString[0].equalsIgnoreCase("create"))
583 {
584 if ((paramCommandSender instanceof Player))
585 {
586 localObject1 = (Player)paramCommandSender;
587 if (((Player)localObject1).hasPermission("kitbattle.create"))
588 {
589 if (this.config.BungeeMode)
590 {
591 ((Player)localObject1).sendMessage(this.kb + this.msgs.CommandDisabled);
592 return true;
593 }
594 if (paramArrayOfString.length == 1)
595 {
596 ((Player)localObject1).sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Create" + ChatColor.GRAY + " <Map>");
597 return true;
598 }
599 localObject3 = paramArrayOfString[1].toLowerCase();
600 if (this.maps.containsKey(localObject3))
601 {
602 ((Player)localObject1).sendMessage(this.kb + "There is already a map with that name!");
603 return true;
604 }
605 setSpawn((String)localObject3, ((Player)localObject1).getLocation());
606 this.maps.put(localObject3, ((Player)localObject1).getLocation());
607 updateList();
608 ((Player)localObject1).sendMessage(this.kb + "The map " + ChatColor.AQUA + (String)localObject3 + ChatColor.GRAY + " has been created successfully! the default location is set to (" + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockX() + ChatColor.GRAY + ", " + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockY() + ChatColor.GRAY + ", " + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockZ() + ChatColor.GRAY + ") to change it use /kb " + ChatColor.GREEN + "Setspawn " + ChatColor.AQUA + (String)localObject3);
609 }
610 else
611 {
612 ((Player)localObject1).sendMessage(this.kb + this.msgs.nopermission);
613 }
614 }
615 else
616 {
617 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
618 }
619 }
620 else if (paramArrayOfString[0].equalsIgnoreCase("delete"))
621 {
622 if (paramCommandSender.hasPermission("kitbattle.delete"))
623 {
624 if (this.config.BungeeMode)
625 {
626 paramCommandSender.sendMessage(this.kb + this.msgs.CommandDisabled);
627 return true;
628 }
629 if (paramArrayOfString.length == 1)
630 {
631 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Delete" + ChatColor.GRAY + " <Map>");
632 return true;
633 }
634 localObject1 = paramArrayOfString[1].toLowerCase();
635 if (!this.maps.containsKey(localObject1))
636 {
637 paramCommandSender.sendMessage(this.kb + this.msgs.UnknownMap);
638 return true;
639 }
640 this.fileManager.getMapsConfig().set("Maps." + (String)localObject1, null);
641 this.fileManager.saveMapsConfig();
642 this.maps.remove(localObject1);
643 updateList();
644 localObject3 = new ArrayList();
645 for (localObject7 = this.game.iterator(); ((Iterator)localObject7).hasNext();)
646 {
647 localObject5 = (String)((Iterator)localObject7).next();
648 if (((PlayerData)this.playerData.get(localObject5)).getMap().equalsIgnoreCase((String)localObject1))
649 {
650 localObject9 = Bukkit.getPlayer((String)localObject5);
651 if (this.maps.isEmpty())
652 {
653 ((Player)localObject9).sendMessage(this.kb + this.msgs.MapDeletedKick);
654 ((ArrayList)localObject3).add(localObject5);
655 }
656 else
657 {
658 ((Player)localObject9).sendMessage(this.kb + this.msgs.MapDeletedSendToAnotherMap);
659 ((Player)localObject9).performCommand("kb join " + (String)this.maps.keySet().iterator().next());
660 }
661 }
662 }
663 for (localObject7 = ((ArrayList)localObject3).iterator(); ((Iterator)localObject7).hasNext();)
664 {
665 localObject5 = (String)((Iterator)localObject7).next();
666 Bukkit.getPlayer((String)localObject5).performCommand("kb leave");
667 }
668 paramCommandSender.sendMessage(this.kb + "The map " + ChatColor.AQUA + (String)localObject1 + ChatColor.GRAY + " was deleted successfully!");
669 }
670 else
671 {
672 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
673 }
674 }
675 else if (paramArrayOfString[0].equalsIgnoreCase("setspawn"))
676 {
677 if ((paramCommandSender instanceof Player))
678 {
679 localObject1 = (Player)paramCommandSender;
680 if (((Player)localObject1).hasPermission("kitbattle.setspawn"))
681 {
682 if (paramArrayOfString.length == 1)
683 {
684 ((Player)localObject1).sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Setspawn" + ChatColor.GRAY + " <Map>");
685 return true;
686 }
687 localObject3 = paramArrayOfString[1].toLowerCase();
688 if (!this.maps.containsKey(localObject3))
689 {
690 ((Player)localObject1).sendMessage(this.kb + this.msgs.UnknownMap);
691 return true;
692 }
693 setSpawn((String)localObject3, ((Player)localObject1).getLocation());
694 this.maps.put(localObject3, ((Player)localObject1).getLocation());
695 ((Player)localObject1).sendMessage(this.kb + "You have changed the map " + ChatColor.AQUA + (String)localObject3 + ChatColor.GRAY + " spawnpoint location to (" + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockX() + ChatColor.GRAY + ", " + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockY() + ChatColor.GRAY + ", " + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockZ() + ChatColor.GRAY + ")");
696 }
697 else
698 {
699 ((Player)localObject1).sendMessage(this.kb + this.msgs.nopermission);
700 }
701 }
702 else
703 {
704 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
705 }
706 }
707 else if (paramArrayOfString[0].equalsIgnoreCase("reset"))
708 {
709 if (paramCommandSender.hasPermission("kitbattle.reset"))
710 {
711 if (paramArrayOfString.length == 1)
712 {
713 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Reset" + ChatColor.GRAY + " <Player>");
714 return true;
715 }
716 localObject1 = Bukkit.getPlayer(paramArrayOfString[1]);
717 if (localObject1 != null)
718 {
719 localObject3 = (PlayerData)this.playerData.get(((Player)localObject1).getName());
720 ((PlayerData)localObject3).joined = true;
721 ((PlayerData)localObject3).coins = this.config.StartingCoins;
722 ((PlayerData)localObject3).kills = 0;
723 ((PlayerData)localObject3).deaths = 0;
724 ((PlayerData)localObject3).dataexp = 0;
725 ((PlayerData)localObject3).rank = ((Rank)Rank.orderd.get(0));
726 ((PlayerData)localObject3).rankNumber = 0;
727 ((PlayerData)localObject3).kitUnlockers = this.config.StartingAmountOfKitUnlockers;
728 ((PlayerData)localObject3).updateNextRank();
729 ((PlayerData)localObject3).myKits.clear();
730 localObject5 = new ArrayList();
731 for (localObject9 = this.config.defaultKits.iterator(); ((Iterator)localObject9).hasNext();)
732 {
733 localObject7 = (String)((Iterator)localObject9).next();
734 ((List)localObject5).add(((String)localObject7).toLowerCase());
735 }
736 for (localObject9 = ((List)localObject5).iterator(); ((Iterator)localObject9).hasNext();)
737 {
738 localObject7 = (String)((Iterator)localObject9).next();
739 if (this.Kits.containsKey(localObject7)) {
740 ((PlayerData)localObject3).myKits.addItem(new ItemStack[] { ((Kit)this.Kits.get(localObject7)).getLogo() });
741 }
742 }
743 ((PlayerData)localObject3).Shop.clear();
744 for (localObject9 = this.Kits.keySet().iterator(); ((Iterator)localObject9).hasNext();)
745 {
746 localObject7 = (String)((Iterator)localObject9).next();
747 if ((!((List)localObject5).contains(localObject7)) &&
748 (this.Kits.containsKey(localObject7))) {
749 ((PlayerData)localObject3).Shop.addItem(new ItemStack[] { ((Kit)this.Kits.get(localObject7)).getShopLogo() });
750 }
751 }
752 if (this.game.contains(((Player)localObject1).getName()))
753 {
754 createScoreboard((Player)localObject1);
755 if (((PlayerData)localObject3).getKit() == null)
756 {
757 ((Player)localObject1).getInventory().clear();
758 giveDefaultItems((Player)localObject1);
759 }
760 }
761 paramCommandSender.sendMessage(this.kb + "The player " + ChatColor.AQUA + paramArrayOfString[1] + ChatColor.GRAY + " data has been " + ChatColor.GREEN + "successfully " + ChatColor.GRAY + "cleared!");
762 }
763 else
764 {
765 paramCommandSender.sendMessage(this.kb + "Couldn't find that player!");
766 }
767 }
768 else
769 {
770 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
771 }
772 }
773 else if (paramArrayOfString[0].equalsIgnoreCase("coins"))
774 {
775 if (paramCommandSender.hasPermission("kitbattle.coins"))
776 {
777 if ((paramArrayOfString.length < 4) || ((!paramArrayOfString[1].equalsIgnoreCase("add")) && (!paramArrayOfString[1].equalsIgnoreCase("set")) && (!paramArrayOfString[1].equalsIgnoreCase("remove"))) || (!isNumber(paramArrayOfString[3])))
778 {
779 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Coins" + ChatColor.GRAY + " Add/Set/Remove <Player> <Amount>");
780 return true;
781 }
782 localObject1 = Bukkit.getPlayer(paramArrayOfString[2]);
783 if (localObject1 != null)
784 {
785 localObject3 = (PlayerData)this.playerData.get(((Player)localObject1).getName());
786 int m = Integer.valueOf(paramArrayOfString[3]).intValue();
787 localObject7 = paramArrayOfString[1].toLowerCase();
788 int i1 = getCoins((Player)localObject1);
789 if (((String)localObject7).equals("add"))
790 {
791 addCoins((Player)localObject1, m);
792 paramCommandSender.sendMessage(this.kb + "You gave the player " + ChatColor.AQUA + ((Player)localObject1).getName() + ChatColor.GRAY + " (" + ChatColor.GREEN + m + ChatColor.GRAY + ") coins!");
793 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerGainCoinsThroughCommand.replace("%coins%", String.valueOf(m)));
794 }
795 else if (((String)localObject7).equals("set"))
796 {
797 setCoins((Player)localObject1, m);
798 paramCommandSender.sendMessage(this.kb + "You have set the player " + ChatColor.AQUA + ((Player)localObject1).getName() + ChatColor.GRAY + " coins to (" + ChatColor.GREEN + m + ChatColor.GRAY + ")");
799 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerCoinsSetThroughCommand.replace("%coins%", String.valueOf(m)));
800 }
801 else if (((String)localObject7).equals("remove"))
802 {
803 removeCoins((Player)localObject1, m);
804 paramCommandSender.sendMessage(this.kb + "You have removed (" + ChatColor.GREEN + m + ChatColor.GRAY + ") coins from the player " + ChatColor.AQUA + ((Player)localObject1).getName() + ChatColor.GRAY + "!");
805 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerLoseCoinsThroughCommand.replace("%coins%", String.valueOf(m)));
806 }
807 if (this.game.contains(((Player)localObject1).getName())) {
808 try
809 {
810 localObject10 = ((Player)localObject1).getScoreboard();
811 if ((((Scoreboard)localObject10).getObjective(DisplaySlot.SIDEBAR) == null) || (!((Scoreboard)localObject10).getObjective(DisplaySlot.SIDEBAR).getDisplayName().equals(ChatColor.YELLOW + ChatColor.BOLD + ChatColor.UNDERLINE + "KitBattle")))
812 {
813 createScoreboard((Player)localObject1);
814 }
815 else
816 {
817 localObject12 = ((Scoreboard)localObject10).getObjective(DisplaySlot.SIDEBAR);
818 ((Scoreboard)localObject10).resetScores(this.msgs.scoreboard_coins.replace("%coins%", String.valueOf(i1)));
819 ((Objective)localObject12).getScore(this.msgs.scoreboard_coins.replace("%coins%", String.valueOf(getCoins((Player)localObject1)))).setScore(1);
820 }
821 }
822 catch (Exception localException)
823 {
824 localException.printStackTrace();
825 this.logger.info("[KitBattle] Error has occured while creating/updating the player: " + ((Player)localObject1).getName() + " scoreboard!");
826 }
827 }
828 }
829 else
830 {
831 paramCommandSender.sendMessage(this.kb + "Couldn't find that player!");
832 }
833 }
834 else
835 {
836 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
837 }
838 }
839 else if (paramArrayOfString[0].equalsIgnoreCase("setchallenge"))
840 {
841 if ((paramCommandSender instanceof Player))
842 {
843 if (paramCommandSender.hasPermission("kitbattle.setchallenge"))
844 {
845 localObject1 = (Player)paramCommandSender;
846 if ((paramArrayOfString.length == 1) || (!isNumber(paramArrayOfString[1])) || (Integer.valueOf(paramArrayOfString[1]).intValue() > 2) || (Integer.valueOf(paramArrayOfString[1]).intValue() < 1))
847 {
848 ((Player)localObject1).sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Setchallenge " + ChatColor.GRAY + "1/2");
849 return true;
850 }
851 int j = Integer.valueOf(paramArrayOfString[1]).intValue();
852 if (j == 2) {
853 this.challengeLocation2 = ((Player)localObject1).getLocation().add(0.0D, 1.0D, 0.0D);
854 } else {
855 this.challengeLocation1 = ((Player)localObject1).getLocation().add(0.0D, 1.0D, 0.0D);
856 }
857 getConfig().set("Challenge-Location." + j + ".world", ((Player)localObject1).getWorld().getName());
858 getConfig().set("Challenge-Location." + j + ".x", Integer.valueOf(((Player)localObject1).getLocation().getBlockX()));
859 getConfig().set("Challenge-Location." + j + ".y", Integer.valueOf(((Player)localObject1).getLocation().getBlockY() + 1));
860 getConfig().set("Challenge-Location." + j + ".z", Integer.valueOf(((Player)localObject1).getLocation().getBlockZ()));
861 getConfig().set("Challenge-Location." + j + ".yaw", Float.valueOf(((Player)localObject1).getLocation().getYaw()));
862 getConfig().set("Challenge-Location." + j + ".pitch", Float.valueOf(((Player)localObject1).getLocation().getPitch()));
863 saveConfig();
864 ((Player)localObject1).sendMessage(this.kb + "The " + ChatColor.GREEN + "1v1" + ChatColor.GRAY + " challenge location " + ChatColor.LIGHT_PURPLE + "#" + j + ChatColor.GRAY + " has been set! (" + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockX() + ChatColor.GRAY + ", " + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockY() + ChatColor.GRAY + ", " + ChatColor.AQUA + ((Player)localObject1).getLocation().getBlockZ() + ChatColor.GRAY + ")");
865 }
866 else
867 {
868 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
869 }
870 }
871 else {
872 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
873 }
874 }
875 else if (paramArrayOfString[0].equalsIgnoreCase("kit"))
876 {
877 if (paramCommandSender.hasPermission("kitbattle.kit"))
878 {
879 if ((paramArrayOfString.length == 1) || ((!paramArrayOfString[1].equalsIgnoreCase("Create")) && (!paramArrayOfString[1].equalsIgnoreCase("Delete")) && (!paramArrayOfString[1].equalsIgnoreCase("Rename")) && (!paramArrayOfString[1].equalsIgnoreCase("Enable")) && (!paramArrayOfString[1].equalsIgnoreCase("Disable"))))
880 {
881 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Kit " + ChatColor.GRAY + "Create/Delete/Rename/Enable/Disable");
882 return true;
883 }
884 localObject1 = paramArrayOfString[1].toLowerCase();
885 Object localObject4;
886 Object localObject6;
887 ItemStack localItemStack1;
888 Object localObject11;
889 Object localObject14;
890 Object localObject17;
891 Object localObject16;
892 Object localObject20;
893 Object localObject19;
894 Object localObject18;
895 if (((String)localObject1).equals("create"))
896 {
897 if ((paramCommandSender instanceof Player))
898 {
899 localObject4 = (Player)paramCommandSender;
900 if ((paramArrayOfString.length < 5) || (!isMaterial(paramArrayOfString[3].split(":")[0].toUpperCase())) || (!isNumber(paramArrayOfString[4])))
901 {
902 ((Player)localObject4).sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Kit " + ChatColor.GRAY + "Create <Name> <Logo " + ChatColor.LIGHT_PURPLE + ChatColor.UNDERLINE + "(MATERIAL ENUM) " + ChatColor.GRAY + "> <Price>");
903 return true;
904 }
905 localObject6 = paramArrayOfString[2];
906 if (this.Kits.containsKey(((String)localObject6).toLowerCase()))
907 {
908 ((Player)localObject4).sendMessage(this.kb + "There is already a kit with that name!");
909 return true;
910 }
911 int n = Integer.valueOf(paramArrayOfString[4]).intValue();
912 if (paramArrayOfString[3].contains(":")) {
913 localItemStack1 = setName(new ItemStack(Material.valueOf(paramArrayOfString[3].split(":")[0].toUpperCase()), 1, Short.valueOf(paramArrayOfString[3].split(":")[1]).shortValue()), ChatColor.LIGHT_PURPLE + (String)localObject6);
914 } else {
915 localItemStack1 = setName(new ItemStack(Material.valueOf(paramArrayOfString[3].toUpperCase())), ChatColor.GREEN + (String)localObject6);
916 }
917 localObject11 = ChatColor.AQUA + "There is no description for this kit!";
918 addLore(localItemStack1, (String)localObject11);
919 localObject12 = ((Player)localObject4).getInventory().getContents();
920 localObject13 = ((Player)localObject4).getInventory().getArmorContents();
921 localObject14 = ((Player)localObject4).getActivePotionEffects();
922 localObject15 = new Kit((String)localObject6, localItemStack1, (ItemStack[])localObject12, (ItemStack[])localObject13, n, (Collection)localObject14, new ArrayList(), true, false);
923 this.Kits.put(((String)localObject6).toLowerCase(), localObject15);
924 for (localObject17 = this.playerData.values().iterator(); ((Iterator)localObject17).hasNext();)
925 {
926 localObject16 = (PlayerData)((Iterator)localObject17).next();
927 ((PlayerData)localObject16).getShop().addItem(new ItemStack[] { ((Kit)localObject15).getShopLogo() });
928 }
929 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Enabled", Boolean.valueOf(true));
930 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Require-Permission", Boolean.valueOf(false));
931 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Item", paramArrayOfString[3].toUpperCase());
932 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Price", Integer.valueOf(n));
933 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Armor.Helmet", this.fileManager.transformItemStackToString(((Player)localObject4).getInventory().getHelmet()));
934 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Armor.Chestplate", this.fileManager.transformItemStackToString(((Player)localObject4).getInventory().getChestplate()));
935 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Armor.Leggings", this.fileManager.transformItemStackToString(((Player)localObject4).getInventory().getLeggings()));
936 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Armor.Boots", this.fileManager.transformItemStackToString(((Player)localObject4).getInventory().getBoots()));
937 localObject16 = new ArrayList();
938 int i6 = (localObject20 = localObject12).length;
939 for (int i5 = 0; i5 < i6; i5++)
940 {
941 localObject17 = localObject20[i5];
942 ((ArrayList)localObject16).add(this.fileManager.transformItemStackToString((ItemStack)localObject17));
943 }
944 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Items", localObject16);
945 localObject17 = new ArrayList();
946 for (localObject19 = ((Collection)localObject14).iterator(); ((Iterator)localObject19).hasNext();)
947 {
948 localObject18 = (PotionEffect)((Iterator)localObject19).next();
949 ((ArrayList)localObject17).add(((PotionEffect)localObject18).getType().getName() + " : " + ((PotionEffect)localObject18).getDuration() / 20 + " : " + ((PotionEffect)localObject18).getAmplifier());
950 }
951 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Abilities", Arrays.asList(new String[0]));
952 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Potion-Effects", localObject17);
953 localObject11 = "&b" + ChatColor.stripColor((String)localObject11);
954 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6 + ".Description", Arrays.asList(new String[] { localObject11 }));
955 this.fileManager.saveKitsConfig();
956 ((Player)localObject4).getInventory().clear();
957 ((Player)localObject4).getInventory().setArmorContents(null);
958 for (localObject19 = ((Player)localObject4).getActivePotionEffects().iterator(); ((Iterator)localObject19).hasNext();)
959 {
960 localObject18 = (PotionEffect)((Iterator)localObject19).next();
961 ((Player)localObject4).removePotionEffect(((PotionEffect)localObject18).getType());
962 }
963 ((Player)localObject4).sendMessage(this.kb + "The " + ChatColor.GREEN + (String)localObject6 + ChatColor.GRAY + " kit has been created!");
964 }
965 else
966 {
967 paramCommandSender.sendMessage(this.kb + this.msgs.noconsole);
968 }
969 }
970 else
971 {
972 Object localObject8;
973 if (((String)localObject1).equals("delete"))
974 {
975 if (paramArrayOfString.length == 2)
976 {
977 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Delete" + ChatColor.GRAY + " <Kit>");
978 return true;
979 }
980 localObject4 = paramArrayOfString[2].toLowerCase();
981 if (!this.Kits.containsKey(localObject4))
982 {
983 paramCommandSender.sendMessage(this.kb + "Couldn't find a kit with that name!");
984 return true;
985 }
986 localObject6 = ((Kit)this.Kits.get(localObject4)).getName();
987 localObject8 = ((Kit)this.Kits.get(localObject4)).getLogo();
988 localItemStack1 = ((Kit)this.Kits.get(localObject4)).getShopLogo();
989 this.Kits.remove(localObject4);
990 this.fileManager.getKitsConfig().set("Kits." + (String)localObject6, null);
991 this.fileManager.saveKitsConfig();
992 for (localObject12 = this.playerData.values().iterator(); ((Iterator)localObject12).hasNext();)
993 {
994 localObject11 = (PlayerData)((Iterator)localObject12).next();
995 if (((PlayerData)localObject11).getShop().contains(localItemStack1))
996 {
997 ((PlayerData)localObject11).getShop().remove(localItemStack1);
998 organizeInventory(((PlayerData)localObject11).getShop());
999 }
1000 else if (((PlayerData)localObject11).getMyKits().contains((ItemStack)localObject8))
1001 {
1002 ((PlayerData)localObject11).getMyKits().removeItem(new ItemStack[] { localObject8 });
1003 organizeInventory(((PlayerData)localObject11).getMyKits());
1004 }
1005 }
1006 paramCommandSender.sendMessage(this.kb + "The kit " + ChatColor.GREEN + (String)localObject6 + ChatColor.GRAY + " has been deleted!");
1007 }
1008 else if (((String)localObject1).equals("rename"))
1009 {
1010 if (this.config.useMySQL)
1011 {
1012 paramCommandSender.sendMessage(this.kb + "This command is coming soon for MySql users!");
1013 return true;
1014 }
1015 if (paramArrayOfString.length < 4)
1016 {
1017 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Kit" + ChatColor.GRAY + " rename <Kit> <New Name>");
1018 return true;
1019 }
1020 localObject4 = paramArrayOfString[2].toLowerCase();
1021 if (!this.Kits.containsKey(localObject4))
1022 {
1023 paramCommandSender.sendMessage(this.kb + "Couldn't find a kit with that name!");
1024 return true;
1025 }
1026 if (this.Kits.containsKey(paramArrayOfString[3].toLowerCase()))
1027 {
1028 paramCommandSender.sendMessage(this.kb + "There is already a kit with that name!");
1029 return true;
1030 }
1031 localObject6 = (Kit)this.Kits.get(localObject4);
1032 localObject8 = "Kits." + ((Kit)localObject6).getName() + ".";
1033 boolean bool1 = this.fileManager.getKitsConfig().getBoolean(localObject8 + "Enabled");
1034 boolean bool2 = this.fileManager.getKitsConfig().getBoolean(localObject8 + "Require-Permission");
1035 localObject12 = this.fileManager.getKitsConfig().getString(localObject8 + "Item");
1036 int i3 = this.fileManager.getKitsConfig().getInt(localObject8 + "Price");
1037 localObject14 = this.fileManager.getKitsConfig().getString(localObject8 + "Armor.Helmet");
1038 localObject15 = this.fileManager.getKitsConfig().getString(localObject8 + "Armor.Chestplate");
1039 localObject16 = this.fileManager.getKitsConfig().getString(localObject8 + "Armor.Leggings");
1040 localObject17 = this.fileManager.getKitsConfig().getString(localObject8 + "Armor.Boots");
1041 localObject18 = this.fileManager.getKitsConfig().getStringList(localObject8 + "Items");
1042 localObject19 = this.fileManager.getKitsConfig().getStringList(localObject8 + "Potion-Effects");
1043 localObject20 = this.fileManager.getKitsConfig().getStringList(localObject8 + "Abilities");
1044 List localList = this.fileManager.getKitsConfig().getStringList(localObject8 + "Description");
1045
1046 this.fileManager.getKitsConfig().set("Kits." + ((Kit)localObject6).getName(), null);
1047
1048 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Enabled", Boolean.valueOf(bool1));
1049 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Require-Permission", Boolean.valueOf(bool2));
1050 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Item", localObject12);
1051 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Price", Integer.valueOf(i3));
1052 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Armor.Helmet", localObject14);
1053 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Armor.Chestplate", localObject15);
1054 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Armor.Leggings", localObject16);
1055 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Armor.Boots", localObject17);
1056 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Items", localObject18);
1057 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Abilities", localObject20);
1058 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Potion-Effects", localObject19);
1059 this.fileManager.getKitsConfig().set("Kits." + paramArrayOfString[3] + ".Description", localList);
1060 this.fileManager.saveKitsConfig();
1061 ItemStack localItemStack2 = ((Kit)localObject6).getLogo().clone();
1062 ItemStack localItemStack3 = ((Kit)localObject6).getShopLogo().clone();
1063 this.Kits.remove(localObject4);
1064 ((Kit)localObject6).setName(paramArrayOfString[3]);
1065 setName(((Kit)localObject6).getLogo(), ChatColor.GREEN + paramArrayOfString[3]);
1066 setName(((Kit)localObject6).getShopLogo(), ChatColor.LIGHT_PURPLE + paramArrayOfString[3]);
1067 this.Kits.put(paramArrayOfString[3].toLowerCase(), localObject6);
1068 ItemStack localItemStack4 = ((Kit)localObject6).getLogo();
1069 ItemStack localItemStack5 = ((Kit)localObject6).getShopLogo();
1070 for (Iterator localIterator2 = this.playerData.values().iterator(); localIterator2.hasNext();)
1071 {
1072 localObject21 = (PlayerData)localIterator2.next();
1073 if (((PlayerData)localObject21).getShop().contains(localItemStack3))
1074 {
1075 ((PlayerData)localObject21).getShop().removeItem(new ItemStack[] { localItemStack3 });
1076 ((PlayerData)localObject21).getShop().addItem(new ItemStack[] { localItemStack5 });
1077 }
1078 else if (((PlayerData)localObject21).getMyKits().contains(localItemStack2))
1079 {
1080 ((PlayerData)localObject21).getMyKits().removeItem(new ItemStack[] { localItemStack2 });
1081 ((PlayerData)localObject21).getMyKits().addItem(new ItemStack[] { localItemStack4 });
1082 }
1083 }
1084 final Object localObject21 = ChatColor.stripColor(localItemStack2.getItemMeta().getDisplayName());
1085 paramCommandSender.sendMessage(this.kb + "The kit " + ChatColor.LIGHT_PURPLE + (String)localObject21 + ChatColor.GRAY + " has been renamed to " + ChatColor.GREEN + paramArrayOfString[3] + ChatColor.GRAY + "!");
1086
1087 new BukkitRunnable()
1088 {
1089 Iterator<String> iterator = main.this.fileManager.getPlayersConfig().getConfigurationSection("Players").getKeys(false).iterator();
1090 int updated = 0;
1091
1092 public void run()
1093 {
1094 int i = 0;
1095 while ((i < 50) && (this.iterator.hasNext()))
1096 {
1097 i++;
1098 String str = (String)this.iterator.next();
1099 if (main.this.fileManager.getPlayersConfig().getStringList("Players." + str + ".Kits").contains(localObject21))
1100 {
1101 List localList = main.this.fileManager.getPlayersConfig().getStringList("Players." + str + ".Kits");
1102 localList.remove(localObject21);
1103 localList.add(paramArrayOfString[3]);
1104 main.this.fileManager.getPlayersConfig().set("Players." + str + ".Kits", localList);
1105 this.updated += 1;
1106 }
1107 }
1108 if (!this.iterator.hasNext())
1109 {
1110 main.this.fileManager.savePlayersConfig();
1111 paramCommandSender.sendMessage(main.this.kb + "Updated the owned kits in the file for " + ChatColor.LIGHT_PURPLE + this.updated + ChatColor.GRAY + " players!");
1112 cancel();
1113 }
1114 }
1115 }.runTaskTimerAsynchronously(this, 1L, 2L);
1116 }
1117 else
1118 {
1119 Iterator localIterator1;
1120 PlayerData localPlayerData2;
1121 if (((String)localObject1).equals("enable"))
1122 {
1123 if (paramArrayOfString.length < 3)
1124 {
1125 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Kit" + ChatColor.GRAY + " enable <Kit>");
1126 return true;
1127 }
1128 localObject4 = (Kit)this.Kits.get(paramArrayOfString[2].toLowerCase());
1129 if (localObject4 == null)
1130 {
1131 paramCommandSender.sendMessage(this.kb + "Couldn't find a kit with that name!");
1132 return true;
1133 }
1134 if (((Kit)localObject4).enabled)
1135 {
1136 paramCommandSender.sendMessage(this.kb + "This kit is already enabled!");
1137 return true;
1138 }
1139 ((Kit)localObject4).enabled = true;
1140 this.fileManager.getKitsConfig().set("Kits." + ((Kit)localObject4).getName() + ".Enabled", Boolean.valueOf(true));
1141 this.fileManager.saveKitsConfig();
1142 localObject6 = ((Kit)localObject4).getLogo().clone();
1143 localObject8 = ((Kit)localObject4).getShopLogo().clone();
1144 replaceLore(((Kit)localObject4).getLogo(), ChatColor.BLUE + "State: " + ChatColor.RED + "Disabled", ChatColor.BLUE + "State: " + ChatColor.GREEN + "Enabled");
1145 replaceLore(((Kit)localObject4).getShopLogo(), ChatColor.BLUE + "State: " + ChatColor.RED + "Disabled", ChatColor.BLUE + "State: " + ChatColor.GREEN + "Enabled");
1146 for (localIterator1 = this.playerData.values().iterator(); localIterator1.hasNext();)
1147 {
1148 localPlayerData2 = (PlayerData)localIterator1.next();
1149 if (localPlayerData2.getShop().contains((ItemStack)localObject8))
1150 {
1151 localPlayerData2.getShop().removeItem(new ItemStack[] { localObject8 });
1152 localPlayerData2.getShop().addItem(new ItemStack[] { ((Kit)localObject4).getShopLogo() });
1153 }
1154 else
1155 {
1156 localPlayerData2.getMyKits().removeItem(new ItemStack[] { localObject6 });
1157 localPlayerData2.getMyKits().addItem(new ItemStack[] { ((Kit)localObject4).getLogo() });
1158 }
1159 }
1160 paramCommandSender.sendMessage(this.kb + "You have " + ChatColor.GREEN + "enabled" + ChatColor.GRAY + " the kit " + ChatColor.LIGHT_PURPLE + ((Kit)localObject4).getName());
1161 }
1162 else if (((String)localObject1).equals("disable"))
1163 {
1164 if (paramArrayOfString.length < 3)
1165 {
1166 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Kit" + ChatColor.GRAY + " disable <Kit>");
1167 return true;
1168 }
1169 localObject4 = (Kit)this.Kits.get(paramArrayOfString[2].toLowerCase());
1170 if (localObject4 == null)
1171 {
1172 paramCommandSender.sendMessage(this.kb + "Couldn't find a kit with that name!");
1173 return true;
1174 }
1175 if (!((Kit)localObject4).enabled)
1176 {
1177 paramCommandSender.sendMessage(this.kb + "This kit is already disabled!");
1178 return true;
1179 }
1180 ((Kit)localObject4).enabled = false;
1181 this.fileManager.getKitsConfig().set("Kits." + ((Kit)localObject4).getName() + ".Enabled", Boolean.valueOf(false));
1182 this.fileManager.saveKitsConfig();
1183 localObject6 = ((Kit)localObject4).getLogo().clone();
1184 localObject8 = ((Kit)localObject4).getShopLogo().clone();
1185 replaceLore(((Kit)localObject4).getLogo(), ChatColor.BLUE + "State: " + ChatColor.GREEN + "Enabled", ChatColor.BLUE + "State: " + ChatColor.RED + "Disabled");
1186 replaceLore(((Kit)localObject4).getShopLogo(), ChatColor.BLUE + "State: " + ChatColor.GREEN + "Enabled", ChatColor.BLUE + "State: " + ChatColor.RED + "Disabled");
1187 for (localIterator1 = this.playerData.values().iterator(); localIterator1.hasNext();)
1188 {
1189 localPlayerData2 = (PlayerData)localIterator1.next();
1190 if (localPlayerData2.getShop().contains((ItemStack)localObject8))
1191 {
1192 localPlayerData2.getShop().removeItem(new ItemStack[] { localObject8 });
1193 localPlayerData2.getShop().addItem(new ItemStack[] { ((Kit)localObject4).getShopLogo() });
1194 }
1195 else
1196 {
1197 localPlayerData2.getMyKits().removeItem(new ItemStack[] { localObject6 });
1198 localPlayerData2.getMyKits().addItem(new ItemStack[] { ((Kit)localObject4).getLogo() });
1199 }
1200 }
1201 paramCommandSender.sendMessage(this.kb + "You have " + ChatColor.RED + "disabled" + ChatColor.GRAY + " the kit " + ChatColor.LIGHT_PURPLE + ((Kit)localObject4).getName());
1202 }
1203 }
1204 }
1205 }
1206 else
1207 {
1208 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
1209 }
1210 }
1211 else if (paramArrayOfString[0].equalsIgnoreCase("kitunlocker"))
1212 {
1213 if (paramCommandSender.hasPermission("kitbattle.kitunlocker"))
1214 {
1215 if ((paramArrayOfString.length < 4) || (!isNumber(paramArrayOfString[3])) || (!paramArrayOfString[1].equalsIgnoreCase("give")))
1216 {
1217 paramCommandSender.sendMessage(this.kb + "Usage: /kb " + ChatColor.GREEN + "Kitunlocker" + ChatColor.GRAY + " give <Player> <Amount>");
1218 return true;
1219 }
1220 localObject1 = Bukkit.getPlayer(paramArrayOfString[2]);
1221 if (localObject1 == null)
1222 {
1223 paramCommandSender.sendMessage(this.kb + "Couldn't find that player!");
1224 return true;
1225 }
1226 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).kitUnlockers += Integer.valueOf(paramArrayOfString[3]).intValue();
1227 ((PlayerData)this.playerData.get(((Player)localObject1).getName())).joined = true;
1228 if ((this.game.contains(((Player)localObject1).getName())) && (((PlayerData)this.playerData.get(((Player)localObject1).getName())).getKit() == null))
1229 {
1230 ((Player)localObject1).getInventory().clear();
1231 giveDefaultItems((Player)localObject1);
1232 }
1233 ((Player)localObject1).sendMessage(this.kb + this.msgs.PlayerReceiveKitUnlocker.replace("%amount%", paramArrayOfString[3]));
1234 paramCommandSender.sendMessage(this.kb + ChatColor.GREEN + ((Player)localObject1).getName() + ChatColor.GRAY + " has received " + ChatColor.LIGHT_PURPLE + paramArrayOfString[3] + ChatColor.GRAY + " Kitunlockers successfully");
1235 }
1236 else
1237 {
1238 paramCommandSender.sendMessage(this.kb + this.msgs.nopermission);
1239 }
1240 }
1241 else if (paramArrayOfString[0].equalsIgnoreCase("info"))
1242 {
1243 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ----------" + ChatColor.AQUA + " Information " + ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + "----------");
1244 paramCommandSender.sendMessage(ChatColor.AQUA + "Version: " + ChatColor.GREEN + getDescription().getVersion());
1245 paramCommandSender.sendMessage(ChatColor.AQUA + "Vault: " + ChatColor.GREEN + (econ != null));
1246 paramCommandSender.sendMessage(ChatColor.AQUA + "UUID: " + ChatColor.GREEN + this.config.UUID);
1247 paramCommandSender.sendMessage(ChatColor.AQUA + "MySQL: " + ChatColor.GREEN + this.config.useMySQL);
1248 paramCommandSender.sendMessage(ChatColor.AQUA + "Updater Running: " + ChatColor.GREEN + (this.Updater != null));
1249 long l = this.nextUpdate == 0L ? 0L : (this.nextUpdate - System.currentTimeMillis()) / 1000L;
1250 paramCommandSender.sendMessage(ChatColor.AQUA + "Next Update: " + ChatColor.GREEN + l + "s " + ChatColor.AQUA + "(" + ChatColor.LIGHT_PURPLE + l / 60L + "m" + ChatColor.AQUA + ")");
1251 paramCommandSender.sendMessage(ChatColor.AQUA + "Total Updates: " + ChatColor.GREEN + this.totalUpdates);
1252 paramCommandSender.sendMessage(ChatColor.DARK_AQUA + ChatColor.STRIKETHROUGH + " ---------------------------------");
1253 }
1254 }
1255 }
1256 }
1257 return true;
1258 }
1259
1260 public void loadMaps()
1261 {
1262 this.maps.clear();
1263 if (this.fileManager.getMapsConfig().getConfigurationSection("Maps") == null) {
1264 return;
1265 }
1266 for (String str1 : this.fileManager.getMapsConfig().getConfigurationSection("Maps").getKeys(false))
1267 {
1268 String str2 = this.fileManager.getMapsConfig().getString("Maps." + str1 + ".world");
1269 int i = this.fileManager.getMapsConfig().getInt("Maps." + str1 + ".x");
1270 int j = this.fileManager.getMapsConfig().getInt("Maps." + str1 + ".y");
1271 int k = this.fileManager.getMapsConfig().getInt("Maps." + str1 + ".z");
1272 int m = this.fileManager.getMapsConfig().getInt("Maps." + str1 + ".yaw");
1273 int n = this.fileManager.getMapsConfig().getInt("Maps." + str1 + ".pitch");
1274 this.maps.put(str1.toLowerCase(), new Location(Bukkit.getWorld(str2), i, j, k, m, n));
1275 }
1276 }
1277
1278 public void updateList()
1279 {
1280 if (this.maps.isEmpty())
1281 {
1282 this.ListOfMaps = null;
1283 return;
1284 }
1285 Iterator localIterator = this.maps.keySet().iterator();
1286 this.ListOfMaps = (ChatColor.AQUA + (String)localIterator.next());
1287 while (localIterator.hasNext()) {
1288 this.ListOfMaps = (this.ListOfMaps + ChatColor.GRAY + ", " + ChatColor.AQUA + (String)localIterator.next());
1289 }
1290 }
1291
1292 public void setSpawn(String paramString, Location paramLocation)
1293 {
1294 this.fileManager.getMapsConfig().set("Maps." + paramString + ".world", paramLocation.getWorld().getName());
1295 this.fileManager.getMapsConfig().set("Maps." + paramString + ".x", Integer.valueOf(paramLocation.getBlockX()));
1296 this.fileManager.getMapsConfig().set("Maps." + paramString + ".y", Integer.valueOf(paramLocation.getBlockY()));
1297 this.fileManager.getMapsConfig().set("Maps." + paramString + ".z", Integer.valueOf(paramLocation.getBlockZ()));
1298 this.fileManager.getMapsConfig().set("Maps." + paramString + ".yaw", Float.valueOf(paramLocation.getYaw()));
1299 this.fileManager.getMapsConfig().set("Maps." + paramString + ".pitch", Float.valueOf(paramLocation.getPitch()));
1300 this.fileManager.saveMapsConfig();
1301 }
1302
1303 public void clearData(Player paramPlayer)
1304 {
1305 paramPlayer.getInventory().clear();
1306 paramPlayer.getInventory().setArmorContents(null);
1307 paramPlayer.setHealth(20.0D);
1308 paramPlayer.setFoodLevel(20);
1309 paramPlayer.setLevel(0);
1310 paramPlayer.setExp(0.0F);
1311 for (PotionEffect localPotionEffect : paramPlayer.getActivePotionEffects()) {
1312 paramPlayer.removePotionEffect(localPotionEffect.getType());
1313 }
1314 paramPlayer.setGameMode(GameMode.SURVIVAL);
1315 paramPlayer.setAllowFlight(false);
1316 paramPlayer.setFlying(false);
1317 paramPlayer.setFireTicks(0);
1318 }
1319
1320 public String target(Player paramPlayer)
1321 {
1322 return this.config.UUID ? paramPlayer.getUniqueId().toString() : paramPlayer.getName();
1323 }
1324
1325 public void createScoreboard(Player paramPlayer)
1326 {
1327 PlayerData localPlayerData = (PlayerData)this.playerData.get(paramPlayer.getName());
1328 Scoreboard localScoreboard = this.manager.getNewScoreboard();
1329 Objective localObjective = localScoreboard.registerNewObjective("KitBattle", "dummy");
1330 localObjective.setDisplaySlot(DisplaySlot.SIDEBAR);
1331 localObjective.setDisplayName(this.msgs.scoreboard_prefix);
1332 localObjective.getScore(" ").setScore(5);
1333 localObjective.getScore(this.msgs.scoreboard_stats).setScore(4);
1334 localObjective.getScore(this.msgs.scoreboard_kills.replace("%kills%", String.valueOf(localPlayerData.getKills()))).setScore(3);
1335 localObjective.getScore(this.msgs.scoreboard_deaths.replace("%deaths%", String.valueOf(localPlayerData.getDeaths()))).setScore(2);
1336 localObjective.getScore(this.msgs.scoreboard_coins.replace("%coins%", String.valueOf(getCoins(paramPlayer)))).setScore(1);
1337 localObjective.getScore(" ").setScore(0);
1338 localObjective.getScore(this.msgs.scoreboard_exp.replace("%exp%", String.valueOf(localPlayerData.getExp()))).setScore(-1);
1339 localObjective.getScore(this.msgs.scoreboard_rank).setScore(-2);
1340 localObjective.getScore(this.msgs.scoreboard_rankname.replace("%rank%", localPlayerData.getRank().getName())).setScore(-3);
1341 if (localPlayerData.getNextRank() != null)
1342 {
1343 localObjective.getScore(this.msgs.scoreboard_nextrank).setScore(-4);
1344 localObjective.getScore(this.msgs.scoreboard_nextrankname.replace("%requiredexp%", String.valueOf(localPlayerData.getNextRank().getRequiredExp() - localPlayerData.getExp()))).setScore(-5);
1345 }
1346 paramPlayer.setScoreboard(localScoreboard);
1347 }
1348
1349 public void giveDefaultItems(Player paramPlayer)
1350 {
1351 paramPlayer.getInventory().addItem(new ItemStack[] { this.KitSelector });
1352 paramPlayer.getInventory().addItem(new ItemStack[] { this.ShopOpener });
1353 if ((this.challengeLocation1 != null) && (this.challengeLocation2 != null)) {
1354 paramPlayer.getInventory().addItem(new ItemStack[] { this.Challenger });
1355 }
1356 if (((PlayerData)this.playerData.get(paramPlayer.getName())).kitUnlockers > 0)
1357 {
1358 ItemStack localItemStack = this.KitUnlocker.clone();
1359 localItemStack.setAmount(((PlayerData)this.playerData.get(paramPlayer.getName())).kitUnlockers);
1360 paramPlayer.getInventory().setItem(8, localItemStack);
1361 }
1362 ((PlayerData)this.playerData.get(paramPlayer.getName())).cooldown = 0L;
1363 paramPlayer.updateInventory();
1364 }
1365
1366 public ItemStack setName(ItemStack paramItemStack, String paramString)
1367 {
1368 ItemMeta localItemMeta = paramItemStack.getItemMeta();
1369 localItemMeta.setDisplayName(paramString);
1370 paramItemStack.setItemMeta(localItemMeta);
1371 return paramItemStack;
1372 }
1373
1374 public void addLore(ItemStack paramItemStack, String paramString)
1375 {
1376 ItemMeta localItemMeta = paramItemStack.getItemMeta();
1377 Object localObject = new ArrayList();
1378 if (localItemMeta.getLore() != null) {
1379 localObject = localItemMeta.getLore();
1380 }
1381 ((List)localObject).add(paramString);
1382 localItemMeta.setLore((List)localObject);
1383 paramItemStack.setItemMeta(localItemMeta);
1384 }
1385
1386 public void replaceLore(ItemStack paramItemStack, String paramString1, String paramString2)
1387 {
1388 ItemMeta localItemMeta = paramItemStack.getItemMeta();
1389 if (localItemMeta.getLore() == null) {
1390 return;
1391 }
1392 List localList = localItemMeta.getLore();
1393 ArrayList localArrayList = new ArrayList();
1394 for (String str : localList) {
1395 if (str.equals(paramString1)) {
1396 localArrayList.add(str.replace(paramString1, paramString2));
1397 } else {
1398 localArrayList.add(str);
1399 }
1400 }
1401 localItemMeta.setLore(localArrayList);
1402 paramItemStack.setItemMeta(localItemMeta);
1403 }
1404
1405 public boolean isNumber(String paramString)
1406 {
1407 try
1408 {
1409 Integer.parseInt(paramString);
1410 return true;
1411 }
1412 catch (NumberFormatException localNumberFormatException) {}
1413 return false;
1414 }
1415
1416 public boolean isMaterial(String paramString)
1417 {
1418 try
1419 {
1420 Material.valueOf(paramString);
1421 return true;
1422 }
1423 catch (IllegalArgumentException localIllegalArgumentException) {}
1424 return false;
1425 }
1426
1427 public void loadChallengeLocation()
1428 {
1429 String str;
1430 int i;
1431 int j;
1432 int k;
1433 int m;
1434 int n;
1435 if (getConfig().contains("Challenge-Location.1"))
1436 {
1437 str = getConfig().getString("Challenge-Location.1.world");
1438 i = getConfig().getInt("Challenge-Location.1.x");
1439 j = getConfig().getInt("Challenge-Location.1.y");
1440 k = getConfig().getInt("Challenge-Location.1.z");
1441 m = getConfig().getInt("Challenge-Location.1.yaw");
1442 n = getConfig().getInt("Challenge-Location.1.pitch");
1443 this.challengeLocation1 = new Location(Bukkit.getWorld(str), i, j, k, m, n);
1444 }
1445 if (getConfig().contains("Challenge-Location.2"))
1446 {
1447 str = getConfig().getString("Challenge-Location.2.world");
1448 i = getConfig().getInt("Challenge-Location.2.x");
1449 j = getConfig().getInt("Challenge-Location.2.y");
1450 k = getConfig().getInt("Challenge-Location.2.z");
1451 m = getConfig().getInt("Challenge-Location.2.yaw");
1452 n = getConfig().getInt("Challenge-Location.2.pitch");
1453 this.challengeLocation2 = new Location(Bukkit.getWorld(str), i, j, k, m, n);
1454 }
1455 }
1456
1457 public void removeFromChallenge(Player paramPlayer)
1458 {
1459 this.cantMove.remove(paramPlayer.getName());
1460 if (this.Fighting.containsKey(paramPlayer.getName()))
1461 {
1462 fixVisiblity(paramPlayer);
1463 Player localPlayer = Bukkit.getPlayer((String)this.Challenging.get(paramPlayer.getName()));
1464 localPlayer.sendMessage(this.kb + this.msgs.PlayerQuitInChallenge.replace("%player%", paramPlayer.getName()));
1465 this.cantMove.remove(localPlayer.getName());
1466 this.Fighting.remove(localPlayer.getName());
1467 this.Challenging.remove(localPlayer.getName());
1468 clearData(localPlayer);
1469 ((PlayerData)this.playerData.get(localPlayer.getName())).setKit(null);
1470 localPlayer.teleport((Location)this.maps.get(((PlayerData)this.playerData.get(localPlayer.getName())).getMap()));
1471 this.listen.spawnFirework(localPlayer.getLocation());
1472 giveDefaultItems(localPlayer);
1473 ((BukkitTask)this.Fighting.get(paramPlayer.getName())).cancel();
1474 }
1475 this.Fighting.remove(paramPlayer.getName());
1476 this.Challenging.remove(paramPlayer.getName());
1477 }
1478
1479 public void fixVisiblity(Player paramPlayer)
1480 {
1481 for (String str : this.Fighting.keySet())
1482 {
1483 Player localPlayer = Bukkit.getPlayer(str);
1484 localPlayer.showPlayer(paramPlayer);
1485 paramPlayer.showPlayer(localPlayer);
1486 }
1487 }
1488
1489 public void leave(Player paramPlayer)
1490 {
1491 this.game.remove(paramPlayer.getName());
1492 clearData(paramPlayer);
1493 ((PlayerData)this.playerData.get(paramPlayer.getName())).killstreak = 0;
1494 ((PlayerData)this.playerData.get(paramPlayer.getName())).restoreData(paramPlayer);
1495 paramPlayer.sendMessage(this.kb + this.msgs.PlayerLeave);
1496 removeFromChallenge(paramPlayer);
1497 }
1498
1499 public void startShuffler()
1500 {
1501 new BukkitRunnable()
1502 {
1503 public void run()
1504 {
1505 if (!main.this.shuffler.hasNext()) {
1506 main.this.shuffler = main.this.maps.keySet().iterator();
1507 }
1508 main.this.currentMap = ((String)main.this.shuffler.next());
1509 Player[] arrayOfPlayer;
1510 int j = (arrayOfPlayer = Bukkit.getOnlinePlayers()).length;
1511 for (int i = 0; i < j; i++)
1512 {
1513 Player localPlayer = arrayOfPlayer[i];
1514 if (!main.this.Fighting.containsKey(localPlayer.getName()))
1515 {
1516 main.this.clearData(localPlayer);
1517 ((PlayerData)main.this.playerData.get(localPlayer.getName())).setKit(null);
1518 main.this.giveDefaultItems(localPlayer);
1519 localPlayer.teleport((Location)main.this.maps.get(main.this.currentMap));
1520 }
1521 ((PlayerData)main.this.playerData.get(localPlayer.getName())).setMap(main.this.currentMap);
1522 localPlayer.sendMessage(main.this.kb + main.this.msgs.MapSwitch.replace("%map%", main.this.currentMap));
1523 }
1524 }
1525 }.runTaskTimer(this, 0L, 1200 * this.config.ShuffleEveryInMinutes);
1526 }
1527
1528 private void setupEcon()
1529 {
1530 RegisteredServiceProvider localRegisteredServiceProvider = getServer().getServicesManager().getRegistration(Economy.class);
1531 if (localRegisteredServiceProvider != null) {
1532 econ = (Economy)localRegisteredServiceProvider.getProvider();
1533 }
1534 }
1535
1536 public int getCoins(Player paramPlayer)
1537 {
1538 if (econ != null) {
1539 return (int)econ.getBalance(paramPlayer);
1540 }
1541 return ((PlayerData)this.playerData.get(paramPlayer.getName())).coins;
1542 }
1543
1544 public void addCoins(Player paramPlayer, int paramInt)
1545 {
1546 if (econ != null)
1547 {
1548 econ.depositPlayer(paramPlayer, paramInt);
1549 }
1550 else
1551 {
1552 PlayerData localPlayerData = (PlayerData)this.playerData.get(paramPlayer.getName());
1553 localPlayerData.coins += paramInt;
1554 if (!localPlayerData.joined) {
1555 localPlayerData.joined = true;
1556 }
1557 }
1558 }
1559
1560 public void removeCoins(Player paramPlayer, int paramInt)
1561 {
1562 if (econ != null)
1563 {
1564 econ.withdrawPlayer(paramPlayer, paramInt);
1565 }
1566 else
1567 {
1568 PlayerData localPlayerData = (PlayerData)this.playerData.get(paramPlayer.getName());
1569 localPlayerData.coins -= paramInt;
1570 if (!localPlayerData.joined) {
1571 localPlayerData.joined = true;
1572 }
1573 }
1574 }
1575
1576 public void setCoins(Player paramPlayer, int paramInt)
1577 {
1578 if (econ != null)
1579 {
1580 int i = paramInt - getCoins(paramPlayer);
1581 if (i > 0) {
1582 econ.depositPlayer(paramPlayer, i);
1583 } else {
1584 econ.withdrawPlayer(paramPlayer, -i);
1585 }
1586 }
1587 else
1588 {
1589 PlayerData localPlayerData = (PlayerData)this.playerData.get(paramPlayer.getName());
1590 localPlayerData.coins = paramInt;
1591 if (!localPlayerData.joined) {
1592 localPlayerData.joined = true;
1593 }
1594 }
1595 }
1596
1597 public void organizeInventory(Inventory paramInventory)
1598 {
1599 int i = paramInventory.getSize() - 1;
1600 for (int j = 0; j < i; j++) {
1601 if (paramInventory.getItem(j) == null) {
1602 for (int k = j; k < i; k++)
1603 {
1604 paramInventory.setItem(k, paramInventory.getItem(k + 1));
1605 paramInventory.setItem(k + 1, new ItemStack(Material.AIR));
1606 }
1607 }
1608 }
1609 }
1610
1611 public boolean fixUpdater()
1612 {
1613 if ((this.fileManager.getSignsConfig().getConfigurationSection("Top") == null) || (this.fileManager.getSignsConfig().getConfigurationSection("Top").getKeys(false).isEmpty()))
1614 {
1615 if (this.Updater != null) {
1616 this.Updater.cancel();
1617 }
1618 this.Updater = null;
1619 this.nextUpdate = 0L;
1620 return false;
1621 }
1622 if (this.Updater != null) {
1623 return false;
1624 }
1625 this.logger.info("[KitBattle] Top signs updater is about to start!");
1626 this.Updater = new BukkitRunnable()
1627 {
1628 public void run()
1629 {
1630 main.this.totalUpdates += 1;
1631 main.this.nextUpdate = (System.currentTimeMillis() + main.this.config.UpdateTopSignsEveryInMinutes * 60000);
1632 main.this.logger.info("[KitBattle] Updating top signs!");
1633 final Object localObject1;
1634 final Object localObject2;
1635 final Object localObject3;
1636 if (main.this.config.useMySQL)
1637 {
1638 try
1639 {
1640 Statement localStatement = main.this.connection.createStatement();
1641 localObject1 = localStatement.executeQuery("SELECT * FROM " + main.this.config.tableprefix + " ORDER BY Kills");
1642 ((ResultSet)localObject1).findColumn("player_name");
1643 localObject2 = main.this.fileManager.getSignsConfig().getConfigurationSection("Top").getKeys(false).iterator();
1644 while (((Iterator)localObject2).hasNext())
1645 {
1646 localObject3 = (String)((Iterator)localObject2).next();
1647 final int i = Integer.valueOf((String)localObject3).intValue();
1648 String str = null;
1649 int j = 0;
1650 if (((ResultSet)localObject1).last()) {
1651 if (i == 1) {
1652 str = ((ResultSet)localObject1).getString("player_name");
1653 } else {
1654 for (int k = 1; k < i; k++) {
1655 if (((ResultSet)localObject1).previous()) {
1656 str = ((ResultSet)localObject1).getString("player_name");
1657 } else {
1658 str = null;
1659 }
1660 }
1661 }
1662 }
1663 if (str != null)
1664 {
1665 localObject4 = main.this.connection.createStatement().executeQuery("SELECT Kills FROM " + main.this.config.tableprefix + " WHERE player_name = '" + str + "';");
1666 ((ResultSet)localObject4).next();
1667 j = ((ResultSet)localObject4).getInt("Kills");
1668 ((ResultSet)localObject4).close();
1669 }
1670 else
1671 {
1672 str = "NO_PLAYER";
1673 }
1674 if (!((Iterator)localObject2).hasNext())
1675 {
1676 ((ResultSet)localObject1).close();
1677 localStatement.close();
1678 }
1679 final Object localObject4 = str;
1680 final int m = j;
1681 new BukkitRunnable()
1682 {
1683 public void run()
1684 {
1685 World localWorld = Bukkit.getWorld(main.this.fileManager.getSignsConfig().getString("Top." + localObject3 + ".world"));
1686 int i = main.this.fileManager.getSignsConfig().getInt("Top." + localObject3 + ".x");
1687 int j = main.this.fileManager.getSignsConfig().getInt("Top." + localObject3 + ".y");
1688 int k = main.this.fileManager.getSignsConfig().getInt("Top." + localObject3 + ".z");
1689
1690 Block localBlock = localWorld.getBlockAt(i, j, k);
1691 if ((localBlock != null) && ((localBlock.getType().equals(Material.SIGN)) || (localBlock.getType().equals(Material.SIGN_POST)) || (localBlock.getType().equals(Material.WALL_SIGN))))
1692 {
1693 org.bukkit.block.Sign localSign = (org.bukkit.block.Sign)localBlock.getState();
1694 if ((localSign.getLine(0).equals(main.this.config.SignsPrefix)) && (localSign.getLine(1).equals("Top")) &&
1695 (main.this.isNumber(localSign.getLine(2).replace("#", "").split(" ")[0])))
1696 {
1697 localSign.setLine(2, "#" + i + " " + localObject4);
1698 localSign.setLine(3, "(" + m + ")");
1699 localSign.update(true);
1700
1701 main.this.updateHead(localSign.getLocation().add(0.0D, 1.0D, 0.0D), localSign, localObject4);
1702 }
1703 }
1704 }
1705 }.runTask(main.plugin);
1706 }
1707 }
1708 catch (SQLException localSQLException)
1709 {
1710 localSQLException.printStackTrace();
1711 }
1712 }
1713 else
1714 {
1715 if (main.this.fileManager.getPlayersConfig().getConfigurationSection("Players") == null) {
1716 return;
1717 }
1718 final HashMap localHashMap = new HashMap();
1719 localObject1 = new HashMap();
1720 localObject2 = main.this.fileManager.getPlayersConfig();
1721 localObject3 = ((FileConfiguration)localObject2).getConfigurationSection("Players").getKeys(false).iterator();
1722
1723 new BukkitRunnable()
1724 {
1725 public void run()
1726 {
1727 int i = 0;
1728 final Object localObject;
1729 while ((i < 300) && (localObject3.hasNext()))
1730 {
1731 i++;
1732 localObject = (String)localObject3.next();
1733 if (main.this.config.UUID) {
1734 localObject = localObject2.getString("Players." + (String)localObject + ".Name");
1735 }
1736 localHashMap.put(localObject, Integer.valueOf(localObject2.getInt("Players." + (String)localObject + ".Kills")));
1737 }
1738 if (!localObject3.hasNext())
1739 {
1740 cancel();
1741
1742 localObject = localHashMap.keySet().iterator();
1743
1744 new BukkitRunnable()
1745 {
1746 public void run()
1747 {
1748 int i = 0;
1749 while ((i < 100) && (localObject.hasNext()))
1750 {
1751 i++;
1752 String str1 = (String)localObject.next();
1753 int j = 1;
1754 int k = ((Integer)this.val$kills.get(str1)).intValue();
1755 for (String str2 : this.val$kills.keySet()) {
1756 if (((Integer)this.val$kills.get(str2)).intValue() > k) {
1757 j++;
1758 }
1759 }
1760 this.val$organizedKills.put(Integer.valueOf(j), str1);
1761 }
1762 if (!localObject.hasNext())
1763 {
1764 cancel();
1765
1766 new BukkitRunnable()
1767 {
1768 public void run()
1769 {
1770 for (String str1 : main.this.fileManager.getSignsConfig().getConfigurationSection("Top").getKeys(false))
1771 {
1772 World localWorld = Bukkit.getWorld(main.this.fileManager.getSignsConfig().getString("Top." + str1 + ".world"));
1773 int i = main.this.fileManager.getSignsConfig().getInt("Top." + str1 + ".x");
1774 int j = main.this.fileManager.getSignsConfig().getInt("Top." + str1 + ".y");
1775 int k = main.this.fileManager.getSignsConfig().getInt("Top." + str1 + ".z");
1776
1777 Block localBlock = localWorld.getBlockAt(i, j, k);
1778 if ((localBlock != null) && ((localBlock.getType().equals(Material.SIGN)) || (localBlock.getType().equals(Material.SIGN_POST)) || (localBlock.getType().equals(Material.WALL_SIGN))))
1779 {
1780 org.bukkit.block.Sign localSign = (org.bukkit.block.Sign)localBlock.getState();
1781 if ((localSign.getLine(0).equals(main.this.config.SignsPrefix)) && (localSign.getLine(1).equals("Top")) &&
1782 (main.this.isNumber(localSign.getLine(2).replace("#", "").split(" ")[0])))
1783 {
1784 int m = Integer.valueOf(localSign.getLine(2).replace("#", "").split(" ")[0]).intValue();
1785 String str2 = "NO_PLAYER";
1786 if (this.val$organizedKills.containsKey(Integer.valueOf(m)))
1787 {
1788 str2 = (String)this.val$organizedKills.get(Integer.valueOf(m));
1789 localSign.setLine(3, "(" + this.val$kills.get(str2) + ")");
1790 }
1791 else
1792 {
1793 str2 = "NO_PLAYER";
1794 localSign.setLine(3, "(0)");
1795 }
1796 localSign.setLine(2, "#" + m + " " + str2);
1797 localSign.update(true);
1798
1799 main.this.updateHead(localSign.getLocation().add(0.0D, 1.0D, 0.0D), localSign, str2);
1800 }
1801 }
1802 }
1803 }
1804 }.runTask(main.plugin);
1805 }
1806 }
1807 }.runTaskTimerAsynchronously(main.plugin, 0L, 1L);
1808 }
1809 }
1810 }.runTaskTimerAsynchronously(main.plugin, 0L, 1L);
1811 }
1812 }
1813 }.runTaskTimerAsynchronously(this, 0L, this.config.UpdateTopSignsEveryInMinutes * 1200);
1814 this.logger.info("[KitBattle] Top signs updater has started!");
1815 return true;
1816 }
1817
1818 public void updateHead(Location paramLocation, org.bukkit.block.Sign paramSign, String paramString)
1819 {
1820 Block localBlock = null;
1821 Object localObject;
1822 if (paramLocation.getBlock().getType().equals(Material.SKULL))
1823 {
1824 localBlock = paramLocation.getBlock();
1825 }
1826 else
1827 {
1828 localObject = ((org.bukkit.material.Sign)paramSign.getData()).getFacing();
1829 if (((BlockFace)localObject).equals(BlockFace.WEST)) {
1830 paramLocation.add(1.0D, 0.0D, 0.0D);
1831 }
1832 if (((BlockFace)localObject).equals(BlockFace.SOUTH)) {
1833 paramLocation.add(0.0D, 0.0D, -1.0D);
1834 }
1835 if (((BlockFace)localObject).equals(BlockFace.EAST)) {
1836 paramLocation.add(-1.0D, 0.0D, 0.0D);
1837 }
1838 if (((BlockFace)localObject).equals(BlockFace.NORTH)) {
1839 paramLocation.add(0.0D, 0.0D, 1.0D);
1840 }
1841 if (paramLocation.getBlock().getType().equals(Material.SKULL)) {
1842 localBlock = paramLocation.getBlock();
1843 }
1844 }
1845 if (localBlock != null)
1846 {
1847 localObject = (Skull)localBlock.getState();
1848 ((Skull)localObject).setSkullType(SkullType.PLAYER);
1849 ((Skull)localObject).setOwner(paramString.equals("NO_PLAYER") ? "Notch" : paramString);
1850 ((Skull)localObject).update();
1851 }
1852 }
1853}