- Баллы
- 61
Вообщем перейду сразу к делу!
Имеется класс с хранением арен..
В другом классе регистрация этих арен, добавление, и поиск арены по иммени
Есть Команды на создание и вход в эти арены
В чем собсна проблема.
Арена создаётся, все хорошо (проверил записью в yml), пишется название арены при создании, тоесть не коверкается.
При попытке войти, выдаёт вот эту ошибку
Указывает на строчки : 23. p.teleport(a.getLobby()); // Телепорт игрока в лобби / Видимо не может получит локацию
53: am.addPlayer((Player)sender, args[0]); Ваще безпонятия, должно быть норм
28: Сама команда
Застрял на этом, не могу понять, прошу помощи :3
Имеется класс с хранением арен..
Код:
public class Arena extends ArenaManager{
private List<String> players = new ArrayList<>(); // Лист с игроками
private int time; // Время арены
private int start = 2; // Кол-во игроков для старта
private int max; // Максимальное кол-во игроков
private String name; // Имя арены
private Location spawn, lobby, end; // Локации
private List<String> waiters = new ArrayList<>(); // Лист с ожидающими
public Arena(String name, int time, int start, int max, Location spawn, Location lobby, Location end) {
this.time = time;
this.max = max;
this.name = name;
this.spawn = spawn;
this.lobby = lobby;
this.end = end;
} //
public List<String> getPlayers() {
return players;
}
... И дальше возвращение переменных...
В другом классе регистрация этих арен, добавление, и поиск арены по иммени
Код:
public class ArenaManager {
//private static ArenaManager am = new ArenaManager();
public List<Arena> arenas = new ArrayList<>();
public void registerNewArena(String name, int time, int start, int max, Location spawn, Location lobby, Location end) { // Как я и говорил, тут мы создаем арену, тоже самое, только тут мы ее еще будем хранить в листе
Arena arena = new Arena(name, time, start, max, spawn, lobby, end);
arenas.add(arena);
}
public void addPlayer(Player p, String arenaname) { // Добавление игрока в арену
Arena a = getArena(arenaname);
p.setHealth(p.getMaxHealth()); // Лечим игрока
p.setFireTicks(0); // Еще лечим
p.teleport(a.getLobby()); // Телепорт игрока в лобби
a.getPlayers().add(p.getName()); // Добавляем игрока к игрокам на арене
int playersLeft = a.getStart() - a.getPlayers().size(); // Кол-во игроков минимум - кол-во игроков на арене
if (playersLeft == 0) { // Если это число == 0, то старт арены
}
}
public Arena getArena(String name) {
for(Arena a : arenas) {
if(a.getName().equalsIgnoreCase(name)) {
return a;
}
}
return null;
}
Есть Команды на создание и вход в эти арены
Код:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.getName().equalsIgnoreCase("create")) {
return Create(sender, args);
}
if(cmd.getName().equalsIgnoreCase("join")) {
return addplayer(sender, args);
}
if(cmd.getName().equalsIgnoreCase("check")) {
return check(sender, args);
}
return false;
}
public boolean Create(CommandSender sender, String[] args) {
File file = new File(prison.getDataFolder(), "config.yml");;
Player p = (Player)sender;
if(p != (Player)sender) return false;
Location spawn = p.getLocation();
Location lobby = p.getLocation();
Location end = p.getLocation();
am.registerNewArena(args[0], 200, 2, 4 , spawn, lobby, end);
prison.getLogger().info("GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOD");
p.sendMessage("Арена создана ");
Arena m = am.getArena(args[0]);
p.sendMessage("Арена создана "+ m.getName());
ArenaUtil.saveArena(m, file);
return true;
}
public boolean addplayer(CommandSender sender, String[] args) {
am.addPlayer((Player)sender, args[0]);
return true;
}
Арена создаётся, все хорошо (проверил записью в yml), пишется название арены при создании, тоесть не коверкается.
При попытке войти, выдаёт вот эту ошибку
Код:
[13:30:24] [Server thread/INFO]: Graff issued server command: /create test
[13:30:24] [Server thread/INFO]: [PrisonBreak] GOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOD
[13:30:28] [Server thread/INFO]: Graff issued server command: /join test
[13:30:28] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'join' in plugin PrisonBreak v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.handleCommand(PlayerConnection.java:1162) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:997) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:45) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_171]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_171]
at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [craftbukkit.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]
Caused by: java.lang.NullPointerException
at prison.main.ArenaManager.addPlayer(ArenaManager.java:23) ~[?:?]
at prison.main.Commands.addplayer(Commands.java:53) ~[?:?]
at prison.main.Commands.onCommand(Commands.java:28) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Spigot-db6de12-18fbb24]
... 15 more
Указывает на строчки : 23. p.teleport(a.getLobby()); // Телепорт игрока в лобби / Видимо не может получит локацию
53: am.addPlayer((Player)sender, args[0]); Ваще безпонятия, должно быть норм
28: Сама команда
Код:
if(cmd.getName().equalsIgnoreCase("join")) {
return addplayer(sender, args);
}
Застрял на этом, не могу понять, прошу помощи :3