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

  • Автор темы Автор темы KoMsaA
  • Дата начала Дата начала

KoMsaA

Ньюби
Пользователь
Баллы
1
Я сделал шедуляр вот у себя в классе Main он сразу делается при старте но столкнулся с такой проблемой как там получить игрока, пытался написать e.getPlayer() но выдает ошибку, помогите
 
Это должно сработать
Код:
Player player= e.getPlayer();
MainClass.plugin.getServer().getScheduler().scheduleSyncDelayedTask(MainClass.plugin, new Runnable()
{
  public void run()
  {
    player.sendMessage("Проверка");
  }
}, 100);

 
Это должно сработать
Код:
Player player= e.getPlayer();
MainClass.plugin.getServer().getScheduler().scheduleSyncDelayedTask(MainClass.plugin, new Runnable()
{
  public void run()
  {
    player.sendMessage("Проверка");
  }
}, 100);

Зря ты это написал. Щас будет вопрос: "Куда это вставлять?!", "Ты че самый умный?", "Фу, говнокод, дайте другой вариант"
 
Здравствуйте,как получить именно игрока,а не самого себя?Нужно чтобы ставить определённому игроку префикс.
 
Здравствуйте,как получить именно игрока,а не самого себя?Нужно чтобы ставить определённому игроку префикс.
Ты не в той теме дружок X)

Bukkit.getPlayer("PlayerName");
Где PlayerName - ник игрока

Если игрок не в сети - функция вернёт null. Т.е этой же функцией можно проверить есть ли игрок в сети.

Player player = Bukkit.getPlayer("VasyaPupkin");
if (player != null)
{
// Делаешь префикс игроку player
}
else
{
// Игрок не в сети
}
 
Ты не в той теме дружок X)

Bukkit.getPlayer("PlayerName");
Где PlayerName - ник игрока

Если игрок не в сети - функция вернёт null. Т.е этой же функцией можно проверить есть ли игрок в сети.

Player player = Bukkit.getPlayer("VasyaPupkin");
if (player != null)
{
// Делаешь префикс игроку player
}
else
{
// Игрок не в сети
}
мне нужно не одному игроку менять,а указав в /prefix set MisterBukkit Тролль,/prefix set Katerina Катенька
 
мне нужно не одному игроку менять,а указав в /prefix set MisterBukkit Тролль,/prefix set Katerina Катенька
Я весь код за тебя делать не буду, найди как делать команды сам.
Тебе может помочь это видео:
youtu.be/pUgshz35En0
 
Я весь код за тебя делать не буду, найди как делать команды сам.
Тебе может помочь это видео:
youtu.be/pUgshz35En0
PHP:
package me.blazefoxpro.module.modules;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import me.blazefoxpro.main.Core;
import me.blazefoxpro.module.Module;

public class PAdm extends Module implements CommandExecutor {
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
        if(!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
            return true;
        }
        final String p1 = args[0].toLowerCase();
        if(args.length == 0) {
            if(!sender.hasPermission("prefix.admin")) {
                sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("");
            sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
            sender.sendMessage("§e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l] - Установить префикс игроку.");
            sender.sendMessage("§e§l/padm clear §a§l[§e§lИгрок§a§l] - Сбросить префикс игроку.");
            sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
            return false;
        }
        switch (args[0].toLowerCase()) {
        case "set":
            if(args.length != 2) {
                sender.sendMessage("");
                sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
                sender.sendMessage("§a§lИспользование: §e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l]");
                sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
                sender.sendMessage("");
                return false;
            }
            else if(!sender.hasPermission("prefix.admin")) {
                sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + p1);
            Core.getChat().setPlayerPrefix(null, Bukkit.getPlayer(p1), args[1]+" ");
            break;
        }
        return false;
    }
}
Команда то есть....
 
PHP:
package me.blazefoxpro.module.modules;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import me.blazefoxpro.main.Core;
import me.blazefoxpro.module.Module;

