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

Помогите [РЕШЕНО]Ошибка с getPlayer();

Тема в разделе "Разработка плагинов для новичков", создана пользователем MrLogan_YT, 13 июн 2019.

  1. Автор темы
    MrLogan_YT

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

    Баллы:
    61
    Имя в Minecraft:
    MrLogan
    Здравствуйте, мне нужна помощь, да я знаю многие пишут загугли, или на подобии того что этот вопрос уже решали ранее, но я всё таки только начал. Я гугли смотрел и ничего не нашел полезного, бессмысленные сайты и видео мне не помогли. Ну дак вот перейдем к теме.
    В этом говно коду:
    Код:
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if  (!sender.hasPermission("over.commands.mode")) {
                sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.RED + "You don't have permission for this.");
            return true;
            }
            if(args.length == 0) {
                 return false;
            }
            else if (args.length == 2) {
    
                Player p = Bukkit.getPlayer(args[2]);
    
                String mode = args[0];
                if (mode == "0" || mode == "s") {
                p.setGameMode(GameMode.SURVIVAL);
                sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " SURVIVAL");
                return true;
                }
                if (mode == "1" || mode == "c" ) {
                p.setGameMode(GameMode.CREATIVE);
                sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " CREATIVE");
                return true;
                }
                if (mode == "2" || mode == "a" ) {
                p.setGameMode(GameMode.ADVENTURE);
                sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " ADVENTURE");
                return true;
                }
                if (mode == "3" || mode == "s" ) {
                p.setGameMode(GameMode.SPECTATOR);
                sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " SPECTATOR");
                    return true;
                }
            }
            else if (args.length == 1) {
            Player p = (Player) sender;
            String mode = args[0];
            if (mode == "0" || mode == "s") {
            p.setGameMode(GameMode.SURVIVAL);
            sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " SURVIVAL");
            return true;
            }
            if (mode == "1" || mode == "c" ) {
            p.setGameMode(GameMode.CREATIVE);
            sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " CREATIVE"); 
            return true;
            }
            if (mode == "2" || mode == "a" ) {
            p.setGameMode(GameMode.ADVENTURE);
            sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " ADVENTURE");
            return true;
            }
            if (mode == "3" || mode == "s" ) {
            p.setGameMode(GameMode.SPECTATOR);
            sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " SPECTATOR");
                return true;
            }
            }
            return false;
        }
    
    Он очень большой, и мне хотелось бы как нибудь его сократить, но это во вторых, а мне нужна помощь со строчкой Player p = Bukkit.getPlayer(args[2]); пишет ошибку The method getPlayer() from the type Bukkit is depricated.
     
  2. Ission

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

    Баллы:
    173
    Skype:
    lokivava
    Сокращение кода происходит заменой повторяющихся кусков кода функциями, которые делают тоже самое. В текущем случае стоит заменить содержимое каждого IF'а на функцию. Так же стоит заменить сами if'ы на switch блок.
    Deprecated -- это значит, что метод устарел и в будущем будет удалён, это не ошибка.
     
  3. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Крайне желательно использовать Bukkit.getPlayerExact(), чтобы получать игрока в точности по нику не смотря тех, у кого ник может начинаться на данную последовательность. В любом случае я не знаю, какую это ты версию юзаешь, чтобы этот метод был Deprecated. В Paper 1.14.2 этот метод до сих пор жив и здоров, хотя в большинстве случаев нафиг не нужен. И как уже говорилось ранее, это не ошибка, но стоит избегать и по возможности исправлять на альтернативные варианты.
     
  4. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Что-то тут не так ... :)
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Пример со switch по совету Ission:
    Код:
    Player player = null;
    GameMode mode;
    String modeName = "c";
    switch (modeName.toLowerCase()) {
        case "0":
        case "s":
            mode = GameMode.SURVIVAL;
            break;
        case "1":
        case "c":
            mode = GameMode.CREATIVE;
            break;
        case "2":
        case "a":
            mode = GameMode.ADVENTURE;
            break;
        case "3":
            //s - survival
            mode = GameMode.SPECTATOR;
            break;
        default:
            player.sendMessage("Неизвестный режим");
            return;
    }
    player.setGameMode(mode);
    player.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.WHITE + "Your Gamemode changed to" + ChatColor.GREEN + " " + mode.name().toLowerCase());
    
     
    Последнее редактирование: 14 июн 2019
  6. alexandrage

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

    Баллы:
    173
    GameMode.getByValue(int);
     
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    А с буквами как?
     
  8. alexandrage

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

    Баллы:
    173
    Угадай с 3х раз. Да и не особо нужно, и так поймут по цифрам.
     
  9. Автор темы
    MrLogan_YT

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

    Баллы:
    61
    Имя в Minecraft:
    MrLogan
    Это не работает
    Тоже самое выдает. Как можно по другому получить имя игрока
     
  10. Автор темы
    MrLogan_YT

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

    Баллы:
    61
    Имя в Minecraft:
    MrLogan
    А еще у меня вот это не пишет в чат после ввода команды.

    Код:
    if  (!sender.hasPermission("over.commands.vip")) {
                sender.sendMessage(ChatColor.BLACK + "[OVERVIEW]: " + ChatColor.RED + "You don't have permission for this.");
            return true;
            }
     
  11. SHADOWDAN

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

    Баллы:
    76
    Как уже не сказали deprecated - не ошибка, а предупреждение что метод может быть удалён в следующих версиях. Этот метод deprecated только в Bukkit, в spigot deprecated с него убрали. Подключи spigot, а не bukkit в зависимости
     
  12. SHADOWDAN

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

    Баллы:
    76
    Что бы писало у того кто отправил команду не должно быть права over.commands.vip
     
  13. Автор темы
    MrLogan_YT

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

    Баллы:
    61
    Имя в Minecraft:
    MrLogan
    нету этого права, и он не пишет это
     
  14. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    sender.sendMessage("Игрок имеет право? " + sender.hasPermission("over.commands.vip"));
    Что выводит?
     
    Последнее редактирование: 15 июн 2019
  15. DeLanau

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

    Баллы:
    61
    Имя в Minecraft:
    DeLanau
    Мб я что то не понял, но у тебя аргумент 0 это режим, аргумент 2 это ник игрока, а аргумент 1 где?
     
  16. Автор темы
    MrLogan_YT

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

    Баллы:
    61
    Имя в Minecraft:
    MrLogan
    я исправил, там знаю там args[0] режим, а args[1] ник
     

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