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