public class PAdm extends Module implements CommandExecutor {
  
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
        if(!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
            return true;
        }
        final String p1 = args[0].toLowerCase();
        if(args.length == 0) {
            if(!sender.hasPermission("prefix.admin")) {
                sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("");
            sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
            sender.sendMessage("§e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l] - Установить префикс игроку.");
            sender.sendMessage("§e§l/padm clear §a§l[§e§lИгрок§a§l] - Сбросить префикс игроку.");
            sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
            return false;
        }
        switch (args[0].toLowerCase()) {
        case "set":
            if(args.length != 2) {
                sender.sendMessage("");
                sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
                sender.sendMessage("§a§lИспользование: §e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l]");
                sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
                sender.sendMessage("");
                return false;
            }
            else if(!sender.hasPermission("prefix.admin")) {
                sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
                return true;
            }
            sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + p1);
            Core.getChat().setPlayerPrefix(null, Bukkit.getPlayer(p1), args[1]+" ");
            break;
        }
        return false;
    }
}
Команда то есть....
Исправил то что ты просил и ещё пару моментов
Код:
public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
    if(!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
        return true;
    }
   
    // Сразу проверяем админ ли игрок и больше не паримся
    if(!sender.hasPermission("prefix.admin")) {
        sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
        return true;
    }
   
   
    if(args.length == 0) {
        sender.sendMessage("");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        sender.sendMessage("§e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l] - Установить префикс игроку.");
        sender.sendMessage("§e§l/padm clear §a§l[§e§lИгрок§a§l] - Сбросить префикс игроку.");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        return true;
    }
   
    // Не сравнивай строки с помощью ==
    // String - не примитивный тип и == может не сработать при некоторых обстоятельствах
    // Вместо этого используй .equals("") или .equalsIgnoreCase("")
    // .equalsIgnoreCase("") не смотрит на регистр
    if (args[0].equalsIgnoreCase("set")) {
        if (args.length > 2) {
            // Получаем игрока
            Player targetPlayer = Bukkit.getPlayer(args[1]);
           
            if (targetPlayer != null) {
                if (args.length > 3) {
                    //Core.getChat().setPlayerPrefix(null, targetPlayer, args[2]); // А тут была стилистическая ошибка
                    // Я убрал + " " так как это длжно быть в функции setPlayerPrefix, перенеси туда
                   
                    sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + targetPlayer.getName());
                    // sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + args[1]); - плохая идея
                    // Т.к если в сети есть игрок JohnDoe и вызвать Bukkit.getPlayer("John") - он вернёт игрока JohnDoe
                    // По этому лучше брать ник из объекта игрока
                   
                    return true;
                }
                else {
                    // Не введён префикс
                    return true;
                }
            }
            else {
                // Игрока нет в сети
                return true;
            }
        }
        else {
            // Не введён ник игрока
            return true;
        }
    }
    else if (args[0].equalsIgnoreCase("other string")) {
        return true;
    }
   
    // Я перенёс это суда чтобы оно выводилось в всегда когда что-то пошло не так
    sender.sendMessage("");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("§a§lИспользование: §e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l]");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("");
    return true;
    // И не возврощай false если сам говоришь игроку что он сделал не так
    // при возврате false JavaPlugin отправит игроку дефолтный текст ошибки
}
А, и не используй этот ужас §e, вместо этого есть ChatColor.RED, BLUE, итд.
 
