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

Помогите Функция не работает. Где оступился?

Статус
Закрыто для дальнейших ответов.

Bars

Старожил
Девелопер
Пользователь
Баллы
173
Она возвращает список локаций из конфига:
Код:
spawnpoints:
- 1000,60,-501
- 1000,60,-602
- 1000,60,-703
- 1000,60,-804
- 1000,60,-905
Сама функция:
Код:
    public static List<Location> getSpawnPoints() {
        List<String> spawnpoints = new ArrayList<String>();
        List<Location> spList = new ArrayList<Location>();
        spawnpoints = plugin.getConfig().getStringList("spawnpoints");
        for (String spc : spawnpoints) {
            double x = 0, y = 0, z = 0;
            String[] l = spc.split(",");
            try {
                x = Double.valueOf(l[0]);
                y = Double.valueOf(l[1]);
                z = Double.valueOf(l[2]);
            } catch (Exception e) {
                e.printStackTrace();
            }
            spList.add(new Location(Bukkit.getWorld("world"), x, y, z));
        }
        return spList;
    }

UPD: Исправленный вариант :):
Код:
    public static List<Location> getSpawnPoints() {
        List<String> spawnpoints = new ArrayList<String>();
        List<Location> spList = new ArrayList<Location>();
        spawnpoints = plugin.getConfig().getStringList("spawnpoints");
        for (String spc : spawnpoints) {
            double x = 0, y = 0, z = 0;
            String[] l = spc.split(",");
            try {
                x = Double.parseDouble(l[0]) - 0.5;
                y = Double.parseDouble(l[1]);
                z = Double.parseDouble(l[2]) + 0.5;
                spList.add(new Location(Bukkit.getWorld("world"), x, y, z));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return spList;
    }
 
Последнее редактирование:
NullPointerException
2013-12-06 18:40:28 [INFO] Bars issued server command: /start
2013-12-06 18:40:28 [SEVERE] null
org.bukkit.command.CommandException: Unhandled exception executing command 'start' in plugin OnlyMZ v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46)
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:568)
at net.minecraft.network.NetServerHandler.func_72566_d(NetServerHandler.java:1390)
at net.minecraft.network.NetServerHandler.chat(NetServerHandler.java:1250)
at net.minecraft.network.NetServerHandler.func_72481_a(NetServerHandler.java:1176)
at net.minecraft.network.packet.Packet3Chat.func_73279_a(Packet3Chat.java:60)
at net.minecraft.network.TcpConnection.func_74428_b(TcpConnection.java:442)
at net.minecraft.network.NetServerHandler.func_72570_d(NetServerHandler.java:223)
at net.minecraft.network.NetworkListenThread.func_71747_b(NetworkListenThread.java:53)
at net.minecraft.server.dedicated.DedicatedServerListenThread.func_71747_b(SourceFile:30)
at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:859)
at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:320)
at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:728)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:612)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:573)
Caused by: java.lang.NullPointerException
at ru.onlymc.OnlyMZ.SpawnUtils.getSpawnPoints(SpawnUtils.java:64)
at ru.onlymc.OnlyMZ.SpawnUtils.spawnInWorld(SpawnUtils.java:26)
at ru.onlymc.OnlyMZ.SpawnCommand.onCommand(SpawnCommand.java:20)
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
... 15 more

Проверял весь код, ошибки только при обращении к getSpawnPoints(). Без неё ошибки нет.
 
String[] l = spc.split(",");
Оно скорее всего не пашет.
 
Если верить консоли, что ошибка на 64-й строке, то скорее всего что-то тут:
spawnpoints = plugin.getConfig().getStringList("spawnpoints");
А на 26-й её вызов:
at ru.onlymc.OnlyMZ.SpawnUtils.spawnInWorld(SpawnUtils.java:26)

String[] l = spc.split(",");
Оно скорее всего не пашет.
Сейчас гляну
 
Если верить консоли, что ошибка на 64-й строке, то скорее всего что-то тут:

А на 26-й её вызов:



Сейчас гляну
Если ошибка там где ты говоришь то тогда plugin у тебя null, потому что всё остальное в этой строке null вернуть не может.
Убедись, что с конфигом всё в порядке, а лучше всего проверяй getStringList на null, добавив вывод в SendMessage и log.warning.
Кстати, вызов метода spList.add надо занести в Try, иначе у тебя будет список нулевых локаций, что неправильно логически.
getStringList() не моет вернуть null.
 
Убедись, что с конфигом всё в порядке, а лучше всего проверяй getStringList на null, добавив вывод в SendMessage и log.warning.
Кстати, вызов метода spList.add надо занести в Try, иначе у тебя будет список нулевых локаций, что неправильно логически.
 
Если ошибка там где ты говоришь то тогда plugin у тебя null, потому что всё остальное в этой строке null вернуть не может.

getStringList() не моет вернуть null.
Точно, спутал.
Где у тебя инициализируется plugin?
Похоже, что в конструкторе не передаётся плагин, в результате чего получаем null.
 
Точно, спутал.

Где у тебя инициализируется plugin?
Похоже, что в конструкторе не передаётся плагин, в результате чего получаем null.
Да, так и есть. Всем большущее спасибо!
И с наступающим :)
Да, появился ещё один маленький вопрос: что такое setPitch() и setYaw()?
Как при помощи него/них развернуть игрока лицом на север?
 
5EoGS.jpg



В движке майнкрафта Roll отсутствует ввиду невозможности вращения объектов по этой оси.
Как на север можно легко узнать просто развернувшись на север, и использовав getPitch (Узнать сторону света можно в дебаге F3)
 
В движке майнкрафта Roll отсутствует ввиду невозможности вращения объектов по этой оси.
Как на север можно легко узнать просто развернувшись на север, и использовав getPitch (Узнать сторону света можно в дебаге F3)
Спасибо, я уже разобрался :)
Location l = getSpawnPoints().get(point);
l.setYaw(180);
p.teleport(l);
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх