Помогите Точная проверка имени игрока

hyndorik

Активный участник
Пользователь
Баллы
98
Имя в Minecraft
hyndo
При создании плагина на запрос например, чтобы нельзя было отправить запрос самому себе делаю проверку if(sender.getName().equalsIgnoreCase(target.getName())) но если например мой ник Mon4ik и написать в аргументах Mon4ik то все будет нормально и проверка сработает, но если написать Mon, то так же все и сработает напишет что нельзя отправить запрос самому себе, как это пофиксить? Чтобы если я писал Mon то писало что игрок оффлайн
 
Про офлайн.
Java:
if(args.length == 1) {
    if(Bukkit.getPlayer(args[0]) == null) {
        sender.sendMessage("Этот игрок офлайн!");
        return true;
    }
    //Что то дальше.                 
}
 
Так в телеграме же уже ответили. Сравнивай ник игрока, вводившего команду, с ником игрока, который был получен по имени:
Player s = ...;
String[] args = ...;
Player p = Bukkit.getPlayer(args[0]);
if(p == null) s.sendMessage("Игрок не найден");
else if (s.getName().equals(p.getName())) s.sendMessage("Нельзя отправлять запрос самому себе");
else ...
 
Последнее редактирование:
Если именно с учетом того, что ты отправил самому себе, то
Java:
if(args.length == 1) {
    if(Bukkit.getPlayer(args[0]) == null) sender.sendMessage("Этот игрок офлайн!");
    if(args[0] == ((Player)sender).getName()) sender.sendMessage("Вы не можете отправить сообщение самому себе!");
    //Что то дальше.
    return true;              
}
 
Если именно с учетом того, что ты отправил самому себе, то
Java:
if(args.length == 1) {
    if(Bukkit.getPlayer(args[0]) == null) {
        sender.sendMessage("Этот игрок офлайн!");
        return true;
    }
    if(args[0] == ((Player)sender).getName()) {
        sender.sendMessage("Вы не можете отправить сообщение самому себе!");
        return true;
    }
    //Что то дальше.                 
}
1) В данном случае нельзя сравнивать строки при помощи ==, нужно .equalsIgnoreCase
2) Никнейм может быть указан не полностью, в этом случае даже .equalsIgnoreCase вернёт false
 
1) В данном случае нельзя сравнивать строки при помощи ==, нужно .equalsIgnoreCase
2) Никнейм может быть указан не полностью, в этом случае даже .equalsIgnoreCase вернёт false
Очень сомневаюсь. Сейчас даже пойду, и проверю. А на счет того, что ник может быть неполным - да.
Да. И вправду, странно. Раньше вроде как-то делал)

Кстати, ведь у тебя тоже вроде нету темы с дописыванием ника автоматом(автоматически)?)
 
Очень сомневаюсь. Сейчас даже пойду, и проверю.
Да. И вправду, странно. Раньше вроде как-то делал)

Читай:
http://rubukkit.org/threads/po-chemu-ehto-znachenie-ne-ravno-ehtomu-znacheniju.130557/#post-1412900

Кстати, ведь у тебя тоже вроде нету темы с дописыванием ника автоматом(автоматически)?)
Bukkit.getPlayer(String) делает всё за него
 
Последнее редактирование:
Ну так-то сейчас я запустил тот код, который ты скидывал, и прописав мой ник без последний буквы меня просто не детектнуло. Или может я что-то неправильно понимаю!?

Ладно. Не суть.
 
Ну так-то сейчас я запустил тот код, который ты скидывал, и прописав мой ник без последний буквы меня просто не детектнуло. Или может я что-то неправильно понимаю!?
Забавно, но это я постоянно путаю .getPlayer и .getPlayerExact. Как раз-таки .getPlayer хавает неполные имена
 
При создании плагина на запрос например, чтобы нельзя было отправить запрос самому себе делаю проверку if(sender.getName().equalsIgnoreCase(target.getName())) но если например мой ник Mon4ik и написать в аргументах Mon4ik то все будет нормально и проверка сработает, но если написать Mon, то так же все и сработает напишет что нельзя отправить запрос самому себе, как это пофиксить? Чтобы если я писал Mon то писало что игрок оффлайн
Не вижу в этот проблем, если на сервере будет игрок Mon в онлайне, все ок станет. Так что не бери в голову. Да и всегда же есть TAB который допишет ник. Если сомневаешься.
 
Не вижу в этот проблем, если на сервере будет игрок Mon в онлайне, все ок станет. Так что не бери в голову. Да и всегда же есть TAB который допишет ник. Если сомневаешься.
Ему нужно, чтобы игрок не мог указать собственный ник
 
Назад
Верх