Переменная не сбрасывается при повторном запуске команды - PullRequest
2 голосов
/ 17 февраля 2012

У меня есть кусок кода, который выводит общий опыт игрока.

Проблема в том, что значение XP, которое он выводит, не изменяется, если реальное значение XP изменяется. Например, на уровне 50 000 XP было 2 147 483 647. Когда уровень упал до 4, значение XP осталось прежним.

if (cmd.getName().equalsIgnoreCase("checkxp")) {
    // If person is null, it's not a player!
    if (person == null) {
        sender.sendMessage("This command can only be used by a player, sorry!");
        return false;
    } else {
        int curxp;
        Player player = (Player) sender;
        curxp = player.getTotalExperience();
        sender.sendMessage("You currently have: " + curxp + " XP!");
        return true;
    }
}

Как мне восстановить это значение после его запуска, чтобы он перепроверил XP и обновил переменную с новым значением?

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

Если вы не обновите свой Player объект, который выглядит так, как будто он приходит от sender, он будет содержать старые значения, поэтому я проверяю, что sender приходит с новыми данными.

1 голос
/ 17 февраля 2012

Глядя на ExpSkills, кажется, что играть с опытом вместо уровней - это путь.

Так что используйте setTotalExperience() и getTotalExperience() сейчас.

Как только все заработает, попробуйте добавить поддержку уровней. Может быть, где-то есть конвертер для преобразования уровней в опыт и опыт в уровни? Если нет, то вот графики преобразования .

...