Advertisement
Lisenochek

Untitled

Jan 5th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.33 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.Member;
  10. import ru.lisenochek.ftclans.clan.NewPlayer;
  11. import ru.lisenochek.ftclans.utils.C;
  12.  
  13. import java.util.Arrays;
  14. import java.util.Iterator;
  15. import java.util.List;
  16.  
  17. public class CommandsAPI implements CommandExecutor {
  18.  
  19. public static int getPrice = API.config.getInt("settings.create_cost");
  20. public static int getUpgradePrice = API.config.getInt("settings.upgrade_cost");
  21. public static int getMinSimbols = API.config.getInt("settings.min_symbols");
  22. public static int getMaxSimbols = API.config.getInt("settings.max_symbols");
  23.  
  24. @Override
  25. public boolean onCommand(CommandSender s, Command cmd, String str, String[] args) {
  26.  
  27. if (!(s instanceof Player)) {
  28. s.sendMessage(C.c("&cКоманду используют только игроки!"));
  29. return false;
  30. }
  31.  
  32. Player p = (Player) s;
  33. Clan clan = Clan.getClanByName(p.getName());
  34.  
  35. if (!p.hasPermission("ftclans.user")) return false;
  36.  
  37. if (args.length == 0) {
  38.  
  39. if (clan == null) {
  40. setListMessage(p, Arrays.asList(
  41. "&c&nВы не состоите в клане.",
  42. "&7=======================================",
  43. "&3/clan create &c(&eназвание клана&c) &a- основать клан.",
  44. "&aЦена создание клана: &e" + getPrice + " &aмонет.",
  45. "&7======================================="
  46. ));
  47. } else {
  48. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  49. setListMessage(p, Arrays.asList(
  50. "&6Помощь в клане. &d(Страница 1/2)",
  51. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  52. "&7=======================================",
  53. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  54. "&3/clan home &a- переместиться в клановый дом.",
  55. "&3/clan deposit &c(&eкол-во&c] &a- вложить монет в казну клана.",
  56. "&3/clan info &a- информация о клане.",
  57. "&3/clan online &a- узнать онлайн соклановцев.",
  58. "&3/clan list &a- список других кланов.",
  59. "&7======================================="
  60. ));
  61. } else {
  62. setListMessage(p, Arrays.asList(
  63. "&6Помощь по созданию и управлению кланом. &d(Страница 1/4)",
  64. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  65. "&7=======================================",
  66. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  67. "&eЛидерский чат: перед сообщением поставьте &c* &e.",
  68. "&3/clan addmoder &c(&eигрок&c) &a- повысить члена клана до модератора.",
  69. "&3/clan delmoder &c(&eигрок&c) &a- понизить члена клана до соклановца.",
  70. "&3/clan take &c(&eкол-во&c) &a- взять монет из клановой казны.",
  71. "&3/clan sethome &a- установить клановый дом.",
  72. "&7======================================="
  73. ));
  74. }
  75. }
  76. return false;
  77. }
  78.  
  79. switch (args[0].toLowerCase()) {
  80.  
  81. case "page":
  82. if (clan == null) {
  83. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  84. return false;
  85. }
  86.  
  87. if (args.length == 1) {
  88. p.sendMessage(C.getPrefix() + C.c("&cВы не указали страницу помощи!"));
  89. return false;
  90. }
  91.  
  92. switch (Integer.valueOf(args[1])) {
  93.  
  94. case 1:
  95. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  96. setListMessage(p, Arrays.asList(
  97. "&6Помощь в клане. &d(Страница 1/2)",
  98. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  99. "&7=======================================",
  100. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  101. "&3/clan home &a- переместиться в клановый дом.",
  102. "&3/clan deposit &c(&eкол-во&c] &a- вложить монет в казну клана.",
  103. "&3/clan info &a- информация о клане.",
  104. "&3/clan online &a- узнать онлайн соклановцев.",
  105. "&3/clan list &a- список других кланов.",
  106. "&7======================================="
  107. ));
  108. } else {
  109. setListMessage(p, Arrays.asList(
  110. "&6Помощь по созданию и управлению кланом. &d(Страница 1/4)",
  111. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  112. "&7=======================================",
  113. "&eКлановый чат: перед сообщением поставьте &c% &e.",
  114. "&eЛидерский чат: перед сообщением поставьте &c* &e.",
  115. "&3/clan addmoder &c(&eигрок&c) &a- повысить члена клана до модератора.",
  116. "&3/clan delmoder &c(&eигрок&c) &a- понизить члена клана до соклановца.",
  117. "&3/clan take &c(&eкол-во&c) &a- взять монет из клановой казны.",
  118. "&3/clan sethome &a- установить клановый дом.",
  119. "&7======================================="));
  120. }
  121. return false;
  122. case 2:
  123. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  124. setListMessage(p, Arrays.asList(
  125. "&6Помощь в клане. &d(Страница 2/2)",
  126. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  127. "&7=======================================",
  128. "&3/clan top &a- топ &c10&a самых лучших кланов на сервере.",
  129. "&3/clan leave &a- покинуть клан.",
  130. "&7======================================="
  131. ));
  132. } else {
  133. setListMessage(p, Arrays.asList(
  134. "&6Помощь по созданию и управлению кланом. &d(Страница 2/4)",
  135. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  136. "&7=======================================",
  137. "&3/clan removehome &a- удалить клановый дом.",
  138. "&3/clan msg &a- сделать объявление в клане.",
  139. "&3/clan invite &c(&eигрок&c) &a- пригласить игрока в клан.",
  140. "&3/clan home &a- переместиться в клановый дом.",
  141. "&3/clan kick &c(&eигрок&c) &a- выгнать игрока из клана.",
  142. "&3/clan pvp &a- отключить или включить PvP между соклановцами.",
  143. "&7======================================="
  144. ));
  145. }
  146. return false;
  147. case 3:
  148. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  149. p.sendMessage(C.getPrefix() + C.c("&cУкажите страницу от 1 до 2!"));
  150. return false;
  151. } else {
  152. setListMessage(p, Arrays.asList(
  153. "&6Помощь по созданию и управлению кланом. &d(Страница 3/4)",
  154. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  155. "&7=======================================",
  156. "&3/clan deposit &c(&ecкол-во&c) &a- вложить монет в казну клана.",
  157. "&3/clan info &a- информация о клане.",
  158. "&3/clan disband &a- расформировать клан.",
  159. "&3/clan online &a- узнать онлайн соклановцев.",
  160. "&3/clan list &a- список других кланов.",
  161. "&3/clan top &a- 10 самых лучших кланов на сервере.",
  162. "&7======================================="
  163. ));
  164. }
  165. return false;
  166. case 4:
  167. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  168. p.sendMessage(C.getPrefix() + C.c("&cУкажите страницу от 1 до 2!"));
  169. return false;
  170. } else {
  171. setListMessage(p, Arrays.asList(
  172. "&6Помощь по созданию и управлению кланом. &d(Страница 4/4)",
  173. "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
  174. "&7=======================================",
  175. "&3/clan upgrade &a- улучшить клан &c(&e+1 место в клане&c)&a.",
  176. "&aЦена улучшения клана: &e" + getUpgradePrice + " &aмонет."
  177. ));
  178.  
  179. if (!clan.hasLeader(p.getName()) && clan.isModer(p.getName())) {
  180. p.sendMessage(C.c("&3/clan leave &a- покинуть пост модератора клана."));
  181. } else {
  182. p.sendMessage(C.c("&3/clan leave &a- покинуть клан."));
  183. }
  184.  
  185. p.sendMessage(C.c("&3/clan leader &c(&eигрок&c) &a- передать лидерство клана другому игроку."));
  186. p.sendMessage(C.c("&7======================================="));
  187. }
  188. return false;
  189. default:
  190. return false;
  191. }
  192.  
  193. case "create": {
  194. if (args.length == 1) {
  195. p.sendMessage(C.getPrefix() + C.c("&cУкажите название клана!"));
  196. return false;
  197. }
  198.  
  199. if (Clan.getClan(args[1]) != null) {
  200. p.sendMessage(C.getPrefix() + C.c("&cКлан с таким названием уже существует!"));
  201. return false;
  202. }
  203.  
  204. String clanName = args[1].replaceAll("&.", "");
  205.  
  206. if (clanName.length() > getMaxSimbols) {
  207. p.sendMessage(C.getPrefix() + C.c("&cМаксимальное количество символов в названии клана: &7" + getMaxSimbols + "&c!"));
  208. return false;
  209. }
  210.  
  211. if (clanName.length() < getMinSimbols) {
  212. p.sendMessage(C.getPrefix() + C.c("&cМинимальное количество символов в названии клана: &7" + getMinSimbols + "&c!"));
  213. return false;
  214. }
  215.  
  216. if (clan != null) {
  217. p.sendMessage(C.getPrefix() + C.c("&cВы уже состоите в клане!"));
  218. return false;
  219. }
  220.  
  221. try {
  222. if (API.getEconomy().getBalance(p) < getPrice) {
  223. p.sendMessage(C.getPrefix() + C.c("&cУ вас недостаточно монет для основания клана!"));
  224. return false;
  225. }
  226.  
  227. API.getEconomy().withdrawPlayer(p, getPrice);
  228. } catch (Exception e) {
  229. e.printStackTrace();
  230. }
  231.  
  232. Clan.create(args[1], p.getName());
  233. p.sendMessage(C.getPrefix() + C.c("&aКлан под названием &7«" + Clan.getClanByName(p.getName()).getName() + "&7» &aбыл основан!"));
  234. return false;
  235. }
  236. case "disband": {
  237. if (clan == null) {
  238. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  239. return false;
  240. }
  241.  
  242. if (!clan.hasLeader(p.getName())) {
  243. p.sendMessage(C.getPrefix() + C.c("&cВы не лидер клана, чтобы распускать клан."));
  244. return false;
  245. }
  246.  
  247. clan.broadcast(C.getPrefix() + C.c("&cКлан &7«" + Clan.getClanByName(p.getName()).getName() + "&7» &cбыл расформирован."));
  248. clan.disband();
  249. return false;
  250. }
  251. case "msg": {
  252. if (clan == null) {
  253. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  254. return false;
  255. }
  256.  
  257. if (!clan.isModer(p.getName()) && !clan.hasLeader(p.getName())) {
  258. p.sendMessage(C.getPrefix() + C.c("&cСделать объявление может только лидер или модератор клана."));
  259. return false;
  260. }
  261.  
  262. StringBuilder message = new StringBuilder();
  263.  
  264. for (int i = 1; i < args.length; i++) message.append(args[i]).append(" ");
  265.  
  266. if (message.toString().length() <= 3) {
  267. s.sendMessage(C.getPrefix() + C.c("&cСообщение должно содержать не менее 3 символов."));
  268. return false;
  269. }
  270.  
  271. String colorMes = C.c("&9&l? &7&l&o");
  272.  
  273. if (clan.isModer(p.getName())) colorMes = C.c(" &9&l? &a&l&o");
  274. if (clan.hasLeader(p.getName())) colorMes = C.c(" &9&l? &6&l&o");
  275.  
  276. Iterator memberIterator = clan.getMembers().iterator();
  277.  
  278. while (memberIterator.hasNext()) {
  279.  
  280. Member m = (Member) memberIterator.next();
  281.  
  282. if (!Bukkit.getOfflinePlayer(m.getName()).isOnline()) continue;
  283.  
  284. Bukkit.getPlayer(m.getName()).sendMessage(C.c(C.getPrefix() + "&9&l| " + "&d[&b&lОбъявление&d] &9&l|&7&l " + p.getName() + colorMes + message.toString()));
  285. }
  286. return false;
  287. }
  288. case "online": {
  289. if (clan == null) {
  290. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  291. return false;
  292. }
  293.  
  294. p.sendMessage(C.c("&7======================================="));
  295. p.sendMessage(C.c("&6Список соклановцев, которые сейчас на сервере:"));
  296. p.sendMessage("");
  297.  
  298. Iterator memberIterator = clan.getMembers().iterator();
  299.  
  300. while (memberIterator.hasNext()) {
  301.  
  302. Member m = (Member) memberIterator.next();
  303.  
  304. if (!Bukkit.getOfflinePlayer(m.getName()).isOnline()) continue;
  305. if (p.getName().equalsIgnoreCase(m.getName())) p.sendMessage(C.c("&e > &a" + m.getName()));
  306. else p.sendMessage(C.c("&e - &a" + m.getName()));
  307. }
  308.  
  309. p.sendMessage(C.c("&7======================================="));
  310. return false;
  311. }
  312. case "info": {
  313. if (clan == null) {
  314. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
  315. return false;
  316. }
  317.  
  318. setListMessage(p, Arrays.asList(
  319. "&7=======================================",
  320. "&3Информация о вашем клане:",
  321. " ",
  322. "&3Название клана: &8«&6&l" + clan.getName() + "&8» &3.",
  323. "&3Места в клане: &7" + clan.getMembers().size() + " &3/ &7" + clan.getMaxPlayers() + "&3.",
  324. "&3Лидер клана: &a" + Bukkit.getOfflinePlayer(clan.getLeader()).getName() + "&3.",
  325. "&3Казна клана: &a" + clan.getBalance() + " &3монет(а, ы).",
  326. " "
  327. ));
  328.  
  329. StringBuilder b = new StringBuilder();
  330. Member m;
  331.  
  332. for (Iterator memberIterator = clan.getMembers().iterator(); memberIterator.hasNext(); b.append(C.c("&7" + Bukkit.getOfflinePlayer(m.getName()).getName() + C.c("&3, ")))) {
  333. m = (Member) memberIterator.next();
  334. }
  335.  
  336. p.sendMessage(C.c("&3Участники: " + b.toString().substring(0, b.toString().length() - 2) + "&3."));
  337. p.sendMessage(C.c("&7======================================="));
  338. return false;
  339. }
  340. case "addmoder": {
  341. if (clan == null) {
  342. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  343. return false;
  344. }
  345.  
  346. if (args.length == 1) {
  347. p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
  348. return false;
  349. }
  350.  
  351. if (!clan.hasLeader(p.getName())) {
  352. p.sendMessage(C.getPrefix() + C.c("&cНазначать модераторов в клан может только лидер!"));
  353. return false;
  354. }
  355.  
  356. if (!clan.hasClanMember(args[1])) {
  357. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в клане!"));
  358. return false;
  359. }
  360.  
  361. if (clan.hasLeader(args[1])) {
  362. p.sendMessage(C.getPrefix() + C.c("&cЛисенок является лидером клана!"));
  363. return false;
  364. }
  365.  
  366. if (clan.isModer(args[1])) {
  367. p.sendMessage(C.getPrefix() + C.c("&cЛисенок уже является модератором клана!"));
  368. return false;
  369. }
  370.  
  371. clan.setModer(args[1], true);
  372. clan.broadcast(C.getPrefix() + C.c("&aВ клане был назначен новый модератор: &c" + Bukkit.getOfflinePlayer(args[1]).getName() + "&a!"));
  373. return false;
  374. }
  375. case "delmoder": {
  376. if (clan == null) {
  377. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  378. return false;
  379. }
  380.  
  381. if (args.length == 1) {
  382. p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
  383. return false;
  384. }
  385.  
  386. if (!clan.hasLeader(p.getName())) {
  387. p.sendMessage(C.getPrefix() + C.c("&cНазначать модераторов в клан может только лидер!"));
  388. return false;
  389. }
  390.  
  391. if (!clan.hasClanMember(args[1])) {
  392. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в клане!"));
  393. return false;
  394. }
  395.  
  396. if (!clan.isModer(args[1])) {
  397. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не является модератором клана!"));
  398. return false;
  399. }
  400. clan.setModer(args[1], false);
  401. clan.broadcast(C.getPrefix() + C.c("&aВ клане был убран модератор: &c" + Bukkit.getOfflinePlayer(args[1]).getName() + "&a!"));
  402. return false;
  403. }
  404. case "invite": {
  405. if (clan == null) {
  406. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  407. return false;
  408. }
  409.  
  410. if (args.length == 1) {
  411. p.sendMessage(C.getPrefix() + C.c("&cУкажите ник лисенка!"));
  412. return false;
  413. }
  414.  
  415. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  416. p.sendMessage(C.getPrefix() + C.c("&cПриглашать в клан может только лидер или модератор клана."));
  417. return false;
  418. }
  419.  
  420. if (!Bukkit.getOfflinePlayer(args[1]).isOnline()) {
  421. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не в сети!"));
  422. return false;
  423. }
  424.  
  425. if (clan.hasClanMember(args[1])) {
  426. p.sendMessage(C.getPrefix() + C.c("&cЛисенок уже состоит в клане!"));
  427. return false;
  428. }
  429.  
  430. if (clan.getMaxPlayers() <= clan.getMembers().size()) {
  431. p.sendMessage(C.getPrefix() + C.c("&cНедостаточно мест в клане."));
  432. p.sendMessage(C.c("&cМеста в клане: &6" + clan.getMembers().size() + " &c/ &6" + clan.getMaxPlayers()));
  433. return false;
  434. }
  435.  
  436. Player invPlayer = Bukkit.getPlayer(args[1]);
  437.  
  438. if (NewPlayer.get(invPlayer) != null) {
  439. p.sendMessage(C.getPrefix() + C.c("&cИгроку уже отправлено приглашение о вступлении в клан."));
  440. return false;
  441. }
  442.  
  443. NewPlayer.send(clan, invPlayer, p.getName());
  444. p.sendMessage(C.getPrefix() + C.c("&aВы пригласили в клан лисенка &c" + invPlayer.getName() + "&a!"));
  445.  
  446. setListMessage(invPlayer, Arrays.asList(
  447. C.getPrefix() + "&6Вы были приглашены в клан &8«&6&l" + clan.getName() + "&8»",
  448. "",
  449. C.getPrefix() + "&6Для принятия предложения напишите &a/clan accept",
  450. C.getPrefix() + "&6Для отклонения предложения напишите &c/clan deny"
  451. ));
  452. return false;
  453. }
  454. case "kick": {
  455. if (clan == null) {
  456. p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
  457. return false;
  458. }
  459.  
  460. if (args.length == 1) {
  461. p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
  462. return false;
  463. }
  464.  
  465. if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
  466. p.sendMessage(C.getPrefix() + C.c("&cИсключать из клана может только лидер или модератор клана."));
  467. return false;
  468. }
  469.  
  470. if (!clan.hasClanMember(args[1])) {
  471. p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в вашем клане."));
  472. return false;
  473. }
  474.  
  475. if (args[1].equalsIgnoreCase(clan.getLeader())) {
  476. p.sendMessage(C.getPrefix() + C.c("&cВы не можете исключить лидера!"));
  477. return false;
  478. }
  479.  
  480. Player kickedPlayer = Bukkit.getPlayer(args[1]);
  481.  
  482. clan.kick(args[1]);
  483. clan.broadcast(C.c(C.getPrefix() + "&aИгрок &c" + kickedPlayer.getName() + " &aбыл исключен из клана."));
  484. kickedPlayer.sendMessage(C.c(C.getPrefix() + "&cВы были исключены из клана &8«&6&l" + clan.getName()) + "&8»");
  485. return false;
  486. }
  487. default:
  488. p.sendMessage(C.getPrefix() + C.c("&cНеизвестная подкоманда!"));
  489. return false;
  490. }
  491. }
  492.  
  493. public void setListMessage(Player p, List<String> message) {
  494. for (String s : message) p.sendMessage(C.c(s));
  495. }
  496. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement