Solved Player CountDowns

Discussion in 'Plugin Development' started by Unica, Sep 7, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Unica

    Hi,

    I have this minigame where I use multiple arenas, and when there are enough players in an arena, I start a countdown.

    The problem is, if two arena's are both in the countdown, I generate an NPE and it's quite memory taking.

    Could anyone tell me how to do it properly


    Code:java
    1. public void playerCountdown(final String arenaName) {
    2. countDownTime.put(arenaName.toLowerCase(), seconds);
    3. final BukkitScheduler bs = Bukkit.getScheduler();
    4. final int task = bs.scheduleSyncRepeatingTask(m, new Runnable() {
    5. public void run() {
    6. if (getTime(arenaName) > 0) {
    7. updateTime(arenaName);
    8. if (getTime(arenaName) % 5 == 0 || getTime(arenaName) < 6) {
    9. for (Player p : Bukkit.getOnlinePlayers()) {
    10. if (m.ingame.isIngame(p)) {
    11. if (m.ingame.getCurrentArena(p).equals(
    12. arenaName.toLowerCase())) {
    13. p.sendMessage(Messages.prefix + getTime(arenaName)
    14. + " seconds till start!");
    15. }
    16. }
    17. }
    18. }
    19. } else {
    20. ArenaTime.toggleIngame(arenaName.toLowerCase());
    21. for (Player p : Bukkit.getOnlinePlayers()) {
    22. if (m.ingame.isIngame(p)) {
    23. if (m.ingame.getCurrentArena(p).equals(
    24. arenaName.toLowerCase())) {
    25. m.arena_start.startGame(
    26. arenaName.toLowerCase(), p);
    27. countDownTime.remove(arenaName.toLowerCase());
    28. }
    29. }
    30. }
    31. }
    32. }
    33. }, 0, 20);
    34. bs.scheduleSyncDelayedTask(m, new Runnable() {
    35. public void run() {
    36. bs.cancelTask(task);
    37. }
    38. }, (16*20) + 1);
    39. }
    40.  
    41. private void updateTime(String arenaName) {
    42. int old = countDownTime.get(arenaName.toLowerCase());
    43. int new_time = old - 1;
    44. countDownTime.put(arenaName.toLowerCase(), new_time);
    45. }
    46.  
    47. private int getTime(String arenaName) {
    48. return countDownTime.get(arenaName.toLowerCase()); //Line 72 <-----
    49. }
    50.  
    51. }


    ERROR
    Code:
    [11:41:52 WARN]: [Strikerz] Task #6 for Strikerz v0.1 generated an exception
    java.lang.NullPointerException
            at me.dubehh.Mech.Countdown.getTime(Countdown.java:72) ~[?:?]
            at me.dubehh.Mech.Countdown.access$0(Countdown.java:71) ~[?:?]
            at me.dubehh.Mech.Countdown$1.run(Countdown.java:30) ~[?:?]
            at org.bukkit.craftbukkit.v1_7_R3.scheduler.CraftTask.run(CraftTask.java
    :53) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at org.bukkit.craftbukkit.v1_7_R3.scheduler.CraftScheduler.mainThreadHea
    rtbeat(CraftScheduler.java:345) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779c
    ff-b3072jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:6
    00) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
    60) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
    58) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
    :469) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
    28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
    Solved,

    Start using BukkitRunnables :O

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 14, 2016
Thread Status:
Not open for further replies.

Share This Page