Исправил то что ты просил и ещё пару моментов
Код:
public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
    if(!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
        return true;
    }
  
    // Сразу проверяем админ ли игрок и больше не паримся
    if(!sender.hasPermission("prefix.admin")) {
        sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
        return true;
    }
  
  
    if(args.length == 0) {
        sender.sendMessage("");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        sender.sendMessage("§e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l] - Установить префикс игроку.");
        sender.sendMessage("§e§l/padm clear §a§l[§e§lИгрок§a§l] - Сбросить префикс игроку.");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        return true;
    }
  
    // Не сравнивай строки с помощью ==
    // String - не примитивный тип и == может не сработать при некоторых обстоятельствах
    // Вместо этого используй .equals("") или .equalsIgnoreCase("")
    // .equalsIgnoreCase("") не смотрит на регистр
    if (args[0].equalsIgnoreCase("set")) {
        if (args.length > 2) {
            // Получаем игрока
            Player targetPlayer = Bukkit.getPlayer(args[1]);
          
            if (targetPlayer != null) {
                if (args.length > 3) {
                    //Core.getChat().setPlayerPrefix(null, targetPlayer, args[2]); // А тут была стилистическая ошибка
                    // Я убрал + " " так как это длжно быть в функции setPlayerPrefix, перенеси туда
                  
                    sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + targetPlayer.getName());
                    // sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + args[1]); - плохая идея
                    // Т.к если в сети есть игрок JohnDoe и вызвать Bukkit.getPlayer("John") - он вернёт игрока JohnDoe
                    // По этому лучше брать ник из объекта игрока
                  
                    return true;
                }
                else {
                    // Не введён префикс
                    return true;
                }
            }
            else {
                // Игрока нет в сети
                return true;
            }
        }
        else {
            // Не введён ник игрока
            return true;
        }
    }
    else if (args[0].equalsIgnoreCase("other string")) {
        return true;
    }
  
    // Я перенёс это суда чтобы оно выводилось в всегда когда что-то пошло не так
    sender.sendMessage("");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("§a§lИспользование: §e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l]");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("");
    return true;
    // И не возврощай false если сам говоришь игроку что он сделал не так
    // при возврате false JavaPlugin отправит игроку дефолтный текст ошибки
}
А, и не используй этот ужас §e, вместо этого есть ChatColor.RED, BLUE, итд.
сам ты ужас, нафиг это юзать?
 
Исправил то что ты просил и ещё пару моментов
Код:
public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
    if(!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
        return true;
    }
  
    // Сразу проверяем админ ли игрок и больше не паримся
    if(!sender.hasPermission("prefix.admin")) {
        sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
        return true;
    }
  
  
    if(args.length == 0) {
        sender.sendMessage("");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        sender.sendMessage("§e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l] - Установить префикс игроку.");
        sender.sendMessage("§e§l/padm clear §a§l[§e§lИгрок§a§l] - Сбросить префикс игроку.");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        return true;
    }
  
    // Не сравнивай строки с помощью ==
    // String - не примитивный тип и == может не сработать при некоторых обстоятельствах
    // Вместо этого используй .equals("") или .equalsIgnoreCase("")
    // .equalsIgnoreCase("") не смотрит на регистр
    if (args[0].equalsIgnoreCase("set")) {
        if (args.length > 2) {
            // Получаем игрока
            Player targetPlayer = Bukkit.getPlayer(args[1]);
          
            if (targetPlayer != null) {
                if (args.length > 3) {
                    //Core.getChat().setPlayerPrefix(null, targetPlayer, args[2]); // А тут была стилистическая ошибка
                    // Я убрал + " " так как это длжно быть в функции setPlayerPrefix, перенеси туда
                  
                    sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + targetPlayer.getName());
                    // sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + args[1]); - плохая идея
                    // Т.к если в сети есть игрок JohnDoe и вызвать Bukkit.getPlayer("John") - он вернёт игрока JohnDoe
                    // По этому лучше брать ник из объекта игрока
                  
                    return true;
                }
                else {
                    // Не введён префикс
                    return true;
                }
            }
            else {
                // Игрока нет в сети
                return true;
            }
        }
        else {
            // Не введён ник игрока
            return true;
        }
    }
    else if (args[0].equalsIgnoreCase("other string")) {
        return true;
    }
  
    // Я перенёс это суда чтобы оно выводилось в всегда когда что-то пошло не так
    sender.sendMessage("");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("§a§lИспользование: §e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l]");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("");
    return true;
    // И не возврощай false если сам говоришь игроку что он сделал не так
    // при возврате false JavaPlugin отправит игроку дефолтный текст ошибки
}
А, и не используй этот ужас §e, вместо этого есть ChatColor.RED, BLUE, итд.
Ввожу /padm set Ник Префикс,мне пишет что нужно ввести ник,ввожу /padm set BlazeFoxPro Prefix пишет про префикс,и при /padm set BlazeFoxPro Prefix Prefix ничего не меняется.
 
