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

командой менять цвет ника над головой и в списке с игроками.

Тема в разделе "Разработка плагинов для новичков", создана пользователем FlozIK, 4 янв 2014.

Статус темы:
Закрыта.
  1. Автор темы
    FlozIK

    FlozIK Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrFloz
    Создаю плагин и хочу чтоб командой я мог менять цвет ника над головой и в списке с игроками. Это я сделал, но после того как я протестил две команды - admin(включить золотой ник) и deadmin(выключить золотой ник), я решил сделать одну. Вот нерабочий код:
    Код:
    public boolean onCommand(CommandSender e, Command cmd, String label, String[] args)
        {
            if(cmd.getName().equalsIgnoreCase("admin"))
            {
                Player p = (Player) e;
                if ((e instanceof Player ))
                {
                    if(ЧТО-ТО == true)
                    {
                        p.getPlayer().setScoreboard(board);
                        team.removePlayer(p.getPlayer());
                        p.sendMessage(ChatColor.GRAY + "Вы успешно исключены из группы" + ChatColor.GOLD + " admin!");
                    }
                   
                   
                    if(ЧТО-ТО == false)
                    {
                        p.getPlayer().setScoreboard(board);
                        team.addPlayer(p.getPlayer());
                        p.sendMessage(ChatColor.GRAY + "Вы успешно добавлены в группу" + ChatColor.GOLD + " admin!");
                    }
                }
                else
                {
                    log.info("This command can write player only!!");
                }
                return true;
            }
            return false;
        }
    Я понимаю, что заместо что должен быть код проверяющий есть ли игрок в команде или нет.
    Вот, на всякий случай код ScoreBoard'a в методе onEnable:
    Код:
            board = Bukkit.getScoreboardManager().getNewScoreboard();
            team = board.registerNewTeam("Red");
            team.setPrefix(ChatColor.GOLD+"");
            team.setCanSeeFriendlyInvisibles(false);
            team.setAllowFriendlyFire(true);
     
  2. Хостинг MineCraft
    <
  3. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Что именно не работает, что пишет, подключайся отладчиком и делай дебаг.
     
  4. Автор темы
    FlozIK

    FlozIK Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrFloz
    Я ещё полный нуб...... Он просто включает золотой ник. А выключать не хочет.[DOUBLEPOST=1388891759,1388846331][/DOUBLEPOST]Нахождение игрока в scoreboard я сделал, но появилась другая проблема. Так как я сделал всё через if, то после того, как метод проверяет есть ли игрок в команде и делает его с золотым ником, второй метод возвращает всё на круги своя. Новый код:
    Код:
    public boolean onCommand(CommandSender e, Command cmd, String label, String[] args)
        {
            Player p = (Player) e;
            if(cmd.getName().equalsIgnoreCase("admin"))
            {
                if ((e instanceof Player ))
                {
                    if(team.hasPlayer(p) == false)
                    {
                        p.getPlayer().setScoreboard(board);
                        team.removePlayer(p.getPlayer());
                        p.sendMessage(getConfig().getString("YouAdmin"));
                    }
                   
                   
                    if(team.hasPlayer(p) == true)
                    {
                        p.getPlayer().setScoreboard(board);
                        team.addPlayer(p.getPlayer());
                        p.sendMessage(getConfig().getString("YouNotAdmin"));
                    }
                }
                else
                {
                    log.info("This command can write player only!!");
                }
                return true;
            }
            return false;
        }
     
  5. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Ну а с чего это вдруг должно нормально работать?
    Если ты потом team.removePlayer делаешь, что позволяет зайти во второй if?

    Ты похоже, даже код свой не понимаешь.
     
  6. Автор темы
    FlozIK

    FlozIK Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrFloz
    Я это понял поздно. Точнее только сейчас, а как распутать эту путаницу я не знаю.
     
  7. ptnk

    ptnk Старожил Пользователь

    Баллы:
    173
    Учись базовым принципам программирования, делай простенькие задачи, вырабатывай мышление и не будет проблем.
     
    Den_Abr нравится это.
  8. Автор темы
    FlozIK

    FlozIK Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrFloz
    И ещё забыл сказать, я с Джавой уже работал, моды создавал. Сейчас решил по создавать плагины.
     
  9. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    if(team.hasPlayer(p) == false)

    Вижу хорошие моды создавал -_-

    И еще, подумай слегка, как же hasPlayer() будет true, если ты removePlayer() делаешь?
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Вглядись внимательней. Он удаляет игрока из команды, когда его там нет и добавляет, когда есть.
    Да какие моды? Открыл гайд, скопировал код, поменял названия/текстуры и всё, "я делал моды!!!11"
     
  11. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    А, точняк. В общем попутал свои false и true в if().

    В общем как-то так:
    Код:
                    if(team.hasPlayer(p))
                    {
                        p.getPlayer().setScoreboard(board);
                        team.removePlayer(p.getPlayer());
                        p.sendMessage(getConfig().getString("YouAdmin"));
                    }
                    else
                    {
                        p.getPlayer().setScoreboard(board);
                        team.addPlayer(p.getPlayer());
                        p.sendMessage(getConfig().getString("YouNotAdmin"));
                    }
    
    Или хрен знает вообще xD
     
  12. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Проще взять TagAPI и работать с ним
     
  13. _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    1)Наверно сначало if ((e instanceof Player )), а потом Player p = (Player) e;
    2)getScoreboard().getScoreboardMain() - это для того чтобы получить minecraft бордю если вдруг поможет)
     
  14. Автор темы
    FlozIK

    FlozIK Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrFloz
    Всё работает, тему закрывайте.
     
Статус темы:
Закрыта.

Поделиться этой страницей