На данный вопрос уже ответили:
Вот ошибка:
2018-10-29 05:59:07 [CRITICAL] Exception while invoking run java.lang.NullPointerException
at KKDevs.Main.STask.onRun(STask.java:17)
at cn.nukkit.scheduler.Task.run(Task.java:51)
at cn.nukkit.scheduler.TaskHandler.run(TaskHandler.java:99)
at cn.nukkit.scheduler.ServerScheduler.runTasks(ServerScheduler.java:296)
at cn.nukkit.scheduler.ServerScheduler.mainThreadHeartbeat(ServerScheduler.java:277)
at cn.nukkit.Server.tick(Server.java:1084)
at cn.nukkit.Server.tickProcessor(Server.java:853)
at cn.nukkit.Server.start(Server.java:830)
at cn.nukkit.Server.<init>(Server.java:513)
at cn.nukkit.Nukkit.main(Nukkit.java:109)
а вот код:
package KKDevs.Main;
import cn.nukkit.Player;
import cn.nukkit.scheduler.PluginTask;
import jline.internal.Nullable;
public class STask extends PluginTask < Strap > {
public STask(Strap owner) {
super(owner);
}
@Nullable
public void onRun(int currentTick) {
Strap owner = this.owner;
for (Player p: owner.getServer().getOnlinePlayers().values()){
p.updateBossBar(owner.getBossText(), 100, owner.bossbar.get(p));
}
}
}
а вот код главного файла:
public class Strap extends PluginBase implements Listener {
public HashMap<Player, Long> bossbar = new HashMap<Player, Long>();
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
getServer().getScheduler().scheduleRepeatingTask(new STask(this), 2);
this.getLogger().info(TextFormat.GREEN + "Done!");
}
@EventHandler(priority = EventPriority.NORMAL)
public void onJoin(PlayerJoinEvent e) {
for (Player p: getServer().getOnlinePlayers().values()) {
String name = p.getName();
bossbar.put(p, p.createBossBar(getBossText(), 100));
String msg = String.valueOf(e.getJoinMessage());
if (e.getJoinMessage().toString().trim().length() > 0) {
this.BroadCastPopUp(this.getServer().getLanguage().translateString(msg,
new String[] {
name
}));
e.setJoinMessage(String.valueOf(""));
}
}
}
public String getBossText() {
for (Player p: getServer().getOnlinePlayers().values()) {
String getNick = p.getName();
int getOnline = this.getServer().getOnlinePlayers().size();
String[] RC = {
"§l§f",
"§l§a",
"§l§e",
"§l§b",
"§l§6"
};
String getRandomColor = RC[new Random().nextInt(RC.length)];
TextFormat GREEN = TextFormat.GREEN;
TextFormat BLUE = TextFormat.BLUE;
String text = TextFormat.WHITE + " §l>> " + getRandomColor + "Добро
пожаловать на " + GREEN + "Balerix" + getRandomColor + ", " + BLUE +
getNick + getRandomColor + " | Онлайн: " + getOnline + TextFormat.WHITE + "
<<";
return text;
}
return getBossText();
}
@EventHandler(priority = EventPriority.NORMAL)
public void onDeath(PlayerDeathEvent e) {
String name = e.getEntity().getName();
String message = String.valueOf(e.getDeathMessage());
if (e.getDeathMessage().toString().trim().length() > 0) {
this.BroadCastPopUp(this.getServer().getLanguage().translateString(message,
new String[] {
name
}));
e.setDeathMessage(String.valueOf(""));
}
}
@EventHandler(priority = EventPriority.NORMAL)
public void onQuit(PlayerQuitEvent e) {
String name = e.getPlayer().getName();
String message = String.valueOf(e.getQuitMessage());
if (e.getQuitMessage().toString().trim().length() > 0) {
this.BroadCastPopUp(this.getServer().getLanguage().translateString(message,
new String[] {
name
}));
e.setQuitMessage(String.valueOf(""));
}
}
public void BroadCastPopUp(String str) {
for (Player p: new ArrayList < >
(this.getServer().getOnlinePlayers().values())) {
p.sendPopup("");
}
}
@Override
public void onDisable() {
this.getLogger().info(TextFormat.RED + "Disable!");
}
}
StackTrace указывает, что ошибка возникает в данной строке
p.updateBossBar(owner.getBossText(), 100, owner.bossbar.get(p));
Видимо какое-то из данных полей является null
, скорее всего owner.bossbar
.
Необходимо зайти в данное место дебагером и проверять поля или же выводить логи, для проверки, все ли элементы являются не null
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
В коде есть геттеры/сеттеры, IntelliJ все время выдает warning и пишет, что access can be private-packageНо если я сделаю доступ private, то у меня в коде будут ошибки
Нужно перемножить все числа с индексами в диапазоне от 20 до 30
Не срабатывают boundary timersИспользую Activiti 6
Есть массив String, перевожу его в List, добавляю в циклЕсли в первом if срабатывает условие, то необходимо добавить в List символ