Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Ошибка при принятии(Кланы)

Discussion in 'Разработка плагинов для новичков' started by gianluca91, Apr 16, 2017.

  1. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Такая ситуация возникла,при отправке запроса на войну( /c war [Nick]),можно принять(/c accept),но возникает ошибка.


    Accept.java
    [
    Code:
    public class Accept extends MCCommand
    {
      public Accept() {}
     
      public int getAccessLevel()
      {
        return -1;
      }
     
    
      public void showSyntax(CommandSender cs)
      {
        cs.sendMessage("§6/clan accept §f- §eКоманда для принятия запросов");
      }
     
      public static void claim(String player, String claim, int time)
      {
        claims.add(new Claim(player, claim, time));
      }
     
      public static Claim getClaim(String player) {
        for (Claim c : claims) {
          if (player.equalsIgnoreCase(player)) {
            return c;
          }
        }
        return null;
      }
     
      public void Claim1(String player, String claim, int time) {
        this.player = player;
        this.claim = claim;
        this.time = time;
        taskid = Bukkit.getScheduler().scheduleSyncDelayedTask(MishaClansPlugin.getInstance(), new Runnable()
        {
    
          public void run() { cancel(); } }, time * 20L);
      }
     
    
      public void cancel()
      {
        claims.remove(this);
        Bukkit.getScheduler().cancelTask(taskid);
      }
     
    
      private static List<Claim> claims = new ArrayList();
      public String player;
      public String claim;
      public int time;
      public int taskid;
      public void handleCommand(CommandSender cs, String[] args)
      {
        Player p = (Player)cs;
        Claim claimAccept = Claim.getClaim(p.getName());
        if ((claimAccept != null) && (claim.startsWith("war.")))
        {
    
    
    #Вот в этой строке ошибка   
    Clan clanAccept = ClanManager.getPlayerClan(claim.replace("war.", ""));
    
    
          if (clanAccept == null)
          {
            p.sendMessage("§f[§c§lClans§f]: §7Этого клана не существует!");
            return;
          }
          Clan yourClanAccept = ClanManager.getPlayerClan(p);
          if (yourClanAccept == null)
          {
            p.sendMessage("§f[§c§lClans§f]: §7У вас нет клана!");
            return;
          }
          if (yourClanAccept.getOnlineMembers().size() < 1)
          {
            p.sendMessage("§f[§c§lClans§f]: §7В вашем клане нет на сервере 2 участников!");
            return;
          }
          if (clanAccept.getOnlineMembers().size() < 1)
          {
            p.sendMessage("§f[§c§lClans§f]: §7В клане противника на сервере нет 2 участников!");
            return;
          }
          Arena arenaAccept = Arena.getEmptyArena();
          if (arenaAccept == null)
          {
            p.sendMessage("§f[§c§lClans§f]: §7Нет свободных арен для войны!");
            if (Bukkit.getOfflinePlayer(clanAccept.getOwner()).isOnline()) {
              Bukkit.getPlayer(clanAccept.getOwner()).sendMessage("§f[§c§lClans§f]: §7Нет свободных арен для войны!");
            }
            return;
          }
          arenaAccept.start(clanAccept, yourClanAccept);
          clanAccept.sendMessage("Клан §e" + yourClanAccept.getName() + " §7объявил вам войну!");
          yourClanAccept.sendMessage("Клан §e" + clanAccept.getName() + " §7объявил вам войну!");
          claimAccept.cancel();
          return;
        }
        if ((!p.hasMetadata("clan-invite-time")) || (p.getMetadata("clan-invite-time").isEmpty()) ||
          (((MetadataValue)p.getMetadata("clan-invite-time").get(0)).asLong() + 30000L < System.currentTimeMillis()))
        {
          funreas(cs, Messages.getMessage("вас никто не приглашал", new Messages.Pair[0]));
          return;
        }
        String ic = ((MetadataValue)p.getMetadata("clan-invited").get(0)).asString();
        p.removeMetadata("clan-invite-time", MishaClansPlugin.getInstance());
        p.removeMetadata("clan-invited", MishaClansPlugin.getInstance());
       
        Clan c = ClanManager.getClan(ic);
        if (c == null)
        {
          funreas(p, Messages.getMessage("клан не найден", new Messages.Pair[0]));
          return;
        }
        if (c.getSlots() <= c.getPlayers().size())
        {
          funreas(cs, Messages.getMessage("нет мест", new Messages.Pair[0]));
          return;
        }
        funreas(cs, Messages.getMessage("ты вступил в клан", new Messages.Pair[] { new Messages.Pair("clan", c.getName()) }));
        c.sendMessage(Messages.getMessage("игрок вступил в клан", new Messages.Pair[] { new Messages.Pair("player", p.getName()) }));
        c.getPlayers().put(p.getName().toLowerCase(), Integer.valueOf(1));
        c.save();
       
        Bukkit.getPluginManager().callEvent(new ua.lekting.mishaclans.event.PlayerJoinedClanEvent(c, p));
      }
    }
    War.Java
    Code:
    public class War extends MCCommand
    {
      public War() {}
     
      public int getAccessLevel()
      {
        return 8;
      }
     
      public void showSyntax(CommandSender cs)
      {
        cs.sendMessage("§6/clan war [Игрок] §f- §eКинуть войну клану");
      }
     
    
      public void handleCommand(CommandSender cs, String[] args)
      {
        if (args.length < 1)
        {
          showSyntax(cs);
          return;
        }
        Clan c = ua.lekting.mishaclans.clan.ClanManager.getPlayerClan(cs);
        Clan c2 = ua.lekting.mishaclans.clan.ClanManager.getPlayerClan(args[0]);
        if (c2 == null) {
          cs.sendMessage("§f[§c§lClans§f]: §7Этот игрок не состоит в клане!");
          return;
        }
        if (c == null) {
          cs.sendMessage("§f[§c§lClans§f]: §7Вы не состоите в клане");
          return;
        }
        if (c.getRank(cs.getName().toLowerCase()) < 8) {
          cs.sendMessage("§f[§c§lClans§f]: §7Вам не доступна данная команда");
          return;
        }
        Player p = (Player)cs;
        if (c == c2)
        {
          p.sendMessage("§f[§c§lClans§f]: §7Нельзя объявлять своему клану войну!");
          return;
        }
        if (!Bukkit.getOfflinePlayer(c2.getOwner()).isOnline())
        {
          p.sendMessage("§f[§c§lClans§f]: §7Главы клана §e" + c2.getOwner() + " §7нет на сервере!");
          return;
        }
        if (c.getOnlineMembers().size() < 1)
        {
          p.sendMessage("§f[§c§lClans§f]: §7В вашем клане нет на сервере 2 участников!");
          return;
        }
        if (c2.getOnlineMembers().size() < 1)
        {
          p.sendMessage("§f[§c§lClans§f]: §7В клане противника на сервере нет 2 участников!");
          return;
        }
        if (ua.lekting.mishaclans.Arena.getEmptyArena() == null)
        {
          p.sendMessage("§f[§c§lClans§f]: §7Нет свободных арен для войны!");
          return;
        }
        Claim claim = Claim.getClaim(c2.getOwner());
        if ((claim != null) && (claim.startsWith("war."))) {
          p.sendMessage("§f[§c§lClans§f]: §7Лидер клана уже имеет предложение на войну!");
          return;
        }
        Claim.claim(Bukkit.getOfflinePlayer(c2.getOwner()).getName(), "war." + c.getOwner(), 60);
        Bukkit.getPlayer(c2.getOwner()).sendMessage("§f[§c§lClans§f]: §7Вам объявил войну клан §e" + c.getName());
        Bukkit.getPlayer(c2.getOwner()).sendMessage("§f[§c§lClans§f]: §7Чтобы принять введите: §e/c accept§7, а чтобы отказаться: §e/c decline");
        p.sendMessage("§f[§c§lClans§f]: §7Вы объявили войну клану §e" + c2.getName());
      }
    }

    Подскажите,что сделал не так.Убедительная просьба не писать вот такого рода сообщения: "Мдаа,Ты сам подумать не можешь,Ору".
     

    Attached Files:

  2. Хостинг MineCraft
    <
  3. DonDays

    DonDays Активный участник Пользователь

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    полный стектрейс нужен
     
  4. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Что именно
     
  5. DonDays

    DonDays Активный участник Пользователь

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    всю ошибку
     
  6. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Безымянный.png
     
  7. SuperDragon1998

    SuperDragon1998 Новичок Пользователь

    Trophy Points:
    6
    Какой именно у тебя плагин?
    Для UralClans2 есть 2 самых лёгкий решений проблем:
    Удалить UralClans2 + удалить конфиг потом установи заного
    Удалить конфиг

    Если не помогло, не знаю в чём проблема[DOUBLEPOST=1492343545,1492343500][/DOUBLEPOST]И кстать
    Используй UralClans2, он по лучше чем этот.
     
  8. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Этот написан мной,и тут имеются клановый войны.
     
  9. DonDays

    DonDays Активный участник Пользователь

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    если ошибка в строке
    1. Clan clanAccept = ClanManager.getPlayerClan(claim.replace("war.", ""));

      claim - null
     
  10. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Теперь ошибка в данной строке

    (claim != null) && (claim.startsWith("war."))

    "startWith" тут ошибка
     
  11. DonDays

    DonDays Активный участник Пользователь

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    claim null, вот и ошибка. Перед этим, чтобы убедиться, напиши
    Code:
    if(claim == null) throw new IllegalStateException("String claim null.");
    [DOUBLEPOST=1492349444,1492349411][/DOUBLEPOST]
    сам startsWith срать не может
     
  12. SuperDragon1998

    SuperDragon1998 Новичок Пользователь

    Trophy Points:
    6
    Если тобой написан, почему ты сам не можешь решить?
     
  13. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Писал плагин по сурсе UralClans и другим плагинам.Да и не всегда можно решить проблему самому.[DOUBLEPOST=1492356272,1492355938][/DOUBLEPOST]
    Ага,теперь ругается на нее


    Скинь свой вк,там пообщаемся
     
  14. DonDays

    DonDays Активный участник Пользователь

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    vk.com/dondays
     
  15. Автор темы
    gianluca91

    gianluca91 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    gianluca91
    Кинул заявку
     

Share This Page