Lisenochek

Untitled

Jan 10th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 42.61 KB | None | 0 0
  1. package ru.lisenochek.ftclans.API;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandExecutor;
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.entity.Player;
  8. import ru.lisenochek.ftclans.clan.Clan;
  9. import ru.lisenochek.ftclans.clan.InvitedPlayer;
  10. import ru.lisenochek.ftclans.clan.Member;
  11. import ru.lisenochek.ftclans.utils.C;
  12.  
  13. import java.util.*;
  14.  
  15. public class CommandsAPI implements CommandExecutor {
  16.  
  17. @Override
  18. public boolean onCommand(CommandSender s, Command cmd, String str, String[] args) {
  19.  
  20. if (!(s instanceof Player)) {
  21. s.sendMessage(C.c("&cКоманду используют только игроки!"));
  22. return true;
  23. }
  24.  
  25. Player p = (Player) s;
  26. Clan clan = Clan.getClanByName(p.getName());
  27.  
  28. if (!p.hasPermission("ftclans.user")) return true;
  29.  
  30. if (args.length == 0) {
  31.  
  32. if (clan == null) {
  33. C.setListMessage(p, Arrays.asList(
  34. "&c&nВы не состоите в клане.",
  35. "",
  36. "&3/clan create &c(&eназвание клана&c) &a- основать клан.",
  37. "&aЦена создание клана: &e5000&6&lⓂ&a.",
  38. ""
  39. ));
  40. } else {
  41. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  42. C.setListMessage(p, Arrays.asList(
  43. "&6Помощь в клане. &d(Страница 1/2)",
  44. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  45. "",
  46. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  47. "&3/clan home &a- переместиться в клановый дом.",
  48. "&3/clan deposit &c(&eкол-во&c] &a- вложить монет в казну клана.",
  49. "&3/clan info &a- информация о клане.",
  50. "&3/clan online &a- узнать онлайн соклановцев.",
  51. "&3/clan list &a- список других кланов.",
  52. ""
  53. ));
  54. } else {
  55. C.setListMessage(p, Arrays.asList(
  56. "&6Помощь по созданию и управлению кланом. &d(Страница 1/4)",
  57. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  58. "",
  59. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  60. "&eЛидерский чат: перед сообщением поставьте &c* &e.",
  61. "&3/clan addmoder &c(&eникнейм лисенка&c) &a- повысить члена клана до модератора.",
  62. "&3/clan delmoder &c(&eникнейм лисенка&c) &a- понизить члена клана до соклановца.",
  63. "&3/clan take &c(&eкол-во&c) &a- взять монет из клановой казны.",
  64. "&3/clan sethome &a- установить клановый дом.",
  65. ""
  66. ));
  67. }
  68. }
  69. return true;
  70. }
  71.  
  72. switch (args[0].toLowerCase()) {
  73.  
  74. case "page":
  75. if (clan == null) {
  76. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  77. return true;
  78. }
  79.  
  80. if (args.length == 1) {
  81. p.sendMessage(C.getPrefix() + C.c("&cВы не указали страницу помощи!"));
  82. return true;
  83. }
  84.  
  85. switch (Integer.valueOf(args[1])) {
  86.  
  87. case 1:
  88. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  89. C.setListMessage(p, Arrays.asList(
  90. "&6Помощь в клане. &d(Страница 1/2)",
  91. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  92. "&7=======================================",
  93. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  94. "&3/clan home &a- переместиться в клановый дом.",
  95. "&3/clan deposit &c(&eкол-во&c] &a- вложить монет в казну клана.",
  96. "&3/clan info &a- информация о клане.",
  97. "&3/clan online &a- узнать онлайн соклановцев.",
  98. "&3/clan list &a- список других кланов.",
  99. ""
  100. ));
  101. } else {
  102. C.setListMessage(p, Arrays.asList(
  103. "&6Помощь по созданию и управлению кланом. &d(Страница 1/4)",
  104. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  105. "&7=======================================",
  106. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  107. "&eЛидерский чат: перед сообщением поставьте &c* &e.",
  108. "&3/clan addmoder &c(&eникнейм лисенка&c) &a- повысить члена клана до модератора.",
  109. "&3/clan delmoder &c(&eникнейм лисенка&c) &a- понизить члена клана до соклановца.",
  110. "&3/clan take &c(&eкол-во&c) &a- взять монет из клановой казны.",
  111. "&3/clan sethome &a- установить клановый дом.",
  112. ""));
  113. }
  114. return true;
  115. case 2:
  116. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  117. C.setListMessage(p, Arrays.asList(
  118. "&6Помощь в клане. &d(Страница 2/2)",
  119. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  120. "",
  121. "&3/clan top &a- топ &c10&a самых лучших кланов на сервере.",
  122. "&3/clan leave &a- покинуть клан.",
  123. ""
  124. ));
  125. } else {
  126. C.setListMessage(p, Arrays.asList(
  127. "&6Помощь по созданию и управлению кланом. &d(Страница 2/4)",
  128. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  129. "",
  130. "&3/clan removehome &a- удалить клановый дом.",
  131. "&3/clan msg &a- сделать объявление в клане.",
  132. "&3/clan invite &c(&eникнейм лисенка&c) &a- пригласить лисенка в клан.",
  133. "&3/clan home &a- переместиться в клановый дом.",
  134. "&3/clan kick &c(&eникнейм лисенка&c) &a- выгнать лисенка из клана.",
  135. "&3/clan pvp &a- отключить или включить PvP между соклановцами.",
  136. ""
  137. ));
  138. }
  139. return true;
  140. case 3:
  141. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  142. p.sendMessage(C.getPrefix() + C.c("&cУкажите страницу от 1 до 2!"));
  143. return true;
  144. } else {
  145. C.setListMessage(p, Arrays.asList(
  146. "&6Помощь по созданию и управлению кланом. &d(Страница 3/4)",
  147. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  148. "",
  149. "&3/clan deposit &c(&ecкол-во&c) &a- вложить монет в казну клана.",
  150. "&3/clan info &a- информация о клане.",
  151. "&3/clan disband &a- расформировать клан.",
  152. "&3/clan online &a- узнать онлайн соклановцев.",
  153. "&3/clan list &a- список других кланов.",
  154. "&3/clan top &a- 10 самых лучших кланов на сервере.",
  155. ""
  156. ));
  157. }
  158. return true;
  159. case 4:
  160. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  161. p.sendMessage(C.getPrefix() + C.c("&cУкажите страницу от 1 до 2!"));
  162. return true;
  163. } else {
  164. C.setListMessage(p, Arrays.asList(
  165. "&6Помощь по созданию и управлению кланом. &d(Страница 4/4)",
  166. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  167. "",
  168. "&3/clan upgrade &a- улучшить клан &c(&e+1 место в клане&c)&a.",
  169. "&aЦена улучшения клана: &e" + 1000 + " &6&lⓂ&a."
  170. ));
  171.  
  172. if (!clan.hasLeader(p.getName()) && clan.isModer(p.getName())) {
  173. p.sendMessage(C.c("&3/clan leave &a- покинуть пост модератора клана."));
  174. } else {
  175. p.sendMessage(C.c("&3/clan leave &a- покинуть клан."));
  176. }
  177.  
  178. p.sendMessage(C.c("&3/clan leader &c(&eникнейм лисенка&c) &a- передать лидерство клана другому лисенку."));
  179. p.sendMessage("");
  180. }
  181. return true;
  182. default:
  183. return true;
  184. }
  185.  
  186. case "create": {
  187. if (args.length == 1) {
  188. p.sendMessage(C.getPrefix() + C.c("&cУкажите название клана!"));
  189. return true;
  190. }
  191.  
  192. if (Clan.getClan(args[1]) != null) {
  193. p.sendMessage(C.getPrefix() + C.c("&cКлан с таким названием уже существует!"));
  194. return true;
  195. }
  196.  
  197. String clanName = args[1].replaceAll("&.", "");
  198.  
  199. if (clanName.length() > 8) {
  200. p.sendMessage(C.getPrefix() + C.c("&cМаксимальное количество символов в названии клана: &7" + 8 + "&c!"));
  201. return true;
  202. }
  203.  
  204. if (clanName.length() < 3) {
  205. p.sendMessage(C.getPrefix() + C.c("&cМинимальное количество символов в названии клана: &7" + 3 + "&c!"));
  206. return true;
  207. }
  208.  
  209. if (clan != null) {
  210. p.sendMessage(C.getPrefix() + C.c("&cВы уже состоите в клане!"));
  211. return true;
  212. }
  213.  
  214. try {
  215. if (API.getEconomy().getBalance(p) < 5000) {
  216. p.sendMessage(C.getPrefix() + C.c("&cУ вас недостаточно монет для основания клана!"));
  217. return true;
  218. }
  219.  
  220. API.getEconomy().withdrawPlayer(p, 5000);
  221. } catch (Exception e) {
  222. e.printStackTrace();
  223. }
  224.  
  225. Clan.create(args[1], p.getName());
  226. p.sendMessage(C.getPrefix() + C.c("&aКлан под названием &7«" + Clan.getClanByName(p.getName()).getName() + "&7» &aбыл основан!"));
  227. return true;
  228. }
  229. case "disband": {
  230. if (clan == null) {
  231. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  232. return true;
  233. }
  234.  
  235. if (!clan.hasLeader(p.getName())) {
  236. p.sendMessage(C.getPrefix() + C.c("&cВы не лидер клана, чтобы распускать клан."));
  237. return true;
  238. }
  239.  
  240. clan.broadcast(C.getPrefix() + C.c("&cКлан &7«" + Clan.getClanByName(p.getName()).getName() + "&7» &cбыл расформирован."));
  241. clan.disband();
  242. return true;
  243. }
  244. case "msg": {
  245. if (clan == null) {
  246. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  247. return true;
  248. }
  249.  
  250. if (!clan.isModer(p.getName()) && !clan.hasLeader(p.getName())) {
  251. p.sendMessage(C.getPrefix() + C.c("&cСделать объявление может только лидер или модератор клана."));
  252. return true;
  253. }
  254.  
  255. StringBuilder message = new StringBuilder();
  256.  
  257. for (int i = 1; i < args.length; i++) message.append(args[i]).append(" ");
  258.  
  259. if (message.toString().length() <= 3) {
  260. s.sendMessage(C.getPrefix() + C.c("&cСообщение должно содержать не менее 3 символов."));
  261. return true;
  262. }
  263.  
  264. String colorMes = C.c("&9&l? &7&l&o");
  265.  
  266. if (clan.isModer(p.getName())) colorMes = C.c(" &9&l➠ &a&l&o");
  267. if (clan.hasLeader(p.getName())) colorMes = C.c(" &9&l➠ &6&l&o");
  268.  
  269. for (Object o : clan.getMembers()) {
  270.  
  271. Member m = (Member) o;
  272.  
  273. if (!Bukkit.getOfflinePlayer(m.getName()).isOnline()) continue;
  274.  
  275. Bukkit.getPlayer(m.getName()).sendMessage(C.c(C.getPrefix() + "&9&l| " + "&d[&b&lОбъявление&d] &9&l|&7&l " + p.getName() + colorMes + message.toString()));
  276. }
  277. return true;
  278. }
  279. case "online": {
  280. if (clan == null) {
  281. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  282. return true;
  283. }
  284.  
  285. p.sendMessage("");
  286. p.sendMessage(C.c("&6Список соклановцев, которые сейчас в режиме:"));
  287. p.sendMessage("");
  288.  
  289. for (Object o : clan.getMembers()) {
  290.  
  291. Member m = (Member) o;
  292.  
  293. if (!Bukkit.getOfflinePlayer(m.getName()).isOnline()) continue;
  294. if (p.getName().equalsIgnoreCase(m.getName())) p.sendMessage(C.c("&e > &a" + m.getName()));
  295. else p.sendMessage(C.c("&e - &a" + m.getName()));
  296. }
  297.  
  298. p.sendMessage("");
  299. return true;
  300. }
  301. case "info": {
  302. if (clan == null) {
  303. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  304. return true;
  305. }
  306.  
  307. C.setListMessage(p, Arrays.asList(
  308. "",
  309. "&3Информация о вашем клане:",
  310. " ",
  311. "&3Название клана: &8«&6&l" + clan.getName() + "&8»&3.",
  312. "&3Места в клане: &7" + clan.getMembers().size() + " &3/ &7" + clan.getMaxPlayers() + "&3.",
  313. "&3Лидер клана: &a" + Bukkit.getOfflinePlayer(clan.getLeader()).getName() + "&3.",
  314. "&3Казна клана: &a" + clan.getBalance() + "&6&lⓂ&3.",
  315. " "
  316. ));
  317.  
  318. StringBuilder b = new StringBuilder();
  319. Member m;
  320.  
  321. for (Iterator memberIterator = clan.getMembers().iterator(); memberIterator.hasNext(); b.append(C.c("&7" + Bukkit.getOfflinePlayer(m.getName()).getName() + C.c("&3, ")))) {
  322. m = (Member) memberIterator.next();
  323. }
  324.  
  325. p.sendMessage(C.c("&3Участники: " + b.toString().substring(0, b.toString().length() - 2) + "&3."));
  326. p.sendMessage("");
  327. return true;
  328. }
  329. case "addmoder": {
  330. if (clan == null) {
  331. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  332. return true;
  333. }
  334.  
  335. if (args.length == 1) {
  336. p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
  337. return true;
  338. }
  339.  
  340. if (!clan.hasLeader(p.getName())) {
  341. p.sendMessage(C.getPrefix() + C.c("&cНазначать модераторов в клан может только лидер!"));
  342. return true;
  343. }
  344.  
  345. if (!clan.hasClanMember(args[1])) {
  346. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в клане!"));
  347. return true;
  348. }
  349.  
  350. if (clan.hasLeader(args[1])) {
  351. p.sendMessage(C.getPrefix() + C.c("&cЛисенок является лидером клана!"));
  352. return true;
  353. }
  354.  
  355. if (clan.isModer(args[1])) {
  356. p.sendMessage(C.getPrefix() + C.c("&cЛисенок уже является модератором клана!"));
  357. return true;
  358. }
  359.  
  360. clan.setModer(args[1], true);
  361. clan.broadcast(C.getPrefix() + C.c("&aВ клане был назначен новый модератор: &c" + Bukkit.getOfflinePlayer(args[1]).getName() + "&a!"));
  362. return true;
  363. }
  364. case "delmoder": {
  365. if (clan == null) {
  366. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  367. return true;
  368. }
  369.  
  370. if (args.length == 1) {
  371. p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
  372. return true;
  373. }
  374.  
  375. if (!clan.hasLeader(p.getName())) {
  376. p.sendMessage(C.getPrefix() + C.c("&cНазначать модераторов в клан может только лидер!"));
  377. return true;
  378. }
  379.  
  380. if (!clan.hasClanMember(args[1])) {
  381. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в клане!"));
  382. return true;
  383. }
  384.  
  385. if (!clan.isModer(args[1])) {
  386. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не является модератором клана!"));
  387. return true;
  388. }
  389. clan.setModer(args[1], false);
  390. clan.broadcast(C.getPrefix() + C.c("&aВ клане был убран модератор: &c" + Bukkit.getOfflinePlayer(args[1]).getName() + "&a!"));
  391. return true;
  392. }
  393. case "invite": {
  394. if (clan == null) {
  395. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  396. return true;
  397. }
  398.  
  399. if (args.length == 1) {
  400. p.sendMessage(C.getPrefix() + C.c("&cУкажите ник лисенка!"));
  401. return true;
  402. }
  403.  
  404. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  405. p.sendMessage(C.getPrefix() + C.c("&cПриглашать в клан может только лидер или модератор клана."));
  406. return true;
  407. }
  408.  
  409. if (!Bukkit.getOfflinePlayer(args[1]).isOnline()) {
  410. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не в сети!"));
  411. return true;
  412. }
  413.  
  414. if (clan.hasClanMember(args[1])) {
  415. p.sendMessage(C.getPrefix() + C.c("&cЛисенок уже состоит в клане!"));
  416. return true;
  417. }
  418.  
  419. if (clan.getMaxPlayers() <= clan.getMembers().size()) {
  420. p.sendMessage(C.getPrefix() + C.c("&cНедостаточно мест в клане."));
  421. p.sendMessage(C.c("&cМеста в клане: &6" + clan.getMembers().size() + " &c/ &6" + clan.getMaxPlayers()));
  422. return true;
  423. }
  424.  
  425. Player invPlayer = Bukkit.getPlayer(args[1]);
  426.  
  427. if (InvitedPlayer.get(invPlayer) != null) {
  428. p.sendMessage(C.getPrefix() + C.c("&cЛисенку уже отправлено приглашение о вступлении в клан."));
  429. return true;
  430. }
  431.  
  432. InvitedPlayer.send(clan, invPlayer, p.getName());
  433. p.sendMessage(C.getPrefix() + C.c("&aВы пригласили в клан лисенка &c" + invPlayer.getName() + "&a!"));
  434.  
  435. C.setListMessage(invPlayer, Arrays.asList(
  436. C.getPrefix() + "&6Вы были приглашены в клан &8«&6&l" + clan.getName() + "&8»",
  437. "",
  438. C.getPrefix() + "&6Для принятия предложения напишите &a/clan accept",
  439. C.getPrefix() + "&6Для отклонения предложения напишите &c/clan deny"
  440. ));
  441. return true;
  442. }
  443. case "kick": {
  444. if (clan == null) {
  445. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  446. return true;
  447. }
  448.  
  449. if (args.length == 1) {
  450. p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
  451. return true;
  452. }
  453.  
  454. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  455. p.sendMessage(C.getPrefix() + C.c("&cИсключать из клана может только лидер или модератор клана."));
  456. return true;
  457. }
  458.  
  459. if (!clan.hasClanMember(args[1])) {
  460. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в вашем клане."));
  461. return true;
  462. }
  463.  
  464. if (args[1].equalsIgnoreCase(clan.getLeader())) {
  465. p.sendMessage(C.getPrefix() + C.c("&cВы не можете исключить лидера!"));
  466. return true;
  467. }
  468.  
  469. Player kickedPlayer = Bukkit.getPlayer(args[1]);
  470.  
  471. clan.kick(args[1]);
  472. clan.broadcast(C.c(C.getPrefix() + "&aЛисенок &c" + kickedPlayer.getName() + " &aбыл исключен из клана."));
  473. kickedPlayer.sendMessage(C.c(C.getPrefix() + "&cВы были исключены из клана &8«&6&l" + clan.getName()) + "&8»");
  474. return true;
  475. }
  476. case "list": {
  477. int clanCount;
  478. int clanList;
  479.  
  480. if (Clan.clans.size() == 0) {
  481. p.sendMessage(C.getPrefix() + C.c("&cНа сервере еще нет кланов."));
  482. return true;
  483. }
  484.  
  485. clanCount = 0;
  486.  
  487. if (args.length > 1) {
  488. try {
  489. if (Integer.parseInt(args[1]) < 1) return true;
  490.  
  491. clanCount = Integer.parseInt(args[1]);
  492. } catch (Exception ex) {
  493. p.sendMessage(C.getPrefix() + C.c("&cНомер страницы должен быть положительным числом."));
  494. return true;
  495. }
  496.  
  497. clanCount = (clanCount - 1) * 10;
  498.  
  499. if (Clan.clans.size() - clanCount < 0) {
  500. p.sendMessage(C.getPrefix() + C.c("&cУказанная страница пуста."));
  501. return true;
  502. }
  503. }
  504.  
  505. int var25 = 0;
  506.  
  507. C.setListMessage(p, Arrays.asList(
  508. "",
  509. "&aСписок всех кланов на сервере.",
  510. ""
  511. ));
  512.  
  513. for (clanList = clanCount; clanList < Clan.clans.size() && var25 != 10; ++clanList) {
  514.  
  515. ++var25;
  516.  
  517. Clan clanInList = (Clan) Clan.clans.values().toArray()[clanList];
  518. p.sendMessage(C.c("&e - &7" + clanInList.getName() + "&e [" + clanInList.getMembers().size() + "] &9&l| &7лидер - &6" + Bukkit.getOfflinePlayer(clanInList.getLeader()).getName()));
  519. }
  520.  
  521. p.sendMessage("");
  522. return true;
  523. }
  524. case "leave": {
  525. if (clan == null) {
  526. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  527. return true;
  528. }
  529.  
  530. if (clan.hasLeader(p.getName())) {
  531. p.sendMessage(C.getPrefix() + C.c("&cВы не можете покинуть клан, так как Вы лидер!"));
  532. return true;
  533. }
  534.  
  535. if (clan.isModer(p.getName())) {
  536. clan.setModer(p.getName(), false);
  537. clan.broadcast(C.getPrefix() + C.c("&cЛисенок &a" + s.getName() + " &cпокинул клан."));
  538. return true;
  539. } else {
  540. clan.broadcast(C.getPrefix() + C.c("&cЛисенок &a" + s.getName() + " &cпокинул клан."));
  541. clan.kick(p.getName());
  542. return true;
  543. }
  544. }
  545. case "home": {
  546. if (clan == null) {
  547. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  548. return true;
  549. }
  550.  
  551. if (!clan.hasHome()) {
  552. p.sendMessage(C.getPrefix() + C.c("&cКлан не имеет своего лагеря!"));
  553. return true;
  554. }
  555.  
  556. clan.teleportToClanHome(p);
  557. return true;
  558. }
  559. case "sethome": {
  560. if (clan == null) {
  561. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  562. return true;
  563. }
  564.  
  565. if (!clan.hasLeader(p.getName())) {
  566. p.sendMessage(C.getPrefix() + C.c("&cВы не лидер клана, чтобы устанавливать точку лагеря!"));
  567. return true;
  568. }
  569.  
  570. if (!API.getWG().canBuild(p, p.getLocation())) {
  571. p.sendMessage(C.getPrefix() + C.c("&cВы не можете установить клановый дом на этой территории."));
  572. return true;
  573. }
  574.  
  575. if (clan.getMembers().size() < 5) {
  576. s.sendMessage(C.getPrefix() + C.c("&cДля лагеря клана, в клане должно быть не меньше &a5 &cлисят."));
  577. return true;
  578. }
  579.  
  580. clan.setHome(p.getWorld().getName(), p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), p.getLocation().getYaw(), p.getLocation().getPitch());
  581. clan.broadcast(C.getPrefix() + C.c("&aЛидер установил точку лагеря клана."));
  582. return true;
  583. }
  584. case "removehome": {
  585. if (clan == null) {
  586. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  587. return true;
  588. }
  589.  
  590. if (!clan.hasLeader(p.getName())) {
  591. p.sendMessage(C.getPrefix() + C.c("&cВы не лидер клана, чтобы устанавливать точку лагеря!"));
  592. return true;
  593. }
  594.  
  595. if (!clan.hasHome()) {
  596. p.sendMessage(C.getPrefix() + C.c("&cКлан не имеет своего лагеря!"));
  597. return true;
  598. }
  599.  
  600. clan.setHome(null, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
  601. clan.broadcast(C.getPrefix() + C.c("&cЛидер удалил точку лагеря клана."));
  602. return true;
  603. }
  604. case "leader": {
  605. if (clan == null) {
  606. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  607. return true;
  608. }
  609.  
  610. if (!clan.hasLeader(p.getName())) {
  611. p.sendMessage(C.getPrefix() + C.c("&cПередавать лидерство клана может только сам лидер."));
  612. return true;
  613. }
  614.  
  615. Player cPlayer = Bukkit.getPlayer(args[1]);
  616.  
  617. if (args.length == 1) {
  618. p.sendMessage(C.getPrefix() + C.c("&cУкажите никнейм лисенка!"));
  619. return true;
  620. }
  621.  
  622. if (cPlayer == null) {
  623. p.sendMessage(C.getPrefix() + C.c("&cУказанный лисенок никогда не был в режиме!"));
  624. return true;
  625. }
  626.  
  627. if (!clan.hasClanMember(cPlayer.getName())) {
  628. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в Вашем клане!"));
  629. return true;
  630. }
  631.  
  632. if (p == cPlayer) {
  633. p.sendMessage(C.getPrefix() + C.c("&cВы не можете передать себе лидерство!"));
  634. return true;
  635. }
  636.  
  637. if (clan.isModer(p.getName())) clan.setModer(p.getName(), false);
  638.  
  639. clan.setLeader(cPlayer.getName());
  640. clan.broadcast(C.getPrefix() + C.c("&aЛидер &c" + p.getName() + " &aпередал лидерство клана лисенку &c" + cPlayer.getName()));
  641. return true;
  642. }
  643. case "take": {
  644. int moneyCount;
  645.  
  646. try {
  647. API.getEconomy();
  648. } catch (Exception ex) {
  649. return true;
  650. }
  651.  
  652. if (clan == null) {
  653. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  654. return true;
  655. }
  656.  
  657. if (!clan.hasLeader(p.getName())) {
  658. p.sendMessage(C.getPrefix() + C.c("&cЗабирать монеты из казны может только лидер клана."));
  659. return true;
  660. }
  661.  
  662. if (args.length == 1) {
  663. p.sendMessage(C.getPrefix() + C.c("&cУкажите сумму, которую Вы хотите забрать из казны клана."));
  664. return true;
  665. }
  666.  
  667. try {
  668. moneyCount = Integer.parseInt(args[1]);
  669.  
  670. if (moneyCount < 0) return true;
  671. } catch (Exception ex) {
  672. p.sendMessage(C.getPrefix() + C.c("&cСумма должна быть целым положительным числом, например &a10&c."));
  673. return true;
  674. }
  675.  
  676. if (clan.getBalance() < moneyCount) {
  677. p.sendMessage(C.getPrefix() + C.c("&cТакой суммы нет в клановой казне."));
  678. p.sendMessage(C.getPrefix() + C.c("&cВ казне есть &a" + clan.getBalance() + "&6&lⓂ&c."));
  679. return false;
  680. }
  681.  
  682. try {
  683. API.getEconomy().depositPlayer(p.getName(), (double) moneyCount);
  684. } catch (Exception ex) {
  685. ex.printStackTrace();
  686. }
  687.  
  688. clan.setBalance(clan.getBalance() - moneyCount);
  689. p.sendMessage(C.getPrefix() + C.c("&aИз клановой казны вы забрали&c " + moneyCount + "&6&lⓂ&a!"));
  690. return true;
  691. }
  692. case "deposit": {
  693. int moneyCount;
  694.  
  695. try {
  696. API.getEconomy();
  697. } catch (Exception ex) {
  698. return true;
  699. }
  700.  
  701. if (clan == null) {
  702. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  703. return true;
  704. }
  705.  
  706. if (args.length == 1) {
  707. p.sendMessage(C.getPrefix() + C.c("&cУкажите сумму, которую Вы хотите внести в клановую казну."));
  708. return true;
  709. }
  710.  
  711. try {
  712. moneyCount = Integer.parseInt(args[1]);
  713. if (moneyCount < 0) throw new Exception();
  714. } catch (Exception ex) {
  715. p.sendMessage(C.getPrefix() + C.c("&cСумма должна быть целым положительным числом, например &a10&c."));
  716. return true;
  717. }
  718.  
  719. try {
  720. if (!API.getEconomy().has(p.getName(), (double) moneyCount)) {
  721. p.sendMessage(C.getPrefix() + C.c("&cУ вас нет такой суммы."));
  722. return true;
  723. }
  724. } catch (Exception ex) {
  725. ex.printStackTrace();
  726. }
  727.  
  728. try {
  729. API.getEconomy().withdrawPlayer(s.getName(), (double) moneyCount);
  730. clan.setBalance(clan.getBalance() + moneyCount);
  731. } catch (Exception ex) {
  732. ex.printStackTrace();
  733. return true;
  734. }
  735.  
  736. p.sendMessage(C.getPrefix() + C.c("&aВы пополнили казну клана на &c" + moneyCount + " &6&lⓂ&a!"));
  737. return true;
  738. }
  739. case "upgrade": {
  740. if (clan == null) {
  741. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  742. return true;
  743. }
  744.  
  745. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  746. p.sendMessage(C.getPrefix() + C.c("&cУлучшить клан может только модератор или лидер клана."));
  747. return true;
  748. }
  749.  
  750. if (50 == clan.getMaxPlayers()) {
  751. p.sendMessage(C.getPrefix() + C.c("&cКлан улучшен на максимальный уровень!"));
  752. return true;
  753. }
  754.  
  755. try {
  756. if (clan.getBalance() < 1000) {
  757. p.sendMessage(C.getPrefix() + C.c("&cВ клановой казне недостаточно монет."));
  758. return true;
  759. }
  760. } catch (Exception ex) {
  761. ex.printStackTrace();
  762. }
  763.  
  764. clan.setBalance(clan.getBalance() - 1000);
  765. clan.upgrade(1);
  766. clan.broadcast(C.getPrefix() + C.c("&aКлан улучшен на &c+1 место&a, лисенком &7" + p.getName() + "&a."));
  767. return true;
  768. }
  769. case "pvp": {
  770. if (clan == null) {
  771. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  772. return true;
  773. }
  774.  
  775. if (!clan.hasLeader(s.getName()) && !clan.isModer(s.getName())) {
  776. p.sendMessage(C.getPrefix() + C.c("&cВключать или выключать PvP между соклановцами может только лидер или модератор клана."));
  777. return true;
  778. }
  779.  
  780. clan.setPvP(!clan.isPvP());
  781. clan.broadcast(clan.isPvP() ? C.getPrefix() + C.c("&aPvP было &6выключено&a, лисенком &c" + p.getName() + "&a.") : C.getPrefix() + C.c("&aPvP было &cвключено&a, лисенком &c" + p.getName() + "&a."));
  782. return true;
  783. }
  784. case "accept": {
  785. if (clan == null) {
  786. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  787. return true;
  788. }
  789.  
  790. if (InvitedPlayer.get(p) == null) {
  791. p.sendMessage(C.getPrefix() + C.c("&cВам не прислано приглашений."));
  792. return true;
  793. }
  794.  
  795. InvitedPlayer.accept(InvitedPlayer.get(p));
  796. p.sendMessage(C.getPrefix() + C.c("&aВы приняли предложение вступить в клан."));
  797. return true;
  798. }
  799. case "deny": {
  800. if (clan == null) {
  801. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  802. return true;
  803. }
  804.  
  805. if (InvitedPlayer.get(p) == null) {
  806. p.sendMessage(C.getPrefix() + C.c("&cВам не прислано приглашений."));
  807. return true;
  808. }
  809.  
  810. InvitedPlayer.deny(InvitedPlayer.get(p));
  811. p.sendMessage(C.getPrefix() + C.c("&aВы отклонили предложение вступить в клан."));
  812. return true;
  813. }
  814. case "top": {
  815. if (Clan.clans.size() == 0) {
  816. p.sendMessage(C.getPrefix() + C.c("&cНа сервере еще нет кланов."));
  817. return true;
  818. }
  819.  
  820. HashMap sorted = new HashMap();
  821.  
  822. for (Object o : Clan.clans.values()) {
  823. Clan entries = (Clan) o;
  824. sorted.put(entries, entries.getMembers().size());
  825. }
  826.  
  827. LinkedList var24 = new LinkedList(sorted.entrySet());
  828. Collections.sort(var24, new Comparator<Map.Entry>() {
  829.  
  830. public int compare(Map.Entry o1, Map.Entry o2) {
  831. return ((Integer) o2.getValue()).compareTo((Integer) o1.getValue());
  832. }
  833. });
  834.  
  835. int clanList = 1;
  836.  
  837. p.sendMessage("");
  838. p.sendMessage(C.c("&6Топ 10 самых лучших кланов в режиме."));
  839. p.sendMessage("");
  840.  
  841. for (Iterator var11 = var24.iterator(); var11.hasNext(); ++clanList) {
  842. Map.Entry entry = (Map.Entry) var11.next();
  843. Clan clanInList = (Clan) entry.getKey();
  844. p.sendMessage(C.c("&e&l" + clanList + ". &9&l| &3Название: &8«&6&l" + clanInList.getName() + "&8» &9&l| &3Лидер: &7" + clanInList.getLeader() + " &9&l| &3Участники: &7" + entry.getValue()));
  845.  
  846. if (clanList == 10) return true;
  847. }
  848.  
  849. p.sendMessage("");
  850.  
  851. return true;
  852. }
  853. default: {
  854. p.sendMessage(C.getPrefix() + C.c("&cНеизвестная подкоманда!"));
  855. return true;
  856. }
  857. }
  858. }
  859. }
Advertisement
Add Comment
Please, Sign In to add comment