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

Помогите Почему, когда я беру из конфига Location, вылетает NullPointerException???

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    DemoNIKman
    Почему, когда я буру из конфига Location, вылетает NullPointerException???
    Вот фрагмент когда, на который ругается консоль (А именно на p.teleport()):
    Код:
    Location loc = (Location) getConfig().get("Tutorials." + args[1] + ".Points." + b + ".Location");
    p.teleport(loc);
    Я 10 раз проверял уже путь Tutorials." + args[1] + ".Points." + b + ".Location ОН ПРАВЕЛЬНЫЙ! Вот, что хранится в конфиге:
    Код:
    Tutorials:
      Test:
        CanStop: true
        Points:
          '0':
            Name: Point-1
            Timer: 5
            Location:
              ==: org.bukkit.Location
              world: world
              x: -7.5631420744753655
              y: 80.0
              z: 230.13138650740362
              pitch: -8.992592
              yaw: -276.58588
            Description: ''
    Players: ''
    
    Что не так? Помогите, пожалуйста!
     
  2. Хостинг MineCraft
    <
  3. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Потому что p == null.
     
  4. Автор темы
    DemoNIKman

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

    Баллы:
    66
    Имя в Minecraft:
    DemoNIKman
    Нет
    Код:
    getConfig().set("Players." + p.getName() + ".Location", p.getLocation());
    getConfig().set("Players." + p.getName() + ".Name", args[1]);
    getConfig().set("Players." + p.getName() + ".Point", b);
    saveConfig();
    Location loc = (Location) getConfig().get("Tutorials." + args[1] + ".Points." + b + ".Location");
    p.teleport(loc);
    Все до p.teleport(loc); работает
     
  5. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Что у тебя возвратит строка getConfig().containsPath("Tutorials." + args[1] + ".Points." + b + ".Location"); ? проверь
     
  6. Автор темы
    DemoNIKman

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

    Баллы:
    66
    Имя в Minecraft:
    DemoNIKman
    Возвращает Location. Я проверил
    p.sendMessage("" + this.getConfig().get("Tutorials." + args[1] + ".Points." + b + ".Location"));
     
  7. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Как метод boolean может возвраoать location?
     
  8. Автор темы
    DemoNIKman

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

    Баллы:
    66
    Имя в Minecraft:
    DemoNIKman
    Ну в смысле (На слово done не обращай внимания. Это для проверки):
     

    Вложения:

  9. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    Он не boolean тестировал, он не брал твой код.[DOUBLEPOST=1440754642,1440754570][/DOUBLEPOST]Тс, у вас случем player не null?[DOUBLEPOST=1440754713][/DOUBLEPOST]Скиньте мне код всего класса, сделаю сам.
     
  10. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    А что, Location можно просто получить из строки кастованием?!?
     
  11. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Через просто get вроде бы получается не строка а секция, из которой уже получается Location кастованием.
     
  12. Автор темы
    DemoNIKman

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

    Баллы:
    66
    Имя в Minecraft:
    DemoNIKman
    get берет Object. А он мне и нужен, тк. Location - Object
     
  13. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Любой объект можно так получить, который реализует ConfigurationSerializable
     
  14. leonmark061

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

    Баллы:
    76
    Если вам нужно просто сохранить координаты определенной точки, то:
    1. Храните нужные координаты в векторе(org.bukkit.util.Vector).
    2. Из конфига получать так: config.getVector("path").toLocation(WORLD), где WORLD - объект типа World.

    Имя мира лучше тоже сохранять в конфиг, чтобы сразу можно было получить Location. Типа так:
    Код:
    loc1:
      world: world
      pos:
        ==: Vector
        x: 0.0
        y: 0.0
        z: 0.0
    
    ...
    
    Location loc1 = config.getVector("loc1.pos").toLocation(Bukkit.getWorld(config.getString("loc1.world")));
     
  15. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Сразу видно, что одни профи собрались :lol:
     
  16. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Всегда твердил и буду - Сериализуйте вручную
     
  17. UniWest

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

    Баллы:
    66
    Skype:
    CrazyLee1337
    Имя в Minecraft:
    Reflect1on
    Сделай два метода лучше, один для сохранения координатов, направления и мира, а второй для преобразования их из конфига в Location.
     
  18. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Location стал нормально сериализумым только где-то с 1.8.6, вы уверены что у вас сервер выше этой версии.
    Но таки-да лучше сериализовать вручную.
     
  19. Автор темы
    DemoNIKman

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

    Баллы:
    66
    Имя в Minecraft:
    DemoNIKman
    Ладно, всем спасибо...
     

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