1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как получить ник игрока (для аргументов в команде)?

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

Метки:
  1. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    В одном старом туториале был такой код для получения игрока и добавления его в "качестве аргументов":
    Player target = player.getWorld().getPlayer(args[0]);
    Дальше с target можно было делать что угодно. Но IDE ругается на getPlayer(args[0]);, с ошибкой
    "The method getPlayer(string)"is undefined for the type World".
    Как решить это?
    _____

    Конечно же, я все импортировал, и все работает если не указывать Player target =....
    Но это как раз мне нужно.
     
  2. Klavy

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

    Баллы:
    66
    Код:
    Bukkit.getPlayer(String player);
     
  3. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Можешь юзать просто Bukkit.getPlayerExact(args[0])
    P.S. getPlayer может достать игрока даже если ник очень слабо похож, getPlayerExact берет в точности, только игнорирует регистр.
     
  4. Klavy

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

    Баллы:
    66
    Ему в команду нужно запихнуть. getPlayerExact нарушит работу ленивого админа, который будет вводить ники как попало. Лично моё мнение, в команды лучше не совать getPlayerExact
     
  5. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Да если админ ленивый и не умеет пользоваться табом, то ему лучше вообще закрыть свой сервер.
    А getPlayer часто будет мешать, если например нужного игрока нет, и будет браться первый попавшийся в онлайне. Критически, если это какая нибудь зловредная команда.
     
  6. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    И что тогда можно использовать?
     
  7. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Ну если тебе нужна гарантия, что игрок будет конкретно с тем ником, который ты ищешь, то getPlayerExact, если тебе это не важно, и ты хочешь допустить, чтобы при вводе к примеру Pla находило ближайший ник, который начинается на Pla, допустим PlayerA, тогда getPlayer.
     
  8. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    +
     
  9. InterWall

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

    Баллы:
    173
    Нахера? Кучу плагинов видел, но нигде этот функционал не юзал. Наоборот, иногда это тупо мешает, особенно если никнеймы похожие.
     
  10. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    The method getPlayerExact(String) is undefined for the type World
    _
    Если удалить getWorld(), то

    - The method getPlayerExact(String) is undefined for the
    type Player
     
  11. l_Slime_l

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

    Баллы:
    76
    Bukkit.getPlayerExact(Имя игрока);
     
  12. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    PHP:
            Player player = (Player)sender;
            
    Player target =  Bukkit.getPlayerExact(args[0]);

    //так?? 
     
  13. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    Хотя бы вот этот код из туториала, что тут надо поправить?

    PHP:
    public boolean onCommand(CommandSender senderCommand cmdString labelString[] args){
        if(
    cmd.getName().equalsIgnoreCase("ignite")){
            
    Player s = (Player)sender;
            
    Player target s.getWorld().getPlayer(args[0]); // target - игрок, чьё имя указано в команде в качестве параметр
            // Например, если команда была такова: "/ignite notch", то этим игроком будет "notch".
            // Обратите внимание: Первый аргумент начинается с [0], а не [1]. Соответственно arg[0] возвращает заданное имя игрока.
            
    target.setFireTicks(10000);
            return 
    true;
        }
        return 
    false;
    }
     
  14. Klavy

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

    Баллы:
    66
    Ты несколько команд на один класс регаешь что-ли?
     
  15. l_Slime_l

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

    Баллы:
    76
    Замени Player target = s.getWorld().getPlayer(args[0]); на Player target = Bukkit.getPlayerExact(args[0]);
     
  16. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    -, мне хотя бы одну команду с аргументом
     
  17. DragSnNaizer

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

    Баллы:
    11
    Ну вообще, получение объекта из массива это основы.
     
  18. Автор темы
    RemFex

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

    Баллы:
    61
    Имя в Minecraft:
    RemFex
    я знаю, у меня просто проблема в другом была
     
  19. alexandrage

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

    Баллы:
    173
    Bukkit.getPlayer(name) полное или часть ника.
    Bukkit.getPlayerExact(name) только полный ник.
     
  20. alexandrage

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

    Баллы:
    173
    Они юзает туториалы :D. Это интересней.
     

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