Minecraft plugin scheduler?
Hallo leute, sobald ich zwei cooldowns parallel am laufen habe, und einer durch ist, gibt es beim zweiten cooldown folgende errormeldung. Weiß jemand wo das Problem ist?:
java.lang.NullPointerException
at de.johannes.hcfabilitys.main.ABILITYT$1.run(ABILITY.java:101) ~[?:?]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-db6de12-18fbb24]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]
Hier der code:
public static void inGameCountDown(Player p, Player t) {
tp = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {
@Override
public void run() {
System.out.println("Activating run for: " + p.getName());
if(cooldown.get(p) == null) {
returnInventory(p, t);
Bukkit.getScheduler().cancelTask(tp);
}
if (cooldown.get(p) == 1) {
System.out.println("Canceling cooldown for: " + p.getName());
Bukkit.getScheduler().cancelTask(tp);
cooldown.remove(p);
returnInventory(p, t);
}
if(cooldown.containsKey(p)) {
int c = cooldown.get(p);
c--;
System.out.println("Hashmap contains key for: " + p.getName() + " " + c);
cooldown.put(p, c);
}
}
}, 20, 20);
}
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Nutzer, der sehr aktiv auf gutefrage ist
Eigentlich reicht es, wenn du der Methode scheduleSyncRepeatingTask als ersten Parameter die Hauptklasse deines Plugins übergibst.
Dazu musst du deine Hauptklasse ein klein wenig erweitern, falls du das noch nicht getan hast:
public class MainClass extends JavaPlugin {
public static MainClass main;
@Override
public void onEnable() {
main = this;
}
}
Das würde bei dir dann am Ende so aussehen:
Bukkit.getScheduler().scheduleSyncRepeatingTask(MainClass.main, new Runnable() {
colum123
11.04.2020, 23:41
@J0hannes2015
wir wissen ja nicht, wie du Main.getPlugin() implementiert hast
Danke, ich hatte das aber schon mir dem Main.getPlugin(). Oder ändert da sich was?