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

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

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: ''

Что не так? Помогите, пожалуйста!
 
Потому что p == null.
Нет
Код:
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); работает
 
Что у тебя возвратит строка getConfig().containsPath("Tutorials." + args[1] + ".Points." + b + ".Location"); ? проверь
 
Что у тебя возвратит строка getConfig().containsPath("Tutorials." + args[1] + ".Points." + b + ".Location"); ? проверь

Возвращает Location. Я проверил
p.sendMessage("" + this.getConfig().get("Tutorials." + args[1] + ".Points." + b + ".Location"));
 
Ну в смысле (На слово done не обращай внимания. Это для проверки):
 

Вложения:

  • Безымянный.png
    Безымянный.png
    Размер файла
    14,6 КБ
    Просмотров
    28
А что, Location можно просто получить из строки кастованием?!?
 
Если вам нужно просто сохранить координаты определенной точки, то:
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")));
 
Сразу видно, что одни профи собрались :lol:
 
Всегда твердил и буду - Сериализуйте вручную
 
Сделай два метода лучше, один для сохранения координатов, направления и мира, а второй для преобразования их из конфига в Location.
 
Location стал нормально сериализумым только где-то с 1.8.6, вы уверены что у вас сервер выше этой версии.
Но таки-да лучше сериализовать вручную.
 

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

Назад
Верх