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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем CraftCoder, 3 май 2015.

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

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Есть у меня enum:
    Код:
    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"), то получаю такую ошибку:
    Код:
    Caused by: java.lang.NullPointerException
            at me.craftcoderr.bedwars.Team.<clinit>(Team.java:8)
    
     
  2. Хостинг MineCraft
    <
  3. BeYkeR

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

    Баллы:
    173
    Чекни
    Код:
    BedWars.scoreboard.registerNewTeam("Green")
     
  4. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    В смысле? Так Team.valueOf(BedWars.scoreboard.registerNewTeam("Green"))?
     
  5. BeYkeR

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

    Баллы:
    173
    != null . Вдруг его нету.
     
  6. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Переопределите метод на свой. Создайте коллекцию, куда поместите все ENUM типы команд при вызове их конструкторов.
     
  7. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    У Enum ленивая инициализация, возможно дело в этом.
    Попробуй создать их без команд (нулл тимы) а внутри класса написать
    Код:
    static {
        for(Team cTeam : values()) {
        cTeam.setTeam(BedWars.scoreboard.registerNewTeam(WordUtils.capitalizeFully(cTeam.toString())));}
    }
    
    Писал с телефона, мб скобки напутал, но суть ясна
     
  8. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo
    может просто BedWars.scoreboard кто-то забыл инициализировать?
     
  9. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Сейчас проверю. Похоже придется переписать систему скорбордов(
     
  10. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ты бы хоть ответил(
     
  11. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Да, так и было:
     
  12. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Мдемсь, ладно, удачи)
     

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