Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Enum.valueOf() Как это работает?

CraftCoder

Старожил
Пользователь
Баллы
108
Имя в Minecraft
CraftCoderr
Есть у меня enum:
Java:
public enum Team {

    GREEN(ChatColor.GREEN, BedWars.scoreboard.registerNewTeam("Green")), <-- 8 строка
    RED(ChatColor.RED, BedWars.scoreboard.registerNewTeam("Red")),
    YELLOW(ChatColor.YELLOW, BedWars.scoreboard.registerNewTeam("Yellow")),
    BLUE(ChatColor.BLUE, BedWars.scoreboard.registerNewTeam("Blue")),
    PINK(ChatColor.LIGHT_PURPLE ,BedWars.scoreboard.registerNewTeam("Pink")),
    ORANGE(ChatColor.GOLD, BedWars.scoreboard.registerNewTeam("Orange")),
    BLACK(ChatColor.BLACK, BedWars.scoreboard.registerNewTeam("Black")),
    PURPLE(ChatColor.DARK_PURPLE ,BedWars.scoreboard.registerNewTeam("Purple")),
    NONE(ChatColor.WHITE, BedWars.scoreboard.registerNewTeam("White"));

    private String display;
    private ChatColor color;
    private org.bukkit.scoreboard.Team team;

    private Team(ChatColor color, org.bukkit.scoreboard.Team team){
        this.display = team.getName();
        this.team = team;
        this.team.setPrefix(color + "");
        this.color = color;
    }

    public void addPlayer(Player p){
        this.team.addPlayer(p);
    }

    public String getTitle(){
        return color + display;
    }

    public String toString(){
        return display;
    }
Если я делаю так: Team.valueOf("Green") или Team.valueOf("GREEN"), то получаю такую ошибку:
Java:
Caused by: java.lang.NullPointerException
        at me.craftcoderr.bedwars.Team.<clinit>(Team.java:8)
 
Чекни
Код:
BedWars.scoreboard.registerNewTeam("Green")
 
Переопределите метод на свой. Создайте коллекцию, куда поместите все ENUM типы команд при вызове их конструкторов.
 
У Enum ленивая инициализация, возможно дело в этом.
Попробуй создать их без команд (нулл тимы) а внутри класса написать
Код:
static {
    for(Team cTeam : values()) {
    cTeam.setTeam(BedWars.scoreboard.registerNewTeam(WordUtils.capitalizeFully(cTeam.toString())));}
}
Писал с телефона, мб скобки напутал, но суть ясна
 
может просто BedWars.scoreboard кто-то забыл инициализировать?
 

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

Назад
Верх