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

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

Discussion in 'Разработка плагинов для новичков' started by CraftCoder, May 3, 2015.

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

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

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

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

    Trophy Points:
    173
    Чекни
    Code:
    BedWars.scoreboard.registerNewTeam("Green")
     
  4. Автор темы
    CraftCoder

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

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

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

    Trophy Points:
    173
    != null . Вдруг его нету.
     
  6. Den_Abr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Share This Page