Advertisement
Guest User

Untitled

a guest
Mar 10th, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 28.85 KB | None | 0 0
  1. package sk.Adin.Anni;
  2.  
  3. import java.io.File;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.HashSet;
  7. import java.util.List;
  8. import java.util.Set;
  9. import java.util.logging.Level;
  10. import org.apache.commons.lang.WordUtils;
  11. import org.bukkit.Bukkit;
  12. import org.bukkit.ChatColor;
  13. import org.bukkit.DyeColor;
  14. import org.bukkit.Location;
  15. import org.bukkit.Material;
  16. import org.bukkit.OfflinePlayer;
  17. import org.bukkit.Sound;
  18. import org.bukkit.World;
  19. import org.bukkit.command.CommandSender;
  20. import org.bukkit.configuration.Configuration;
  21. import org.bukkit.configuration.ConfigurationSection;
  22. import org.bukkit.configuration.file.FileConfiguration;
  23. import org.bukkit.configuration.file.YamlConfiguration;
  24. import org.bukkit.entity.Player;
  25. import org.bukkit.inventory.ItemStack;
  26. import org.bukkit.inventory.PlayerInventory;
  27. import org.bukkit.inventory.meta.ItemMeta;
  28. import org.bukkit.plugin.PluginManager;
  29. import org.bukkit.plugin.java.JavaPlugin;
  30. import org.bukkit.potion.PotionEffect;
  31. import org.bukkit.scoreboard.Team;
  32.  
  33. import sk.Adin.Anni.api.GameStartEvent;
  34. import sk.Adin.Anni.api.IconMenu;
  35. import sk.Adin.Anni.api.PhaseChangeEvent;
  36. import sk.Adin.Anni.bar.ActionAPI;
  37. import sk.Adin.Anni.bar.TitleAPI;
  38. import sk.Adin.Anni.chat.ChatListener;
  39. import sk.Adin.Anni.chat.ChatUtil;
  40. import sk.Adin.Anni.commands.AnniCommand;
  41. import sk.Adin.Anni.commands.ClassCommand;
  42. import sk.Adin.Anni.commands.DistanceCommand;
  43. import sk.Adin.Anni.commands.MapCommand;
  44. import sk.Adin.Anni.commands.StatsCommand;
  45. import sk.Adin.Anni.commands.TeamCommand;
  46. import sk.Adin.Anni.commands.TeamShortcutCommand;
  47. import sk.Adin.Anni.commands.VoteCommand;
  48. import sk.Adin.Anni.listeners.BossListener;
  49. import sk.Adin.Anni.listeners.ClassAbilityListener;
  50. import sk.Adin.Anni.listeners.CraftingListener;
  51. import sk.Adin.Anni.listeners.EnderBrewingStandListener;
  52. import sk.Adin.Anni.listeners.EnderChestListener;
  53. import sk.Adin.Anni.listeners.EnderFurnaceListener;
  54. import sk.Adin.Anni.listeners.PlayerListener;
  55. import sk.Adin.Anni.listeners.ResourceListener;
  56. import sk.Adin.Anni.listeners.SoulboundListener;
  57. import sk.Adin.Anni.listeners.WandListener;
  58. import sk.Adin.Anni.listeners.WorldListener;
  59. import sk.Adin.Anni.manager.BossManager;
  60. import sk.Adin.Anni.manager.ConfigManager;
  61. import sk.Adin.Anni.manager.DatabaseManager;
  62. import sk.Adin.Anni.manager.MapManager;
  63. import sk.Adin.Anni.manager.PhaseManager;
  64. import sk.Adin.Anni.manager.RestartHandler;
  65. import sk.Adin.Anni.manager.ScoreboardManager;
  66. import sk.Adin.Anni.manager.SignManager;
  67. import sk.Adin.Anni.manager.VotingManager;
  68. import sk.Adin.Anni.maps.MapLoader;
  69. import sk.Adin.Anni.object.Boss;
  70. import sk.Adin.Anni.object.GameTeam;
  71. import sk.Adin.Anni.object.Kit;
  72. import sk.Adin.Anni.object.PlayerMeta;
  73. import sk.Adin.Anni.object.Shop;
  74. import sk.Adin.Anni.stats.StatType;
  75. import sk.Adin.Anni.stats.StatsManager;
  76.  
  77.  
  78. public final class Anni extends JavaPlugin {
  79. private ConfigManager configManager;
  80. public VotingManager voting;
  81. private MapManager maps;
  82. private PhaseManager timer;
  83. private ResourceListener resources;
  84. private EnderFurnaceListener enderFurnaces;
  85. private EnderBrewingStandListener enderBrewingStands;
  86. private EnderChestListener enderChests;
  87. private StatsManager stats;
  88. private SignManager sign;
  89. private ScoreboardManager sb;
  90. private DatabaseManager db;
  91. private BossManager boss;
  92.  
  93. public static HashMap<String, String> messages = new HashMap<>();
  94.  
  95. public boolean useMysql = false;
  96. public boolean updateAvailable = false;
  97. public boolean motd = true;
  98. public String newVersion;
  99. public static Anni anni;
  100. private HashMap<Player, String> portal;
  101.  
  102. public int build = 1;
  103. public int lastJoinPhase = 2;
  104. public int respawn = 10;
  105.  
  106. public boolean runCommand = false;
  107. public List<String> commands = new ArrayList<>();
  108.  
  109. public String mysqlName = "annihilation";
  110.  
  111. public static Anni getInstance() {
  112. return anni;
  113. }
  114.  
  115. @Override
  116. public void onEnable()
  117. {
  118. Bukkit.getLogger().info("");
  119. Bukkit.getLogger().info("");
  120. Bukkit.getLogger().info("");
  121. Bukkit.getLogger().info("");
  122. Bukkit.getLogger().info("");
  123. Bukkit.getLogger().info("");
  124. Bukkit.getLogger().info("");
  125. Bukkit.getLogger().info("");
  126. Bukkit.getLogger().info("");
  127. Bukkit.getLogger().info("");
  128. Bukkit.getLogger().info("");
  129. Bukkit.getLogger().info("");
  130. Bukkit.getLogger().info("");
  131. Bukkit.getLogger().info("");
  132. Bukkit.getLogger().info("");
  133. Bukkit.getLogger().info("");
  134. Bukkit.getLogger().info("");
  135. Bukkit.getLogger().info("");
  136. Bukkit.getLogger().info("");
  137. Bukkit.getLogger().info("");
  138. Bukkit.getLogger().info("");
  139. Bukkit.getLogger().info("");
  140. Bukkit.getLogger().info("");
  141. Bukkit.getLogger().info("Annihilation> by Kirito.");
  142.  
  143.  
  144. anni = this;
  145. configManager = new ConfigManager(this);
  146. configManager.loadConfigFiles("config.yml", "maps.yml", "shops.yml",
  147. "stats.yml");
  148.  
  149. MapLoader mapLoader = new MapLoader(getLogger(), getDataFolder());
  150.  
  151. runCommand = getConfig().contains("commandsToRunAtEndGame");
  152.  
  153. if (runCommand) {
  154. commands = getConfig().getStringList("commandsToRunAtEndGame");
  155. } else commands = null;
  156.  
  157. maps = new MapManager(this, mapLoader,
  158. configManager.getConfig("maps.yml"));
  159.  
  160. Configuration shops = configManager.getConfig("shops.yml");
  161. new Shop(this, "Weapon", shops);
  162. new Shop(this, "Brewing", shops);
  163. stats = new StatsManager(this, configManager);
  164. resources = new ResourceListener(this);
  165. enderFurnaces = new EnderFurnaceListener(this);
  166. enderBrewingStands = new EnderBrewingStandListener(this);
  167. enderChests = new EnderChestListener();
  168. sign = new SignManager(this);
  169. Configuration config = configManager.getConfig("config.yml");
  170. portal = new HashMap<Player, String>();
  171. timer = new PhaseManager(this, config.getInt("start-delay"),
  172. config.getInt("phase-period"));
  173. voting = new VotingManager(this);
  174. sb = new ScoreboardManager();
  175. boss = new BossManager(this);
  176.  
  177. PluginManager pm = getServer().getPluginManager();
  178.  
  179. sign.loadSigns();
  180.  
  181. String sbb = this.getConfig().getString("LobbySB").replace("&", "§");
  182. sb.resetScoreboard(sbb);
  183.  
  184. build = this.getConfig().getInt("build", 5);
  185. lastJoinPhase = this.getConfig().getInt("lastJoinPhase", 2);
  186. respawn = this.getConfig().getInt("bossRespawnDelay", 10);
  187.  
  188. pm.registerEvents(resources, this);
  189. pm.registerEvents(enderFurnaces, this);
  190. pm.registerEvents(new EnderFurnaceListener(this), this);
  191. pm.registerEvents(enderBrewingStands, this);
  192. pm.registerEvents(enderChests, this);
  193. pm.registerEvents(new ChatListener(this), this);
  194. pm.registerEvents(new PlayerListener(this), this);
  195. pm.registerEvents(new WorldListener(), this);
  196. pm.registerEvents(new SoulboundListener(), this);
  197. pm.registerEvents(new WandListener(this), this);
  198. pm.registerEvents(new CraftingListener(), this);
  199. pm.registerEvents(new ClassAbilityListener(this), this);
  200. pm.registerEvents(new BossListener(this), this);
  201.  
  202. getCommand("annihilation").setExecutor(new AnniCommand(this));
  203. getCommand("class").setExecutor(new ClassCommand(this));
  204. getCommand("stats").setExecutor(new StatsCommand(stats));
  205. getCommand("team").setExecutor(new TeamCommand(this));
  206. getCommand("vote").setExecutor(new VoteCommand(voting));
  207. getCommand("red").setExecutor(new TeamShortcutCommand());
  208. getCommand("green").setExecutor(new TeamShortcutCommand());
  209. getCommand("yellow").setExecutor(new TeamShortcutCommand());
  210. getCommand("blue").setExecutor(new TeamShortcutCommand());
  211. getCommand("distance").setExecutor(new DistanceCommand(this));
  212. getCommand("map").setExecutor(new MapCommand(this, mapLoader));
  213.  
  214. if (config.getString("stats").equalsIgnoreCase("sql"))
  215. useMysql = true;
  216.  
  217. motd = config.getBoolean("enableMotd", true);
  218.  
  219. if (useMysql) {
  220. String host = config.getString("MySQL.host");
  221. Integer port = config.getInt("MySQL.port");
  222. String name = config.getString("MySQL.name");
  223. String user = config.getString("MySQL.user");
  224. String pass = config.getString("MySQL.pass");
  225. db = new DatabaseManager(host, port, name, user, pass, this);
  226.  
  227. db.query("CREATE TABLE IF NOT EXISTS `" + mysqlName + "` ( `username` varchar(16) NOT NULL, "
  228. + "`kills` int(16) NOT NULL, `deaths` int(16) NOT NULL, `wins` int(16) NOT NULL, "
  229. + "`losses` int(16) NOT NULL, `nexus_damage` int(16) NOT NULL, "
  230. + "UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;");
  231. } else
  232. db = new DatabaseManager(this);
  233.  
  234. if (getServer().getPluginManager().isPluginEnabled("Vault")) {
  235. VaultHooks.vault = true;
  236. if (!VaultHooks.instance().setupPermissions()) {
  237. VaultHooks.vault = false;
  238. getLogger().warning("Unable to load Vault: No permission plugin found.");
  239. } else {
  240. if (!VaultHooks.instance().setupChat()) {
  241. VaultHooks.vault = false;
  242. getLogger().warning("Unable to load Vault: No chat plugin found.");
  243. } else {
  244. getLogger().info("Vault hook initalized!");
  245. }
  246. }
  247. } else {
  248. getLogger().warning("Vault not found! Permissions features disabled.");
  249. }
  250.  
  251. reset();
  252.  
  253. ChatUtil.setRoman(getConfig().getBoolean("roman", false));
  254. }
  255.  
  256. public boolean startTimer() {
  257. if (timer.isRunning())
  258. return false;
  259.  
  260. timer.start();
  261.  
  262. return true;
  263. }
  264.  
  265. public void loadMap(final String map) {
  266. FileConfiguration config = configManager.getConfig("maps.yml");
  267. ConfigurationSection section = config.getConfigurationSection(map);
  268.  
  269. World w = getServer().getWorld(map);
  270.  
  271. for (GameTeam team : GameTeam.teams()) {
  272. String name = team.name().toLowerCase();
  273. if (section.contains("spawns." + name)) {
  274. for (String s : section.getStringList("spawns." + name))
  275. team.addSpawn(Util.parseLocation(getServer().getWorld(map),
  276. s));
  277. }
  278. if (section.contains("nexuses." + name)) {
  279. Location loc = Util.parseLocation(w,
  280. section.getString("nexuses." + name));
  281. team.loadNexus(loc, 75);
  282. }
  283. if (section.contains("furnaces." + name)) {
  284. Location loc = Util.parseLocation(w,
  285. section.getString("furnaces." + name));
  286. enderFurnaces.setFurnaceLocation(team, loc);
  287. loc.getBlock().setType(Material.BURNING_FURNACE);
  288. }
  289. if (section.contains("brewingstands." + name)) {
  290. Location loc = Util.parseLocation(w,
  291. section.getString("brewingstands." + name));
  292. enderBrewingStands.setBrewingStandLocation(team, loc);
  293. loc.getBlock().setType(Material.BREWING_STAND);
  294. }
  295. if (section.contains("enderchests." + name)) {
  296. Location loc = Util.parseLocation(w,
  297. section.getString("enderchests." + name));
  298. enderChests.setEnderChestLocation(team, loc);
  299. loc.getBlock().setType(Material.ENDER_CHEST);
  300. }
  301. }
  302.  
  303. if (section.contains("bosses")) {
  304. HashMap<String, Boss> bosses = new HashMap<String, Boss>();
  305. ConfigurationSection sec = section
  306. .getConfigurationSection("bosses");
  307. for (String boss : sec.getKeys(false)) {
  308. bosses.put(
  309. boss,
  310. new Boss(boss, sec.getInt(boss + ".hearts") * 2, sec
  311. .getString(boss + ".name"), Util.parseLocation(
  312. w, sec.getString(boss + ".spawn")), Util
  313. .parseLocation(w,
  314. sec.getString(boss + ".chest"))));
  315. }
  316. boss.loadBosses(bosses);
  317. }
  318.  
  319. if (section.contains("diamonds")) {
  320. Set<Location> diamonds = new HashSet<>();
  321. for (String s : section.getStringList("diamonds"))
  322. diamonds.add(Util.parseLocation(w, s));
  323. resources.loadDiamonds(diamonds);
  324. }
  325. }
  326. public HashMap<Player, String> getPortalPlayers() {
  327. return portal;
  328. }
  329. public void startGame() {
  330. for (Player p : Bukkit.getOnlinePlayers()) {
  331. for (Player pp : Bukkit.getOnlinePlayers()) {
  332. p.showPlayer(pp);
  333. pp.showPlayer(p);
  334. }
  335. }
  336.  
  337. Bukkit.getPluginManager().callEvent(
  338. new GameStartEvent(maps.getCurrentMap()));
  339. sb.scores.clear();
  340.  
  341. for (OfflinePlayer score : sb.sb.getPlayers())
  342. sb.sb.resetScores(score);
  343. String sbb = this.getConfig().getString("GameSB").replace("&", "§").replace("%MAP%", WordUtils.capitalize(voting.getWinner()));
  344. sb.obj.setDisplayName(sbb);
  345.  
  346. for (GameTeam t : GameTeam.teams()) {
  347. sb.scores.put(t.name(), sb.obj.getScore(Bukkit
  348. .getOfflinePlayer(WordUtils.capitalize(t.name()
  349. .toLowerCase() + " Nexus"))));
  350. sb.scores.get(t.name()).setScore(t.getNexus().getHealth());
  351.  
  352. Team sbt = sb.sb.registerNewTeam(t.name() + "SB");
  353. sbt.addPlayer(Bukkit.getOfflinePlayer(WordUtils
  354. .capitalize(WordUtils.capitalize(t.name().toLowerCase()
  355. + " Nexus"))));
  356. sbt.setPrefix(t.color().toString());
  357. }
  358.  
  359. sb.obj.setDisplayName(sbb);
  360.  
  361. for (Player p : getServer().getOnlinePlayers())
  362. if (PlayerMeta.getMeta(p).getTeam() != GameTeam.NONE)
  363. Util.sendPlayerToGame(p, this);
  364.  
  365. sb.update();
  366.  
  367. getServer().getScheduler().runTaskTimer(this, new Runnable() {
  368. @Override
  369. public void run() {
  370. for (Player p : getServer().getOnlinePlayers()) {
  371. if (PlayerMeta.getMeta(p).getKit() == Kit.SCOUT) {
  372. PlayerMeta.getMeta(p).getKit().addScoutParticles(p);
  373. }
  374. }
  375. }
  376. }, 0L, 1200L);
  377.  
  378. getServer().getScheduler().runTaskTimer(this, new Runnable() {
  379. @Override
  380. public void run() {
  381. for (GameTeam t : GameTeam.values()) {
  382. if (t != GameTeam.NONE && t.getNexus().isAlive()) {
  383. Location nexus = t.getNexus().getLocation().clone();
  384. nexus.add(0.5, 0, 0.5);
  385. Util.ParticleEffect.PORTAL.getName();
  386. Util.ParticleEffect.ENCHANTMENT_TABLE.getName();
  387. }
  388. }
  389. }
  390. }, 100L, 5L);
  391. }
  392.  
  393. public void advancePhase() {
  394. ChatUtil.phaseMessage(timer.getPhase());
  395.  
  396. if (timer.getPhase() == 2)
  397. boss.spawnBosses();
  398.  
  399.  
  400. if (timer.getPhase() == 3)
  401. resources.spawnDiamonds();
  402.  
  403. Bukkit.getPluginManager().callEvent(
  404. new PhaseChangeEvent(timer.getPhase()));
  405.  
  406. getSignHandler().updateSigns(GameTeam.RED);
  407. getSignHandler().updateSigns(GameTeam.BLUE);
  408. getSignHandler().updateSigns(GameTeam.GREEN);
  409. getSignHandler().updateSigns(GameTeam.YELLOW);
  410. }
  411.  
  412. public void onSecond() {
  413. long time = timer.getTime();
  414. String prefix = this.getConfig().getString("prefix").replace("&", "§");
  415. if (time == -5L) {
  416.  
  417. String winner = voting.getWinner();
  418. voting.end();
  419. getServer().broadcastMessage(prefix + " §7Hlasovani skoncilo!");
  420. maps.selectMap(winner);
  421. String msgT = this.getConfig().getString("MapTitle").replace("&", "§").replace("%MAP%", WordUtils.capitalize(winner));
  422. String msgST = this.getConfig().getString("MapSubTitle").replace("&", "§").replace("%MAP%", WordUtils.capitalize(winner));
  423. getServer().broadcastMessage(prefix + " §7Mapa §e" + WordUtils.capitalize(winner) + " §7byla odhlasovana!");
  424. loadMap(winner);
  425.  
  426. for (Player p : Bukkit.getOnlinePlayers()) {
  427. if (Anni.getInstance().getConfig().getBoolean("EnableMapTitle") == true) {
  428. TitleAPI.sendTitle(p, 20, 50, 20, msgT, msgST);
  429. }
  430. p.playSound(p.getLocation(), Sound.ANVIL_USE, 1, 1);
  431. }
  432. }
  433.  
  434. if (time > -5L) {
  435. if (this.getPhase() == 0) {
  436. for (Player p : Bukkit.getOnlinePlayers()) {
  437. p.playSound(p.getLocation(), Sound.LEVEL_UP, 1, 2F);
  438.  
  439. }
  440. }
  441. }
  442.  
  443. if (time == 0L)
  444. startGame();
  445. }
  446.  
  447. public int getPhase() {
  448. return timer.getPhase();
  449. }
  450.  
  451. public MapManager getMapManager() {
  452. return maps;
  453. }
  454.  
  455. public StatsManager getStatsManager() {
  456. return stats;
  457. }
  458.  
  459. public DatabaseManager getDatabaseHandler() {
  460. return db;
  461. }
  462.  
  463. public ConfigManager getConfigManager() {
  464. return configManager;
  465. }
  466.  
  467. public int getPhaseDelay() {
  468. return configManager.getConfig("config.yml").getInt("phase-period");
  469. }
  470.  
  471. public void log(String m, Level l) {
  472. getLogger().log(l, m);
  473. }
  474.  
  475. public VotingManager getVotingManager() {
  476. return voting;
  477. }
  478.  
  479. public ScoreboardManager getScoreboardHandler() {
  480. return sb;
  481. }
  482.  
  483. public void endGame(GameTeam winner) {
  484. if (winner == null)
  485. return;
  486.  
  487. ChatUtil.winMessage(winner);
  488. timer.stop();
  489.  
  490. for (Player p : getServer().getOnlinePlayers()) {
  491. if (PlayerMeta.getMeta(p).getTeam() == winner)
  492. stats.incrementStat(StatType.WINS, p);
  493. }
  494.  
  495. long restartDelay = configManager.getConfig("config.yml").getLong(
  496. "restart-delay");
  497. RestartHandler rs = new RestartHandler(this, restartDelay);
  498. rs.start(timer.getTime(), winner.getColor(winner));
  499. }
  500.  
  501. public void reset() {
  502. String sbb = this.getConfig().getString("LobbySB").replace("&", "§");
  503. sb.resetScoreboard(sbb);
  504. maps.reset();
  505. timer.reset();
  506. PlayerMeta.reset();
  507. for (Player p : getServer().getOnlinePlayers()) {
  508. PlayerMeta.getMeta(p).setTeam(GameTeam.NONE);
  509. p.teleport(maps.getLobbySpawnPoint());
  510. ActionAPI.sendPlayerAnnouncement(p, ChatColor.GRAY
  511. + "Vitej v Anni!");
  512. p.setMaxHealth(20D);
  513. p.setHealth(20D);
  514. p.setFoodLevel(20);
  515. p.setSaturation(20F);
  516. int id = this.getConfig().getInt("ItemClassID");
  517. @SuppressWarnings("deprecation")
  518. ItemStack selector = new ItemStack(Material.getMaterial(id));
  519. ItemMeta itemMeta = selector.getItemMeta();
  520. String item = this.getConfig().getString("JoinItemClassName").replace("&", "§");
  521. itemMeta.setDisplayName(item);
  522. Util.giveTeamSelector(p);
  523. selector.setItemMeta(itemMeta);
  524. int slot = this.getConfig().getInt("JoinItemClassSlot");
  525. p.getInventory().setItem(slot-1, selector);
  526.  
  527. p.updateInventory();
  528. }
  529.  
  530. voting.start();
  531. sb.update();
  532.  
  533. for (Player p : Bukkit.getOnlinePlayers()) {
  534. for (Player pp : Bukkit.getOnlinePlayers()) {
  535. p.showPlayer(pp);
  536. pp.showPlayer(p);
  537. }
  538. }
  539.  
  540. Bukkit.getScheduler().runTaskLater(this, new Runnable() {
  541. @Override
  542. public void run() {
  543. for (Player p : getServer().getOnlinePlayers()) {
  544. PlayerInventory inv = p.getInventory();
  545. inv.setHelmet(null);
  546. inv.setChestplate(null);
  547. inv.setLeggings(null);
  548. inv.setBoots(null);
  549.  
  550. p.getInventory().clear();
  551.  
  552. for (PotionEffect effect : p.getActivePotionEffects())
  553. p.removePotionEffect(effect.getType());
  554.  
  555. p.setLevel(0);
  556. p.setExp(0);
  557. p.setSaturation(20F);
  558.  
  559. Anni plugin = Anni.getInstance();
  560. int id = plugin.getConfig().getInt("ItemClassID");
  561. @SuppressWarnings("deprecation")
  562. ItemStack selector = new ItemStack(Material.getMaterial(id));
  563. ItemMeta itemMeta = selector.getItemMeta();
  564. String item = plugin.getConfig().getString("JoinItemClassName").replace("&", "§");
  565. itemMeta.setDisplayName(item);
  566. Util.giveTeamSelector(p);
  567. selector.setItemMeta(itemMeta);
  568. int slot = plugin.getConfig().getInt("JoinItemClassSlot");
  569. p.getInventory().setItem(slot-1, selector);
  570.  
  571. p.updateInventory();
  572. }
  573.  
  574. for (GameTeam t : GameTeam.values())
  575. if (t != GameTeam.NONE)
  576. sign.updateSigns(t);
  577.  
  578. checkStarting();
  579. }
  580. }, 2L);
  581. }
  582.  
  583. public void checkWin() {
  584. int alive = 0;
  585. GameTeam aliveTeam = null;
  586. for (GameTeam t : GameTeam.teams()) {
  587. if (t.getNexus().isAlive()) {
  588. alive++;
  589. aliveTeam = t;
  590. }
  591. }
  592. if (alive == 1) {
  593. endGame(aliveTeam);
  594. }
  595. }
  596.  
  597. public SignManager getSignHandler() {
  598. return sign;
  599. }
  600.  
  601. public void setSignHandler(SignManager sign) {
  602. this.sign = sign;
  603. }
  604.  
  605. public void checkStarting() {
  606. if (!timer.isRunning()) {
  607. if (Bukkit.getOnlinePlayers().size() >= getConfig().getInt(
  608. "requiredToStart"))
  609. timer.start();
  610. }
  611. }
  612.  
  613. public BossManager getBossManager() {
  614. return boss;
  615. }
  616.  
  617. public PhaseManager getPhaseManager() {
  618. return timer;
  619. }
  620.  
  621. public void listTeams(CommandSender sender) {
  622. sender.sendMessage("§8============[ §aTeams §8]============");
  623. for (GameTeam t : GameTeam.teams()) {
  624. int size = 0;
  625.  
  626. for (Player p : Bukkit.getOnlinePlayers()) {
  627. PlayerMeta meta = PlayerMeta.getMeta(p);
  628. if (meta.getTeam() == t)
  629. size++;
  630. }
  631.  
  632. if (size != 1) {
  633. sender.sendMessage(t.coloredName() + " §7- " + size + " §6hracu");
  634. } else {
  635. sender.sendMessage(t.coloredName() + " §7- " + size + " §6hrac");
  636. }
  637. }
  638. sender.sendMessage("§8==================================");
  639. }
  640.  
  641. public void joinTeam(Player player, String team) {
  642. String prefix = this.getConfig().getString("prefix").replace("&", "§");
  643. PlayerMeta meta = PlayerMeta.getMeta(player);
  644. if (meta.getTeam() != GameTeam.NONE && !player.hasPermission("anni.bypass.teamlimitor")) {
  645. player.sendMessage(prefix + " §cNemuzes menit teamy!");
  646. return;
  647. }
  648.  
  649. GameTeam target;
  650. try {
  651. target = GameTeam.valueOf(team.toUpperCase());
  652. } catch (IllegalArgumentException e) {
  653. player.sendMessage(prefix + ChatColor.RED + " §cNeznamy team!");
  654. listTeams(player);
  655. return;
  656. }
  657.  
  658. if (Util.isTeamTooBig(target)
  659. && !player.hasPermission("anni.bypass.teamlimit")) {
  660. player.sendMessage(prefix + " §cTento team je plny!");
  661. return;
  662. }
  663.  
  664. if (target.getNexus() != null) {
  665. if (target.getNexus().getHealth() == 0 && getPhase() > 1) {
  666. player.sendMessage(prefix + " §cTento team ma zniceny nexus!");
  667. return;
  668. }
  669. }
  670.  
  671. if (getPhase() > lastJoinPhase
  672. && !player.hasPermission("anni.bypass.phaselimiter")) {
  673. player.kickPlayer(prefix + ChatColor.RED
  674. + " Nemuzes se pripojit do teto faze!");
  675. return;
  676. }
  677.  
  678. String msg = this.getConfig().getString("JoinTitleTeam").replace("&", "§").replace("%TEAM%", target.coloredName());
  679. String msg1 = this.getConfig().getString("JoinSubTitleTeam").replace("&", "§").replace("%TEAM%", target.coloredName());
  680.  
  681. player.sendMessage(prefix + " §7Zvoleny team §r"
  682. + target.coloredName());
  683. if (Anni.getInstance().getConfig().getBoolean("EnableJoinTeamTitle") == true) {
  684. TitleAPI.sendTitle(player, 20, 50, 20, msg, msg1);
  685. }
  686. meta.setTeam(target);
  687.  
  688. getScoreboardHandler().teams.get(team.toUpperCase()).addPlayer(
  689. player);
  690.  
  691. if (getPhase() > 0) {
  692. Util.sendPlayerToGame(player, this);
  693. }
  694.  
  695. getSignHandler().updateSigns(GameTeam.RED);
  696. getSignHandler().updateSigns(GameTeam.BLUE);
  697. getSignHandler().updateSigns(GameTeam.GREEN);
  698. getSignHandler().updateSigns(GameTeam.YELLOW);
  699. }
  700. public void Team(final Player p) {
  701. @SuppressWarnings("deprecation")
  702. IconMenu menu = new IconMenu("§0§l§nVyber Teamu", 9, new IconMenu.OptionClickEventHandler() {
  703. @Override
  704. public void onOptionClick(IconMenu.OptionClickEvent event) {
  705.  
  706. String yellow = anni.getConfig().getString("YellowName").replace("&", "§");
  707. String red = anni.getConfig().getString("RedName").replace("&", "§");
  708. String green = anni.getConfig().getString("GreenName").replace("&", "§");
  709. String blue = anni.getConfig().getString("BlueName").replace("&", "§");
  710.  
  711. String d = event.getName();
  712. Player p = event.getPlayer();
  713. event.setWillClose(true);
  714. anni.joinTeam(p, ChatColor.stripColor(d.toLowerCase()));
  715. if (d == yellow) {
  716. anni.joinTeam(p, ChatColor.stripColor("§eYellow".toLowerCase()));
  717. }
  718. if (d == red) {
  719. anni.joinTeam(p, ChatColor.stripColor("§cRed".toLowerCase()));
  720. }
  721. if (d == green) {
  722. anni.joinTeam(p, ChatColor.stripColor("§aGreen".toLowerCase()));
  723. }
  724. if (d == blue) {
  725. anni.joinTeam(p, ChatColor.stripColor("§9Blue".toLowerCase()));
  726. }
  727.  
  728. }
  729. }, this).setOption(anni.getConfig().getInt("YellowSlot") -1, new ItemStack(Material.WOOL, GameTeam.YELLOW.getPlayers().size(), DyeColor.YELLOW.getData()), anni.getConfig().getString("YellowName").replace("&", "§"), anni.getConfig().getString("YellowLore").replace("&", "§").replaceAll("%YELLOW%", String.valueOf(GameTeam.YELLOW.getPlayers().size())).replace("%SIPKA%", "»"))
  730. .setOption(anni.getConfig().getInt("RedSlot") -1, new ItemStack(Material.WOOL, GameTeam.RED.getPlayers().size(), DyeColor.RED.getData()), anni.getConfig().getString("RedName").replace("&", "§"), anni.getConfig().getString("RedLore").replace("&", "§").replaceAll("%RED%", String.valueOf(GameTeam.RED.getPlayers().size())).replace("%SIPKA%", "»"))
  731. .setOption(anni.getConfig().getInt("GreenSlot") -1, new ItemStack(Material.WOOL, GameTeam.GREEN.getPlayers().size(), DyeColor.GREEN.getData()), anni.getConfig().getString("GreenName").replace("&", "§"), anni.getConfig().getString("GreenLore").replace("&", "§").replaceAll("%GREEN%", String.valueOf(GameTeam.GREEN.getPlayers().size())).replace("%SIPKA%", "»"))
  732. .setOption(anni.getConfig().getInt("BlueSlot") -1, new ItemStack(Material.WOOL, GameTeam.BLUE.getPlayers().size(), DyeColor.BLUE.getData()), anni.getConfig().getString("BlueName").replace("&", "§"), anni.getConfig().getString("BlueLore").replace("&", "§").replaceAll("%BLUE%", String.valueOf(GameTeam.BLUE.getPlayers().size())).replace("%SIPKA%", "»"));
  733.  
  734. menu.open(p);
  735. }
  736. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement