Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Метки:
Теги Теги
eclipse команды

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

Конечно же, я все импортировал, и все работает если не указывать Player target =....
Но это как раз мне нужно.
Код:
Bukkit.getPlayer(String player);
 
Можешь юзать просто Bukkit.getPlayerExact(args[0])
P.S. getPlayer может достать игрока даже если ник очень слабо похож, getPlayerExact берет в точности, только игнорирует регистр.
 
Можешь юзать просто Bukkit.getPlayerExact(args[0])
P.S. getPlayer может достать игрока даже если ник очень слабо похож, getPlayerExact берет в точности, только игнорирует регистр.
Ему в команду нужно запихнуть. getPlayerExact нарушит работу ленивого админа, который будет вводить ники как попало. Лично моё мнение, в команды лучше не совать getPlayerExact
 
Ему в команду нужно запихнуть. getPlayerExact нарушит работу ленивого админа, который будет вводить ники как попало. Лично моё мнение, в команды лучше не совать getPlayerExact
Да если админ ленивый и не умеет пользоваться табом, то ему лучше вообще закрыть свой сервер.
А getPlayer часто будет мешать, если например нужного игрока нет, и будет браться первый попавшийся в онлайне. Критически, если это какая нибудь зловредная команда.
 
И что тогда можно использовать?
 
И что тогда можно использовать?
Ну если тебе нужна гарантия, что игрок будет конкретно с тем ником, который ты ищешь, то getPlayerExact, если тебе это не важно, и ты хочешь допустить, чтобы при вводе к примеру Pla находило ближайший ник, который начинается на Pla, допустим PlayerA, тогда getPlayer.
 
Ему в команду нужно запихнуть. getPlayerExact нарушит работу ленивого админа, который будет вводить ники как попало. Лично моё мнение, в команды лучше не совать getPlayerExact
Нахера? Кучу плагинов видел, но нигде этот функционал не юзал. Наоборот, иногда это тупо мешает, особенно если никнеймы похожие.
 
Ну если тебе нужна гарантия, что игрок будет конкретно с тем ником, который ты ищешь, то getPlayerExact
The method getPlayerExact(String) is undefined for the type World
_
Если удалить getWorld(), то

- The method getPlayerExact(String) is undefined for the
type Player
 
Хотя бы вот этот код из туториала, что тут надо поправить?

PHP:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] 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;
}
 
Хотя бы вот этот код из туториала, что тут надо поправить?

PHP:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] 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;
}
Ты несколько команд на один класс регаешь что-ли?
 
Хотя бы вот этот код из туториала, что тут надо поправить?

PHP:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] 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;
}
Замени Player target = s.getWorld().getPlayer(args[0]); на Player target = Bukkit.getPlayerExact(args[0]);
 
Bukkit.getPlayer(name) полное или часть ника.
Bukkit.getPlayerExact(name) только полный ник.
 

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

Назад
Верх