Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.lisenochek.ftclans.API;
- import org.bukkit.Bukkit;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import ru.lisenochek.ftclans.clan.Clan;
- import ru.lisenochek.ftclans.clan.Member;
- import ru.lisenochek.ftclans.clan.NewPlayer;
- import ru.lisenochek.ftclans.utils.C;
- import java.util.Arrays;
- import java.util.Iterator;
- import java.util.List;
- public class CommandsAPI implements CommandExecutor {
- public static int getPrice = API.config.getInt("settings.create_cost");
- public static int getUpgradePrice = API.config.getInt("settings.upgrade_cost");
- public static int getMinSimbols = API.config.getInt("settings.min_symbols");
- public static int getMaxSimbols = API.config.getInt("settings.max_symbols");
- @Override
- public boolean onCommand(CommandSender s, Command cmd, String str, String[] args) {
- if (!(s instanceof Player)) {
- s.sendMessage(C.c("&cКоманду используют только игроки!"));
- return false;
- }
- Player p = (Player) s;
- Clan clan = Clan.getClanByName(p.getName());
- if (!p.hasPermission("ftclans.user")) return false;
- if (args.length == 0) {
- if (clan == null) {
- setListMessage(p, Arrays.asList(
- "&c&nВы не состоите в клане.",
- "&7=======================================",
- "&3/clan create &c(&eназвание клана&c) &a- основать клан.",
- "&aЦена создание клана: &e" + getPrice + " &aмонет.",
- "&7======================================="
- ));
- } else {
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- setListMessage(p, Arrays.asList(
- "&6Помощь в клане. &d(Страница 1/2)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&eКлановый чат: перед сообщением поставьте &c% &e.",
- "&3/clan home &a- переместиться в клановый дом.",
- "&3/clan deposit &c(&eкол-во&c] &a- вложить монет в казну клана.",
- "&3/clan info &a- информация о клане.",
- "&3/clan online &a- узнать онлайн соклановцев.",
- "&3/clan list &a- список других кланов.",
- "&7======================================="
- ));
- } else {
- setListMessage(p, Arrays.asList(
- "&6Помощь по созданию и управлению кланом. &d(Страница 1/4)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&eКлановый чат: перед сообщением поставьте &c% &e.",
- "&eЛидерский чат: перед сообщением поставьте &c* &e.",
- "&3/clan addmoder &c(&eигрок&c) &a- повысить члена клана до модератора.",
- "&3/clan delmoder &c(&eигрок&c) &a- понизить члена клана до соклановца.",
- "&3/clan take &c(&eкол-во&c) &a- взять монет из клановой казны.",
- "&3/clan sethome &a- установить клановый дом.",
- "&7======================================="
- ));
- }
- }
- return false;
- }
- switch (args[0].toLowerCase()) {
- case "page":
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
- return false;
- }
- if (args.length == 1) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не указали страницу помощи!"));
- return false;
- }
- switch (Integer.valueOf(args[1])) {
- case 1:
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- setListMessage(p, Arrays.asList(
- "&6Помощь в клане. &d(Страница 1/2)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&eКлановый чат: перед сообщением поставьте &c% &e.",
- "&3/clan home &a- переместиться в клановый дом.",
- "&3/clan deposit &c(&eкол-во&c] &a- вложить монет в казну клана.",
- "&3/clan info &a- информация о клане.",
- "&3/clan online &a- узнать онлайн соклановцев.",
- "&3/clan list &a- список других кланов.",
- "&7======================================="
- ));
- } else {
- setListMessage(p, Arrays.asList(
- "&6Помощь по созданию и управлению кланом. &d(Страница 1/4)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&eКлановый чат: перед сообщением поставьте &c% &e.",
- "&eЛидерский чат: перед сообщением поставьте &c* &e.",
- "&3/clan addmoder &c(&eигрок&c) &a- повысить члена клана до модератора.",
- "&3/clan delmoder &c(&eигрок&c) &a- понизить члена клана до соклановца.",
- "&3/clan take &c(&eкол-во&c) &a- взять монет из клановой казны.",
- "&3/clan sethome &a- установить клановый дом.",
- "&7======================================="));
- }
- return false;
- case 2:
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- setListMessage(p, Arrays.asList(
- "&6Помощь в клане. &d(Страница 2/2)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&3/clan top &a- топ &c10&a самых лучших кланов на сервере.",
- "&3/clan leave &a- покинуть клан.",
- "&7======================================="
- ));
- } else {
- setListMessage(p, Arrays.asList(
- "&6Помощь по созданию и управлению кланом. &d(Страница 2/4)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&3/clan removehome &a- удалить клановый дом.",
- "&3/clan msg &a- сделать объявление в клане.",
- "&3/clan invite &c(&eигрок&c) &a- пригласить игрока в клан.",
- "&3/clan home &a- переместиться в клановый дом.",
- "&3/clan kick &c(&eигрок&c) &a- выгнать игрока из клана.",
- "&3/clan pvp &a- отключить или включить PvP между соклановцами.",
- "&7======================================="
- ));
- }
- return false;
- case 3:
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите страницу от 1 до 2!"));
- return false;
- } else {
- setListMessage(p, Arrays.asList(
- "&6Помощь по созданию и управлению кланом. &d(Страница 3/4)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&3/clan deposit &c(&ecкол-во&c) &a- вложить монет в казну клана.",
- "&3/clan info &a- информация о клане.",
- "&3/clan disband &a- расформировать клан.",
- "&3/clan online &a- узнать онлайн соклановцев.",
- "&3/clan list &a- список других кланов.",
- "&3/clan top &a- 10 самых лучших кланов на сервере.",
- "&7======================================="
- ));
- }
- return false;
- case 4:
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите страницу от 1 до 2!"));
- return false;
- } else {
- setListMessage(p, Arrays.asList(
- "&6Помощь по созданию и управлению кланом. &d(Страница 4/4)",
- "&6Используйте &3/clan page &c(&eстраница&c)&6, для листания команд.",
- "&7=======================================",
- "&3/clan upgrade &a- улучшить клан &c(&e+1 место в клане&c)&a.",
- "&aЦена улучшения клана: &e" + getUpgradePrice + " &aмонет."
- ));
- if (!clan.hasLeader(p.getName()) && clan.isModer(p.getName())) {
- p.sendMessage(C.c("&3/clan leave &a- покинуть пост модератора клана."));
- } else {
- p.sendMessage(C.c("&3/clan leave &a- покинуть клан."));
- }
- p.sendMessage(C.c("&3/clan leader &c(&eигрок&c) &a- передать лидерство клана другому игроку."));
- p.sendMessage(C.c("&7======================================="));
- }
- return false;
- default:
- return false;
- }
- case "create": {
- if (args.length == 1) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите название клана!"));
- return false;
- }
- if (Clan.getClan(args[1]) != null) {
- p.sendMessage(C.getPrefix() + C.c("&cКлан с таким названием уже существует!"));
- return false;
- }
- String clanName = args[1].replaceAll("&.", "");
- if (clanName.length() > getMaxSimbols) {
- p.sendMessage(C.getPrefix() + C.c("&cМаксимальное количество символов в названии клана: &7" + getMaxSimbols + "&c!"));
- return false;
- }
- if (clanName.length() < getMinSimbols) {
- p.sendMessage(C.getPrefix() + C.c("&cМинимальное количество символов в названии клана: &7" + getMinSimbols + "&c!"));
- return false;
- }
- if (clan != null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы уже состоите в клане!"));
- return false;
- }
- try {
- if (API.getEconomy().getBalance(p) < getPrice) {
- p.sendMessage(C.getPrefix() + C.c("&cУ вас недостаточно монет для основания клана!"));
- return false;
- }
- API.getEconomy().withdrawPlayer(p, getPrice);
- } catch (Exception e) {
- e.printStackTrace();
- }
- Clan.create(args[1], p.getName());
- p.sendMessage(C.getPrefix() + C.c("&aКлан под названием &7«" + Clan.getClanByName(p.getName()).getName() + "&7» &aбыл основан!"));
- return false;
- }
- case "disband": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
- return false;
- }
- if (!clan.hasLeader(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не лидер клана, чтобы распускать клан."));
- return false;
- }
- clan.broadcast(C.getPrefix() + C.c("&cКлан &7«" + Clan.getClanByName(p.getName()).getName() + "&7» &cбыл расформирован."));
- clan.disband();
- return false;
- }
- case "msg": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
- return false;
- }
- if (!clan.isModer(p.getName()) && !clan.hasLeader(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cСделать объявление может только лидер или модератор клана."));
- return false;
- }
- StringBuilder message = new StringBuilder();
- for (int i = 1; i < args.length; i++) message.append(args[i]).append(" ");
- if (message.toString().length() <= 3) {
- s.sendMessage(C.getPrefix() + C.c("&cСообщение должно содержать не менее 3 символов."));
- return false;
- }
- String colorMes = C.c("&9&l? &7&l&o");
- if (clan.isModer(p.getName())) colorMes = C.c(" &9&l? &a&l&o");
- if (clan.hasLeader(p.getName())) colorMes = C.c(" &9&l? &6&l&o");
- Iterator memberIterator = clan.getMembers().iterator();
- while (memberIterator.hasNext()) {
- Member m = (Member) memberIterator.next();
- if (!Bukkit.getOfflinePlayer(m.getName()).isOnline()) continue;
- Bukkit.getPlayer(m.getName()).sendMessage(C.c(C.getPrefix() + "&9&l| " + "&d[&b&lОбъявление&d] &9&l|&7&l " + p.getName() + colorMes + message.toString()));
- }
- return false;
- }
- case "online": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
- return false;
- }
- p.sendMessage(C.c("&7======================================="));
- p.sendMessage(C.c("&6Список соклановцев, которые сейчас на сервере:"));
- p.sendMessage("");
- Iterator memberIterator = clan.getMembers().iterator();
- while (memberIterator.hasNext()) {
- Member m = (Member) memberIterator.next();
- if (!Bukkit.getOfflinePlayer(m.getName()).isOnline()) continue;
- if (p.getName().equalsIgnoreCase(m.getName())) p.sendMessage(C.c("&e > &a" + m.getName()));
- else p.sendMessage(C.c("&e - &a" + m.getName()));
- }
- p.sendMessage(C.c("&7======================================="));
- return false;
- }
- case "info": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане!"));
- return false;
- }
- setListMessage(p, Arrays.asList(
- "&7=======================================",
- "&3Информация о вашем клане:",
- " ",
- "&3Название клана: &8«&6&l" + clan.getName() + "&8» &3.",
- "&3Места в клане: &7" + clan.getMembers().size() + " &3/ &7" + clan.getMaxPlayers() + "&3.",
- "&3Лидер клана: &a" + Bukkit.getOfflinePlayer(clan.getLeader()).getName() + "&3.",
- "&3Казна клана: &a" + clan.getBalance() + " &3монет(а, ы).",
- " "
- ));
- StringBuilder b = new StringBuilder();
- Member m;
- for (Iterator memberIterator = clan.getMembers().iterator(); memberIterator.hasNext(); b.append(C.c("&7" + Bukkit.getOfflinePlayer(m.getName()).getName() + C.c("&3, ")))) {
- m = (Member) memberIterator.next();
- }
- p.sendMessage(C.c("&3Участники: " + b.toString().substring(0, b.toString().length() - 2) + "&3."));
- p.sendMessage(C.c("&7======================================="));
- return false;
- }
- case "addmoder": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
- return false;
- }
- if (args.length == 1) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
- return false;
- }
- if (!clan.hasLeader(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cНазначать модераторов в клан может только лидер!"));
- return false;
- }
- if (!clan.hasClanMember(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в клане!"));
- return false;
- }
- if (clan.hasLeader(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок является лидером клана!"));
- return false;
- }
- if (clan.isModer(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок уже является модератором клана!"));
- return false;
- }
- clan.setModer(args[1], true);
- clan.broadcast(C.getPrefix() + C.c("&aВ клане был назначен новый модератор: &c" + Bukkit.getOfflinePlayer(args[1]).getName() + "&a!"));
- return false;
- }
- case "delmoder": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
- return false;
- }
- if (args.length == 1) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
- return false;
- }
- if (!clan.hasLeader(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cНазначать модераторов в клан может только лидер!"));
- return false;
- }
- if (!clan.hasClanMember(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в клане!"));
- return false;
- }
- if (!clan.isModer(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок не является модератором клана!"));
- return false;
- }
- clan.setModer(args[1], false);
- clan.broadcast(C.getPrefix() + C.c("&aВ клане был убран модератор: &c" + Bukkit.getOfflinePlayer(args[1]).getName() + "&a!"));
- return false;
- }
- case "invite": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
- return false;
- }
- if (args.length == 1) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите ник лисенка!"));
- return false;
- }
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cПриглашать в клан может только лидер или модератор клана."));
- return false;
- }
- if (!Bukkit.getOfflinePlayer(args[1]).isOnline()) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок не в сети!"));
- return false;
- }
- if (clan.hasClanMember(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок уже состоит в клане!"));
- return false;
- }
- if (clan.getMaxPlayers() <= clan.getMembers().size()) {
- p.sendMessage(C.getPrefix() + C.c("&cНедостаточно мест в клане."));
- p.sendMessage(C.c("&cМеста в клане: &6" + clan.getMembers().size() + " &c/ &6" + clan.getMaxPlayers()));
- return false;
- }
- Player invPlayer = Bukkit.getPlayer(args[1]);
- if (NewPlayer.get(invPlayer) != null) {
- p.sendMessage(C.getPrefix() + C.c("&cИгроку уже отправлено приглашение о вступлении в клан."));
- return false;
- }
- NewPlayer.send(clan, invPlayer, p.getName());
- p.sendMessage(C.getPrefix() + C.c("&aВы пригласили в клан лисенка &c" + invPlayer.getName() + "&a!"));
- setListMessage(invPlayer, Arrays.asList(
- C.getPrefix() + "&6Вы были приглашены в клан &8«&6&l" + clan.getName() + "&8»",
- "",
- C.getPrefix() + "&6Для принятия предложения напишите &a/clan accept",
- C.getPrefix() + "&6Для отклонения предложения напишите &c/clan deny"
- ));
- return false;
- }
- case "kick": {
- if (clan == null) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не состоите в клане."));
- return false;
- }
- if (args.length == 1) {
- p.sendMessage(C.getPrefix() + C.c("&cУкажите имя лисенка!"));
- return false;
- }
- if (!clan.hasLeader(p.getName()) && !clan.isModer(p.getName())) {
- p.sendMessage(C.getPrefix() + C.c("&cИсключать из клана может только лидер или модератор клана."));
- return false;
- }
- if (!clan.hasClanMember(args[1])) {
- p.sendMessage(C.getPrefix() + C.c("&cЛисенок не состоит в вашем клане."));
- return false;
- }
- if (args[1].equalsIgnoreCase(clan.getLeader())) {
- p.sendMessage(C.getPrefix() + C.c("&cВы не можете исключить лидера!"));
- return false;
- }
- Player kickedPlayer = Bukkit.getPlayer(args[1]);
- clan.kick(args[1]);
- clan.broadcast(C.c(C.getPrefix() + "&aИгрок &c" + kickedPlayer.getName() + " &aбыл исключен из клана."));
- kickedPlayer.sendMessage(C.c(C.getPrefix() + "&cВы были исключены из клана &8«&6&l" + clan.getName()) + "&8»");
- return false;
- }
- default:
- p.sendMessage(C.getPrefix() + C.c("&cНеизвестная подкоманда!"));
- return false;
- }
- }
- public void setListMessage(Player p, List<String> message) {
- for (String s : message) p.sendMessage(C.c(s));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement