Advertisement
Lisenochek

Untitled

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