Solved Timer starting error..

Discussion in 'Plugin Development' started by PlayFriik, Dec 13, 2014.

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

    PlayFriik

    Hello, I can stop, but I can't start the game.. I have tried so many things that may fix this, but still don't work..

    UltraHardcoreCommand:
    Code:
    package net.playfriik.ultrahardcore.commands;
    
    import net.playfriik.ultrahardcore.UltraHardcore;
    import net.playfriik.ultrahardcore.managers.TimeManager;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    
    public class UltraHardcoreCommand implements CommandExecutor {
      
        UltraHardcore plugin;
        TimeManager TManager;
      
        public UltraHardcoreCommand(UltraHardcore plugin) {
            this.plugin = plugin;
        }
      
        public UltraHardcoreCommand(TimeManager TManager) {
            this.TManager = new TimeManager(plugin);
        }
      
        @SuppressWarnings("deprecation")
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (args.length == 0) {
                sender.sendMessage(ChatColor.GOLD + "" + ChatColor.BOLD + "UltraHardcore");
                sender.sendMessage(ChatColor.GRAY + "/uhc start" + ChatColor.DARK_GRAY + " - " + ChatColor.AQUA + "Start the game.");
                sender.sendMessage(ChatColor.GRAY + "/uhc stop" + ChatColor.DARK_GRAY + " - " + ChatColor.AQUA + "Stop the game.");
                sender.sendMessage(ChatColor.GRAY + "/uhc join" + ChatColor.DARK_GRAY + " - " + ChatColor.AQUA + "Join the game.");
                sender.sendMessage(ChatColor.GRAY + "/uhc leave" + ChatColor.DARK_GRAY + " - " + ChatColor.AQUA + "Leave the game.");
            }
          
            if (args.length == 1) {
                if (args[0].equalsIgnoreCase("start")) {
                    Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, TManager, 0, 60 * 20);
                    sender.sendMessage(ChatColor.GREEN + "The game has been started!");
                } else {
                    if (args[0].equalsIgnoreCase("stop")) {
                        Bukkit.getScheduler().cancelAllTasks();
                        sender.sendMessage(ChatColor.RED + "The game has been stopped!");
                    }
                }
            }
            return true;
        }
    }
    
    TimeManager:
    Code:
    package net.playfriik.ultrahardcore.managers;
    
    import net.playfriik.ultrahardcore.UltraHardcore;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class TimeManager extends BukkitRunnable {
       
        UltraHardcore plugin;
       
        public TimeManager(UltraHardcore plugin) {
            this.plugin = plugin;
        }
       
        int totalTime = plugin.getConfig().getInt("TotalTime");
       
        public void run() {
            totalTime--;
            if (totalTime == 59) {
                Bukkit.broadcastMessage(ChatColor.GREEN + "59 minutes left until meetup.");
            }
        }
    }
    
     
    Last edited: Dec 13, 2014
  2. Offline

    mythbusterma

    @PlayFriik

    Well, at a cursory glance, you're probably getting an NPE at line 13 in TimeManager, due the fact that plugin isn't initialized in that context.
     
  3. Offline

    PlayFriik

    So it means that I should put this after initialize?
     
  4. Offline

    mythbusterma

  5. Offline

    PlayFriik

    Ok, I tried this but still error..
    Code:
    [11:56:50 WARN]: Unexpected exception while parsing console command "uhc start"
    org.bukkit.command.CommandException: Unhandled exception executing command 'uhc'
     in plugin UltraHardcore v0.1.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Spi
    got.jar:git-Spigot-"ec7c160"]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
    1) ~[Spigot.jar:git-Spigot-"ec7c160"]
            at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServe
    r.java:643) ~[Spigot.jar:git-Spigot-"ec7c160"]
            at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchServerCommand(Craf
    tServer.java:629) [Spigot.jar:git-Spigot-"ec7c160"]
            at net.minecraft.server.v1_8_R1.DedicatedServer.aM(DedicatedServer.java:
    353) [Spigot.jar:git-Spigot-"ec7c160"]
            at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:3
    17) [Spigot.jar:git-Spigot-"ec7c160"]
            at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:6
    27) [Spigot.jar:git-Spigot-"ec7c160"]
            at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java
    :530) [Spigot.jar:git-Spigot-"ec7c160"]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_20]
    Caused by: java.lang.IllegalArgumentException: Task cannot be null
            at org.apache.commons.lang.Validate.notNull(Validate.java:192) ~[Spigot.
    jar:git-Spigot-"ec7c160"]
            at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.validate(Craf
    tScheduler.java:398) ~[Spigot.jar:git-Spigot-"ec7c160"]
            at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.runTaskTimer(
    CraftScheduler.java:123) ~[Spigot.jar:git-Spigot-"ec7c160"]
            at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.scheduleSyncR
    epeatingTask(CraftScheduler.java:119) ~[Spigot.jar:git-Spigot-"ec7c160"]
            at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.scheduleSyncR
    epeatingTask(CraftScheduler.java:456) ~[Spigot.jar:git-Spigot-"ec7c160"]
            at net.playfriik.ultrahardcore.commands.UltraHardcoreCommand.onCommand(U
    ltraHardcoreCommand.java:37) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Spi
    got.jar:git-Spigot-"ec7c160"]
            ... 8 more
     
  6. Offline

    mythbusterma

    @PlayFriik

    Because TManager is null in that context. Also, please don't cancel every task on the server, that's a really bad idea.
     
  7. Offline

    PlayFriik

    1. public UltraHardcoreCommand(TimeManager TManager) {
    2. this.TManager = new TimeManager(plugin);
    3. }
    how is it null?
     
  8. Offline

    teej107

    @PlayFriik It's all about priorities and timing. You are initializing it too late! You are calling the wrong constructor. @PlayFriik
     
  9. Offline

    PlayFriik

    Hmm, okay.. I know that I can set EventHandler priority, but can I set this kind of thing?
     
  10. Offline

    mythbusterma

    @PlayFriik

    Using the correct constructor might help.
     
  11. Offline

    PlayFriik

    I have no idea what is wrong.. Do I need to do smth like this?
    Code:
    TimeManager TManager = new TimeManager(plugin);
     
  12. Offline

    teej107

    @PlayFriik Stop guessing and think for one second (or more if you have to). Do you know how a constructor is called?
     
  13. Offline

    PlayFriik

    Last edited: Dec 13, 2014
Thread Status:
Not open for further replies.

Share This Page