Ввожу /padm set Ник Префикс,мне пишет что нужно ввести ник,ввожу /padm set BlazeFoxPro Prefix пишет про префикс,и при /padm set BlazeFoxPro Prefix Prefix ничего не меняется.
Я немного накасячил с проверкой, там не > а >= должно быть. По этому команда тупила с параметрами, а почему ничего не происходит ты сам понять должен был, я случайно лишнюю строчку закоментировал, как раз ту, где ставится префикс.
Вот исправленная версия:
Код:
public boolean onCommand(CommandSender sender, Command cmd, String lbl, String[] args) {
    if(!(sender instanceof Player)) {
            sender.sendMessage("Only player usage!");
        return true;
    }
  
    // Сразу проверяем админ ли игрок и больше не паримся
    if(!sender.hasPermission("prefix.admin")) {
        sender.sendMessage("§a§l[§e§lPrefix§a§l] > У вас недостаточно прав!");
        return true;
    }
  
  
    if(args.length == 0) {
        sender.sendMessage("");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        sender.sendMessage("§e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l] - Установить префикс игроку.");
        sender.sendMessage("§e§l/padm clear §a§l[§e§lИгрок§a§l] - Сбросить префикс игроку.");
        sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
        return true;
    }
  
    // Не сравнивай строки с помощью ==
    // String - не примитивный тип и == может не сработать при некоторых обстоятельствах
    // Вместо этого используй .equals("") или .equalsIgnoreCase("")
    // .equalsIgnoreCase("") не смотрит на регистр
    if (args[0].equalsIgnoreCase("set")) {
        if (args.length >= 2) {
            // Получаем игрока
            Player targetPlayer = Bukkit.getPlayer(args[1]);
          
            if (targetPlayer != null) {
                if (args.length >= 3) {
                    Core.getChat().setPlayerPrefix(null, targetPlayer, args[2]); // А тут была стилистическая ошибка
                    // Я убрал + " " так как это длжно быть в функции setPlayerPrefix, перенеси туда
                  
                    sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + targetPlayer.getName());
                    // sender.sendMessage("§a§l[§e§lPrefix§a§l] > Вы успешно сменили префикс игроку §e§l" + args[1]); - плохая идея
                    // Т.к если в сети есть игрок JohnDoe и вызвать Bukkit.getPlayer("John") - он вернёт игрока JohnDoe
                    // По этому лучше брать ник из объекта игрока
                  
                    return true;
                }
                else {
                    // Не введён префикс
                    return true;
                }
            }
            else {
                // Игрока нет в сети
                return true;
            }
        }
        else {
            // Не введён ник игрока
            return true;
        }
    }
    else if (args[0].equalsIgnoreCase("other string")) {
        return true;
    }
    
  
    // Я перенёс это суда чтобы оно выводилось в всегда когда что-то пошло не так
    sender.sendMessage("");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("§a§lИспользование: §e§l/padm set §a§l[§e§lИгрок§a§l] [§e§lПрефикс§a§l]");
    sender.sendMessage("§a§l--------------------[§e§lPrefix§a§l]--------------------");
    sender.sendMessage("");
    return true;
    // И не возврощай false если сам говоришь игроку что он сделал не так
    // при возврате false JavaPlugin отправит игроку дефолтный текст ошибки
}
 
Назад
Верх