Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

String to Player, не используя устаревшие функции

Discussion in 'Управление сервером Bukkit' started by lolifrag, Feb 15, 2015.

Thread Status:
Not open for further replies.
  1. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Добрый вечер. Столкнулся с задачей - нужно получить игрока по нику, если он есть в сети.

    Сначала я пробовал перебором:
    Code:
    for (Player tempplayer : Bukkit.getOnlinePlayers()) {
        if (tempplayer.getName() == arg[0]) {
            player = tempplayer;
        }
    }
    Потом конвертировал String в UUID и по UUID уже искал
    Code:
    Player player = this.getServer().getPlayer((UUID) UUID.fromString(arg[0]));
    Потом пробовал несколько разных вариацих обоих методов, с одинаковым результатом:
    An internal error occurred while attemting to perform this command
    Остальной код отдельно по частям проверял - работает, а вот здесь такая кака.


    В итоге ошибка пропала, когда я вернулся к устаревшей .getPlayer(String)
    В чём я ошибся? Подскажите, пожалуйста.
     
  2. Хостинг MineCraft
    <
  3. deadanykey

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

    Trophy Points:
    96
    getName возвращает строку. А строки проверяются вот так:

    player.getName().equalsIgnoreCase(args[0])
     
  4. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Всё равно ошибка осталась та же.
     
  5. deadanykey

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

    Trophy Points:
    96
    В логе что пишет?
     
  6. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Что-то страшное
    [​IMG]
     
  7. deadanykey

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

    Trophy Points:
    96
    Bukkit.getServer().getOnlinePlayers()
     
  8. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    [​IMG]
     
  9. deadanykey

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

    Trophy Points:
    96
    Да как так?
    Покажите этот участок кода
     
  10. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Code:
    Player player = null;
    for (Player tempplayer : Bukkit.getServer().getOnlinePlayers()) {
    if (tempplayer.getName().equalsIgnoreCase(arg[0])) {
        player = tempplayer;
        }
    }
    
    if (player != null) {
    
    if (arg.length < 2) {
        player.setFlySpeed(0.2f);
        player.setWalkSpeed(0.2f);
        sender.sendMessage(player.getName() + "'s movement speed back to default!");
    } else if (this.isInt(arg[1])) {
    
        player.setFlySpeed(doCalcSpeedCmd(arg[1]));
        player.setWalkSpeed(doCalcSpeedCmd(arg[1]));
    
        sender.sendMessage(player.getName()    + "'s has been speed changed!");
        }
    }

    Как только я возвращаю Deprecated, всё работает
     
  11. deadanykey

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

    Trophy Points:
    96
    Я не понимаю, почему не работает. Всё верно написано. В чём пишете?
     
  12. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    ecliplse
     
  13. deadanykey

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

    Trophy Points:
    96
    Полностью можете код дать? У себя попробую собрать.
     
  14. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Code:
    package ru.artificaloli;
    
    import org.bukkit.event.EventHandler;
    import org.bukkit.entity.Player;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Speedy extends JavaPlugin {
    
        public static Player check(Player sender, String name) {
            for (Player pl : sender.getServer().getOnlinePlayers()) {
                if (pl.getCustomName().equals(name)) {
                    return pl;
                }
            }
            return null;
        }
    
        public boolean isInt(String source) {
            try {
                Integer.parseInt(source);
            } catch (NumberFormatException e) {
                return false;
            }
            return true;
        }
    
        private float doCalcSpeedCmd(String source) {
            float amount = Float.parseFloat(source) / 10.0f;
            if (amount > 1.0f) {
                amount = 1.0f;
            }
            if (amount < -1.0f) {
                amount = -1.0f;
            }
    
            return amount;
        }
    
        @EventHandler
        public boolean onCommand(CommandSender p, Command com, String label,
                String[] arg) {
            if (p instanceof Player) {
                Player sender = (Player) p;
                if (com.getName().equalsIgnoreCase("speed")) {
                    if (sender.hasPermission("speedy.use")) {
                        if (arg.length > 0) {
                            if (arg[0].equals("help") || arg[0].equals("?")) {
                                sender.sendMessage("How it work? /speed [player] [count]. Number can be between -10 and 10. Default 2");
                            } else if (this.isInt(arg[0])) {
    
                                sender.setFlySpeed(doCalcSpeedCmd(arg[0]));
                                sender.setWalkSpeed(doCalcSpeedCmd(arg[0]));
    
                                sender.sendMessage("Your movement speed changed!");
                            } else {
                                @SuppressWarnings("deprecation")
                                Player player = sender.getServer()
                                        .getPlayer(arg[0]);
    
                                if (player != null) {
    
                                    if (arg.length < 2) {
                                        player.setFlySpeed(0.2f);
                                        player.setWalkSpeed(0.2f);
                                        sender.sendMessage(player.getName()
                                                + "'s movement speed back to default!");
                                    } else if (this.isInt(arg[1])) {
    
                                        player.setFlySpeed(doCalcSpeedCmd(arg[1]));
                                        player.setWalkSpeed(doCalcSpeedCmd(arg[1]));
    
                                        sender.sendMessage(player.getName()
                                                + "'s has been speed changed!");
                                    }
                                } else {
                                    sender.sendMessage("Cannot find player "
                                            + arg[0] + " !");
                                }
                            }
                        } else {
                            sender.setFlySpeed(0.2f);
                            sender.setWalkSpeed(0.2f);
                            sender.sendMessage("Your movement speed back to default!");
                        }
                    } else {
                        sender.sendMessage("You don't have permissions to do this!");
                    }
                }
            } else {
                p.sendMessage("Command can not be executed from console!");
            }
            return true;
        }
    }
    
     
  15. deadanykey

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

    Trophy Points:
    96
    Я имею в виду весь плагин.
     
  16. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    это весь
     
  17. deadanykey

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

    Trophy Points:
    96
    У меня работает. Правда, собирал на 1.7.2
     
  18. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Значит пора мне апать версию сервера.. у меня 1.6.4, а api на 1.7.10
    Спасибо за помощь
     
  19. deadanykey

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

    Trophy Points:
    96
    Пересобрал на 1.6.4
    Проблем не наблюдаю
     
  20. Автор темы
    lolifrag

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

    Trophy Points:
    66
    Skype:
    frosti.village
    Имя в Minecraft:
    meow
    Я даже не знаю, что у меня в таком случае не так..))
     
  21. deadanykey

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

    Trophy Points:
    96
    Попробуйте API на 1.6 поменять, что ли...
     
Thread Status:
Not open for further replies.

Share This Page